@machinemetrics/mm-react-components 0.2.3-3 → 0.2.3-31

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 (282) hide show
  1. package/README.md +90 -31
  2. package/agent-docs/agent-documentation-reference.md +401 -0
  3. package/agent-docs/ai-agent-guide.md +558 -0
  4. package/agent-docs/ai-agent-init-guide.md +465 -0
  5. package/agent-docs/chakra-migration-readme.md +265 -0
  6. package/agent-docs/chakra-migration-troubleshooting.md +649 -0
  7. package/agent-docs/component-mapping-reference.md +466 -0
  8. package/agent-docs/init-readme.md +283 -0
  9. package/agent-docs/init-troubleshooting.md +550 -0
  10. package/agent-docs/setup-reference.md +365 -0
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/README.md +90 -31
  13. package/dist/components/shadcn/accordion.d.ts +8 -0
  14. package/dist/components/shadcn/accordion.d.ts.map +1 -0
  15. package/dist/components/shadcn/alert-dialog.d.ts +15 -0
  16. package/dist/components/shadcn/alert-dialog.d.ts.map +1 -0
  17. package/dist/components/shadcn/alert.d.ts +10 -0
  18. package/dist/components/shadcn/alert.d.ts.map +1 -0
  19. package/dist/components/shadcn/avatar.d.ts +7 -0
  20. package/dist/components/shadcn/avatar.d.ts.map +1 -0
  21. package/dist/components/shadcn/badge.d.ts +10 -0
  22. package/dist/components/shadcn/badge.d.ts.map +1 -0
  23. package/dist/components/shadcn/breadcrumb.d.ts +12 -0
  24. package/dist/components/shadcn/breadcrumb.d.ts.map +1 -0
  25. package/dist/components/shadcn/button.d.ts +11 -0
  26. package/dist/components/shadcn/button.d.ts.map +1 -0
  27. package/dist/components/shadcn/calendar.d.ts +9 -0
  28. package/dist/components/shadcn/calendar.d.ts.map +1 -0
  29. package/dist/components/shadcn/card.d.ts +10 -0
  30. package/dist/components/shadcn/card.d.ts.map +1 -0
  31. package/dist/components/shadcn/chart.d.ts +41 -0
  32. package/dist/components/shadcn/chart.d.ts.map +1 -0
  33. package/dist/components/shadcn/checkbox.d.ts +5 -0
  34. package/dist/components/shadcn/checkbox.d.ts.map +1 -0
  35. package/dist/components/shadcn/collapsible.d.ts +7 -0
  36. package/dist/components/shadcn/collapsible.d.ts.map +1 -0
  37. package/dist/components/shadcn/command.d.ts +19 -0
  38. package/dist/components/shadcn/command.d.ts.map +1 -0
  39. package/dist/components/shadcn/dialog.d.ts +16 -0
  40. package/dist/components/shadcn/dialog.d.ts.map +1 -0
  41. package/dist/components/shadcn/drawer.d.ts +14 -0
  42. package/dist/components/shadcn/drawer.d.ts.map +1 -0
  43. package/dist/components/shadcn/dropdown-menu.d.ts +26 -0
  44. package/dist/components/shadcn/dropdown-menu.d.ts.map +1 -0
  45. package/dist/components/shadcn/form.d.ts +25 -0
  46. package/dist/components/shadcn/form.d.ts.map +1 -0
  47. package/dist/components/shadcn/input.d.ts +4 -0
  48. package/dist/components/shadcn/input.d.ts.map +1 -0
  49. package/dist/components/shadcn/label.d.ts +5 -0
  50. package/dist/components/shadcn/label.d.ts.map +1 -0
  51. package/dist/components/shadcn/pagination.d.ts +14 -0
  52. package/dist/components/shadcn/pagination.d.ts.map +1 -0
  53. package/dist/components/shadcn/popover.d.ts +8 -0
  54. package/dist/components/shadcn/popover.d.ts.map +1 -0
  55. package/dist/components/shadcn/progress.d.ts +5 -0
  56. package/dist/components/shadcn/progress.d.ts.map +1 -0
  57. package/dist/components/shadcn/radio-group.d.ts +6 -0
  58. package/dist/components/shadcn/radio-group.d.ts.map +1 -0
  59. package/dist/components/shadcn/select.d.ts +16 -0
  60. package/dist/components/shadcn/select.d.ts.map +1 -0
  61. package/dist/components/shadcn/separator.d.ts +5 -0
  62. package/dist/components/shadcn/separator.d.ts.map +1 -0
  63. package/dist/components/shadcn/sheet.d.ts +14 -0
  64. package/dist/components/shadcn/sheet.d.ts.map +1 -0
  65. package/dist/components/shadcn/skeleton.d.ts +4 -0
  66. package/dist/components/shadcn/skeleton.d.ts.map +1 -0
  67. package/dist/components/shadcn/slider.d.ts +5 -0
  68. package/dist/components/shadcn/slider.d.ts.map +1 -0
  69. package/dist/components/shadcn/sonner.d.ts +4 -0
  70. package/dist/components/shadcn/sonner.d.ts.map +1 -0
  71. package/dist/components/shadcn/spinner.d.ts +4 -0
  72. package/dist/components/shadcn/spinner.d.ts.map +1 -0
  73. package/dist/components/shadcn/switch.d.ts +5 -0
  74. package/dist/components/shadcn/switch.d.ts.map +1 -0
  75. package/dist/components/shadcn/table.d.ts +11 -0
  76. package/dist/components/shadcn/table.d.ts.map +1 -0
  77. package/dist/components/shadcn/tabs.d.ts +8 -0
  78. package/dist/components/shadcn/tabs.d.ts.map +1 -0
  79. package/dist/components/shadcn/textarea.d.ts +4 -0
  80. package/dist/components/shadcn/textarea.d.ts.map +1 -0
  81. package/dist/components/shadcn/toggle.d.ts +10 -0
  82. package/dist/components/shadcn/toggle.d.ts.map +1 -0
  83. package/dist/components/shadcn/tooltip.d.ts +8 -0
  84. package/dist/components/shadcn/tooltip.d.ts.map +1 -0
  85. package/dist/components/ui/accordion.d.ts +5 -6
  86. package/dist/components/ui/accordion.d.ts.map +1 -1
  87. package/dist/components/ui/alert-dialog.d.ts +7 -11
  88. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  89. package/dist/components/ui/alert.d.ts +8 -5
  90. package/dist/components/ui/alert.d.ts.map +1 -1
  91. package/dist/components/ui/avatar.d.ts +1 -6
  92. package/dist/components/ui/avatar.d.ts.map +1 -1
  93. package/dist/components/ui/badge.d.ts +4 -3
  94. package/dist/components/ui/badge.d.ts.map +1 -1
  95. package/dist/components/ui/breadcrumb.d.ts +1 -11
  96. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  97. package/dist/components/ui/button.d.ts +6 -6
  98. package/dist/components/ui/button.d.ts.map +1 -1
  99. package/dist/components/ui/calendar.d.ts +1 -1
  100. package/dist/components/ui/calendar.d.ts.map +1 -1
  101. package/dist/components/ui/card.d.ts +1 -9
  102. package/dist/components/ui/card.d.ts.map +1 -1
  103. package/dist/components/ui/checkbox.d.ts +1 -1
  104. package/dist/components/ui/checkbox.d.ts.map +1 -1
  105. package/dist/components/ui/collapsible.d.ts +1 -6
  106. package/dist/components/ui/collapsible.d.ts.map +1 -1
  107. package/dist/components/ui/command.d.ts +19 -0
  108. package/dist/components/ui/command.d.ts.map +1 -0
  109. package/dist/components/ui/data-table/TableView.d.ts +2 -1
  110. package/dist/components/ui/data-table/TableView.d.ts.map +1 -1
  111. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts +1 -1
  112. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts.map +1 -1
  113. package/dist/components/ui/data-table/cards/RowCard.d.ts +2 -1
  114. package/dist/components/ui/data-table/cards/RowCard.d.ts.map +1 -1
  115. package/dist/components/ui/data-table/index.d.ts +3 -1
  116. package/dist/components/ui/data-table/index.d.ts.map +1 -1
  117. package/dist/components/ui/data-table/pagination.d.ts +14 -1
  118. package/dist/components/ui/data-table/pagination.d.ts.map +1 -1
  119. package/dist/components/ui/data-table/parts/BatchActionsToolbar.d.ts +7 -0
  120. package/dist/components/ui/data-table/parts/BatchActionsToolbar.d.ts.map +1 -0
  121. package/dist/components/ui/data-table/parts/CellContent.d.ts +7 -0
  122. package/dist/components/ui/data-table/parts/CellContent.d.ts.map +1 -0
  123. package/dist/components/ui/data-table/parts/ColGroup.d.ts +7 -0
  124. package/dist/components/ui/data-table/parts/ColGroup.d.ts.map +1 -0
  125. package/dist/components/ui/data-table/parts/SortableHeader.d.ts +13 -0
  126. package/dist/components/ui/data-table/parts/SortableHeader.d.ts.map +1 -0
  127. package/dist/components/ui/data-table/parts/TableBody.d.ts +22 -0
  128. package/dist/components/ui/data-table/parts/TableBody.d.ts.map +1 -0
  129. package/dist/components/ui/data-table/parts/TableHeader.d.ts +15 -0
  130. package/dist/components/ui/data-table/parts/TableHeader.d.ts.map +1 -0
  131. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts +2 -1
  132. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts.map +1 -1
  133. package/dist/components/ui/data-table/types.d.ts +61 -11
  134. package/dist/components/ui/data-table/types.d.ts.map +1 -1
  135. package/dist/components/ui/data-table/useDragAndDrop.d.ts +23 -0
  136. package/dist/components/ui/data-table/useDragAndDrop.d.ts.map +1 -0
  137. package/dist/components/ui/data-table/useTableController.d.ts +24 -1
  138. package/dist/components/ui/data-table/useTableController.d.ts.map +1 -1
  139. package/dist/components/ui/data-table/utils.d.ts +2 -0
  140. package/dist/components/ui/data-table/utils.d.ts.map +1 -1
  141. package/dist/components/ui/date-picker.d.ts +36 -0
  142. package/dist/components/ui/date-picker.d.ts.map +1 -0
  143. package/dist/components/ui/dialog.d.ts +6 -10
  144. package/dist/components/ui/dialog.d.ts.map +1 -1
  145. package/dist/components/ui/drawer.d.ts +3 -11
  146. package/dist/components/ui/drawer.d.ts.map +1 -1
  147. package/dist/components/ui/dropdown-menu.d.ts +15 -23
  148. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  149. package/dist/components/ui/hero-metric-card/HeroMetricCard.d.ts +4 -0
  150. package/dist/components/ui/hero-metric-card/HeroMetricCard.d.ts.map +1 -0
  151. package/dist/components/ui/hero-metric-card/HeroMetricCardItem.d.ts +4 -0
  152. package/dist/components/ui/hero-metric-card/HeroMetricCardItem.d.ts.map +1 -0
  153. package/dist/components/ui/hero-metric-card/constants.d.ts +13 -0
  154. package/dist/components/ui/hero-metric-card/constants.d.ts.map +1 -0
  155. package/dist/components/ui/hero-metric-card/grid.d.ts +4 -0
  156. package/dist/components/ui/hero-metric-card/grid.d.ts.map +1 -0
  157. package/dist/components/ui/hero-metric-card/hooks.d.ts +6 -0
  158. package/dist/components/ui/hero-metric-card/hooks.d.ts.map +1 -0
  159. package/dist/components/ui/hero-metric-card/index.d.ts +5 -0
  160. package/dist/components/ui/hero-metric-card/index.d.ts.map +1 -0
  161. package/dist/components/ui/hero-metric-card/parsing.d.ts +11 -0
  162. package/dist/components/ui/hero-metric-card/parsing.d.ts.map +1 -0
  163. package/dist/components/ui/hero-metric-card/refs.d.ts +3 -0
  164. package/dist/components/ui/hero-metric-card/refs.d.ts.map +1 -0
  165. package/dist/components/ui/hero-metric-card/trend.d.ts +4 -0
  166. package/dist/components/ui/hero-metric-card/trend.d.ts.map +1 -0
  167. package/dist/components/ui/hero-metric-card/types.d.ts +60 -0
  168. package/dist/components/ui/hero-metric-card/types.d.ts.map +1 -0
  169. package/dist/components/ui/hero-metric-card/utils.d.ts +10 -0
  170. package/dist/components/ui/hero-metric-card/utils.d.ts.map +1 -0
  171. package/dist/components/ui/input.d.ts +3 -2
  172. package/dist/components/ui/input.d.ts.map +1 -1
  173. package/dist/components/ui/label.d.ts +1 -4
  174. package/dist/components/ui/label.d.ts.map +1 -1
  175. package/dist/components/ui/pagination.d.ts +14 -0
  176. package/dist/components/ui/pagination.d.ts.map +1 -0
  177. package/dist/components/ui/popover.d.ts +3 -5
  178. package/dist/components/ui/popover.d.ts.map +1 -1
  179. package/dist/components/ui/progress.d.ts +2 -1
  180. package/dist/components/ui/progress.d.ts.map +1 -1
  181. package/dist/components/ui/radio-group.d.ts +3 -3
  182. package/dist/components/ui/radio-group.d.ts.map +1 -1
  183. package/dist/components/ui/select.d.ts +6 -13
  184. package/dist/components/ui/select.d.ts.map +1 -1
  185. package/dist/components/ui/separator.d.ts +1 -4
  186. package/dist/components/ui/separator.d.ts.map +1 -1
  187. package/dist/components/ui/sheet-banner.d.ts +10 -0
  188. package/dist/components/ui/sheet-banner.d.ts.map +1 -0
  189. package/dist/components/ui/sheet.d.ts +18 -9
  190. package/dist/components/ui/sheet.d.ts.map +1 -1
  191. package/dist/components/ui/simple-pagination.d.ts +8 -0
  192. package/dist/components/ui/simple-pagination.d.ts.map +1 -0
  193. package/dist/components/ui/skeleton.d.ts +1 -3
  194. package/dist/components/ui/skeleton.d.ts.map +1 -1
  195. package/dist/components/ui/sonner.d.ts +2 -1
  196. package/dist/components/ui/sonner.d.ts.map +1 -1
  197. package/dist/components/ui/spinner-carbide.d.ts +5 -0
  198. package/dist/components/ui/spinner-carbide.d.ts.map +1 -0
  199. package/dist/components/ui/spinner.d.ts +2 -0
  200. package/dist/components/ui/spinner.d.ts.map +1 -0
  201. package/dist/components/ui/switch.d.ts +1 -1
  202. package/dist/components/ui/switch.d.ts.map +1 -1
  203. package/dist/components/ui/table/Table.d.ts.map +1 -1
  204. package/dist/components/ui/table.d.ts +4 -9
  205. package/dist/components/ui/table.d.ts.map +1 -1
  206. package/dist/components/ui/tabs.d.ts +16 -2
  207. package/dist/components/ui/tabs.d.ts.map +1 -1
  208. package/dist/components/ui/textarea.d.ts +1 -3
  209. package/dist/components/ui/textarea.d.ts.map +1 -1
  210. package/dist/components/ui/toggle.d.ts +1 -9
  211. package/dist/components/ui/toggle.d.ts.map +1 -1
  212. package/dist/components/ui/tooltip.d.ts +1 -7
  213. package/dist/components/ui/tooltip.d.ts.map +1 -1
  214. package/dist/docs/GETTING_STARTED.md +14 -6
  215. package/dist/docs/TAILWIND_SETUP.md +5 -1
  216. package/dist/index.d.ts +16 -3
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/lib/fonts/inconsolata-latin-400-normal.7bb81ff1.woff +0 -0
  219. package/dist/lib/fonts/inconsolata-latin-400-normal.eb50e0cc.woff2 +0 -0
  220. package/dist/lib/fonts/inconsolata-latin-ext-400-normal.8c9bd94c.woff +0 -0
  221. package/dist/lib/fonts/inconsolata-latin-ext-400-normal.e91396bf.woff2 +0 -0
  222. package/dist/lib/fonts/inconsolata-vietnamese-400-normal.0fdec2a6.woff +0 -0
  223. package/dist/lib/fonts/inconsolata-vietnamese-400-normal.788ea873.woff2 +0 -0
  224. package/dist/lib/fonts/noto-sans-cyrillic-ext-wght-normal.ced7f40b.woff2 +0 -0
  225. package/dist/lib/fonts/noto-sans-cyrillic-wght-normal.56471747.woff2 +0 -0
  226. package/dist/lib/fonts/noto-sans-devanagari-wght-normal.90412b4c.woff2 +0 -0
  227. package/dist/lib/fonts/noto-sans-greek-ext-wght-normal.6a0bbd3e.woff2 +0 -0
  228. package/dist/lib/fonts/noto-sans-greek-wght-normal.dc06dc3b.woff2 +0 -0
  229. package/dist/lib/fonts/noto-sans-latin-ext-wght-normal.15bcee04.woff2 +0 -0
  230. package/dist/lib/fonts/noto-sans-latin-wght-normal.20625185.woff2 +0 -0
  231. package/dist/lib/fonts/noto-sans-vietnamese-wght-normal.d0a8e686.woff2 +0 -0
  232. package/dist/lib/mm-react-components.css +1 -0
  233. package/dist/main.d.ts +1 -2
  234. package/dist/main.d.ts.map +1 -1
  235. package/dist/mm-react-components.es.js +8015 -5939
  236. package/dist/mm-react-components.es.js.map +1 -1
  237. package/dist/mm-react-components.umd.js +13 -13
  238. package/dist/mm-react-components.umd.js.map +1 -1
  239. package/dist/preview/ColorsPreview.d.ts +7 -0
  240. package/dist/preview/ColorsPreview.d.ts.map +1 -0
  241. package/dist/preview/CommandPreview.d.ts +2 -0
  242. package/dist/preview/CommandPreview.d.ts.map +1 -0
  243. package/dist/preview/DataTablePreview.d.ts +1 -1
  244. package/dist/preview/DataTablePreview.d.ts.map +1 -1
  245. package/dist/preview/DatePickerPreview.d.ts +2 -0
  246. package/dist/preview/DatePickerPreview.d.ts.map +1 -0
  247. package/dist/preview/DateRangePickerPreview.d.ts.map +1 -1
  248. package/dist/preview/HeroMetricCardPreview.d.ts +2 -0
  249. package/dist/preview/HeroMetricCardPreview.d.ts.map +1 -0
  250. package/dist/preview/PaginationPreview.d.ts +2 -0
  251. package/dist/preview/PaginationPreview.d.ts.map +1 -0
  252. package/dist/preview/SheetBannerPreview.d.ts +2 -0
  253. package/dist/preview/SheetBannerPreview.d.ts.map +1 -0
  254. package/dist/preview/SheetPreview.d.ts.map +1 -1
  255. package/dist/preview/SpinnerPreview.d.ts +2 -0
  256. package/dist/preview/SpinnerPreview.d.ts.map +1 -0
  257. package/dist/preview/TabsPreview.d.ts.map +1 -1
  258. package/dist/scripts/chakra-to-shadcn-migrator/chakra-to-shadcn.config.json +577 -0
  259. package/dist/scripts/chakra-to-shadcn-migrator/lib/args.js +63 -0
  260. package/dist/scripts/chakra-to-shadcn-migrator/lib/colors.js +14 -0
  261. package/dist/scripts/chakra-to-shadcn-migrator/lib/config.js +15 -0
  262. package/dist/scripts/chakra-to-shadcn-migrator/lib/deps.js +125 -0
  263. package/dist/scripts/chakra-to-shadcn-migrator/lib/file-io.js +44 -0
  264. package/dist/scripts/chakra-to-shadcn-migrator/lib/render.js +89 -0
  265. package/dist/scripts/chakra-to-shadcn-migrator/lib/transform.js +550 -0
  266. package/dist/scripts/chakra-to-shadcn-migrator/package.json +11 -0
  267. package/dist/scripts/init.cjs +216 -0
  268. package/dist/scripts/npx-init.cjs +418 -0
  269. package/dist/tailwind.base.config.js +89 -0
  270. package/dist/themes/carbide.css +464 -90
  271. package/docs/TAILWIND_SETUP.md +5 -1
  272. package/package.json +39 -12
  273. package/src/index.css +111 -489
  274. package/dist/index.css +0 -527
  275. package/dist/themes/base.css +0 -536
  276. package/dist/themes/complete.css +0 -8
  277. package/scripts/README.md +0 -171
  278. package/scripts/chakra-to-shadcn-migrator/README.md +0 -107
  279. package/src/themes/base.css +0 -536
  280. package/src/themes/carbide.css +0 -1257
  281. package/src/themes/complete.css +0 -8
  282. /package/{scripts → dist/scripts}/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js +0 -0
@@ -1,13 +1,160 @@
1
+ /* Note: Font imports are now handled in src/lib/styles.css to avoid @import ordering issues */
2
+
3
+ :root {
4
+ --radius: 0.5rem;
5
+ --radius-sm: 4px;
6
+ --radius-md: calc(var(--radius) - 2px);
7
+ --radius-lg: var(--radius);
8
+ --radius-xl: calc(var(--radius) + 4px);
9
+ --background: oklch(1 0 0);
10
+ --foreground: oklch(0.145 0 0);
11
+ --card: oklch(1 0 0);
12
+ --card-foreground: oklch(0.145 0 0);
13
+ --popover: oklch(1 0 0);
14
+ --popover-foreground: oklch(0.145 0 0);
15
+ --primary: oklch(0.205 0 0);
16
+ --primary-foreground: oklch(0.985 0 0);
17
+ --secondary: oklch(0.97 0 0);
18
+ --secondary-foreground: oklch(0.205 0 0);
19
+ --muted: oklch(0.97 0 0);
20
+ --muted-foreground: oklch(0.556 0 0);
21
+ --accent: oklch(0.97 0 0);
22
+ --accent-foreground: oklch(0.205 0 0);
23
+ --destructive: oklch(0.577 0.245 27.325);
24
+ --border: oklch(0.922 0 0);
25
+ --input: oklch(0.922 0 0);
26
+ --ring: oklch(0.708 0 0);
27
+ /* Chart colors are defined below via design tokens (indigo/teal/green/orange/purple). */
28
+ --sidebar: oklch(0.985 0 0);
29
+ --sidebar-foreground: oklch(0.145 0 0);
30
+ --sidebar-primary: oklch(0.205 0 0);
31
+ --sidebar-primary-foreground: oklch(0.985 0 0);
32
+ --sidebar-accent: oklch(0.97 0 0);
33
+ --sidebar-accent-foreground: oklch(0.205 0 0);
34
+ --sidebar-border: oklch(0.922 0 0);
35
+ --sidebar-ring: oklch(0.708 0 0);
36
+
37
+ /* Overlay token (base) */
38
+ --overlay-bg: rgba(0, 0, 0, 0.8);
39
+
40
+ /* --- Typography tokens (shadcn/ui reference) --- */
41
+ --font-sans:
42
+ ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
43
+ Roboto, 'Helvetica Neue', Arial, 'Noto Sans Variable', sans-serif,
44
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
45
+ --font-mono:
46
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
47
+ 'Courier New', monospace;
48
+ --font-heading: var(--font-sans);
49
+ --font-body: var(--font-sans);
50
+
51
+ --text-base-size: 1rem; /* 16px */
52
+ --text-sm-size: 0.875rem; /* 14px */
53
+ --text-lg-size: 1.125rem; /* 18px */
54
+
55
+ --font-weight-normal: 400;
56
+ --font-weight-medium: 500;
57
+ --font-weight-bold: 700;
58
+
59
+ --leading-tight: 1.25;
60
+ --leading-normal: 1.5;
61
+
62
+ --tracking-tight: -0.015em;
63
+ --tracking-normal: 0;
64
+ }
65
+
66
+ .dark {
67
+ --background: oklch(0.145 0 0);
68
+ --foreground: oklch(0.985 0 0);
69
+ --card: oklch(0.205 0 0);
70
+ --card-foreground: oklch(0.985 0 0);
71
+ --popover: oklch(0.205 0 0);
72
+ --popover-foreground: oklch(0.985 0 0);
73
+ --primary: oklch(0.922 0 0);
74
+ --primary-foreground: oklch(0.205 0 0);
75
+ --secondary: oklch(0.269 0 0);
76
+ --secondary-foreground: oklch(0.985 0 0);
77
+ --muted: oklch(0.269 0 0);
78
+ --muted-foreground: oklch(0.708 0 0);
79
+ --accent: oklch(0.269 0 0);
80
+ --accent-foreground: oklch(0.985 0 0);
81
+ --destructive: oklch(0.704 0.191 22.216);
82
+ --border: oklch(1 0 0 / 10%);
83
+ --input: oklch(1 0 0 / 15%);
84
+ --ring: oklch(0.556 0 0);
85
+ /* Removed redundant hard-coded chart swatches; values sourced via token mappings below */
86
+ --sidebar: oklch(0.205 0 0);
87
+ --sidebar-foreground: oklch(0.985 0 0);
88
+ --sidebar-primary: oklch(0.488 0.243 264.376);
89
+ --sidebar-primary-foreground: oklch(0.985 0 0);
90
+ --sidebar-accent: oklch(0.269 0 0);
91
+ --sidebar-accent-foreground: oklch(0.985 0 0);
92
+ --sidebar-border: oklch(1 0 0 / 10%);
93
+ --sidebar-ring: oklch(0.556 0 0);
94
+ }
95
+
96
+ /* Collapsible animations using Radix-provided height variable */
97
+ @keyframes mm-collapsible-down {
98
+ from {
99
+ height: 0;
100
+ opacity: 0;
101
+ }
102
+ to {
103
+ height: var(--radix-collapsible-content-height);
104
+ opacity: 1;
105
+ }
106
+ }
107
+
108
+ @keyframes mm-collapsible-up {
109
+ from {
110
+ height: var(--radix-collapsible-content-height);
111
+ opacity: 1;
112
+ }
113
+ to {
114
+ height: 0;
115
+ opacity: 0;
116
+ }
117
+ }
118
+
119
+ /* Accordion animations (core theme) */
120
+ @keyframes accordion-down {
121
+ from {
122
+ height: 0;
123
+ }
124
+ to {
125
+ height: var(--radix-accordion-content-height);
126
+ }
127
+ }
128
+
129
+ @keyframes accordion-up {
130
+ from {
131
+ height: var(--radix-accordion-content-height);
132
+ }
133
+ to {
134
+ height: 0;
135
+ }
136
+ }
137
+
138
+ /* JS-driven height animation now handles height. Keep only overflow hidden. */
139
+ [data-slot='collapsible-content'] {
140
+ overflow: hidden;
141
+ }
142
+ /* Radix sets hidden on closed when forceMount is used; override to enable CSS animation */
143
+ [data-slot='collapsible-content'][hidden] {
144
+ display: block !important;
145
+ }
146
+ /* JS controls height now; avoid conflicting state heights */
147
+
1
148
  .carbide {
2
149
  /* =============================
3
- TYPOGRAPHY
4
- ============================= */
150
+ TYPOGRAPHY
151
+ ============================= */
5
152
 
6
153
  /* Core Fonts */
7
154
  --font-sans:
8
- 'Noto Sans', Inter, ui-sans-serif, system-ui, -apple-system,
155
+ 'Noto Sans Variable', Inter, ui-sans-serif, system-ui, -apple-system,
9
156
  BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
10
- 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
157
+ 'Noto Sans Variable', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
11
158
  'Segoe UI Symbol', 'Noto Color Emoji';
12
159
  --font-mono:
13
160
  'Inconsolata', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
@@ -17,8 +164,8 @@
17
164
  --font-weight-bold: 600;
18
165
 
19
166
  /* =============================
20
- COLORS
21
- ============================= */
167
+ COLORS
168
+ ============================= */
22
169
 
23
170
  /* Brand */
24
171
  --brand-green: #15a500;
@@ -193,13 +340,13 @@
193
340
 
194
341
  /* =============================
195
342
  SURFACES (GENERIC)
196
- ============================= */
343
+ ============================= */
197
344
  /* Neutral control rail/background surface used across components */
198
345
  --surface-neutral: var(--grey-300);
199
346
 
200
347
  /* =============================
201
348
  TABLIST
202
- ============================= */
349
+ ============================= */
203
350
  --tablist-bg: var(--grey-200);
204
351
  --tablist-fg: var(--grey-700);
205
352
  --tablist-active-bg: var(--grey-00);
@@ -211,11 +358,11 @@
211
358
  ============================= */
212
359
  --tablehead-bg: var(--muted);
213
360
  --tablehead-fg: var(--foreground);
214
- --tablehead-border: var(--border);
361
+ --tablehead-border: var(--grey-300);
215
362
 
216
363
  /* =============================
217
364
  BUTTONS
218
- ============================= */
365
+ ============================= */
219
366
  --button-secondary-bg: transparent;
220
367
  --button-secondary-border: var(--grey-700);
221
368
  --button-secondary-hover-bg: var(--grey-150);
@@ -225,83 +372,117 @@
225
372
  --button-destructive-hover-bg: var(--red-700);
226
373
  --button-outline-bg: var(--bg-input);
227
374
 
375
+ /* Spinner tokens (Carbide scope) */
376
+ --spinner-foreground: var(--indigo-600);
377
+ --spinner-background: var(--grey-300);
378
+
228
379
  /* Table action trigger hover (distinct from row hover) */
229
380
  --table-action-hover-bg: var(--grey-300);
230
381
 
231
382
  /* Overlay */
232
- --overlay-bg: rgba(0, 0, 0, 0.8);
233
- --overlay-border: #353b48;
383
+ /* --overlay-bg is already defined in :root; keep only border here. */
384
+ --overlay-border: var(--grey-800);
234
385
 
235
386
  /* =============================
236
387
  INPUT/OUTLINE/OVERLAY SURFACES
388
+ ============================= */
389
+ --input-surface-bg: var(--grey-900);
390
+ --input-surface-border: var(--grey-800);
391
+ --input-surface-hover-bg: var(--grey-850);
392
+
393
+ /* =============================
394
+ CODE (TYPOGRAPHY TOKENS)
237
395
  ============================= */
238
- --input-surface-bg: #202734;
239
- --input-surface-border: #2d3748;
240
- --input-surface-hover-bg: #242c3a;
396
+ --code-bg: color-mix(in srgb, var(--brand-green) 18%, transparent);
397
+ --code-fg: var(--brand-green);
398
+ --code-border: transparent;
241
399
  }
242
400
 
243
401
  /* =============================
244
- BADGE: TYPOGRAPHY
245
- ============================= */
402
+ BADGE: TYPOGRAPHY & VARIANTS
403
+ ============================= */
246
404
  .carbide [data-slot='badge'] {
247
405
  font-weight: 400;
248
406
  }
249
407
 
250
- /* =============================
251
- KNOWLEDGE HUB STATUS BADGES
252
- ============================= */
253
- .carbide .mmc-khub [data-slot='badge'] {
254
- border-radius: 9999px;
255
- }
256
-
257
- .carbide .mmc-khub [data-slot='badge'][data-status='Waiting'] {
408
+ /* Badge variants - moved from inline component styles */
409
+ .carbide [data-slot='badge'][data-variant='default'] {
410
+ border-color: transparent;
258
411
  background-color: var(--indigo-200);
259
412
  color: var(--grey-700);
260
- border-color: var(--indigo-200);
261
413
  }
262
-
263
- .carbide .mmc-khub [data-slot='badge'][data-status='Uploading'],
264
- .carbide .mmc-khub [data-slot='badge'][data-status='Processing'] {
265
- background-color: transparent;
266
- color: var(--grey-700);
267
- border-color: transparent;
268
- padding-inline: 0;
414
+ .carbide.dark [data-slot='badge'][data-variant='default'] {
415
+ background-color: var(--indigo-700);
416
+ color: var(--grey-00);
417
+ }
418
+ .carbide [data-slot='badge'][data-variant='default'] a:hover {
419
+ background-color: var(--indigo-300);
420
+ }
421
+ .carbide.dark [data-slot='badge'][data-variant='default'] a:hover {
422
+ background-color: var(--indigo-600);
269
423
  }
270
424
 
271
- .carbide .mmc-khub [data-slot='badge'][data-status='Failed'],
272
- .carbide .mmc-khub [data-slot='badge'][data-status='Upload Failed'],
273
- .carbide .mmc-khub [data-slot='badge'][data-status='Processing Failed'] {
425
+ .carbide [data-slot='badge'][data-variant='destructive'] {
426
+ border-color: transparent;
274
427
  background-color: var(--red-200);
275
428
  color: var(--grey-700);
276
- border-color: var(--red-200);
277
429
  }
278
-
279
- .carbide .mmc-khub [data-slot='badge'][data-status='Processed'] {
280
- background-color: var(--grey-200);
281
- color: var(--grey-500);
282
- border-color: var(--grey-200);
430
+ .carbide.dark [data-slot='badge'][data-variant='destructive'] {
431
+ background-color: var(--red-700);
432
+ color: var(--grey-00);
433
+ }
434
+ .carbide [data-slot='badge'][data-variant='destructive'] a:hover {
435
+ background-color: var(--red-300);
436
+ }
437
+ .carbide.dark [data-slot='badge'][data-variant='destructive'] a:hover {
438
+ background-color: var(--red-600);
439
+ }
440
+ .carbide [data-slot='badge'][data-variant='destructive']:focus-visible {
441
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--destructive) 20%, transparent);
442
+ }
443
+ .carbide.dark [data-slot='badge'][data-variant='destructive']:focus-visible {
444
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--destructive) 40%, transparent);
283
445
  }
284
446
 
285
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Waiting'] {
286
- background-color: var(--indigo-700);
287
- color: var(--grey-00);
288
- border-color: var(--indigo-700);
447
+ /* =============================
448
+ ALERT VARIANTS
449
+ ============================= */
450
+ .carbide [data-slot='alert'][data-variant='success'] {
451
+ color: var(--green-600);
452
+ background-color: var(--card);
453
+ border-color: var(--green-200);
454
+ }
455
+ .carbide [data-slot='alert'][data-variant='success'] svg {
456
+ color: currentColor;
457
+ }
458
+ .carbide
459
+ [data-slot='alert'][data-variant='success']
460
+ [data-slot='alert-description'] {
461
+ color: color-mix(in srgb, var(--green-600) 90%, transparent);
289
462
  }
290
463
 
291
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Uploading'],
292
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Processing'] {
293
- background-color: transparent;
294
- color: var(--grey-200);
295
- border-color: transparent;
296
- padding-inline: 0;
464
+ .carbide [data-slot='alert'][data-variant='warning'] {
465
+ color: var(--yellow-600);
466
+ background-color: var(--card);
467
+ border-color: var(--yellow-200);
468
+ }
469
+ .carbide [data-slot='alert'][data-variant='warning'] svg {
470
+ color: currentColor;
471
+ }
472
+ .carbide
473
+ [data-slot='alert'][data-variant='warning']
474
+ [data-slot='alert-description'] {
475
+ color: color-mix(in srgb, var(--yellow-600) 90%, transparent);
297
476
  }
298
477
 
299
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Failed'],
300
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Upload Failed'],
301
- .carbide.dark .mmc-khub [data-slot='badge'][data-status='Processing Failed'] {
302
- background-color: var(--red-700);
303
- color: var(--grey-00);
304
- border-color: var(--red-700);
478
+ /* =============================
479
+ KNOWLEDGE HUB STATUS BADGES
480
+ ============================= */
481
+ /* Keep intentional lighter tone for Processed in Knowledge Hub */
482
+ .carbide .mmc-khub [data-slot='badge'][data-status='Processed'] {
483
+ background-color: var(--grey-200);
484
+ color: var(--grey-500);
485
+ border-color: var(--grey-200);
305
486
  }
306
487
 
307
488
  .carbide.dark .mmc-khub [data-slot='badge'][data-status='Processed'] {
@@ -312,7 +493,7 @@
312
493
 
313
494
  /* =============================
314
495
  BUTTON: ICON SIZE DEFAULT
315
- ============================= */
496
+ ============================= */
316
497
  /* Default all button icons to 16px; :where() keeps specificity low so consumers can override */
317
498
  .carbide [data-slot='button'] svg {
318
499
  width: 16px;
@@ -321,7 +502,7 @@
321
502
 
322
503
  /* =============================
323
504
  BUTTON VARIANTS (LIGHT)
324
- ============================= */
505
+ ============================= */
325
506
  .carbide [data-slot='button'][data-variant='default']:not([disabled]) {
326
507
  background-color: var(--primary);
327
508
  color: var(--primary-foreground);
@@ -330,11 +511,28 @@
330
511
  background-color: var(--button-primary-hover-bg);
331
512
  }
332
513
 
333
- .carbide [data-slot='button'][data-variant='outline']:not([disabled]) {
514
+ .carbide [data-slot='button'][data-variant='outline']:not([disabled]),
515
+ .carbide [data-slot='popover-trigger'][data-variant='outline']:not([disabled]),
516
+ .carbide
517
+ [data-slot='dropdown-menu-trigger'][data-variant='outline']:not([disabled]),
518
+ .carbide
519
+ [data-slot='date-picker-trigger'][data-variant='outline']:not([disabled]),
520
+ .carbide [data-variant='outline']:not([disabled]) {
334
521
  background-color: var(--button-outline-bg);
335
522
  border-color: var(--button-outline-border);
336
523
  }
337
- .carbide [data-slot='button'][data-variant='outline']:not([disabled]):hover {
524
+ .carbide [data-slot='button'][data-variant='outline']:not([disabled]):hover,
525
+ .carbide
526
+ [data-slot='popover-trigger'][data-variant='outline']:not([disabled]):hover,
527
+ .carbide
528
+ [data-slot='dropdown-menu-trigger'][data-variant='outline']:not(
529
+ [disabled]
530
+ ):hover,
531
+ .carbide
532
+ [data-slot='date-picker-trigger'][data-variant='outline']:not(
533
+ [disabled]
534
+ ):hover,
535
+ .carbide [data-variant='outline']:not([disabled]):hover {
338
536
  background-color: var(--button-outline-hover-bg);
339
537
  }
340
538
 
@@ -433,7 +631,14 @@
433
631
  ============================= */
434
632
  --tablehead-bg: var(--muted);
435
633
  --tablehead-fg: var(--foreground);
436
- --tablehead-border: var(--border);
634
+ --tablehead-border: var(--grey-600);
635
+
636
+ /* =============================
637
+ CODE (TYPOGRAPHY TOKENS - DARK)
638
+ ============================= */
639
+ --code-bg: color-mix(in srgb, var(--brand-green) 20%, transparent);
640
+ --code-fg: var(--brand-green);
641
+ --code-border: transparent;
437
642
 
438
643
  /* =============================
439
644
  BUTTONS
@@ -451,13 +656,17 @@
451
656
  --button-destructive-hover-bg: var(--red-500);
452
657
  --button-outline-bg: color-mix(in srgb, var(--bg-input) 30%, transparent);
453
658
 
659
+ /* Spinner tokens (Carbide scope, dark) */
660
+ --spinner-foreground: var(--grey-00);
661
+ --spinner-background: color-mix(in srgb, var(--grey-00) 25%, transparent);
662
+
454
663
  /* Table action trigger hover (distinct from row hover) */
455
664
  --table-action-hover-bg: var(--grey-800);
456
665
  }
457
666
 
458
667
  /* =============================
459
668
  BUTTON VARIANTS (DARK)
460
- ============================= */
669
+ ============================= */
461
670
  .carbide.dark [data-slot='button'][data-variant='default']:not([disabled]) {
462
671
  background-color: var(--primary);
463
672
  color: var(--primary-foreground);
@@ -467,12 +676,30 @@
467
676
  background-color: var(--button-primary-hover-bg);
468
677
  }
469
678
 
470
- .carbide.dark [data-slot='button'][data-variant='outline']:not([disabled]) {
679
+ .carbide.dark [data-slot='button'][data-variant='outline']:not([disabled]),
680
+ .carbide.dark
681
+ [data-slot='popover-trigger'][data-variant='outline']:not([disabled]),
682
+ .carbide.dark
683
+ [data-slot='dropdown-menu-trigger'][data-variant='outline']:not([disabled]),
684
+ .carbide.dark
685
+ [data-slot='date-picker-trigger'][data-variant='outline']:not([disabled]),
686
+ .carbide.dark [data-variant='outline']:not([disabled]) {
471
687
  background-color: var(--button-outline-bg);
472
688
  border-color: var(--button-outline-border);
473
689
  }
474
690
  .carbide.dark
475
- [data-slot='button'][data-variant='outline']:not([disabled]):hover {
691
+ [data-slot='button'][data-variant='outline']:not([disabled]):hover,
692
+ .carbide.dark
693
+ [data-slot='popover-trigger'][data-variant='outline']:not([disabled]):hover,
694
+ .carbide.dark
695
+ [data-slot='dropdown-menu-trigger'][data-variant='outline']:not(
696
+ [disabled]
697
+ ):hover,
698
+ .carbide.dark
699
+ [data-slot='date-picker-trigger'][data-variant='outline']:not(
700
+ [disabled]
701
+ ):hover,
702
+ .carbide.dark [data-variant='outline']:not([disabled]):hover {
476
703
  background-color: var(--button-outline-hover-bg);
477
704
  }
478
705
 
@@ -514,7 +741,7 @@
514
741
 
515
742
  /* =============================
516
743
  INPUT
517
- ============================= */
744
+ ============================= */
518
745
  .carbide [data-slot='input'] {
519
746
  background-color: var(--bg-input);
520
747
  border-color: var(--border-input);
@@ -575,7 +802,7 @@
575
802
 
576
803
  /* =============================
577
804
  SELECT
578
- ============================= */
805
+ ============================= */
579
806
  .carbide [data-slot='select-trigger'] {
580
807
  background-color: var(--bg-input);
581
808
  border-color: var(--border-input);
@@ -646,16 +873,30 @@
646
873
  color: var(--muted-foreground);
647
874
  }
648
875
 
876
+ .carbide [data-slot='select-content'] {
877
+ background-color: var(--popover);
878
+ color: var(--popover-foreground);
879
+ border-color: var(--border);
880
+ box-shadow: 0 6px 24px rgba(15, 23, 42, 0.12);
881
+ }
882
+ .carbide.dark [data-slot='select-content'] {
883
+ background-color: var(--popover);
884
+ color: var(--popover-foreground);
885
+ border-color: var(--border);
886
+ }
887
+
649
888
  /* =============================
650
889
  DROPDOWN MENU
651
- ============================= */
652
- .carbide [data-slot='dropdown-menu-content'] {
890
+ ============================= */
891
+ .carbide [data-slot='dropdown-menu-content'],
892
+ .carbide [data-slot='dropdown-menu-sub-content'] {
653
893
  background-color: var(--popover);
654
894
  color: var(--popover-foreground);
655
895
  border-color: var(--border);
656
896
  box-shadow: 0 6px 24px rgba(15, 23, 42, 0.12);
657
897
  }
658
- .carbide.dark [data-slot='dropdown-menu-content'] {
898
+ .carbide.dark [data-slot='dropdown-menu-content'],
899
+ .carbide.dark [data-slot='dropdown-menu-sub-content'] {
659
900
  background-color: var(--popover);
660
901
  color: var(--popover-foreground);
661
902
  border-color: var(--border);
@@ -736,7 +977,7 @@
736
977
 
737
978
  /* =============================
738
979
  TOOLTIP
739
- ============================= */
980
+ ============================= */
740
981
  .carbide [data-slot='tooltip-content'] {
741
982
  background-color: var(--foreground);
742
983
  color: var(--background);
@@ -754,21 +995,24 @@
754
995
  }
755
996
 
756
997
  /* =============================
757
- OVERLAYS & DIALOG/SHEET/DRAWER
758
- ============================= */
998
+ OVERLAYS & DIALOG/SHEET/DRAWER/ALERT-DIALOG
999
+ ============================= */
759
1000
  .carbide [data-slot='dialog-overlay'],
1001
+ .carbide [data-slot='alert-dialog-overlay'],
760
1002
  .carbide [data-slot='sheet-overlay'],
761
1003
  .carbide [data-slot='drawer-overlay'] {
762
1004
  background-color: color-mix(in srgb, var(--overlay-bg) 60%, transparent);
763
1005
  backdrop-filter: blur(2px);
764
1006
  }
765
1007
  .carbide.dark [data-slot='dialog-overlay'],
1008
+ .carbide.dark [data-slot='alert-dialog-overlay'],
766
1009
  .carbide.dark [data-slot='sheet-overlay'],
767
1010
  .carbide.dark [data-slot='drawer-overlay'] {
768
1011
  background-color: color-mix(in srgb, var(--overlay-bg) 75%, transparent);
769
1012
  }
770
1013
 
771
1014
  .carbide [data-slot='dialog-content'],
1015
+ .carbide [data-slot='alert-dialog-content'],
772
1016
  .carbide [data-slot='sheet-content'],
773
1017
  .carbide [data-slot='drawer-content'] {
774
1018
  background-color: var(--card);
@@ -777,6 +1021,7 @@
777
1021
  box-shadow: 0 24px 48px rgba(15, 23, 42, 0.18);
778
1022
  }
779
1023
  .carbide.dark [data-slot='dialog-content'],
1024
+ .carbide.dark [data-slot='alert-dialog-content'],
780
1025
  .carbide.dark [data-slot='sheet-content'],
781
1026
  .carbide.dark [data-slot='drawer-content'] {
782
1027
  box-shadow: 0 24px 48px rgba(15, 23, 42, 0.55);
@@ -810,12 +1055,14 @@
810
1055
  }
811
1056
 
812
1057
  .carbide [data-slot='dialog-title'],
1058
+ .carbide [data-slot='alert-dialog-title'],
813
1059
  .carbide [data-slot='sheet-title'],
814
1060
  .carbide [data-slot='drawer-title'] {
815
1061
  color: var(--card-foreground);
816
1062
  }
817
1063
 
818
1064
  .carbide [data-slot='dialog-description'],
1065
+ .carbide [data-slot='alert-dialog-description'],
819
1066
  .carbide [data-slot='sheet-description'],
820
1067
  .carbide [data-slot='drawer-description'] {
821
1068
  color: var(--muted-foreground);
@@ -838,21 +1085,85 @@
838
1085
 
839
1086
  /* =============================
840
1087
  TABLE
841
- ============================= */
1088
+ ============================= */
842
1089
  .carbide [data-slot='table-wrapper'] {
843
1090
  background-color: var(--card);
844
1091
  color: var(--card-foreground);
845
- border-color: var(--border);
1092
+ border-color: var(--grey-400);
846
1093
  }
847
1094
  .carbide.dark [data-slot='table-wrapper'] {
848
1095
  background-color: var(--card);
849
1096
  color: var(--card-foreground);
1097
+ border-color: var(--grey-600);
1098
+ }
1099
+
1100
+ /* Table header: border color */
1101
+ .carbide th[data-slot='table-head'],
1102
+ .carbide thead[data-slot='table-header'] {
1103
+ border-bottom: 1px solid var(--tablehead-border);
1104
+ }
1105
+ .carbide.dark th[data-slot='table-head'],
1106
+ .carbide.dark thead[data-slot='table-header'] {
1107
+ border-bottom: 1px solid var(--tablehead-border);
1108
+ }
1109
+
1110
+ /* Table rows: border color */
1111
+ .carbide [data-slot='table-row'],
1112
+ .carbide tbody tr {
1113
+ border-color: var(--border);
1114
+ }
1115
+ .carbide.dark [data-slot='table-row'],
1116
+ .carbide.dark tbody tr {
850
1117
  border-color: var(--border);
851
1118
  }
852
1119
 
1120
+ /* Data Table: Row actions trigger visibility */
1121
+ tr td[data-col-id='actions'] .mmc-table-action-trigger,
1122
+ tr td[data-col-id='actions'] [data-slot='table-action-trigger'] {
1123
+ opacity: 0;
1124
+ pointer-events: none;
1125
+ transition: opacity 0.15s ease-in-out;
1126
+ }
1127
+ /* Visible when row is hovered, trigger is keyboard-focused, menu is open, or row flagged */
1128
+ tr:hover td[data-col-id='actions'] .mmc-table-action-trigger,
1129
+ tr:hover td[data-col-id='actions'] [data-slot='table-action-trigger'],
1130
+ tr td[data-col-id='actions'] .mmc-table-action-trigger:focus-visible,
1131
+ tr td[data-col-id='actions'] [data-slot='table-action-trigger']:focus-visible,
1132
+ tr td[data-col-id='actions'] .mmc-table-action-trigger[aria-expanded='true'],
1133
+ tr
1134
+ td[data-col-id='actions']
1135
+ [data-slot='table-action-trigger'][aria-expanded='true'],
1136
+ tr[data-action-visible='true']
1137
+ td[data-col-id='actions']
1138
+ .mmc-table-action-trigger,
1139
+ tr[data-action-visible='true']
1140
+ td[data-col-id='actions']
1141
+ [data-slot='table-action-trigger'] {
1142
+ opacity: 1;
1143
+ pointer-events: auto;
1144
+ }
1145
+
1146
+ /* Keep trigger visible and indicate active when menu is open */
1147
+ tr td[data-col-id='actions'] .mmc-table-action-trigger[data-state='open'],
1148
+ tr
1149
+ td[data-col-id='actions']
1150
+ [data-slot='table-action-trigger'][data-state='open'] {
1151
+ opacity: 1;
1152
+ pointer-events: auto;
1153
+ }
1154
+
1155
+ .carbide [data-slot='table-action-trigger'][data-state='open'],
1156
+ .carbide [data-slot='table-action-trigger'][aria-expanded='true'] {
1157
+ background-color: var(--table-action-hover-bg);
1158
+ }
1159
+ .carbide.dark [data-slot='table-action-trigger'][data-state='open'],
1160
+ .carbide.dark [data-slot='table-action-trigger'][aria-expanded='true'] {
1161
+ background-color: var(--table-action-hover-bg);
1162
+ }
1163
+
853
1164
  /* =============================
854
1165
  TABS
855
- ============================= */
1166
+ ============================= */
856
1167
  .carbide [data-slot='tabs-list'][data-variant='default'] {
857
1168
  background-color: var(--tablist-bg);
858
1169
  color: var(--tablist-fg);
@@ -905,7 +1216,7 @@
905
1216
  }
906
1217
  /* =============================
907
1218
  UTILITY OVERRIDES
908
- ============================= */
1219
+ ============================= */
909
1220
 
910
1221
  /*
911
1222
  Force correct text color for destructive badges and elements using text-destructive-foreground.
@@ -915,6 +1226,63 @@
915
1226
  color: var(--destructive-foreground) !important;
916
1227
  }
917
1228
 
1229
+ /* =============================
1230
+ SPINNER (SEMANTIC HOOK)
1231
+ ============================= */
1232
+ .carbide [data-slot='spinner'] {
1233
+ color: var(--spinner-foreground);
1234
+ }
1235
+ .carbide [data-slot='spinner'] circle:first-of-type {
1236
+ /* track color */
1237
+ stroke: var(--spinner-background);
1238
+ }
1239
+ .carbide [data-slot='spinner'] circle:last-of-type {
1240
+ /* arc color sync with current color */
1241
+ stroke: currentColor;
1242
+ }
1243
+
1244
+ /* Contextual overrides when inside buttons */
1245
+ .carbide [data-slot='button'] [data-slot='spinner'] {
1246
+ /* Default button uses primary bg → use on-dark pair for contrast */
1247
+ --spinner-foreground: var(--primary-foreground);
1248
+ --spinner-background: color-mix(
1249
+ in srgb,
1250
+ var(--primary-foreground) 25%,
1251
+ transparent
1252
+ );
1253
+ }
1254
+ .carbide [data-slot='button'][data-variant='outline'] [data-slot='spinner'],
1255
+ .carbide [data-slot='button'][data-variant='secondary'] [data-slot='spinner'],
1256
+ .carbide [data-slot='button'][data-variant='ghost'] [data-slot='spinner'],
1257
+ .carbide [data-slot='button'][data-variant='link'] [data-slot='spinner'] {
1258
+ /* Light backgrounds → use on-light pair */
1259
+ --spinner-foreground: var(--indigo-600);
1260
+ --spinner-background: var(--grey-300);
1261
+ }
1262
+
1263
+ /* In dark theme, outline/secondary/ghost/link often sit on dark surfaces → use on-dark pair */
1264
+ .carbide.dark
1265
+ [data-slot='button'][data-variant='outline']
1266
+ [data-slot='spinner'],
1267
+ .carbide.dark
1268
+ [data-slot='button'][data-variant='secondary']
1269
+ [data-slot='spinner'],
1270
+ .carbide.dark [data-slot='button'][data-variant='ghost'] [data-slot='spinner'],
1271
+ .carbide.dark [data-slot='button'][data-variant='link'] [data-slot='spinner'] {
1272
+ --spinner-foreground: var(--grey-00);
1273
+ --spinner-background: color-mix(in srgb, var(--grey-00) 25%, transparent);
1274
+ }
1275
+
1276
+ /* Optional forcing utilities */
1277
+ .carbide .mmc-spinner--on-dark {
1278
+ --spinner-foreground: var(--grey-00);
1279
+ --spinner-background: color-mix(in srgb, var(--grey-00) 25%, transparent);
1280
+ }
1281
+ .carbide .mmc-spinner--on-light {
1282
+ --spinner-foreground: var(--indigo-600);
1283
+ --spinner-background: var(--grey-300);
1284
+ }
1285
+
918
1286
  /* Input Border Utility */
919
1287
  .carbide .border-input,
920
1288
  .carbide.dark .border-input {
@@ -932,9 +1300,12 @@
932
1300
 
933
1301
  /* =============================
934
1302
  PROGRESS (SEMANTIC HOOK)
935
- ============================= */
1303
+ ============================= */
936
1304
  .carbide [data-slot='progress'] {
937
- background-color: var(--surface-neutral);
1305
+ background-color: var(--grey-200, #edf2f7);
1306
+ border: 1px solid rgba(0, 0, 0, 0.05);
1307
+ border-radius: 4px;
1308
+ box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.05) inset;
938
1309
  }
939
1310
 
940
1311
  .carbide [data-slot='progress'] [data-slot='progress-indicator'] {
@@ -943,7 +1314,7 @@
943
1314
 
944
1315
  /* =============================
945
1316
  ACCORDION
946
- ============================= */
1317
+ ============================= */
947
1318
  .carbide [data-slot='accordion'] [data-slot='accordion-item'] {
948
1319
  border-bottom: 1px solid var(--border);
949
1320
  }
@@ -953,7 +1324,7 @@
953
1324
 
954
1325
  /* =============================
955
1326
  POPOVER
956
- ============================= */
1327
+ ============================= */
957
1328
  .carbide [data-slot='popover-content'] {
958
1329
  background-color: var(--popover);
959
1330
  color: var(--popover-foreground);
@@ -969,10 +1340,10 @@
969
1340
 
970
1341
  /* =============================
971
1342
  SLIDER (SEMANTIC HOOK)
972
- ============================= */
1343
+ ============================= */
973
1344
  /* =============================
974
1345
  CHECKBOX (SEMANTIC HOOK)
975
- ============================= */
1346
+ ============================= */
976
1347
  .carbide [data-slot='checkbox'] {
977
1348
  border-color: var(--border-input) !important;
978
1349
  background-color: var(--bg-input);
@@ -998,7 +1369,7 @@
998
1369
 
999
1370
  /* =============================
1000
1371
  RADIO GROUP ITEM
1001
- ============================= */
1372
+ ============================= */
1002
1373
  .carbide [data-slot='radio-group-item'] {
1003
1374
  border-color: var(--border-input);
1004
1375
  background-color: var(--bg-input);
@@ -1023,7 +1394,7 @@
1023
1394
 
1024
1395
  /* =============================
1025
1396
  FORM CONTROL FOCUS + INVALID STATES
1026
- ============================= */
1397
+ ============================= */
1027
1398
  .carbide [data-slot='checkbox']:focus-visible,
1028
1399
  .carbide [data-slot='radio-group-item']:focus-visible,
1029
1400
  .carbide [data-slot='switch']:focus-visible {
@@ -1046,7 +1417,7 @@
1046
1417
 
1047
1418
  /* =============================
1048
1419
  SWITCH (SEMANTIC HOOK)
1049
- ============================= */
1420
+ ============================= */
1050
1421
  .carbide [data-slot='switch'] {
1051
1422
  border-color: transparent;
1052
1423
  }
@@ -1074,7 +1445,7 @@
1074
1445
 
1075
1446
  /* =============================
1076
1447
  CALENDAR (SEMANTIC HOOK)
1077
- ============================= */
1448
+ ============================= */
1078
1449
  .carbide [data-slot='calendar'] {
1079
1450
  background-color: var(--card);
1080
1451
  color: var(--card-foreground);
@@ -1116,7 +1487,10 @@
1116
1487
  }
1117
1488
 
1118
1489
  .carbide.dark [data-slot='progress'] {
1119
- background-color: var(--surface-neutral);
1490
+ background-color: var(--grey-800, #2d3748);
1491
+ border: 1px solid rgba(255, 255, 255, 0.05);
1492
+ border-radius: 4px;
1493
+ box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.3) inset;
1120
1494
  }
1121
1495
 
1122
1496
  .carbide.dark [data-slot='progress'] [data-slot='progress-indicator'] {
@@ -1125,7 +1499,7 @@
1125
1499
 
1126
1500
  /* =============================
1127
1501
  DATA TABLE: ALIGNMENT BASELINE FIX
1128
- ============================= */
1502
+ ============================= */
1129
1503
  /* Unify left-aligned body cells to the sortable-header baseline (0.25rem) */
1130
1504
  .carbide
1131
1505
  td.text-left[data-col-id]:not([data-col-id='select']):not(