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

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 (33) hide show
  1. package/README.md +6 -25
  2. package/dist/README.md +6 -25
  3. package/dist/components/ui/progress.d.ts +1 -0
  4. package/dist/components/ui/progress.d.ts.map +1 -1
  5. package/dist/docs/GETTING_STARTED.md +3 -5
  6. package/dist/main.d.ts +1 -2
  7. package/dist/main.d.ts.map +1 -1
  8. package/dist/mm-react-components.es.js.map +1 -1
  9. package/dist/mm-react-components.umd.js.map +1 -1
  10. package/dist/scripts/chakra-to-shadcn-migrator/chakra-to-shadcn.config.json +536 -0
  11. package/dist/scripts/chakra-to-shadcn-migrator/lib/args.js +63 -0
  12. package/dist/scripts/chakra-to-shadcn-migrator/lib/colors.js +14 -0
  13. package/dist/scripts/chakra-to-shadcn-migrator/lib/config.js +15 -0
  14. package/dist/scripts/chakra-to-shadcn-migrator/lib/deps.js +105 -0
  15. package/dist/scripts/chakra-to-shadcn-migrator/lib/file-io.js +44 -0
  16. package/dist/scripts/chakra-to-shadcn-migrator/lib/render.js +89 -0
  17. package/dist/scripts/chakra-to-shadcn-migrator/lib/transform.js +550 -0
  18. package/dist/scripts/chakra-to-shadcn-migrator/package.json +11 -0
  19. package/dist/style.css +1 -0
  20. package/dist/tailwind.base.config.js +88 -0
  21. package/package.json +18 -8
  22. package/scripts/README.md +112 -112
  23. package/scripts/init.cjs +159 -0
  24. package/src/index.css +99 -489
  25. package/src/themes/carbide.css +379 -32
  26. package/dist/index.css +0 -527
  27. package/dist/themes/base.css +0 -536
  28. package/dist/themes/carbide.css +0 -1257
  29. package/dist/themes/complete.css +0 -8
  30. package/scripts/chakra-to-shadcn-migrator/README.md +0 -107
  31. package/src/themes/base.css +0 -536
  32. package/src/themes/complete.css +0 -8
  33. /package/{scripts → dist/scripts}/chakra-to-shadcn-migrator/bin/chakra-to-shadcn.js +0 -0
@@ -1,7 +1,354 @@
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
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ @theme inline {
9
+ --radius-sm: calc(var(--radius) - 4px);
10
+ --radius-md: calc(var(--radius) - 2px);
11
+ --radius-lg: var(--radius);
12
+ --radius-xl: calc(var(--radius) + 4px);
13
+ --color-background: var(--background);
14
+ --color-foreground: var(--foreground);
15
+ --color-card: var(--card);
16
+ --color-card-foreground: var(--card-foreground);
17
+ --color-popover: var(--popover);
18
+ --color-popover-foreground: var(--popover-foreground);
19
+ --color-primary: var(--primary);
20
+ --color-primary-foreground: var(--primary-foreground);
21
+ --color-secondary: var(--secondary);
22
+ --color-secondary-foreground: var(--secondary-foreground);
23
+ --color-muted: var(--muted);
24
+ --color-muted-foreground: var(--muted-foreground);
25
+ --color-accent: var(--accent);
26
+ --color-accent-foreground: var(--accent-foreground);
27
+ --color-destructive: var(--destructive);
28
+ --color-border: var(--border);
29
+ --color-input: var(--input);
30
+ --color-ring: var(--ring);
31
+ --color-chart-1: var(--chart-1);
32
+ --color-chart-2: var(--chart-2);
33
+ --color-chart-3: var(--chart-3);
34
+ --color-chart-4: var(--chart-4);
35
+ --color-chart-5: var(--chart-5);
36
+ --color-sidebar: var(--sidebar);
37
+ --color-sidebar-foreground: var(--sidebar-foreground);
38
+ --color-sidebar-primary: var(--sidebar-primary);
39
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
40
+ --color-sidebar-accent: var(--sidebar-accent);
41
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
42
+ --color-sidebar-border: var(--sidebar-border);
43
+ --color-sidebar-ring: var(--sidebar-ring);
44
+ }
45
+
46
+ :root {
47
+ --radius: 0.5rem;
48
+ --radius-sm: 4px;
49
+ --radius-md: calc(var(--radius) - 2px);
50
+ --radius-lg: var(--radius);
51
+ --radius-xl: calc(var(--radius) + 4px);
52
+ --background: oklch(1 0 0);
53
+ --foreground: oklch(0.145 0 0);
54
+ --card: oklch(1 0 0);
55
+ --card-foreground: oklch(0.145 0 0);
56
+ --popover: oklch(1 0 0);
57
+ --popover-foreground: oklch(0.145 0 0);
58
+ --primary: oklch(0.205 0 0);
59
+ --primary-foreground: oklch(0.985 0 0);
60
+ --secondary: oklch(0.97 0 0);
61
+ --secondary-foreground: oklch(0.205 0 0);
62
+ --muted: oklch(0.97 0 0);
63
+ --muted-foreground: oklch(0.556 0 0);
64
+ --accent: oklch(0.97 0 0);
65
+ --accent-foreground: oklch(0.205 0 0);
66
+ --destructive: oklch(0.577 0.245 27.325);
67
+ --border: oklch(0.922 0 0);
68
+ --input: oklch(0.922 0 0);
69
+ --ring: oklch(0.708 0 0);
70
+ --chart-1: #5a67d8;
71
+ --chart-2: #319795;
72
+ --chart-3: #38a169;
73
+ --chart-4: #dd6b20;
74
+ --chart-5: #805ad5;
75
+ --sidebar: oklch(0.985 0 0);
76
+ --sidebar-foreground: oklch(0.145 0 0);
77
+ --sidebar-primary: oklch(0.205 0 0);
78
+ --sidebar-primary-foreground: oklch(0.985 0 0);
79
+ --sidebar-accent: oklch(0.97 0 0);
80
+ --sidebar-accent-foreground: oklch(0.205 0 0);
81
+ --sidebar-border: oklch(0.922 0 0);
82
+ --sidebar-ring: oklch(0.708 0 0);
83
+
84
+ /* Overlay token (base) */
85
+ --overlay-bg: rgba(0, 0, 0, 0.8);
86
+
87
+ /* --- Typography tokens (shadcn/ui reference) --- */
88
+ --font-sans:
89
+ ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
90
+ Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
91
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
92
+ --font-mono:
93
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
94
+ 'Courier New', monospace;
95
+ --font-heading: var(--font-sans);
96
+ --font-body: var(--font-sans);
97
+
98
+ --text-base-size: 1rem; /* 16px */
99
+ --text-sm-size: 0.875rem; /* 14px */
100
+ --text-lg-size: 1.125rem; /* 18px */
101
+
102
+ --font-weight-normal: 400;
103
+ --font-weight-medium: 500;
104
+ --font-weight-bold: 700;
105
+
106
+ --leading-tight: 1.25;
107
+ --leading-normal: 1.5;
108
+
109
+ --tracking-tight: -0.015em;
110
+ --tracking-normal: 0;
111
+ }
112
+
113
+ .dark {
114
+ --background: oklch(0.145 0 0);
115
+ --foreground: oklch(0.985 0 0);
116
+ --card: oklch(0.205 0 0);
117
+ --card-foreground: oklch(0.985 0 0);
118
+ --popover: oklch(0.205 0 0);
119
+ --popover-foreground: oklch(0.985 0 0);
120
+ --primary: oklch(0.922 0 0);
121
+ --primary-foreground: oklch(0.205 0 0);
122
+ --secondary: oklch(0.269 0 0);
123
+ --secondary-foreground: oklch(0.985 0 0);
124
+ --muted: oklch(0.269 0 0);
125
+ --muted-foreground: oklch(0.708 0 0);
126
+ --accent: oklch(0.269 0 0);
127
+ --accent-foreground: oklch(0.985 0 0);
128
+ --destructive: oklch(0.704 0.191 22.216);
129
+ --border: oklch(1 0 0 / 10%);
130
+ --input: oklch(1 0 0 / 15%);
131
+ --ring: oklch(0.556 0 0);
132
+ --chart-1: #667eea;
133
+ --chart-2: #4fd1c5;
134
+ --chart-3: #48bb78;
135
+ --chart-4: #ed8936;
136
+ --chart-5: #9f7aea;
137
+ --sidebar: oklch(0.205 0 0);
138
+ --sidebar-foreground: oklch(0.985 0 0);
139
+ --sidebar-primary: oklch(0.488 0.243 264.376);
140
+ --sidebar-primary-foreground: oklch(0.985 0 0);
141
+ --sidebar-accent: oklch(0.269 0 0);
142
+ --sidebar-accent-foreground: oklch(0.985 0 0);
143
+ --sidebar-border: oklch(1 0 0 / 10%);
144
+ --sidebar-ring: oklch(0.556 0 0);
145
+ }
146
+
147
+ @layer base {
148
+ * {
149
+ @apply border-border outline-ring/50;
150
+ }
151
+ body {
152
+ @apply bg-background text-foreground;
153
+ }
154
+ .lead {
155
+ @apply text-xl text-muted-foreground;
156
+ }
157
+ .large {
158
+ @apply text-lg font-semibold;
159
+ }
160
+ .small {
161
+ @apply text-sm font-medium leading-none;
162
+ }
163
+ .muted {
164
+ @apply text-sm text-muted-foreground;
165
+ }
166
+ :root {
167
+ --chart-1: var(--indigo-600);
168
+ --chart-2: var(--teal-600);
169
+ --chart-3: var(--green-600);
170
+ --chart-4: var(--orange-600);
171
+ --chart-5: var(--purple-600);
172
+ --sidebar-background: 0 0% 98%;
173
+ --sidebar-foreground: 240 5.3% 26.1%;
174
+ --sidebar-primary: 240 5.9% 10%;
175
+ --sidebar-primary-foreground: 0 0% 98%;
176
+ --sidebar-accent: 240 4.8% 95.9%;
177
+ --sidebar-accent-foreground: 240 5.9% 10%;
178
+ --sidebar-border: 220 13% 91%;
179
+ --sidebar-ring: 217.2 91.2% 59.8%;
180
+ }
181
+
182
+ .dark {
183
+ --chart-1: var(--indigo-500);
184
+ --chart-2: var(--teal-400);
185
+ --chart-3: var(--green-500);
186
+ --chart-4: var(--orange-500);
187
+ --chart-5: var(--purple-500);
188
+ --sidebar-background: 240 5.9% 10%;
189
+ --sidebar-foreground: 240 4.8% 95.9%;
190
+ --sidebar-primary: 224.3 76.3% 48%;
191
+ --sidebar-primary-foreground: 0 0% 100%;
192
+ --sidebar-accent: 240 3.7% 15.9%;
193
+ --sidebar-accent-foreground: 240 4.8% 95.9%;
194
+ --sidebar-border: 240 3.7% 15.9%;
195
+ --sidebar-ring: 217.2 91.2% 59.8%;
196
+ }
197
+
198
+ /* Universal Carbide hover for input-like controls */
199
+ .carbide
200
+ :is(
201
+ input:not([type]),
202
+ input[type='text'],
203
+ input[type='email'],
204
+ input[type='password'],
205
+ input[type='search'],
206
+ input[type='number'],
207
+ input[type='url'],
208
+ input[type='tel'],
209
+ textarea,
210
+ [data-slot='checkbox'],
211
+ [data-slot='radio-group-item'],
212
+ [data-slot='toggle'],
213
+ [data-slot='filter-section-trigger']
214
+ ) {
215
+ @apply transition-[background-color,box-shadow];
216
+ }
217
+
218
+ .carbide
219
+ :is(
220
+ input:not([type]),
221
+ input[type='text'],
222
+ input[type='email'],
223
+ input[type='password'],
224
+ input[type='search'],
225
+ input[type='number'],
226
+ input[type='url'],
227
+ input[type='tel'],
228
+ textarea,
229
+ [data-slot='checkbox'],
230
+ [data-slot='radio-group-item'],
231
+ [data-slot='toggle'],
232
+ [data-slot='filter-section-trigger']
233
+ ):where(:not(:disabled)):hover {
234
+ background-color: var(--input-surface-hover-bg);
235
+ }
236
+
237
+ /* Ensure elements styled via the bg-input utility also receive hover */
238
+ .carbide .bg-input:where(:not(:disabled)):hover {
239
+ background-color: var(--accent);
240
+ }
241
+ .carbide.dark .bg-input:where(:not(:disabled)):hover {
242
+ background-color: var(--input-surface-hover-bg);
243
+ }
244
+
245
+ /* Universal single-line overflow wrapper for table cell contents */
246
+ .mmc-table-cell__content {
247
+ display: block;
248
+ width: 100%;
249
+ white-space: nowrap;
250
+ overflow: hidden;
251
+ --fade-edge: 16px;
252
+ }
253
+ /* Apply masks ONLY when overflow is detected via JS-added modifier classes */
254
+ .mmc-table-cell__content--fade-right {
255
+ -webkit-mask-image: linear-gradient(
256
+ to right,
257
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
258
+ rgba(0, 0, 0, 0) 100%
259
+ );
260
+ mask-image: linear-gradient(
261
+ to right,
262
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
263
+ rgba(0, 0, 0, 0) 100%
264
+ );
265
+ }
266
+ .mmc-table-cell__content--fade-left {
267
+ -webkit-mask-image: linear-gradient(
268
+ to left,
269
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
270
+ rgba(0, 0, 0, 0) 100%
271
+ );
272
+ mask-image: linear-gradient(
273
+ to left,
274
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
275
+ rgba(0, 0, 0, 0) 100%
276
+ );
277
+ }
278
+ .mmc-table-cell__content--fade-both {
279
+ -webkit-mask-image: linear-gradient(
280
+ to right,
281
+ transparent 0,
282
+ rgba(0, 0, 0, 1) var(--fade-edge),
283
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
284
+ transparent 100%
285
+ );
286
+ mask-image: linear-gradient(
287
+ to right,
288
+ transparent 0,
289
+ rgba(0, 0, 0, 1) var(--fade-edge),
290
+ rgba(0, 0, 0, 1) calc(100% - var(--fade-edge)),
291
+ transparent 100%
292
+ );
293
+ }
294
+ }
295
+
296
+ /* Collapsible animations using Radix-provided height variable */
297
+ @keyframes mm-collapsible-down {
298
+ from {
299
+ height: 0;
300
+ opacity: 0;
301
+ }
302
+ to {
303
+ height: var(--radix-collapsible-content-height);
304
+ opacity: 1;
305
+ }
306
+ }
307
+
308
+ @keyframes mm-collapsible-up {
309
+ from {
310
+ height: var(--radix-collapsible-content-height);
311
+ opacity: 1;
312
+ }
313
+ to {
314
+ height: 0;
315
+ opacity: 0;
316
+ }
317
+ }
318
+
319
+ /* Accordion animations (core theme) */
320
+ @keyframes accordion-down {
321
+ from {
322
+ height: 0;
323
+ }
324
+ to {
325
+ height: var(--radix-accordion-content-height);
326
+ }
327
+ }
328
+
329
+ @keyframes accordion-up {
330
+ from {
331
+ height: var(--radix-accordion-content-height);
332
+ }
333
+ to {
334
+ height: 0;
335
+ }
336
+ }
337
+
338
+ /* JS-driven height animation now handles height. Keep only overflow hidden. */
339
+ [data-slot='collapsible-content'] {
340
+ overflow: hidden;
341
+ }
342
+ /* Radix sets hidden on closed when forceMount is used; override to enable CSS animation */
343
+ [data-slot='collapsible-content'][hidden] {
344
+ display: block !important;
345
+ }
346
+ /* JS controls height now; avoid conflicting state heights */
347
+
1
348
  .carbide {
2
349
  /* =============================
3
- TYPOGRAPHY
4
- ============================= */
350
+ TYPOGRAPHY
351
+ ============================= */
5
352
 
6
353
  /* Core Fonts */
7
354
  --font-sans:
@@ -17,8 +364,8 @@
17
364
  --font-weight-bold: 600;
18
365
 
19
366
  /* =============================
20
- COLORS
21
- ============================= */
367
+ COLORS
368
+ ============================= */
22
369
 
23
370
  /* Brand */
24
371
  --brand-green: #15a500;
@@ -193,13 +540,13 @@
193
540
 
194
541
  /* =============================
195
542
  SURFACES (GENERIC)
196
- ============================= */
543
+ ============================= */
197
544
  /* Neutral control rail/background surface used across components */
198
545
  --surface-neutral: var(--grey-300);
199
546
 
200
547
  /* =============================
201
548
  TABLIST
202
- ============================= */
549
+ ============================= */
203
550
  --tablist-bg: var(--grey-200);
204
551
  --tablist-fg: var(--grey-700);
205
552
  --tablist-active-bg: var(--grey-00);
@@ -208,14 +555,14 @@
208
555
 
209
556
  /* =============================
210
557
  TABLE HEADER
211
- ============================= */
558
+ ============================= */
212
559
  --tablehead-bg: var(--muted);
213
560
  --tablehead-fg: var(--foreground);
214
561
  --tablehead-border: var(--border);
215
562
 
216
563
  /* =============================
217
564
  BUTTONS
218
- ============================= */
565
+ ============================= */
219
566
  --button-secondary-bg: transparent;
220
567
  --button-secondary-border: var(--grey-700);
221
568
  --button-secondary-hover-bg: var(--grey-150);
@@ -234,7 +581,7 @@
234
581
 
235
582
  /* =============================
236
583
  INPUT/OUTLINE/OVERLAY SURFACES
237
- ============================= */
584
+ ============================= */
238
585
  --input-surface-bg: #202734;
239
586
  --input-surface-border: #2d3748;
240
587
  --input-surface-hover-bg: #242c3a;
@@ -242,14 +589,14 @@
242
589
 
243
590
  /* =============================
244
591
  BADGE: TYPOGRAPHY
245
- ============================= */
592
+ ============================= */
246
593
  .carbide [data-slot='badge'] {
247
594
  font-weight: 400;
248
595
  }
249
596
 
250
597
  /* =============================
251
598
  KNOWLEDGE HUB STATUS BADGES
252
- ============================= */
599
+ ============================= */
253
600
  .carbide .mmc-khub [data-slot='badge'] {
254
601
  border-radius: 9999px;
255
602
  }
@@ -312,7 +659,7 @@
312
659
 
313
660
  /* =============================
314
661
  BUTTON: ICON SIZE DEFAULT
315
- ============================= */
662
+ ============================= */
316
663
  /* Default all button icons to 16px; :where() keeps specificity low so consumers can override */
317
664
  .carbide [data-slot='button'] svg {
318
665
  width: 16px;
@@ -321,7 +668,7 @@
321
668
 
322
669
  /* =============================
323
670
  BUTTON VARIANTS (LIGHT)
324
- ============================= */
671
+ ============================= */
325
672
  .carbide [data-slot='button'][data-variant='default']:not([disabled]) {
326
673
  background-color: var(--primary);
327
674
  color: var(--primary-foreground);
@@ -457,7 +804,7 @@
457
804
 
458
805
  /* =============================
459
806
  BUTTON VARIANTS (DARK)
460
- ============================= */
807
+ ============================= */
461
808
  .carbide.dark [data-slot='button'][data-variant='default']:not([disabled]) {
462
809
  background-color: var(--primary);
463
810
  color: var(--primary-foreground);
@@ -514,7 +861,7 @@
514
861
 
515
862
  /* =============================
516
863
  INPUT
517
- ============================= */
864
+ ============================= */
518
865
  .carbide [data-slot='input'] {
519
866
  background-color: var(--bg-input);
520
867
  border-color: var(--border-input);
@@ -575,7 +922,7 @@
575
922
 
576
923
  /* =============================
577
924
  SELECT
578
- ============================= */
925
+ ============================= */
579
926
  .carbide [data-slot='select-trigger'] {
580
927
  background-color: var(--bg-input);
581
928
  border-color: var(--border-input);
@@ -648,7 +995,7 @@
648
995
 
649
996
  /* =============================
650
997
  DROPDOWN MENU
651
- ============================= */
998
+ ============================= */
652
999
  .carbide [data-slot='dropdown-menu-content'] {
653
1000
  background-color: var(--popover);
654
1001
  color: var(--popover-foreground);
@@ -736,7 +1083,7 @@
736
1083
 
737
1084
  /* =============================
738
1085
  TOOLTIP
739
- ============================= */
1086
+ ============================= */
740
1087
  .carbide [data-slot='tooltip-content'] {
741
1088
  background-color: var(--foreground);
742
1089
  color: var(--background);
@@ -755,7 +1102,7 @@
755
1102
 
756
1103
  /* =============================
757
1104
  OVERLAYS & DIALOG/SHEET/DRAWER
758
- ============================= */
1105
+ ============================= */
759
1106
  .carbide [data-slot='dialog-overlay'],
760
1107
  .carbide [data-slot='sheet-overlay'],
761
1108
  .carbide [data-slot='drawer-overlay'] {
@@ -838,7 +1185,7 @@
838
1185
 
839
1186
  /* =============================
840
1187
  TABLE
841
- ============================= */
1188
+ ============================= */
842
1189
  .carbide [data-slot='table-wrapper'] {
843
1190
  background-color: var(--card);
844
1191
  color: var(--card-foreground);
@@ -852,7 +1199,7 @@
852
1199
 
853
1200
  /* =============================
854
1201
  TABS
855
- ============================= */
1202
+ ============================= */
856
1203
  .carbide [data-slot='tabs-list'][data-variant='default'] {
857
1204
  background-color: var(--tablist-bg);
858
1205
  color: var(--tablist-fg);
@@ -905,7 +1252,7 @@
905
1252
  }
906
1253
  /* =============================
907
1254
  UTILITY OVERRIDES
908
- ============================= */
1255
+ ============================= */
909
1256
 
910
1257
  /*
911
1258
  Force correct text color for destructive badges and elements using text-destructive-foreground.
@@ -932,7 +1279,7 @@
932
1279
 
933
1280
  /* =============================
934
1281
  PROGRESS (SEMANTIC HOOK)
935
- ============================= */
1282
+ ============================= */
936
1283
  .carbide [data-slot='progress'] {
937
1284
  background-color: var(--surface-neutral);
938
1285
  }
@@ -943,7 +1290,7 @@
943
1290
 
944
1291
  /* =============================
945
1292
  ACCORDION
946
- ============================= */
1293
+ ============================= */
947
1294
  .carbide [data-slot='accordion'] [data-slot='accordion-item'] {
948
1295
  border-bottom: 1px solid var(--border);
949
1296
  }
@@ -953,7 +1300,7 @@
953
1300
 
954
1301
  /* =============================
955
1302
  POPOVER
956
- ============================= */
1303
+ ============================= */
957
1304
  .carbide [data-slot='popover-content'] {
958
1305
  background-color: var(--popover);
959
1306
  color: var(--popover-foreground);
@@ -969,10 +1316,10 @@
969
1316
 
970
1317
  /* =============================
971
1318
  SLIDER (SEMANTIC HOOK)
972
- ============================= */
1319
+ ============================= */
973
1320
  /* =============================
974
1321
  CHECKBOX (SEMANTIC HOOK)
975
- ============================= */
1322
+ ============================= */
976
1323
  .carbide [data-slot='checkbox'] {
977
1324
  border-color: var(--border-input) !important;
978
1325
  background-color: var(--bg-input);
@@ -998,7 +1345,7 @@
998
1345
 
999
1346
  /* =============================
1000
1347
  RADIO GROUP ITEM
1001
- ============================= */
1348
+ ============================= */
1002
1349
  .carbide [data-slot='radio-group-item'] {
1003
1350
  border-color: var(--border-input);
1004
1351
  background-color: var(--bg-input);
@@ -1023,7 +1370,7 @@
1023
1370
 
1024
1371
  /* =============================
1025
1372
  FORM CONTROL FOCUS + INVALID STATES
1026
- ============================= */
1373
+ ============================= */
1027
1374
  .carbide [data-slot='checkbox']:focus-visible,
1028
1375
  .carbide [data-slot='radio-group-item']:focus-visible,
1029
1376
  .carbide [data-slot='switch']:focus-visible {
@@ -1046,7 +1393,7 @@
1046
1393
 
1047
1394
  /* =============================
1048
1395
  SWITCH (SEMANTIC HOOK)
1049
- ============================= */
1396
+ ============================= */
1050
1397
  .carbide [data-slot='switch'] {
1051
1398
  border-color: transparent;
1052
1399
  }
@@ -1074,7 +1421,7 @@
1074
1421
 
1075
1422
  /* =============================
1076
1423
  CALENDAR (SEMANTIC HOOK)
1077
- ============================= */
1424
+ ============================= */
1078
1425
  .carbide [data-slot='calendar'] {
1079
1426
  background-color: var(--card);
1080
1427
  color: var(--card-foreground);
@@ -1125,7 +1472,7 @@
1125
1472
 
1126
1473
  /* =============================
1127
1474
  DATA TABLE: ALIGNMENT BASELINE FIX
1128
- ============================= */
1475
+ ============================= */
1129
1476
  /* Unify left-aligned body cells to the sortable-header baseline (0.25rem) */
1130
1477
  .carbide
1131
1478
  td.text-left[data-col-id]:not([data-col-id='select']):not(