index.css 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. /**
  2. * Normally we'd import tailwind with the following:
  3. *
  4. * @import "tailwindcss";
  5. *
  6. * However, we need to customize the preflight styles since the extension's
  7. * current UI assumes there's no CSS resetting or normalization.
  8. *
  9. * We're excluding tailwind's default preflight and importing our own, which
  10. * is based on the original:
  11. * https://github.com/tailwindlabs/tailwindcss/blob/main/packages/tailwindcss/preflight.css
  12. *
  13. * Reference: https://tailwindcss.com/docs/preflight
  14. */
  15. @layer theme, base, components, utilities;
  16. @import "tailwindcss/theme.css" layer(theme);
  17. @import "./preflight.css" layer(base);
  18. @import "tailwindcss/utilities.css" layer(utilities);
  19. @plugin "tailwindcss-animate";
  20. @theme {
  21. --font-display: var(--vscode-font-family);
  22. --text-sm: calc(var(--vscode-font-size) * 0.9);
  23. --text-base: var(--vscode-font-size);
  24. --text-lg: calc(var(--vscode-font-size) * 1.1);
  25. --color-background: var(--background);
  26. --color-foreground: var(--foreground);
  27. --color-card: var(--card);
  28. --color-card-foreground: var(--card-foreground);
  29. --color-popover: var(--popover);
  30. --color-popover-foreground: var(--popover-foreground);
  31. --color-primary: var(--primary);
  32. --color-primary-foreground: var(--primary-foreground);
  33. --color-secondary: var(--secondary);
  34. --color-secondary-foreground: var(--secondary-foreground);
  35. --color-muted: var(--muted);
  36. --color-muted-foreground: var(--muted-foreground);
  37. --color-accent: var(--accent);
  38. --color-accent-foreground: var(--accent-foreground);
  39. --color-destructive: var(--destructive);
  40. --color-destructive-foreground: var(--destructive-foreground);
  41. --color-border: var(--border);
  42. --color-input: var(--input);
  43. --color-ring: var(--ring);
  44. --color-chart-1: var(--chart-1);
  45. --color-chart-2: var(--chart-2);
  46. --color-chart-3: var(--chart-3);
  47. --color-chart-4: var(--chart-4);
  48. --color-chart-5: var(--chart-5);
  49. --radius-lg: var(--radius);
  50. --radius-md: calc(var(--radius) - 2px);
  51. --radius-sm: calc(var(--radius) - 4px);
  52. /**
  53. * Allow VSCode colors to be used with Tailwind.
  54. */
  55. --color-vscode-foreground: var(--vscode-foreground);
  56. --color-vscode-background: var(--vscode-background);
  57. --color-vscode-editor-foreground: var(--vscode-editor-foreground);
  58. --color-vscode-editor-background: var(--vscode-editor-background);
  59. --color-vscode-button-foreground: var(--vscode-button-foreground);
  60. --color-vscode-button-background: var(--vscode-button-background);
  61. --color-vscode-button-secondaryForeground: var(--vscode-button-secondaryForeground);
  62. --color-vscode-button-secondaryBackground: var(--vscode-button-secondaryBackground);
  63. --color-vscode-dropdown-foreground: var(--vscode-dropdown-foreground);
  64. --color-vscode-dropdown-background: var(--vscode-dropdown-background);
  65. --color-vscode-dropdown-border: var(--vscode-dropdown-border);
  66. --color-vscode-input-background: var(--vscode-input-background);
  67. --color-vscode-input-border: var(--vscode-input-border);
  68. --color-vscode-badge-foreground: var(--vscode-badge-foreground);
  69. --color-vscode-badge-background: var(--vscode-badge-background);
  70. --color-vscode-notifications-foreground: var(--vscode-notifications-foreground);
  71. --color-vscode-notifications-background: var(--vscode-notifications-background);
  72. --color-vscode-notifications-border: var(--vscode-notifications-border);
  73. }
  74. @layer base {
  75. :root {
  76. --background: var(--vscode-editor-background);
  77. --foreground: var(--vscode-editor-foreground);
  78. --card: var(--vscode-editor-background);
  79. --card-foreground: var(--vscode-editor-foreground);
  80. --popover: var(--vscode-menu-background, var(--vscode-editor-background));
  81. --popover-foreground: var(--vscode-menu-foreground, var(--vscode-editor-foreground));
  82. --primary: var(--vscode-button-background);
  83. --primary-foreground: var(--vscode-button-foreground);
  84. --secondary: var(--vscode-button-secondaryBackground);
  85. --secondary-foreground: var(--vscode-button-secondaryForeground);
  86. --muted: var(--vscode-disabledForeground);
  87. --muted-foreground: var(--vscode-descriptionForeground);
  88. --accent: var(--vscode-list-hoverBackground);
  89. --accent-foreground: var(--vscode-button-foreground);
  90. --destructive: var(--vscode-errorForeground);
  91. --destructive-foreground: var(--vscode-button-foreground);
  92. --border: var(--vscode-input-border);
  93. --input: var(--vscode-input-background);
  94. --ring: var(--vscode-input-border);
  95. --chart-1: var(--vscode-charts-red);
  96. --chart-2: var(--vscode-charts-blue);
  97. --chart-3: var(--vscode-charts-yellow);
  98. --chart-4: var(--vscode-charts-orange);
  99. --chart-5: var(--vscode-charts-green);
  100. --radius: 0.5rem;
  101. }
  102. }
  103. @layer components {
  104. /* Border Styles */
  105. .border,
  106. .border-r,
  107. .border-l,
  108. .border-t,
  109. .border-b,
  110. .border-x,
  111. .border-y {
  112. border-color: var(--border);
  113. }
  114. /* Code Block Styles */
  115. pre,
  116. code {
  117. background-color: var(--vscode-textCodeBlock-background);
  118. }
  119. }
  120. /* Form Element Focus States */
  121. textarea:focus {
  122. outline: 1.5px solid var(--vscode-focusBorder, #007fd4);
  123. }
  124. vscode-button::part(control):focus {
  125. outline: none;
  126. }
  127. /**
  128. * Use vscode native scrollbar styles
  129. * https://github.com/gitkraken/vscode-gitlens/blob/b1d71d4844523e8b2ef16f9e007068e91f46fd88/src/webviews/apps/home/home.scss
  130. */
  131. html {
  132. height: 100%;
  133. -webkit-font-smoothing: antialiased;
  134. -moz-osx-font-smoothing: grayscale;
  135. }
  136. body {
  137. margin: 0;
  138. line-height: 1.25;
  139. }
  140. body.scrollable,
  141. .scrollable,
  142. body.code-block-scrollable,
  143. .code-block-scrollable {
  144. border-color: transparent;
  145. transition: border-color 0.7s linear;
  146. }
  147. body:hover.scrollable,
  148. body:hover .scrollable,
  149. body:focus-within.scrollable,
  150. body:focus-within .scrollable,
  151. body:hover.code-block-scrollable,
  152. body:hover .code-block-scrollable,
  153. body:focus-within.code-block-scrollable,
  154. body:focus-within .code-block-scrollable {
  155. border-color: var(--vscode-scrollbarSlider-background);
  156. transition: none;
  157. }
  158. .scrollable::-webkit-scrollbar-corner {
  159. background-color: transparent !important;
  160. }
  161. .scrollable::-webkit-scrollbar-thumb {
  162. background-color: transparent;
  163. border-color: inherit;
  164. border-right-style: inset;
  165. border-right-width: calc(100vw + 100vh);
  166. border-radius: unset !important;
  167. }
  168. .scrollable::-webkit-scrollbar-thumb:hover {
  169. border-color: var(--vscode-scrollbarSlider-hoverBackground);
  170. }
  171. .scrollable::-webkit-scrollbar-thumb:active {
  172. border-color: var(--vscode-scrollbarSlider-activeBackground);
  173. }
  174. /*
  175. Fix VSCode ignoring webkit scrollbar modifiers
  176. https://github.com/microsoft/vscode/issues/213045
  177. */
  178. @supports selector(::-webkit-scrollbar) {
  179. html {
  180. scrollbar-color: unset;
  181. }
  182. }
  183. /*
  184. The above scrollbar styling uses some transparent background color magic to accomplish its animation. However this doesn't play nicely with SyntaxHighlighter, so we need to set a background color for the code blocks' horizontal scrollbar. This actually has the unintended consequence of always showing the scrollbar which I prefer since it makes it more obvious that there is more content to scroll to.
  185. */
  186. .code-block-scrollable::-webkit-scrollbar-track {
  187. background: transparent;
  188. }
  189. .code-block-scrollable::-webkit-scrollbar-thumb {
  190. background-color: var(--vscode-scrollbarSlider-background);
  191. border-radius: 5px;
  192. border: 2px solid transparent;
  193. background-clip: content-box;
  194. }
  195. .code-block-scrollable::-webkit-scrollbar-thumb:hover {
  196. background-color: var(--vscode-scrollbarSlider-hoverBackground);
  197. }
  198. .code-block-scrollable::-webkit-scrollbar-thumb:active {
  199. background-color: var(--vscode-scrollbarSlider-activeBackground);
  200. }
  201. .code-block-scrollable::-webkit-scrollbar-corner {
  202. background-color: transparent;
  203. }
  204. /**
  205. * Dropdown label
  206. * https://github.com/microsoft/vscode-webview-ui-toolkit/tree/main/src/dropdown#with-label
  207. */
  208. .dropdown-container {
  209. box-sizing: border-box;
  210. display: flex;
  211. flex-flow: column nowrap;
  212. align-items: flex-start;
  213. justify-content: flex-start;
  214. }
  215. .dropdown-container label {
  216. display: block;
  217. color: var(--vscode-foreground);
  218. cursor: pointer;
  219. font-size: var(--vscode-font-size);
  220. line-height: normal;
  221. margin-bottom: 2px;
  222. }
  223. /* Fix dropdown double scrollbar overflow */
  224. #api-provider > div > ul {
  225. overflow: unset;
  226. }
  227. /* Fix scrollbar in dropdown */
  228. vscode-dropdown::part(listbox) {
  229. border-color: var(--vscode-scrollbarSlider-background);
  230. transition: none;
  231. scrollbar-color: var(--vscode-scrollbarSlider-background) transparent;
  232. }
  233. /* Faded icon buttons in textfields */
  234. .input-icon-button {
  235. cursor: pointer;
  236. opacity: 0.65;
  237. }
  238. .input-icon-button:hover {
  239. opacity: 1;
  240. }
  241. .input-icon-button.disabled {
  242. cursor: not-allowed;
  243. opacity: 0.4;
  244. }
  245. .input-icon-button.disabled:hover {
  246. opacity: 0.4;
  247. }
  248. /* Context mentions */
  249. .mention-context-textarea-highlight {
  250. background-color: color-mix(in srgb, var(--vscode-badge-foreground) 30%, transparent);
  251. border-radius: 3px;
  252. box-shadow: 0 0 0 0.5px color-mix(in srgb, var(--vscode-badge-foreground) 30%, transparent);
  253. color: transparent;
  254. }
  255. .mention-context-highlight {
  256. background-color: color-mix(in srgb, var(--vscode-badge-foreground) 30%, transparent);
  257. border-radius: 3px;
  258. }
  259. .mention-context-highlight-with-shadow {
  260. background-color: color-mix(in srgb, var(--vscode-badge-foreground) 30%, transparent);
  261. border-radius: 3px;
  262. box-shadow: 0 0 0 0.5px color-mix(in srgb, var(--vscode-badge-foreground) 30%, transparent);
  263. }
  264. /**
  265. * vscrui Overrides / Hacks
  266. */
  267. .vscrui-checkbox__listbox > ul {
  268. max-height: unset !important;
  269. }
  270. /**
  271. * @shadcn/ui Overrides / Hacks
  272. */
  273. input[cmdk-input]:focus {
  274. outline: none;
  275. }