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