@nocoo/basalt 2.2.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/README.md +2 -0
  2. package/ai/COMPATIBILITY.md +11 -1
  3. package/ai/DESIGN.md +398 -0
  4. package/ai/INTEGRATION.md +255 -129
  5. package/ai/RECIPES.md +51 -26
  6. package/ai/USAGE.md +4 -4
  7. package/ai/registry.json +3018 -271
  8. package/dist/charts/config.d.ts +11 -11
  9. package/dist/charts/config.js +4 -4
  10. package/dist/charts/config.js.map +1 -1
  11. package/dist/charts/date-navigation.js +10 -10
  12. package/dist/charts/date-navigation.js.map +1 -1
  13. package/dist/charts/donut.js +1 -1
  14. package/dist/charts/donut.js.map +1 -1
  15. package/dist/charts/frame.d.ts +1 -1
  16. package/dist/charts/frame.js +4 -4
  17. package/dist/charts/frame.js.map +1 -1
  18. package/dist/charts/gauge.js +5 -5
  19. package/dist/charts/gauge.js.map +1 -1
  20. package/dist/charts/heatmap-calendar.js +11 -11
  21. package/dist/charts/heatmap-calendar.js.map +1 -1
  22. package/dist/charts/heatmap-matrix.js +8 -8
  23. package/dist/charts/heatmap-matrix.js.map +1 -1
  24. package/dist/charts/item-list.js +1 -1
  25. package/dist/charts/item-list.js.map +1 -1
  26. package/dist/charts/legend.js +19 -19
  27. package/dist/charts/legend.js.map +1 -1
  28. package/dist/charts/palette.js +2 -2
  29. package/dist/charts/palette.js.map +1 -1
  30. package/dist/charts/slot-bar.js +2 -2
  31. package/dist/charts/slot-bar.js.map +1 -1
  32. package/dist/charts/sparkline.js +38 -23
  33. package/dist/charts/sparkline.js.map +1 -1
  34. package/dist/charts/stat-card.d.ts +2 -2
  35. package/dist/charts/stat-card.js +61 -58
  36. package/dist/charts/stat-card.js.map +1 -1
  37. package/dist/charts/timeline.js +18 -9
  38. package/dist/charts/timeline.js.map +1 -1
  39. package/dist/charts/tooltip.js +16 -16
  40. package/dist/charts/tooltip.js.map +1 -1
  41. package/dist/components/accordion.js +1 -1
  42. package/dist/components/accordion.js.map +1 -1
  43. package/dist/components/alert-dialog.js +4 -4
  44. package/dist/components/alert-dialog.js.map +1 -1
  45. package/dist/components/app-header.js +8 -8
  46. package/dist/components/app-header.js.map +1 -1
  47. package/dist/components/app-shell.js +1 -1
  48. package/dist/components/app-shell.js.map +1 -1
  49. package/dist/components/approval-card.d.ts +13 -0
  50. package/dist/components/approval-card.js +161 -0
  51. package/dist/components/approval-card.js.map +1 -0
  52. package/dist/components/avatar.d.ts +12 -0
  53. package/dist/components/avatar.js +39 -18
  54. package/dist/components/avatar.js.map +1 -1
  55. package/dist/components/badge.js +8 -8
  56. package/dist/components/badge.js.map +1 -1
  57. package/dist/components/banner.d.ts +2 -2
  58. package/dist/components/banner.js +9 -8
  59. package/dist/components/banner.js.map +1 -1
  60. package/dist/components/basalt-mark.js +1 -1
  61. package/dist/components/basalt-mark.js.map +1 -1
  62. package/dist/components/battery-meter.js +5 -5
  63. package/dist/components/battery-meter.js.map +1 -1
  64. package/dist/components/breadcrumbs.js +6 -6
  65. package/dist/components/breadcrumbs.js.map +1 -1
  66. package/dist/components/button.js +10 -10
  67. package/dist/components/button.js.map +1 -1
  68. package/dist/components/chat-bubble.js +4 -3
  69. package/dist/components/chat-bubble.js.map +1 -1
  70. package/dist/components/chat-composer.d.ts +21 -3
  71. package/dist/components/chat-composer.js +126 -60
  72. package/dist/components/chat-composer.js.map +1 -1
  73. package/dist/components/chat-header.js +6 -6
  74. package/dist/components/chat-header.js.map +1 -1
  75. package/dist/components/chat-inbox.js +34 -30
  76. package/dist/components/chat-inbox.js.map +1 -1
  77. package/dist/components/chat-markdown.d.ts +8 -0
  78. package/dist/components/chat-markdown.js +122 -0
  79. package/dist/components/chat-markdown.js.map +1 -0
  80. package/dist/components/chat-message.d.ts +26 -0
  81. package/dist/components/chat-message.js +145 -0
  82. package/dist/components/chat-message.js.map +1 -0
  83. package/dist/components/checkbox.js +11 -11
  84. package/dist/components/checkbox.js.map +1 -1
  85. package/dist/components/clipboard-text.js +3 -3
  86. package/dist/components/clipboard-text.js.map +1 -1
  87. package/dist/components/code.d.ts +22 -20
  88. package/dist/components/code.js +94 -32
  89. package/dist/components/code.js.map +1 -1
  90. package/dist/components/collapsible.js +8 -4
  91. package/dist/components/collapsible.js.map +1 -1
  92. package/dist/components/command-palette.js +73 -47
  93. package/dist/components/command-palette.js.map +1 -1
  94. package/dist/components/context-cards.d.ts +15 -0
  95. package/dist/components/context-cards.js +148 -0
  96. package/dist/components/context-cards.js.map +1 -0
  97. package/dist/components/context-menu.d.ts +1 -1
  98. package/dist/components/context-menu.js +18 -14
  99. package/dist/components/context-menu.js.map +1 -1
  100. package/dist/components/data-table.d.ts +14 -2
  101. package/dist/components/data-table.js +185 -135
  102. package/dist/components/data-table.js.map +1 -1
  103. package/dist/components/date-picker.js +13 -13
  104. package/dist/components/date-picker.js.map +1 -1
  105. package/dist/components/delete-resource.js +1 -1
  106. package/dist/components/delete-resource.js.map +1 -1
  107. package/dist/components/description-list.js +3 -3
  108. package/dist/components/description-list.js.map +1 -1
  109. package/dist/components/dialog.d.ts +2 -2
  110. package/dist/components/dialog.js +8 -8
  111. package/dist/components/dialog.js.map +1 -1
  112. package/dist/components/diff-table.d.ts +15 -0
  113. package/dist/components/diff-table.js +151 -0
  114. package/dist/components/diff-table.js.map +1 -0
  115. package/dist/components/dock.js +2 -2
  116. package/dist/components/dock.js.map +1 -1
  117. package/dist/components/dropdown-menu.js +23 -18
  118. package/dist/components/dropdown-menu.js.map +1 -1
  119. package/dist/components/editable-nav-item.js +63 -58
  120. package/dist/components/editable-nav-item.js.map +1 -1
  121. package/dist/components/empty.js +6 -6
  122. package/dist/components/empty.js.map +1 -1
  123. package/dist/components/fab.js +1 -1
  124. package/dist/components/fab.js.map +1 -1
  125. package/dist/components/field.js +3 -3
  126. package/dist/components/field.js.map +1 -1
  127. package/dist/components/file-dropzone.js +7 -7
  128. package/dist/components/file-dropzone.js.map +1 -1
  129. package/dist/components/filter-bar.js +6 -6
  130. package/dist/components/filter-bar.js.map +1 -1
  131. package/dist/components/flow.js +4 -3
  132. package/dist/components/flow.js.map +1 -1
  133. package/dist/components/grid.d.ts +3 -1
  134. package/dist/components/grid.js +15 -8
  135. package/dist/components/grid.js.map +1 -1
  136. package/dist/components/hover-card.js +1 -1
  137. package/dist/components/hover-card.js.map +1 -1
  138. package/dist/components/icon-picker.d.ts +8 -2
  139. package/dist/components/icon-picker.js +75 -47
  140. package/dist/components/icon-picker.js.map +1 -1
  141. package/dist/components/inline-editable.js +6 -6
  142. package/dist/components/inline-editable.js.map +1 -1
  143. package/dist/components/input-area.js +3 -3
  144. package/dist/components/input-area.js.map +1 -1
  145. package/dist/components/input-group.js +5 -5
  146. package/dist/components/input-group.js.map +1 -1
  147. package/dist/components/input.js +4 -4
  148. package/dist/components/input.js.map +1 -1
  149. package/dist/components/label.js +3 -3
  150. package/dist/components/label.js.map +1 -1
  151. package/dist/components/layer-card.d.ts +9 -4
  152. package/dist/components/layer-card.js +72 -67
  153. package/dist/components/layer-card.js.map +1 -1
  154. package/dist/components/loader.d.ts +16 -10
  155. package/dist/components/loader.js +46 -53
  156. package/dist/components/loader.js.map +1 -1
  157. package/dist/components/loading-screen.js +3 -3
  158. package/dist/components/loading-screen.js.map +1 -1
  159. package/dist/components/menu-bar.js +32 -27
  160. package/dist/components/menu-bar.js.map +1 -1
  161. package/dist/components/meter.d.ts +5 -5
  162. package/dist/components/meter.js +25 -12
  163. package/dist/components/meter.js.map +1 -1
  164. package/dist/components/multi-select.js +66 -62
  165. package/dist/components/multi-select.js.map +1 -1
  166. package/dist/components/navigation-menu.d.ts +2 -2
  167. package/dist/components/navigation-menu.js +22 -8
  168. package/dist/components/navigation-menu.js.map +1 -1
  169. package/dist/components/overlay.js +2 -2
  170. package/dist/components/overlay.js.map +1 -1
  171. package/dist/components/page-header.d.ts +3 -1
  172. package/dist/components/page-header.js +12 -12
  173. package/dist/components/page-header.js.map +1 -1
  174. package/dist/components/pagination.js +3 -3
  175. package/dist/components/pagination.js.map +1 -1
  176. package/dist/components/popover.js +18 -23
  177. package/dist/components/popover.js.map +1 -1
  178. package/dist/components/prompt-bar.d.ts +16 -0
  179. package/dist/components/prompt-bar.js +49 -0
  180. package/dist/components/prompt-bar.js.map +1 -0
  181. package/dist/components/radio.js +9 -9
  182. package/dist/components/radio.js.map +1 -1
  183. package/dist/components/recommendation-card.d.ts +13 -0
  184. package/dist/components/recommendation-card.js +123 -0
  185. package/dist/components/recommendation-card.js.map +1 -0
  186. package/dist/components/resource-list.js +1 -1
  187. package/dist/components/resource-list.js.map +1 -1
  188. package/dist/components/responsive-master-detail.js +4 -4
  189. package/dist/components/responsive-master-detail.js.map +1 -1
  190. package/dist/components/scroll-area.js +3 -3
  191. package/dist/components/scroll-area.js.map +1 -1
  192. package/dist/components/section-rule.d.ts +5 -3
  193. package/dist/components/section-rule.js +12 -12
  194. package/dist/components/section-rule.js.map +1 -1
  195. package/dist/components/segment-control.js +3 -3
  196. package/dist/components/segment-control.js.map +1 -1
  197. package/dist/components/select.js +47 -32
  198. package/dist/components/select.js.map +1 -1
  199. package/dist/components/sensitive-input.js +17 -19
  200. package/dist/components/sensitive-input.js.map +1 -1
  201. package/dist/components/sheet.d.ts +4 -4
  202. package/dist/components/sheet.js +11 -10
  203. package/dist/components/sheet.js.map +1 -1
  204. package/dist/components/sidebar.js +149 -137
  205. package/dist/components/sidebar.js.map +1 -1
  206. package/dist/components/skeleton-line.d.ts +1 -1
  207. package/dist/components/skeleton-line.js +2 -2
  208. package/dist/components/skeleton-line.js.map +1 -1
  209. package/dist/components/slider.js +2 -2
  210. package/dist/components/slider.js.map +1 -1
  211. package/dist/components/stat-strip.js +5 -4
  212. package/dist/components/stat-strip.js.map +1 -1
  213. package/dist/components/switch.js +6 -6
  214. package/dist/components/switch.js.map +1 -1
  215. package/dist/components/table-of-contents.js +5 -5
  216. package/dist/components/table-of-contents.js.map +1 -1
  217. package/dist/components/table-pager.js +2 -2
  218. package/dist/components/table-pager.js.map +1 -1
  219. package/dist/components/table.d.ts +39 -2
  220. package/dist/components/table.js +48 -17
  221. package/dist/components/table.js.map +1 -1
  222. package/dist/components/tabs.js +7 -6
  223. package/dist/components/tabs.js.map +1 -1
  224. package/dist/components/tag-badge.d.ts +10 -10
  225. package/dist/components/tag-badge.js +11 -11
  226. package/dist/components/tag-badge.js.map +1 -1
  227. package/dist/components/tag-color-picker.d.ts +8 -1
  228. package/dist/components/tag-color-picker.js +33 -25
  229. package/dist/components/tag-color-picker.js.map +1 -1
  230. package/dist/components/text.js +5 -5
  231. package/dist/components/text.js.map +1 -1
  232. package/dist/components/theme-toggle.js +1 -1
  233. package/dist/components/theme-toggle.js.map +1 -1
  234. package/dist/components/thinking.d.ts +16 -0
  235. package/dist/components/thinking.js +85 -0
  236. package/dist/components/thinking.js.map +1 -0
  237. package/dist/components/toast.js +25 -20
  238. package/dist/components/toast.js.map +1 -1
  239. package/dist/components/toggle-group.js +6 -5
  240. package/dist/components/toggle-group.js.map +1 -1
  241. package/dist/components/toggle.js +6 -6
  242. package/dist/components/toggle.js.map +1 -1
  243. package/dist/components/tool-chips.d.ts +12 -0
  244. package/dist/components/tool-chips.js +138 -0
  245. package/dist/components/tool-chips.js.map +1 -0
  246. package/dist/components/toolbar.js +3 -3
  247. package/dist/components/toolbar.js.map +1 -1
  248. package/dist/components/tooltip.js +1 -1
  249. package/dist/components/tooltip.js.map +1 -1
  250. package/dist/components/typeahead-field.js +59 -56
  251. package/dist/components/typeahead-field.js.map +1 -1
  252. package/dist/components/upload-queue.js +15 -14
  253. package/dist/components/upload-queue.js.map +1 -1
  254. package/dist/models/agent-feedback.d.ts +44 -0
  255. package/dist/models/agent-feedback.js +28 -0
  256. package/dist/models/agent-feedback.js.map +1 -0
  257. package/dist/models/avatar.d.ts +2 -0
  258. package/dist/models/avatar.js +15 -0
  259. package/dist/models/avatar.js.map +1 -0
  260. package/dist/models/code.d.ts +6 -0
  261. package/dist/models/code.js +24 -0
  262. package/dist/models/code.js.map +1 -0
  263. package/dist/models/context-cards.d.ts +13 -0
  264. package/dist/models/context-cards.js +17 -0
  265. package/dist/models/context-cards.js.map +1 -0
  266. package/dist/models/diff-table.d.ts +12 -0
  267. package/dist/models/diff-table.js +9 -0
  268. package/dist/models/diff-table.js.map +1 -0
  269. package/dist/models/recommendation.d.ts +26 -0
  270. package/dist/models/recommendation.js +23 -0
  271. package/dist/models/recommendation.js.map +1 -0
  272. package/dist/styles/base.css +14 -2
  273. package/dist/styles/standalone.css +1901 -943
  274. package/dist/styles/tailwind.css +180 -13
  275. package/dist/styles/tokens.css +681 -20
  276. package/dist/utils/cn.js +25 -4
  277. package/dist/utils/cn.js.map +1 -1
  278. package/dist/utils/control-surface.d.ts +1 -1
  279. package/dist/utils/control-surface.js +1 -1
  280. package/dist/utils/control-surface.js.map +1 -1
  281. package/dist/utils/navigation.d.ts +3 -0
  282. package/dist/utils/navigation.js +8 -0
  283. package/dist/utils/navigation.js.map +1 -0
  284. package/dist/utils/selection-indicator.d.ts +1 -1
  285. package/dist/utils/selection-indicator.js +49 -72
  286. package/dist/utils/selection-indicator.js.map +1 -1
  287. package/dist/utils/use-hover-highlight.d.ts +4 -0
  288. package/dist/utils/use-hover-highlight.js +82 -0
  289. package/dist/utils/use-hover-highlight.js.map +1 -0
  290. package/dist/viewmodels/use-approval-card.d.ts +20 -0
  291. package/dist/viewmodels/use-approval-card.js +83 -0
  292. package/dist/viewmodels/use-approval-card.js.map +1 -0
  293. package/dist/viewmodels/use-chat-composer.d.ts +16 -0
  294. package/dist/viewmodels/use-chat-composer.js +34 -0
  295. package/dist/viewmodels/use-chat-composer.js.map +1 -0
  296. package/dist/viewmodels/use-chat-message.d.ts +16 -0
  297. package/dist/viewmodels/use-chat-message.js +26 -0
  298. package/dist/viewmodels/use-chat-message.js.map +1 -0
  299. package/dist/viewmodels/use-code-block.d.ts +8 -0
  300. package/dist/viewmodels/use-code-block.js +38 -0
  301. package/dist/viewmodels/use-code-block.js.map +1 -0
  302. package/dist/viewmodels/use-context-cards.d.ts +17 -0
  303. package/dist/viewmodels/use-context-cards.js +18 -0
  304. package/dist/viewmodels/use-context-cards.js.map +1 -0
  305. package/dist/viewmodels/use-diff-table.d.ts +16 -0
  306. package/dist/viewmodels/use-diff-table.js +42 -0
  307. package/dist/viewmodels/use-diff-table.js.map +1 -0
  308. package/dist/viewmodels/use-loader.d.ts +4 -0
  309. package/dist/viewmodels/use-loader.js +22 -0
  310. package/dist/viewmodels/use-loader.js.map +1 -0
  311. package/dist/viewmodels/use-recommendation-card.d.ts +17 -0
  312. package/dist/viewmodels/use-recommendation-card.js +41 -0
  313. package/dist/viewmodels/use-recommendation-card.js.map +1 -0
  314. package/dist/viewmodels/use-thinking.d.ts +13 -0
  315. package/dist/viewmodels/use-thinking.js +18 -0
  316. package/dist/viewmodels/use-thinking.js.map +1 -0
  317. package/dist/viewmodels/use-tool-chips.d.ts +10 -0
  318. package/dist/viewmodels/use-tool-chips.js +20 -0
  319. package/dist/viewmodels/use-tool-chips.js.map +1 -0
  320. package/package.json +28 -26
@@ -1,3 +1,131 @@
1
+ :root {
2
+ --basalt-space-xs: 0.125rem;
3
+ --basalt-space-sm: 0.25rem;
4
+ --basalt-space-md: 0.375rem;
5
+ --basalt-space-lg: 0.5rem;
6
+ --basalt-space-default: var(--basalt-space-lg);
7
+ --basalt-text-xs: 0.6875rem;
8
+ --basalt-text-sm: 0.75rem;
9
+ --basalt-text-code: 0.8125rem;
10
+ --basalt-text-base: 0.875rem;
11
+ --basalt-text-lg: 1rem;
12
+ --basalt-text-xl: 1.125rem;
13
+ --basalt-text-2xl: 1.25rem;
14
+ --basalt-text-3xl: 1.5rem;
15
+ --basalt-text-4xl: 1.875rem;
16
+ --basalt-text-5xl: 2.25rem;
17
+ --basalt-text-6xl: 3rem;
18
+ --basalt-text-7xl: 3.75rem;
19
+ --basalt-text-8xl: 4.5rem;
20
+ --basalt-text-9xl: 6rem;
21
+ --basalt-text-10xl: 8rem;
22
+ --basalt-leading-tight: 1.2;
23
+ --basalt-leading-body: 1.4285714286;
24
+ --basalt-leading-relaxed: 1.5;
25
+ --basalt-leading-inline: calc(16 / 12);
26
+ --basalt-leading-action: calc(24 / 14);
27
+ --basalt-leading-action-sm: 1.5;
28
+ --basalt-leading-action-lg: 1.375;
29
+ --basalt-leading-banner: calc(22 / 14);
30
+ --basalt-radius-sm: 0.25rem;
31
+ --basalt-radius-md: 0.5rem;
32
+ --basalt-radius-lg: 0.75rem;
33
+ --basalt-radius-full: 999rem;
34
+ --basalt-border-width: 0.0625rem;
35
+ --basalt-on-solid: 0 0% 100%;
36
+ --basalt-backdrop: 0 0% 0%;
37
+ --basalt-motion-fast: 120ms;
38
+ --basalt-motion-loader: 800ms;
39
+ --basalt-motion-normal: 180ms;
40
+ --basalt-motion-slow: 280ms;
41
+ --basalt-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
42
+
43
+ --basalt-line-compact: 1rem;
44
+ --basalt-line-body: 1.25rem;
45
+ --basalt-line-row: 1.375rem;
46
+ --basalt-line-relaxed: 1.5rem;
47
+ --basalt-space-unit: 0.25rem;
48
+ --basalt-space-0_5: calc(var(--basalt-space-unit) * 0.5);
49
+ --basalt-space-1: calc(var(--basalt-space-unit) * 1);
50
+ --basalt-space-1_5: calc(var(--basalt-space-unit) * 1.5);
51
+ --basalt-space-2: calc(var(--basalt-space-unit) * 2);
52
+ --basalt-space-2_5: calc(var(--basalt-space-unit) * 2.5);
53
+ --basalt-space-3: calc(var(--basalt-space-unit) * 3);
54
+ --basalt-space-3_5: calc(var(--basalt-space-unit) * 3.5);
55
+ --basalt-space-4: calc(var(--basalt-space-unit) * 4);
56
+ --basalt-space-5: calc(var(--basalt-space-unit) * 5);
57
+ --basalt-space-6: calc(var(--basalt-space-unit) * 6);
58
+ --basalt-space-7: calc(var(--basalt-space-unit) * 7);
59
+ --basalt-space-8: calc(var(--basalt-space-unit) * 8);
60
+ --basalt-space-9: calc(var(--basalt-space-unit) * 9);
61
+ --basalt-space-10: calc(var(--basalt-space-unit) * 10);
62
+ --basalt-space-11: calc(var(--basalt-space-unit) * 11);
63
+ --basalt-space-12: calc(var(--basalt-space-unit) * 12);
64
+ --basalt-space-14: calc(var(--basalt-space-unit) * 14);
65
+ --basalt-space-16: calc(var(--basalt-space-unit) * 16);
66
+ --basalt-space-28: calc(var(--basalt-space-unit) * 28);
67
+ --basalt-space-36: calc(var(--basalt-space-unit) * 36);
68
+ --basalt-space-40: calc(var(--basalt-space-unit) * 40);
69
+ --basalt-space-56: calc(var(--basalt-space-unit) * 56);
70
+ --basalt-space-60: calc(var(--basalt-space-unit) * 60);
71
+ --basalt-space-64: calc(var(--basalt-space-unit) * 64);
72
+ --basalt-space-72: calc(var(--basalt-space-unit) * 72);
73
+ --basalt-space-80: calc(var(--basalt-space-unit) * 80);
74
+ --basalt-space-96: calc(var(--basalt-space-unit) * 96);
75
+ --basalt-size-control: 2.125rem;
76
+ --basalt-size-control-sm: 1.75rem;
77
+ --basalt-size-control-lg: 2.5rem;
78
+ --basalt-size-control-inset: 1.75rem;
79
+ --basalt-size-icon: 0.875rem;
80
+ --basalt-size-icon-sm: 0.75rem;
81
+ --basalt-size-icon-lg: 1rem;
82
+ --basalt-size-icon-display: 1.5rem;
83
+ --basalt-size-touch: 2.75rem;
84
+ --basalt-size-menu-row: var(--basalt-size-control);
85
+ --basalt-size-table-row: 2.25rem;
86
+ --basalt-size-check: 1rem;
87
+ --basalt-size-check-sm: 0.75rem;
88
+ --basalt-size-textarea: 5rem;
89
+ --basalt-size-textarea-sm: 4rem;
90
+ --basalt-size-textarea-lg: 6rem;
91
+ --basalt-space-control-x: var(--basalt-space-lg);
92
+ --basalt-space-control-x-sm: var(--basalt-space-md);
93
+ --basalt-space-control-x-lg: var(--basalt-space-lg);
94
+ --basalt-space-control-y: var(--basalt-space-sm);
95
+ --basalt-space-control-gap: var(--basalt-space-lg);
96
+ --basalt-space-menu-inset: var(--basalt-space-lg);
97
+ --basalt-space-menu-x: var(--basalt-space-lg);
98
+ --basalt-space-menu-y: var(--basalt-space-md);
99
+ --basalt-space-card-sm: 0.75rem;
100
+ --basalt-space-card: 1rem;
101
+ --basalt-space-card-lg: 1.5rem;
102
+ --basalt-space-card-xl: 2rem;
103
+ --basalt-space-layout-sm: 0.75rem;
104
+ --basalt-space-layout: 1rem;
105
+ --basalt-space-layout-lg: 1.5rem;
106
+ --basalt-space-layout-xl: 2rem;
107
+ --basalt-space-field-gap: var(--basalt-space-lg);
108
+ --basalt-space-table-x: var(--basalt-space-lg);
109
+ --basalt-space-table-y: var(--basalt-space-md);
110
+ --basalt-space-overlay: var(--basalt-space-lg);
111
+ --basalt-space-panel-x: var(--basalt-space-card);
112
+ --basalt-space-panel-y: var(--basalt-space-card-sm);
113
+ --basalt-space-table-edge: var(--basalt-space-panel-x);
114
+ --basalt-space-content-gap: var(--basalt-space-lg);
115
+ --basalt-space-row-x: var(--basalt-space-lg);
116
+ --basalt-space-row-y: var(--basalt-space-md);
117
+ --basalt-space-row-gap: var(--basalt-space-lg);
118
+ --basalt-space-row-content: calc(
119
+ var(--basalt-space-row-x) +
120
+ var(--basalt-size-icon-lg) +
121
+ var(--basalt-space-row-gap)
122
+ );
123
+ --basalt-size-action: var(--basalt-size-control);
124
+ --basalt-space-nav-inset: var(--basalt-space-lg);
125
+ --basalt-space-nav-gap: var(--basalt-space-xs);
126
+ --basalt-size-rail: 4.25rem;
127
+ }
128
+
1
129
  :root,
2
130
  .light,
3
131
  [data-mode="light"] {
@@ -31,11 +159,36 @@
31
159
  --basalt-input: 220 13% 88%;
32
160
  --basalt-ring: var(--basalt-primary);
33
161
  --basalt-control-fill: hsl(var(--basalt-secondary));
162
+ --basalt-hover: color-mix(in srgb, hsl(var(--basalt-primary)) 9.6%, hsl(var(--basalt-popover)));
163
+ --basalt-hover-end: color-mix(
164
+ in srgb,
165
+ hsl(var(--basalt-primary)) 4.8%,
166
+ hsl(var(--basalt-popover))
167
+ );
168
+ --basalt-selected: 0 0% 100%;
169
+ --basalt-selected-foreground: var(--basalt-foreground);
170
+ --basalt-primary-hover: color-mix(
171
+ in srgb,
172
+ hsl(var(--basalt-primary)) 90%,
173
+ hsl(var(--basalt-background))
174
+ );
175
+ --basalt-destructive-hover: color-mix(
176
+ in srgb,
177
+ hsl(var(--basalt-destructive)) 90%,
178
+ hsl(var(--basalt-background))
179
+ );
34
180
  --basalt-zebra-fill: hsl(var(--basalt-bright));
35
- --basalt-radius: 0.75rem;
36
- --basalt-radius-island: 20px;
37
- --basalt-radius-card: 14px;
38
- --basalt-radius-widget: 10px;
181
+ --basalt-radius: var(--basalt-radius-lg);
182
+ --basalt-radius-island: var(--basalt-radius-lg);
183
+ --basalt-radius-card: var(--basalt-radius-lg);
184
+ --basalt-radius-widget: var(--basalt-radius-md);
185
+ --basalt-motion-ease-enter: cubic-bezier(0.25, 1, 0.5, 1);
186
+ --basalt-motion-ease-exit: cubic-bezier(0.5, 0, 0.75, 0);
187
+ --basalt-sheet-duration-enter: 350ms;
188
+ --basalt-sheet-duration-exit: 250ms;
189
+ --basalt-sheet-backdrop-blur: 6px;
190
+ --basalt-floating-duration-enter: 200ms;
191
+ --basalt-floating-duration-exit: 150ms;
39
192
  --basalt-font-sans: "Inter", system-ui, -apple-system, sans-serif;
40
193
  --basalt-font-display: "DM Sans", system-ui, sans-serif;
41
194
  /* Match the classic candy swatches; gray and preference ownership stay independent. */
@@ -81,9 +234,10 @@
81
234
  --basalt-accent-10: 280 53% 71%;
82
235
  --basalt-accent-11: 237 66% 69%;
83
236
  --basalt-accent-12: 210 20% 87%;
237
+ --basalt-badge-green: 113 60% 30%;
84
238
  --basalt-badge-green-foreground: 0 0% 100%;
85
- --basalt-badge-teal: var(--basalt-accent-3);
86
- --basalt-badge-purple: var(--basalt-accent-10);
239
+ --basalt-badge-teal: 182 62% 30%;
240
+ --basalt-badge-purple: 280 53% 40%;
87
241
  --basalt-badge-teal-foreground: 0 0% 100%;
88
242
  --basalt-badge-purple-foreground: 0 0% 100%;
89
243
  --basalt-chart-axis: 0 0% 40%;
@@ -134,15 +288,34 @@
134
288
  --basalt-danger-tint: 0 40% 16%;
135
289
  --basalt-info-foreground: 0 0% 10%;
136
290
  --basalt-warning-foreground: 0 0% 10%;
137
- --basalt-badge-green-foreground: 0 0% 100%;
291
+ --basalt-badge-green: 113 55% 62%;
292
+ --basalt-badge-green-foreground: 0 0% 10%;
138
293
  --basalt-badge-teal: var(--basalt-accent-3);
139
294
  --basalt-badge-purple: var(--basalt-accent-10);
140
- --basalt-badge-teal-foreground: 0 0% 100%;
141
- --basalt-badge-purple-foreground: 0 0% 100%;
295
+ --basalt-badge-teal-foreground: 0 0% 10%;
296
+ --basalt-badge-purple-foreground: 0 0% 10%;
142
297
  --basalt-border: 0 0% 16%;
143
298
  --basalt-input: 0 0% 18%;
144
299
  --basalt-ring: var(--basalt-primary);
145
300
  --basalt-control-fill: hsl(var(--basalt-secondary));
301
+ --basalt-hover: color-mix(in srgb, hsl(var(--basalt-primary)) 16%, hsl(var(--basalt-popover)));
302
+ --basalt-hover-end: color-mix(
303
+ in srgb,
304
+ hsl(var(--basalt-primary)) 9.6%,
305
+ hsl(var(--basalt-popover))
306
+ );
307
+ --basalt-selected: 0 0% 22%;
308
+ --basalt-selected-foreground: var(--basalt-foreground);
309
+ --basalt-primary-hover: color-mix(
310
+ in srgb,
311
+ hsl(var(--basalt-primary)) 90%,
312
+ hsl(var(--basalt-background))
313
+ );
314
+ --basalt-destructive-hover: color-mix(
315
+ in srgb,
316
+ hsl(var(--basalt-destructive)) 90%,
317
+ hsl(var(--basalt-background))
318
+ );
146
319
  --basalt-zebra-fill: hsl(var(--basalt-bright));
147
320
  /* Match the classic candy swatches; gray and preference ownership stay independent. */
148
321
  --basalt-chart-blue: 204 90% 70%;
@@ -216,6 +389,16 @@
216
389
  [data-basalt-surface-root] [data-basalt-surface] {
217
390
  background: hsl(var(--basalt-secondary));
218
391
  --basalt-control-fill: hsl(var(--basalt-secondary));
392
+ --basalt-primary-hover: color-mix(
393
+ in srgb,
394
+ hsl(var(--basalt-primary)) 90%,
395
+ hsl(var(--basalt-background))
396
+ );
397
+ --basalt-destructive-hover: color-mix(
398
+ in srgb,
399
+ hsl(var(--basalt-destructive)) 90%,
400
+ hsl(var(--basalt-background))
401
+ );
219
402
  --basalt-zebra-fill: hsl(var(--basalt-bright));
220
403
  }
221
404
 
@@ -241,6 +424,16 @@
241
424
  [data-basalt-surface]:not([data-basalt-surface-root] *) [data-basalt-surface] {
242
425
  background: hsl(var(--basalt-secondary));
243
426
  --basalt-control-fill: hsl(var(--basalt-secondary));
427
+ --basalt-primary-hover: color-mix(
428
+ in srgb,
429
+ hsl(var(--basalt-primary)) 90%,
430
+ hsl(var(--basalt-background))
431
+ );
432
+ --basalt-destructive-hover: color-mix(
433
+ in srgb,
434
+ hsl(var(--basalt-destructive)) 90%,
435
+ hsl(var(--basalt-background))
436
+ );
244
437
  --basalt-zebra-fill: hsl(var(--basalt-bright));
245
438
  }
246
439
 
@@ -262,17 +455,388 @@
262
455
  }
263
456
 
264
457
  [data-basalt-table] tbody tr[aria-selected="true"] td {
265
- background: hsl(var(--basalt-accent));
458
+ background: hsl(var(--basalt-selected));
459
+ color: hsl(var(--basalt-selected-foreground));
266
460
  }
267
461
 
268
462
  [data-basalt-table] tbody tr:hover:not([aria-selected="true"]) td {
269
- background: color-mix(in oklab, hsl(var(--basalt-primary)) 3%, var(--basalt-control-fill));
463
+ background: var(--basalt-hover);
270
464
  }
271
465
 
272
466
  [data-basalt-table] tbody tr:nth-child(even):not([aria-selected="true"]):not(:hover) td {
273
467
  background: var(--basalt-zebra-fill);
274
468
  }
275
469
 
470
+ [data-basalt-table]
471
+ tbody
472
+ tr[data-diff-change="remove"][data-included="true"][aria-selected="true"]
473
+ td {
474
+ background: hsl(var(--basalt-danger-tint));
475
+ color: hsl(var(--basalt-danger));
476
+ }
477
+
478
+ [data-basalt-table]
479
+ tbody
480
+ tr[data-diff-change="add"][data-included="true"][aria-selected="true"]
481
+ td {
482
+ background: hsl(var(--basalt-info-tint));
483
+ color: hsl(var(--basalt-info));
484
+ }
485
+
486
+ /* Persistent selection is independent of the moving pointer/keyboard highlight. */
487
+ :is(.basalt-choice, [data-basalt-hover-item]):is(
488
+ [data-hover-selected="true"],
489
+ [aria-pressed="true"],
490
+ [aria-current="page"],
491
+ [aria-current="true"],
492
+ [data-state="checked"]
493
+ ) {
494
+ background-color: hsl(var(--basalt-selected));
495
+ color: hsl(var(--basalt-selected-foreground));
496
+ }
497
+
498
+ .basalt-nav-item[data-hover-selected="true"] {
499
+ font-weight: 500;
500
+ }
501
+
502
+ .basalt-nav-item .basalt-choice[aria-current] {
503
+ background-color: transparent;
504
+ }
505
+
506
+ @layer components {
507
+ .basalt-action {
508
+ border: var(--basalt-border-width) solid transparent;
509
+ padding: var(--basalt-space-control-y) var(--basalt-space-control-x);
510
+ font-size: var(--basalt-text-base);
511
+ line-height: var(--basalt-leading-action);
512
+ }
513
+ .basalt-action-sm {
514
+ padding-inline: var(--basalt-space-control-x-sm);
515
+ font-size: var(--basalt-text-sm);
516
+ line-height: var(--basalt-leading-action-sm);
517
+ }
518
+ .basalt-action-lg {
519
+ padding-block: var(--basalt-space-lg);
520
+ padding-inline: var(--basalt-space-control-x-lg);
521
+ font-size: var(--basalt-text-lg);
522
+ line-height: var(--basalt-leading-action-lg);
523
+ }
524
+ .basalt-action-icon {
525
+ min-inline-size: var(--basalt-size-control);
526
+ min-block-size: calc(1lh + 2 * var(--basalt-space-control-y) + 2 * var(--basalt-border-width));
527
+ padding-inline: var(--basalt-space-sm);
528
+ }
529
+ .basalt-action-inset {
530
+ border-width: 0;
531
+ min-block-size: calc(1lh + 2 * var(--basalt-space-control-y));
532
+ }
533
+ .basalt-inline {
534
+ padding: var(--basalt-space-xs) var(--basalt-space-default);
535
+ font-size: var(--basalt-text-sm);
536
+ line-height: var(--basalt-leading-inline);
537
+ }
538
+ .basalt-banner {
539
+ padding: var(--basalt-space-panel-y) var(--basalt-space-panel-x);
540
+ font-size: var(--basalt-text-base);
541
+ line-height: var(--basalt-leading-banner);
542
+ }
543
+ .basalt-motion {
544
+ transition-duration: var(--basalt-motion-normal);
545
+ transition-timing-function: var(--basalt-motion-ease);
546
+ }
547
+ @media (prefers-reduced-motion: reduce) {
548
+ .basalt-motion {
549
+ transition: none;
550
+ }
551
+ }
552
+ .basalt-selection-motion {
553
+ transition:
554
+ transform var(--basalt-motion-normal) var(--basalt-motion-ease),
555
+ width var(--basalt-motion-normal) var(--basalt-motion-ease);
556
+ }
557
+ @media (prefers-reduced-motion: reduce) {
558
+ .basalt-selection-motion {
559
+ transition: none;
560
+ }
561
+ }
562
+
563
+ .basalt-nav-item {
564
+ position: relative;
565
+ cursor: pointer;
566
+ color: hsl(var(--basalt-muted-foreground));
567
+ transition:
568
+ color var(--basalt-motion-normal) var(--basalt-motion-ease),
569
+ background-color var(--basalt-motion-normal) var(--basalt-motion-ease);
570
+ }
571
+ .basalt-nav-item:is(:hover, :focus-visible) {
572
+ background-color: var(--basalt-hover);
573
+ color: hsl(var(--basalt-foreground));
574
+ }
575
+ .basalt-hover-list[data-hover-visible="true"] .basalt-nav-item:not([data-hover-selected="true"]) {
576
+ background-color: transparent;
577
+ }
578
+ .basalt-nav-item:is(:disabled, [aria-disabled="true"]) {
579
+ pointer-events: none;
580
+ opacity: 0.5;
581
+ }
582
+ [data-basalt-sidebar][data-collapsed]
583
+ :is([data-slot="sidebar-header"], [data-slot="sidebar-footer"]) {
584
+ justify-content: center;
585
+ }
586
+ [data-basalt-sidebar][data-collapsed] [data-slot="sidebar-footer"] {
587
+ align-items: center;
588
+ }
589
+ [data-basalt-sidebar][data-collapsed] [data-slot="sidebar-nav"] .basalt-nav-item {
590
+ margin-inline: auto;
591
+ }
592
+ @media (prefers-reduced-motion: reduce) {
593
+ .basalt-nav-item {
594
+ transition: none;
595
+ }
596
+ }
597
+ .basalt-chat-input {
598
+ field-sizing: content;
599
+ min-height: calc(1lh + var(--basalt-space-2));
600
+ max-height: calc(5lh + var(--basalt-space-2));
601
+ overscroll-behavior: contain;
602
+ }
603
+ .basalt-hover-list {
604
+ position: relative;
605
+ isolation: isolate;
606
+ }
607
+ .basalt-hover-list::before {
608
+ content: "";
609
+ position: absolute;
610
+ pointer-events: none;
611
+ left: 0;
612
+ top: 0;
613
+ z-index: -1;
614
+ width: var(--basalt-hover-width, 0px);
615
+ height: var(--basalt-hover-height, 0px);
616
+ transform: translate(var(--basalt-hover-x, 0px), var(--basalt-hover-y, 0px));
617
+ border-radius: var(--basalt-radius-md);
618
+ background: linear-gradient(90deg, var(--basalt-hover), var(--basalt-hover-end));
619
+ opacity: 0;
620
+ transition: none;
621
+ }
622
+ .basalt-hover-list[data-hover-visible="true"]::before {
623
+ opacity: 1;
624
+ }
625
+ .basalt-hover-list[data-hover-animated="true"]::before {
626
+ transition:
627
+ transform var(--basalt-motion-normal) var(--basalt-motion-ease),
628
+ opacity var(--basalt-motion-fast) var(--basalt-motion-ease);
629
+ }
630
+ @media (prefers-reduced-motion: reduce) {
631
+ .basalt-hover-list[data-hover-animated]::before {
632
+ transition: none;
633
+ }
634
+ }
635
+ .basalt-agent-reveal {
636
+ animation: basalt-tab-in var(--basalt-motion-normal) var(--basalt-motion-ease-enter);
637
+ }
638
+ @media (prefers-reduced-motion: reduce) {
639
+ .basalt-agent-reveal {
640
+ animation: none;
641
+ }
642
+ }
643
+ [data-basalt-loader] > span {
644
+ opacity: 0.18;
645
+ }
646
+ [data-basalt-loader][data-animated="true"] > span {
647
+ animation: basalt-pixel-orbit var(--basalt-motion-loader) linear var(--basalt-pixel-delay)
648
+ infinite;
649
+ }
650
+ .basalt-shimmer-label {
651
+ color: transparent;
652
+ background: linear-gradient(
653
+ 90deg,
654
+ hsl(var(--basalt-muted-foreground)) 35%,
655
+ hsl(var(--basalt-foreground)) 50%,
656
+ hsl(var(--basalt-muted-foreground)) 65%
657
+ );
658
+ background-size: 200% 100%;
659
+ background-clip: text;
660
+ animation: basalt-label-shimmer 1.4s linear infinite;
661
+ }
662
+ @media (prefers-reduced-motion: reduce) {
663
+ [data-basalt-loader][data-animated] > span,
664
+ .basalt-shimmer-label {
665
+ animation: none;
666
+ }
667
+ .basalt-shimmer-label {
668
+ color: hsl(var(--basalt-muted-foreground));
669
+ background: none;
670
+ }
671
+ }
672
+ .basalt-command-list::before {
673
+ content: "";
674
+ position: absolute;
675
+ pointer-events: none;
676
+ left: 0;
677
+ top: 0;
678
+ transform: translate(var(--basalt-command-left), var(--basalt-command-top));
679
+ width: var(--basalt-command-width);
680
+ height: var(--basalt-command-height);
681
+ border-radius: var(--basalt-radius-md);
682
+ background: linear-gradient(90deg, var(--basalt-hover), var(--basalt-hover-end));
683
+ }
684
+
685
+ .basalt-command-list[data-basalt-command-animated="true"]::before {
686
+ transition: transform var(--basalt-motion-normal) var(--basalt-motion-ease);
687
+ }
688
+
689
+ @media (prefers-reduced-motion: reduce) {
690
+ .basalt-command-list[data-basalt-command-animated]::before {
691
+ transition: none;
692
+ }
693
+ }
694
+
695
+ .basalt-floating {
696
+ transform-origin: var(--radix-popper-transform-origin, center);
697
+ }
698
+
699
+ .basalt-floating:is(
700
+ [data-state="open"],
701
+ [data-state="delayed-open"],
702
+ [data-state="instant-open"]
703
+ ) {
704
+ animation: basalt-floating-in var(--basalt-floating-duration-enter)
705
+ var(--basalt-motion-ease-enter);
706
+ }
707
+
708
+ .basalt-floating[data-state="closed"] {
709
+ animation: basalt-floating-out var(--basalt-floating-duration-exit)
710
+ var(--basalt-motion-ease-exit) forwards;
711
+ }
712
+
713
+ [data-basalt-sheet] {
714
+ --basalt-sheet-x: 0%;
715
+ --basalt-sheet-y: 0%;
716
+ }
717
+
718
+ [data-basalt-sheet][data-side="right"] {
719
+ --basalt-sheet-x: 100%;
720
+ }
721
+
722
+ [data-basalt-sheet][data-side="left"] {
723
+ --basalt-sheet-x: -100%;
724
+ }
725
+
726
+ [data-basalt-sheet][data-side="top"] {
727
+ --basalt-sheet-y: -100%;
728
+ }
729
+
730
+ [data-basalt-sheet][data-side="bottom"] {
731
+ --basalt-sheet-y: 100%;
732
+ }
733
+
734
+ [data-basalt-sheet][data-state="open"] {
735
+ animation: basalt-sheet-in var(--basalt-sheet-duration-enter) var(--basalt-motion-ease-enter);
736
+ }
737
+
738
+ [data-basalt-sheet][data-state="closed"] {
739
+ animation: basalt-sheet-out var(--basalt-sheet-duration-exit) var(--basalt-motion-ease-exit)
740
+ forwards;
741
+ }
742
+
743
+ .basalt-sheet-overlay {
744
+ backdrop-filter: blur(var(--basalt-sheet-backdrop-blur));
745
+ }
746
+
747
+ .basalt-sheet-overlay[data-state="open"] {
748
+ animation: basalt-sheet-backdrop-in var(--basalt-sheet-duration-enter)
749
+ var(--basalt-motion-ease-enter);
750
+ }
751
+
752
+ /* A closing backdrop must never swallow clicks for the content already revealed. */
753
+ .basalt-sheet-overlay[data-state="closed"] {
754
+ animation: basalt-sheet-backdrop-out var(--basalt-sheet-duration-exit)
755
+ var(--basalt-motion-ease-exit) forwards;
756
+ pointer-events: none;
757
+ }
758
+
759
+ @media (prefers-reduced-motion: reduce) {
760
+ :is(.basalt-floating, [data-basalt-sheet], .basalt-sheet-overlay)[data-state] {
761
+ animation: none;
762
+ }
763
+ }
764
+ }
765
+
766
+ /* Sonner owns stack geometry; Basalt owns presentation and timing. */
767
+ [data-sonner-toast].basalt-toast {
768
+ transition-duration: var(--basalt-motion-normal);
769
+ transition-timing-function: var(--basalt-motion-ease);
770
+ font-family: var(--basalt-font-sans);
771
+ }
772
+ @media (prefers-reduced-motion: reduce) {
773
+ [data-sonner-toast].basalt-toast {
774
+ transition: none;
775
+ }
776
+ }
777
+
778
+ @keyframes basalt-floating-in {
779
+ from {
780
+ opacity: 0;
781
+ scale: 0.95;
782
+ }
783
+ to {
784
+ opacity: 1;
785
+ scale: 1;
786
+ }
787
+ }
788
+
789
+ @keyframes basalt-floating-out {
790
+ from {
791
+ opacity: 1;
792
+ scale: 1;
793
+ }
794
+ to {
795
+ opacity: 0;
796
+ scale: 0.95;
797
+ }
798
+ }
799
+
800
+ @keyframes basalt-sheet-in {
801
+ from {
802
+ transform: translate(var(--basalt-sheet-x), var(--basalt-sheet-y));
803
+ }
804
+ to {
805
+ transform: translate(0, 0);
806
+ }
807
+ }
808
+
809
+ @keyframes basalt-sheet-out {
810
+ from {
811
+ transform: translate(0, 0);
812
+ }
813
+ to {
814
+ transform: translate(var(--basalt-sheet-x), var(--basalt-sheet-y));
815
+ }
816
+ }
817
+
818
+ @keyframes basalt-sheet-backdrop-in {
819
+ from {
820
+ opacity: 0;
821
+ backdrop-filter: blur(0);
822
+ }
823
+ to {
824
+ opacity: 1;
825
+ backdrop-filter: blur(var(--basalt-sheet-backdrop-blur));
826
+ }
827
+ }
828
+
829
+ @keyframes basalt-sheet-backdrop-out {
830
+ from {
831
+ opacity: 1;
832
+ backdrop-filter: blur(var(--basalt-sheet-backdrop-blur));
833
+ }
834
+ to {
835
+ opacity: 0;
836
+ backdrop-filter: blur(0);
837
+ }
838
+ }
839
+
276
840
  @keyframes basalt-accordion-down {
277
841
  from {
278
842
  height: 0;
@@ -297,18 +861,26 @@
297
861
  }
298
862
  }
299
863
 
300
- @keyframes basalt-loader-spin {
301
- 0% {
302
- transform: rotate(0deg);
864
+ @keyframes basalt-pixel-orbit {
865
+ 0%,
866
+ 100% {
867
+ opacity: 1;
303
868
  }
304
- 12% {
305
- transform: rotate(18deg);
869
+ 33% {
870
+ opacity: 0.35;
306
871
  }
307
- 55% {
308
- transform: rotate(300deg);
872
+ 66%,
873
+ 99% {
874
+ opacity: 0.18;
309
875
  }
310
- 100% {
311
- transform: rotate(360deg);
876
+ }
877
+
878
+ @keyframes basalt-label-shimmer {
879
+ from {
880
+ background-position: 200% 0;
881
+ }
882
+ to {
883
+ background-position: -200% 0;
312
884
  }
313
885
  }
314
886
 
@@ -399,3 +971,92 @@
399
971
  transform: translateY(0);
400
972
  }
401
973
  }
974
+
975
+ .basalt-chat-word {
976
+ animation: basalt-chat-word-in var(--basalt-motion-normal) var(--basalt-motion-ease) both;
977
+ }
978
+
979
+ @keyframes basalt-chat-word-in {
980
+ from {
981
+ opacity: 0;
982
+ filter: blur(3px);
983
+ }
984
+ to {
985
+ opacity: 1;
986
+ filter: blur(0);
987
+ }
988
+ }
989
+
990
+ @media (prefers-reduced-motion: reduce) {
991
+ .basalt-chat-word {
992
+ animation: none;
993
+ }
994
+ }
995
+
996
+ :root,
997
+ .light,
998
+ [data-mode="light"] {
999
+ --basalt-tag-slate: oklch(96.8% 0.007 247.896);
1000
+ --basalt-tag-slate-foreground: oklch(27.9% 0.041 260.031);
1001
+ --basalt-tag-slate-border: oklch(86.9% 0.022 252.894);
1002
+ --basalt-tag-blue: oklch(97% 0.014 254.604);
1003
+ --basalt-tag-blue-foreground: oklch(42.4% 0.199 265.638);
1004
+ --basalt-tag-blue-border: oklch(80.9% 0.105 251.813);
1005
+ --basalt-tag-violet: oklch(96.9% 0.016 293.756);
1006
+ --basalt-tag-violet-foreground: oklch(43.2% 0.232 292.759);
1007
+ --basalt-tag-violet-border: oklch(81.1% 0.111 293.571);
1008
+ --basalt-tag-teal: oklch(98.4% 0.014 180.72);
1009
+ --basalt-tag-teal-foreground: oklch(43.7% 0.078 188.216);
1010
+ --basalt-tag-teal-border: oklch(85.5% 0.138 181.071);
1011
+ --basalt-tag-amber: oklch(98.7% 0.022 95.277);
1012
+ --basalt-tag-amber-foreground: oklch(41.4% 0.112 45.904);
1013
+ --basalt-tag-amber-border: oklch(87.9% 0.169 91.605);
1014
+ --basalt-tag-rose: oklch(96.9% 0.015 12.422);
1015
+ --basalt-tag-rose-foreground: oklch(45.5% 0.188 13.697);
1016
+ --basalt-tag-rose-border: oklch(81% 0.117 11.638);
1017
+ --basalt-tag-success: oklch(97.9% 0.021 166.113);
1018
+ --basalt-tag-success-foreground: oklch(43.2% 0.095 166.913);
1019
+ --basalt-tag-success-border: oklch(84.5% 0.143 164.978);
1020
+ --basalt-tag-warning: oklch(98.7% 0.022 95.277);
1021
+ --basalt-tag-warning-foreground: oklch(41.4% 0.112 45.904);
1022
+ --basalt-tag-warning-border: oklch(87.9% 0.169 91.605);
1023
+ --basalt-tag-danger: oklch(97.1% 0.013 17.38);
1024
+ --basalt-tag-danger-foreground: oklch(44.4% 0.177 26.899);
1025
+ --basalt-tag-danger-border: oklch(80.8% 0.114 19.571);
1026
+ --basalt-tag-info: oklch(97.7% 0.013 236.62);
1027
+ --basalt-tag-info-foreground: oklch(44.3% 0.11 240.79);
1028
+ --basalt-tag-info-border: oklch(82.8% 0.111 230.318);
1029
+ }
1030
+ .dark,
1031
+ [data-mode="dark"] {
1032
+ --basalt-tag-slate: oklch(27.9% 0.041 260.031);
1033
+ --basalt-tag-slate-foreground: oklch(96.8% 0.007 247.896);
1034
+ --basalt-tag-slate-border: oklch(44.6% 0.043 257.281);
1035
+ --basalt-tag-blue: oklch(28.2% 0.091 267.935);
1036
+ --basalt-tag-blue-foreground: oklch(88.2% 0.059 254.128);
1037
+ --basalt-tag-blue-border: oklch(48.8% 0.243 264.376);
1038
+ --basalt-tag-violet: oklch(28.3% 0.141 291.089);
1039
+ --basalt-tag-violet-foreground: oklch(89.4% 0.057 293.283);
1040
+ --basalt-tag-violet-border: oklch(49.1% 0.27 292.581);
1041
+ --basalt-tag-teal: oklch(27.7% 0.046 192.524);
1042
+ --basalt-tag-teal-foreground: oklch(91% 0.096 180.426);
1043
+ --basalt-tag-teal-border: oklch(51.1% 0.096 186.391);
1044
+ --basalt-tag-amber: oklch(27.9% 0.077 45.635);
1045
+ --basalt-tag-amber-foreground: oklch(92.4% 0.12 95.746);
1046
+ --basalt-tag-amber-border: oklch(55.5% 0.163 48.998);
1047
+ --basalt-tag-rose: oklch(27.1% 0.105 12.094);
1048
+ --basalt-tag-rose-foreground: oklch(89.2% 0.058 10.001);
1049
+ --basalt-tag-rose-border: oklch(51.4% 0.222 16.935);
1050
+ --basalt-tag-success: oklch(26.2% 0.051 172.552);
1051
+ --basalt-tag-success-foreground: oklch(90.5% 0.093 164.15);
1052
+ --basalt-tag-success-border: oklch(50.8% 0.118 165.612);
1053
+ --basalt-tag-warning: oklch(27.9% 0.077 45.635);
1054
+ --basalt-tag-warning-foreground: oklch(92.4% 0.12 95.746);
1055
+ --basalt-tag-warning-border: oklch(55.5% 0.163 48.998);
1056
+ --basalt-tag-danger: oklch(25.8% 0.092 26.042);
1057
+ --basalt-tag-danger-foreground: oklch(88.5% 0.062 18.334);
1058
+ --basalt-tag-danger-border: oklch(50.5% 0.213 27.518);
1059
+ --basalt-tag-info: oklch(29.3% 0.066 243.157);
1060
+ --basalt-tag-info-foreground: oklch(90.1% 0.058 230.902);
1061
+ --basalt-tag-info-border: oklch(50% 0.134 242.749);
1062
+ }