@machinemetrics/mm-react-components 0.1.1-1 → 0.2.3-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 (222) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +246 -0
  3. package/dist/App.d.ts +3 -0
  4. package/dist/App.d.ts.map +1 -0
  5. package/dist/components/ui/accordion.d.ts +10 -0
  6. package/dist/components/ui/accordion.d.ts.map +1 -0
  7. package/dist/components/ui/badge.d.ts +10 -0
  8. package/dist/components/ui/badge.d.ts.map +1 -0
  9. package/dist/components/ui/button.d.ts +11 -0
  10. package/dist/components/ui/button.d.ts.map +1 -0
  11. package/dist/components/ui/calendar.d.ts +9 -0
  12. package/dist/components/ui/calendar.d.ts.map +1 -0
  13. package/dist/components/ui/checkbox.d.ts +5 -0
  14. package/dist/components/ui/checkbox.d.ts.map +1 -0
  15. package/dist/components/ui/collapsible.d.ts +7 -0
  16. package/dist/components/ui/collapsible.d.ts.map +1 -0
  17. package/dist/components/ui/data-table/TableView.d.ts +3 -0
  18. package/dist/components/ui/data-table/TableView.d.ts.map +1 -0
  19. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts +10 -0
  20. package/dist/components/ui/data-table/cards/ResponsiveTable.d.ts.map +1 -0
  21. package/dist/components/ui/data-table/cards/RowCard.d.ts +9 -0
  22. package/dist/components/ui/data-table/cards/RowCard.d.ts.map +1 -0
  23. package/dist/components/ui/data-table/cards/index.d.ts +2 -0
  24. package/dist/components/ui/data-table/cards/index.d.ts.map +1 -0
  25. package/dist/components/ui/data-table/columnTypes/badgeColumn.d.ts +16 -0
  26. package/dist/components/ui/data-table/columnTypes/badgeColumn.d.ts.map +1 -0
  27. package/dist/components/ui/data-table/columnTypes/createColumn.d.ts +8 -0
  28. package/dist/components/ui/data-table/columnTypes/createColumn.d.ts.map +1 -0
  29. package/dist/components/ui/data-table/columnTypes/dateColumn.d.ts +13 -0
  30. package/dist/components/ui/data-table/columnTypes/dateColumn.d.ts.map +1 -0
  31. package/dist/components/ui/data-table/columnTypes/index.d.ts +8 -0
  32. package/dist/components/ui/data-table/columnTypes/index.d.ts.map +1 -0
  33. package/dist/components/ui/data-table/columnTypes/multiBadgeColumn.d.ts +16 -0
  34. package/dist/components/ui/data-table/columnTypes/multiBadgeColumn.d.ts.map +1 -0
  35. package/dist/components/ui/data-table/columnTypes/numericColumn.d.ts +15 -0
  36. package/dist/components/ui/data-table/columnTypes/numericColumn.d.ts.map +1 -0
  37. package/dist/components/ui/data-table/columnTypes/selectionColumn.d.ts +10 -0
  38. package/dist/components/ui/data-table/columnTypes/selectionColumn.d.ts.map +1 -0
  39. package/dist/components/ui/data-table/columnTypes/textColumn.d.ts +13 -0
  40. package/dist/components/ui/data-table/columnTypes/textColumn.d.ts.map +1 -0
  41. package/dist/components/ui/data-table/index.d.ts +14 -0
  42. package/dist/components/ui/data-table/index.d.ts.map +1 -0
  43. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts +90 -0
  44. package/dist/components/ui/data-table/metadata/ColumnRegistry.d.ts.map +1 -0
  45. package/dist/components/ui/data-table/metadata/alignment.d.ts +8 -0
  46. package/dist/components/ui/data-table/metadata/alignment.d.ts.map +1 -0
  47. package/dist/components/ui/data-table/pagination.d.ts +9 -0
  48. package/dist/components/ui/data-table/pagination.d.ts.map +1 -0
  49. package/dist/components/ui/data-table/state/index.d.ts +3 -0
  50. package/dist/components/ui/data-table/state/index.d.ts.map +1 -0
  51. package/dist/components/ui/data-table/state/useBreakpoint.d.ts +2 -0
  52. package/dist/components/ui/data-table/state/useBreakpoint.d.ts.map +1 -0
  53. package/dist/components/ui/data-table/state/useDataTableState.d.ts +19 -0
  54. package/dist/components/ui/data-table/state/useDataTableState.d.ts.map +1 -0
  55. package/dist/components/ui/data-table/tokens.d.ts +10 -0
  56. package/dist/components/ui/data-table/tokens.d.ts.map +1 -0
  57. package/dist/components/ui/data-table/toolbar/ColumnVisibilityMenu.d.ts +8 -0
  58. package/dist/components/ui/data-table/toolbar/ColumnVisibilityMenu.d.ts.map +1 -0
  59. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts +15 -0
  60. package/dist/components/ui/data-table/toolbar/DataTableToolbar.d.ts.map +1 -0
  61. package/dist/components/ui/data-table/toolbar/MenuHeader.d.ts +8 -0
  62. package/dist/components/ui/data-table/toolbar/MenuHeader.d.ts.map +1 -0
  63. package/dist/components/ui/data-table/toolbar/SortMenu.d.ts +7 -0
  64. package/dist/components/ui/data-table/toolbar/SortMenu.d.ts.map +1 -0
  65. package/dist/components/ui/data-table/toolbar/filters/DateRangeFilter.d.ts +5 -0
  66. package/dist/components/ui/data-table/toolbar/filters/DateRangeFilter.d.ts.map +1 -0
  67. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts +10 -0
  68. package/dist/components/ui/data-table/toolbar/filters/FilterMenu.d.ts.map +1 -0
  69. package/dist/components/ui/data-table/toolbar/filters/InlineDateRangePicker.d.ts +10 -0
  70. package/dist/components/ui/data-table/toolbar/filters/InlineDateRangePicker.d.ts.map +1 -0
  71. package/dist/components/ui/data-table/toolbar/filters/NumericRangeFilter.d.ts +5 -0
  72. package/dist/components/ui/data-table/toolbar/filters/NumericRangeFilter.d.ts.map +1 -0
  73. package/dist/components/ui/data-table/toolbar/filters/SelectFilter.d.ts +6 -0
  74. package/dist/components/ui/data-table/toolbar/filters/SelectFilter.d.ts.map +1 -0
  75. package/dist/components/ui/data-table/toolbar/filters/TextFilter.d.ts +5 -0
  76. package/dist/components/ui/data-table/toolbar/filters/TextFilter.d.ts.map +1 -0
  77. package/dist/components/ui/data-table/toolbar/filters/index.d.ts +9 -0
  78. package/dist/components/ui/data-table/toolbar/filters/index.d.ts.map +1 -0
  79. package/dist/components/ui/data-table/toolbar/filters/types.d.ts +26 -0
  80. package/dist/components/ui/data-table/toolbar/filters/types.d.ts.map +1 -0
  81. package/dist/components/ui/data-table/toolbar/filters/useColumnFilters.d.ts +5 -0
  82. package/dist/components/ui/data-table/toolbar/filters/useColumnFilters.d.ts.map +1 -0
  83. package/dist/components/ui/data-table/toolbar/index.d.ts +5 -0
  84. package/dist/components/ui/data-table/toolbar/index.d.ts.map +1 -0
  85. package/dist/components/ui/data-table/types.d.ts +40 -0
  86. package/dist/components/ui/data-table/types.d.ts.map +1 -0
  87. package/dist/components/ui/data-table/useTableController.d.ts +29 -0
  88. package/dist/components/ui/data-table/useTableController.d.ts.map +1 -0
  89. package/dist/components/ui/data-table/utils.d.ts +3 -0
  90. package/dist/components/ui/data-table/utils.d.ts.map +1 -0
  91. package/dist/components/ui/date-range-picker.d.ts +9 -0
  92. package/dist/components/ui/date-range-picker.d.ts.map +1 -0
  93. package/dist/components/ui/dialog.d.ts +16 -0
  94. package/dist/components/ui/dialog.d.ts.map +1 -0
  95. package/dist/components/ui/drawer.d.ts +16 -0
  96. package/dist/components/ui/drawer.d.ts.map +1 -0
  97. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  98. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  99. package/dist/components/ui/dropzone/index.d.ts +25 -0
  100. package/dist/components/ui/dropzone/index.d.ts.map +1 -0
  101. package/dist/components/ui/input.d.ts +5 -0
  102. package/dist/components/ui/input.d.ts.map +1 -0
  103. package/dist/components/ui/label.d.ts +5 -0
  104. package/dist/components/ui/label.d.ts.map +1 -0
  105. package/dist/components/ui/page-header/index.d.ts +3 -0
  106. package/dist/components/ui/page-header/index.d.ts.map +1 -0
  107. package/dist/components/ui/page-header/page-header-types.d.ts +44 -0
  108. package/dist/components/ui/page-header/page-header-types.d.ts.map +1 -0
  109. package/dist/components/ui/page-header/page-header.d.ts +5 -0
  110. package/dist/components/ui/page-header/page-header.d.ts.map +1 -0
  111. package/dist/components/ui/popover.d.ts +8 -0
  112. package/dist/components/ui/popover.d.ts.map +1 -0
  113. package/dist/components/ui/progress.d.ts +5 -0
  114. package/dist/components/ui/progress.d.ts.map +1 -0
  115. package/dist/components/ui/radio-group.d.ts +6 -0
  116. package/dist/components/ui/radio-group.d.ts.map +1 -0
  117. package/dist/components/ui/search-input.d.ts +7 -0
  118. package/dist/components/ui/search-input.d.ts.map +1 -0
  119. package/dist/components/ui/select.d.ts +16 -0
  120. package/dist/components/ui/select.d.ts.map +1 -0
  121. package/dist/components/ui/sheet.d.ts +14 -0
  122. package/dist/components/ui/sheet.d.ts.map +1 -0
  123. package/dist/components/ui/skeleton.d.ts +4 -0
  124. package/dist/components/ui/skeleton.d.ts.map +1 -0
  125. package/dist/components/ui/slider.d.ts +15 -0
  126. package/dist/components/ui/slider.d.ts.map +1 -0
  127. package/dist/components/ui/switch.d.ts +5 -0
  128. package/dist/components/ui/switch.d.ts.map +1 -0
  129. package/dist/components/ui/table/Table.d.ts +21 -0
  130. package/dist/components/ui/table/Table.d.ts.map +1 -0
  131. package/dist/components/ui/table/index.d.ts +2 -0
  132. package/dist/components/ui/table/index.d.ts.map +1 -0
  133. package/dist/components/ui/table.d.ts +11 -0
  134. package/dist/components/ui/table.d.ts.map +1 -0
  135. package/dist/components/ui/tabs.d.ts +15 -0
  136. package/dist/components/ui/tabs.d.ts.map +1 -0
  137. package/dist/components/ui/toggle.d.ts +10 -0
  138. package/dist/components/ui/toggle.d.ts.map +1 -0
  139. package/dist/components/ui/tooltip.d.ts +8 -0
  140. package/dist/components/ui/tooltip.d.ts.map +1 -0
  141. package/dist/docs/TAILWIND_SETUP.md +332 -0
  142. package/dist/index.css +536 -0
  143. package/dist/index.d.ts +30 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/lib/page-header-utils.d.ts +2 -0
  146. package/dist/lib/page-header-utils.d.ts.map +1 -0
  147. package/dist/lib/theme-utils.d.ts +104 -0
  148. package/dist/lib/theme-utils.d.ts.map +1 -0
  149. package/dist/lib/utils.d.ts +3 -0
  150. package/dist/lib/utils.d.ts.map +1 -0
  151. package/dist/main.d.ts +3 -0
  152. package/dist/main.d.ts.map +1 -0
  153. package/dist/mm-react-components.es.js +33709 -26
  154. package/dist/mm-react-components.es.js.map +1 -0
  155. package/dist/mm-react-components.umd.js +71 -1
  156. package/dist/mm-react-components.umd.js.map +1 -0
  157. package/dist/preview/AccordionPreview.d.ts +2 -0
  158. package/dist/preview/AccordionPreview.d.ts.map +1 -0
  159. package/dist/preview/BadgePreview.d.ts +2 -0
  160. package/dist/preview/BadgePreview.d.ts.map +1 -0
  161. package/dist/preview/ButtonPreview.d.ts +2 -0
  162. package/dist/preview/ButtonPreview.d.ts.map +1 -0
  163. package/dist/preview/CalendarPreview.d.ts +2 -0
  164. package/dist/preview/CalendarPreview.d.ts.map +1 -0
  165. package/dist/preview/CheckboxPreview.d.ts +2 -0
  166. package/dist/preview/CheckboxPreview.d.ts.map +1 -0
  167. package/dist/preview/CollapsiblePreview.d.ts +2 -0
  168. package/dist/preview/CollapsiblePreview.d.ts.map +1 -0
  169. package/dist/preview/DataTablePreview.d.ts +9 -0
  170. package/dist/preview/DataTablePreview.d.ts.map +1 -0
  171. package/dist/preview/DateRangePickerPreview.d.ts +2 -0
  172. package/dist/preview/DateRangePickerPreview.d.ts.map +1 -0
  173. package/dist/preview/DialogPreview.d.ts +2 -0
  174. package/dist/preview/DialogPreview.d.ts.map +1 -0
  175. package/dist/preview/DrawerPreview.d.ts +2 -0
  176. package/dist/preview/DrawerPreview.d.ts.map +1 -0
  177. package/dist/preview/DropdownMenuPreview.d.ts +2 -0
  178. package/dist/preview/DropdownMenuPreview.d.ts.map +1 -0
  179. package/dist/preview/DropzonePreview.d.ts +2 -0
  180. package/dist/preview/DropzonePreview.d.ts.map +1 -0
  181. package/dist/preview/InputPreview.d.ts +2 -0
  182. package/dist/preview/InputPreview.d.ts.map +1 -0
  183. package/dist/preview/LabelPreview.d.ts +2 -0
  184. package/dist/preview/LabelPreview.d.ts.map +1 -0
  185. package/dist/preview/PopoverPreview.d.ts +2 -0
  186. package/dist/preview/PopoverPreview.d.ts.map +1 -0
  187. package/dist/preview/ProgressPreview.d.ts +2 -0
  188. package/dist/preview/ProgressPreview.d.ts.map +1 -0
  189. package/dist/preview/RadioGroupPreview.d.ts +2 -0
  190. package/dist/preview/RadioGroupPreview.d.ts.map +1 -0
  191. package/dist/preview/SelectPreview.d.ts +2 -0
  192. package/dist/preview/SelectPreview.d.ts.map +1 -0
  193. package/dist/preview/SheetPreview.d.ts +2 -0
  194. package/dist/preview/SheetPreview.d.ts.map +1 -0
  195. package/dist/preview/SkeletonPreview.d.ts +2 -0
  196. package/dist/preview/SkeletonPreview.d.ts.map +1 -0
  197. package/dist/preview/SliderPreview.d.ts +2 -0
  198. package/dist/preview/SliderPreview.d.ts.map +1 -0
  199. package/dist/preview/SwitchPreview.d.ts +2 -0
  200. package/dist/preview/SwitchPreview.d.ts.map +1 -0
  201. package/dist/preview/TablePreview.d.ts +2 -0
  202. package/dist/preview/TablePreview.d.ts.map +1 -0
  203. package/dist/preview/TabsPreview.d.ts +2 -0
  204. package/dist/preview/TabsPreview.d.ts.map +1 -0
  205. package/dist/preview/TogglePreview.d.ts +2 -0
  206. package/dist/preview/TogglePreview.d.ts.map +1 -0
  207. package/dist/preview/TooltipPreview.d.ts +2 -0
  208. package/dist/preview/TooltipPreview.d.ts.map +1 -0
  209. package/dist/preview/data-table/data-table-preview_column-content.d.ts +18 -0
  210. package/dist/preview/data-table/data-table-preview_column-content.d.ts.map +1 -0
  211. package/dist/preview/page-header/PageHeaderPreview.d.ts +3 -0
  212. package/dist/preview/page-header/PageHeaderPreview.d.ts.map +1 -0
  213. package/dist/tailwind.config.export.js +153 -0
  214. package/dist/themes/carbide.css +1257 -0
  215. package/docs/TAILWIND_SETUP.md +332 -0
  216. package/package.json +119 -15
  217. package/scripts/README.md +171 -0
  218. package/scripts/chakra-to-shadcn-migrator/README.md +107 -0
  219. package/scripts/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js +1135 -0
  220. package/src/index.css +536 -0
  221. package/src/themes/carbide.css +1257 -0
  222. package/tailwind.config.export.js +153 -0
package/src/index.css ADDED
@@ -0,0 +1,536 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;600;700&display=swap');
2
+ @import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;600;700&display=swap');
3
+ @import 'tailwindcss';
4
+ @import 'tw-animate-css';
5
+
6
+ [data-slot='progress'] {
7
+ /* Disabled/unknown visual base aligns with inputs/buttons disabled look */
8
+ }
9
+
10
+ .mmc-progress[data-unknown='true'] {
11
+ opacity: 0.6;
12
+ }
13
+
14
+ .mmc-progress[data-unknown='true'] [data-slot='progress-indicator'] {
15
+ filter: grayscale(0.2) brightness(0.9);
16
+ }
17
+
18
+ /* Shimmer overlay for active progress state */
19
+ @keyframes mm-progress-shimmer {
20
+ 0% {
21
+ transform: translateX(-100%);
22
+ opacity: 0;
23
+ }
24
+ 10% {
25
+ opacity: 0.15;
26
+ }
27
+ 50% {
28
+ opacity: 0.25;
29
+ }
30
+ 100% {
31
+ transform: translateX(100%);
32
+ opacity: 0;
33
+ }
34
+ }
35
+
36
+ [data-slot='progress-indicator']::before {
37
+ content: '';
38
+ position: absolute;
39
+ inset: 0;
40
+ background: linear-gradient(
41
+ 90deg,
42
+ transparent 0%,
43
+ rgba(255, 255, 255, 0.15) 50%,
44
+ transparent 100%
45
+ );
46
+ transform: translateX(-100%);
47
+ pointer-events: none;
48
+ animation: mm-progress-shimmer 2.4s ease-in-out infinite;
49
+ }
50
+
51
+ @custom-variant dark (&:is(.dark *));
52
+
53
+ @theme inline {
54
+ --radius-sm: calc(var(--radius) - 4px);
55
+ --radius-md: calc(var(--radius) - 2px);
56
+ --radius-lg: var(--radius);
57
+ --radius-xl: calc(var(--radius) + 4px);
58
+ --color-background: var(--background);
59
+ --color-foreground: var(--foreground);
60
+ --color-card: var(--card);
61
+ --color-card-foreground: var(--card-foreground);
62
+ --color-popover: var(--popover);
63
+ --color-popover-foreground: var(--popover-foreground);
64
+ --color-primary: var(--primary);
65
+ --color-primary-foreground: var(--primary-foreground);
66
+ --color-secondary: var(--secondary);
67
+ --color-secondary-foreground: var(--secondary-foreground);
68
+ --color-muted: var(--muted);
69
+ --color-muted-foreground: var(--muted-foreground);
70
+ --color-accent: var(--accent);
71
+ --color-accent-foreground: var(--accent-foreground);
72
+ --color-destructive: var(--destructive);
73
+ --color-border: var(--border);
74
+ --color-input: var(--input);
75
+ --color-ring: var(--ring);
76
+ --color-chart-1: var(--chart-1);
77
+ --color-chart-2: var(--chart-2);
78
+ --color-chart-3: var(--chart-3);
79
+ --color-chart-4: var(--chart-4);
80
+ --color-chart-5: var(--chart-5);
81
+ --color-sidebar: var(--sidebar);
82
+ --color-sidebar-foreground: var(--sidebar-foreground);
83
+ --color-sidebar-primary: var(--sidebar-primary);
84
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
85
+ --color-sidebar-accent: var(--sidebar-accent);
86
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
87
+ --color-sidebar-border: var(--sidebar-border);
88
+ --color-sidebar-ring: var(--sidebar-ring);
89
+ }
90
+
91
+ :root {
92
+ --radius: 0.5rem;
93
+ --radius-sm: 4px;
94
+ --radius-md: calc(var(--radius) - 2px);
95
+ --radius-lg: var(--radius);
96
+ --radius-xl: calc(var(--radius) + 4px);
97
+ --background: oklch(1 0 0);
98
+ --foreground: oklch(0.145 0 0);
99
+ --card: oklch(1 0 0);
100
+ --card-foreground: oklch(0.145 0 0);
101
+ --popover: oklch(1 0 0);
102
+ --popover-foreground: oklch(0.145 0 0);
103
+ --primary: oklch(0.205 0 0);
104
+ --primary-foreground: oklch(0.985 0 0);
105
+ --secondary: oklch(0.97 0 0);
106
+ --secondary-foreground: oklch(0.205 0 0);
107
+ --muted: oklch(0.97 0 0);
108
+ --muted-foreground: oklch(0.556 0 0);
109
+ --accent: oklch(0.97 0 0);
110
+ --accent-foreground: oklch(0.205 0 0);
111
+ --destructive: oklch(0.577 0.245 27.325);
112
+ --border: oklch(0.922 0 0);
113
+ --input: oklch(0.922 0 0);
114
+ --ring: oklch(0.708 0 0);
115
+ --chart-1: oklch(0.646 0.222 41.116);
116
+ --chart-2: oklch(0.6 0.118 184.704);
117
+ --chart-3: oklch(0.398 0.07 227.392);
118
+ --chart-4: oklch(0.828 0.189 84.429);
119
+ --chart-5: oklch(0.769 0.188 70.08);
120
+ --sidebar: oklch(0.985 0 0);
121
+ --sidebar-foreground: oklch(0.145 0 0);
122
+ --sidebar-primary: oklch(0.205 0 0);
123
+ --sidebar-primary-foreground: oklch(0.985 0 0);
124
+ --sidebar-accent: oklch(0.97 0 0);
125
+ --sidebar-accent-foreground: oklch(0.205 0 0);
126
+ --sidebar-border: oklch(0.922 0 0);
127
+ --sidebar-ring: oklch(0.708 0 0);
128
+
129
+ /* Overlay token (base) */
130
+ --overlay-bg: rgba(0, 0, 0, 0.8);
131
+
132
+ /* --- Typography tokens (shadcn/ui reference) --- */
133
+ --font-sans:
134
+ ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
135
+ Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
136
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
137
+ --font-mono:
138
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
139
+ 'Courier New', monospace;
140
+ --font-heading: var(--font-sans);
141
+ --font-body: var(--font-sans);
142
+
143
+ --text-base-size: 1rem; /* 16px */
144
+ --text-sm-size: 0.875rem; /* 14px */
145
+ --text-lg-size: 1.125rem; /* 18px */
146
+
147
+ --font-weight-normal: 400;
148
+ --font-weight-medium: 500;
149
+ --font-weight-bold: 700;
150
+
151
+ --leading-tight: 1.25;
152
+ --leading-normal: 1.5;
153
+
154
+ --tracking-tight: -0.015em;
155
+ --tracking-normal: 0;
156
+ }
157
+
158
+ .dark {
159
+ --background: oklch(0.145 0 0);
160
+ --foreground: oklch(0.985 0 0);
161
+ --card: oklch(0.205 0 0);
162
+ --card-foreground: oklch(0.985 0 0);
163
+ --popover: oklch(0.205 0 0);
164
+ --popover-foreground: oklch(0.985 0 0);
165
+ --primary: oklch(0.922 0 0);
166
+ --primary-foreground: oklch(0.205 0 0);
167
+ --secondary: oklch(0.269 0 0);
168
+ --secondary-foreground: oklch(0.985 0 0);
169
+ --muted: oklch(0.269 0 0);
170
+ --muted-foreground: oklch(0.708 0 0);
171
+ --accent: oklch(0.269 0 0);
172
+ --accent-foreground: oklch(0.985 0 0);
173
+ --destructive: oklch(0.704 0.191 22.216);
174
+ --border: oklch(1 0 0 / 10%);
175
+ --input: oklch(1 0 0 / 15%);
176
+ --ring: oklch(0.556 0 0);
177
+ --chart-1: oklch(0.488 0.243 264.376);
178
+ --chart-2: oklch(0.696 0.17 162.48);
179
+ --chart-3: oklch(0.769 0.188 70.08);
180
+ --chart-4: oklch(0.627 0.265 303.9);
181
+ --chart-5: oklch(0.645 0.246 16.439);
182
+ --sidebar: oklch(0.205 0 0);
183
+ --sidebar-foreground: oklch(0.985 0 0);
184
+ --sidebar-primary: oklch(0.488 0.243 264.376);
185
+ --sidebar-primary-foreground: oklch(0.985 0 0);
186
+ --sidebar-accent: oklch(0.269 0 0);
187
+ --sidebar-accent-foreground: oklch(0.985 0 0);
188
+ --sidebar-border: oklch(1 0 0 / 10%);
189
+ --sidebar-ring: oklch(0.556 0 0);
190
+ }
191
+
192
+ @layer base {
193
+ * {
194
+ @apply border-border outline-ring/50;
195
+ }
196
+ body {
197
+ @apply bg-background text-foreground;
198
+ }
199
+ .lead {
200
+ @apply text-xl text-muted-foreground;
201
+ }
202
+ .large {
203
+ @apply text-lg font-semibold;
204
+ }
205
+ .small {
206
+ @apply text-sm font-medium leading-none;
207
+ }
208
+ .muted {
209
+ @apply text-sm text-muted-foreground;
210
+ }
211
+ :root {
212
+ --sidebar-background: 0 0% 98%;
213
+ --sidebar-foreground: 240 5.3% 26.1%;
214
+ --sidebar-primary: 240 5.9% 10%;
215
+ --sidebar-primary-foreground: 0 0% 98%;
216
+ --sidebar-accent: 240 4.8% 95.9%;
217
+ --sidebar-accent-foreground: 240 5.9% 10%;
218
+ --sidebar-border: 220 13% 91%;
219
+ --sidebar-ring: 217.2 91.2% 59.8%;
220
+ }
221
+
222
+ .dark {
223
+ --sidebar-background: 240 5.9% 10%;
224
+ --sidebar-foreground: 240 4.8% 95.9%;
225
+ --sidebar-primary: 224.3 76.3% 48%;
226
+ --sidebar-primary-foreground: 0 0% 100%;
227
+ --sidebar-accent: 240 3.7% 15.9%;
228
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
229
+ --sidebar-border: 240 3.7% 15.9%;
230
+ --sidebar-ring: 217.2 91.2% 59.8%;
231
+ }
232
+
233
+ /* Centralized overlay class to keep overlays consistent */
234
+ .mmc-overlay {
235
+ background-color: var(--overlay-bg);
236
+ -webkit-backdrop-filter: blur(4px);
237
+ backdrop-filter: blur(4px);
238
+ }
239
+
240
+ /* Universal Carbide hover for input-like controls */
241
+ .carbide
242
+ :is(
243
+ input:not([type]),
244
+ input[type='text'],
245
+ input[type='email'],
246
+ input[type='password'],
247
+ input[type='search'],
248
+ input[type='number'],
249
+ input[type='url'],
250
+ input[type='tel'],
251
+ textarea,
252
+ [data-slot='checkbox'],
253
+ [data-slot='radio-group-item'],
254
+ [data-slot='toggle'],
255
+ [data-slot='filter-section-trigger']
256
+ ) {
257
+ @apply transition-[background-color,box-shadow];
258
+ }
259
+
260
+ .carbide
261
+ :is(
262
+ input:not([type]),
263
+ input[type='text'],
264
+ input[type='email'],
265
+ input[type='password'],
266
+ input[type='search'],
267
+ input[type='number'],
268
+ input[type='url'],
269
+ input[type='tel'],
270
+ textarea,
271
+ [data-slot='checkbox'],
272
+ [data-slot='radio-group-item'],
273
+ [data-slot='toggle'],
274
+ [data-slot='filter-section-trigger']
275
+ ):where(:not(:disabled)):hover {
276
+ background-color: var(--accent);
277
+ }
278
+
279
+ .carbide.dark
280
+ :is(
281
+ input:not([type]),
282
+ input[type='text'],
283
+ input[type='email'],
284
+ input[type='password'],
285
+ input[type='search'],
286
+ input[type='number'],
287
+ input[type='url'],
288
+ input[type='tel'],
289
+ textarea,
290
+ [data-slot='checkbox'],
291
+ [data-slot='radio-group-item'],
292
+ [data-slot='toggle'],
293
+ [data-slot='filter-section-trigger']
294
+ ):where(:not(:disabled)):hover {
295
+ background-color: var(--input-surface-hover-bg);
296
+ }
297
+
298
+ /* Ensure elements styled via the bg-input utility also receive hover */
299
+ .carbide .bg-input:where(:not(:disabled)):hover {
300
+ background-color: var(--accent);
301
+ }
302
+ .carbide.dark .bg-input:where(:not(:disabled)):hover {
303
+ background-color: var(--input-surface-hover-bg);
304
+ }
305
+
306
+ /* Table row hover vs action trigger hover contrast (base declaration) */
307
+ .mmc-data-table-preview
308
+ .mmc-table-action-trigger:where(:not(:disabled)):hover {
309
+ background-color: color-mix(in oklab, var(--accent) 92%, black 8%);
310
+ }
311
+ .carbide.dark
312
+ .mmc-data-table-preview
313
+ .mmc-table-action-trigger:where(:not(:disabled)):hover {
314
+ background-color: color-mix(
315
+ in oklab,
316
+ var(--input-surface-hover-bg) 90%,
317
+ white 10%
318
+ );
319
+ }
320
+
321
+ /* Put higher-precedence overrides in utilities layer to beat Tailwind utilities */
322
+ @layer utilities {
323
+ /* Animated ellipsis for in-progress labels */
324
+ @keyframes mm-ellipsis {
325
+ 0% {
326
+ content: '';
327
+ }
328
+ 33% {
329
+ content: '.';
330
+ }
331
+ 66% {
332
+ content: '..';
333
+ }
334
+ 100% {
335
+ content: '...';
336
+ }
337
+ }
338
+ .mmc-animated-ellipsis::after {
339
+ display: inline-block;
340
+ width: 16px;
341
+ text-align: left;
342
+ content: '';
343
+ animation: mm-ellipsis 1.5s steps(3, end) infinite;
344
+ }
345
+
346
+ /* In-progress status colors */
347
+ .mmc-khub-status--in-progress .mmc-khub-status__label {
348
+ color: var(--foreground);
349
+ }
350
+ .carbide.dark .mmc-khub-status--in-progress .mmc-khub-status__label {
351
+ color: var(--foreground);
352
+ }
353
+ /* Consistent KHUB status layout */
354
+ .mmc-khub {
355
+ --khub-progress-width: 80px;
356
+ --khub-status-gutter: 88px;
357
+ }
358
+ .mmc-khub-status {
359
+ min-width: 0;
360
+ }
361
+ .mmc-khub-status__gutter {
362
+ width: var(--khub-status-gutter);
363
+ flex: 0 0 var(--khub-status-gutter);
364
+ display: inline-flex;
365
+ align-items: center;
366
+ }
367
+ .mmc-khub-status__label {
368
+ display: inline-block;
369
+ max-width: 100%;
370
+ }
371
+ .mmc-khub-status__progress {
372
+ width: var(--khub-progress-width);
373
+ flex: 0 0 var(--khub-progress-width);
374
+ }
375
+
376
+ /* Match in-progress text styling to badges */
377
+ .mmc-khub-status--in-progress .mmc-khub-status__label {
378
+ font-size: 0.75rem;
379
+ line-height: 1rem;
380
+ font-weight: 400;
381
+ color: var(--grey-700) !important;
382
+ }
383
+ .carbide.dark .mmc-khub-status--in-progress .mmc-khub-status__label {
384
+ color: var(--grey-200) !important;
385
+ }
386
+
387
+ /* Remove fade overflow mask for KHUB status cells */
388
+ .mmc-table-cell__content:has(> .mmc-khub-status) {
389
+ -webkit-mask-image: none !important;
390
+ mask-image: none !important;
391
+ }
392
+ /* Elevate action trigger hover contrast above Tailwind utilities */
393
+ .mmc-data-table-preview .mmc-table-action-trigger:hover {
394
+ background-color: var(--table-action-hover-bg) !important;
395
+ }
396
+ .carbide.dark .mmc-data-table-preview .mmc-table-action-trigger:hover {
397
+ background-color: var(--table-action-hover-bg) !important;
398
+ }
399
+ }
400
+
401
+ /* Universal single-line overflow wrapper for table cell contents */
402
+ .mmc-table-cell__content {
403
+ display: block;
404
+ width: 100%;
405
+ white-space: nowrap;
406
+ overflow: hidden;
407
+ --fade-edge: 16px;
408
+ }
409
+ /* Apply masks ONLY when overflow is detected via JS-added modifier classes */
410
+ .mmc-table-cell__content--fade-right {
411
+ -webkit-mask-image: linear-gradient(
412
+ to right,
413
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
414
+ rgba(0, 0, 0, 0) 100%
415
+ );
416
+ mask-image: linear-gradient(
417
+ to right,
418
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
419
+ rgba(0, 0, 0, 0) 100%
420
+ );
421
+ }
422
+ .mmc-table-cell__content--fade-left {
423
+ -webkit-mask-image: linear-gradient(
424
+ to left,
425
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
426
+ rgba(0, 0, 0, 0) 100%
427
+ );
428
+ mask-image: linear-gradient(
429
+ to left,
430
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
431
+ rgba(0, 0, 0, 0) 100%
432
+ );
433
+ }
434
+ .mmc-table-cell__content--fade-both {
435
+ -webkit-mask-image: linear-gradient(
436
+ to right,
437
+ transparent 0,
438
+ rgba(0, 0, 0, 1) var(--fade-edge),
439
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
440
+ transparent 100%
441
+ );
442
+ mask-image: linear-gradient(
443
+ to right,
444
+ transparent 0,
445
+ rgba(0, 0, 0, 1) var(--fade-edge),
446
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
447
+ transparent 100%
448
+ );
449
+ }
450
+ }
451
+
452
+ /* Collapsible animations using Radix-provided height variable */
453
+ @keyframes mm-collapsible-down {
454
+ from {
455
+ height: 0;
456
+ opacity: 0;
457
+ }
458
+ to {
459
+ height: var(--radix-collapsible-content-height);
460
+ opacity: 1;
461
+ }
462
+ }
463
+
464
+ @keyframes mm-collapsible-up {
465
+ from {
466
+ height: var(--radix-collapsible-content-height);
467
+ opacity: 1;
468
+ }
469
+ to {
470
+ height: 0;
471
+ opacity: 0;
472
+ }
473
+ }
474
+
475
+ /* JS-driven height animation now handles height. Keep only overflow hidden. */
476
+ [data-slot='collapsible-content'] {
477
+ overflow: hidden;
478
+ }
479
+ /* Radix sets hidden on closed when forceMount is used; override to enable CSS animation */
480
+ [data-slot='collapsible-content'][hidden] {
481
+ display: block !important;
482
+ }
483
+ /* JS controls height now; avoid conflicting state heights */
484
+
485
+ /* Progress micro-interactions */
486
+ @keyframes mm-progress-head-flash {
487
+ 0% {
488
+ opacity: 0;
489
+ transform: translateX(0);
490
+ }
491
+ 30% {
492
+ opacity: 0.6;
493
+ }
494
+ 100% {
495
+ opacity: 0;
496
+ transform: translateX(8px);
497
+ }
498
+ }
499
+
500
+ @keyframes mm-progress-breathe {
501
+ 0%,
502
+ 100% {
503
+ filter: brightness(1);
504
+ opacity: 1;
505
+ }
506
+ 50% {
507
+ filter: brightness(1.35);
508
+ opacity: 0.8;
509
+ }
510
+ }
511
+
512
+ [data-slot='progress'] [data-slot='progress-indicator']::after {
513
+ content: '';
514
+ position: absolute;
515
+ right: -2px;
516
+ top: 0;
517
+ bottom: 0;
518
+ width: 12px;
519
+ pointer-events: none;
520
+ /* Avoid color-mix/oklch for broader browser support; use simple alpha gradient */
521
+ background: radial-gradient(
522
+ 12px 12px at 100% 50%,
523
+ rgba(255, 255, 255, 0.6),
524
+ transparent 70%
525
+ );
526
+ opacity: 0;
527
+ }
528
+
529
+ .mmc-progress[data-animating='true'] [data-slot='progress-indicator']::after {
530
+ animation: mm-progress-head-flash 600ms ease-out 1;
531
+ }
532
+
533
+ /* Always-on pulse for the fill, regardless of state */
534
+ [data-slot='progress-indicator'] {
535
+ animation: mm-progress-breathe 1.65s ease-in-out infinite;
536
+ }