@infonomic/uikit 2.14.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +48 -6
  2. package/dist/components/badge/badge_module.css +49 -80
  3. package/dist/components/button/button_module.css +133 -227
  4. package/dist/components/button/control-buttons_module.css +2 -11
  5. package/dist/components/button/copy-button.d.ts.map +1 -1
  6. package/dist/components/button/copy-button.js +14 -7
  7. package/dist/components/button/copy-button.module.js +5 -5
  8. package/dist/components/button/copy-button_module.css +31 -12
  9. package/dist/components/calendar/calendar.js +6 -6
  10. package/dist/components/input/checkbox-group.js +1 -1
  11. package/dist/components/input/checkbox.js +1 -1
  12. package/dist/components/input/checkbox_module.css +42 -91
  13. package/dist/components/input/errors.js +2 -3
  14. package/dist/components/input/input.js +1 -1
  15. package/dist/components/input/input_module.css +42 -109
  16. package/dist/components/input/radio-group_module.css +14 -49
  17. package/dist/components/input/select.js +1 -1
  18. package/dist/components/input/text-area.js +1 -1
  19. package/dist/components/input/utils.js +3 -4
  20. package/dist/components/notifications/alert_module.css +0 -4
  21. package/dist/components/overlay/overlay.js +1 -1
  22. package/dist/icons/close-icon.js +1 -1
  23. package/dist/icons/copy-icon.d.ts.map +1 -1
  24. package/dist/icons/copy-icon.js +1 -1
  25. package/dist/react.d.ts +1 -1
  26. package/dist/react.d.ts.map +1 -1
  27. package/dist/react.js +1 -1
  28. package/dist/styles/styles.css +1 -1
  29. package/dist/tsconfig.build.tsbuildinfo +1 -1
  30. package/dist/utils/findMatch.js +3 -3
  31. package/dist/utils/isTouchDevice.js +3 -3
  32. package/dist/utils/to-kebab-case.js +1 -4
  33. package/dist/widgets/datepicker/datepicker.js +1 -1
  34. package/dist/widgets/drawer/drawer.js +1 -1
  35. package/dist/widgets/modal/modal.js +1 -1
  36. package/dist/widgets/search/search.js +1 -1
  37. package/dist/widgets/timeline/timeline.d.ts.map +1 -0
  38. package/dist/widgets/timeline/timeline.module.js +17 -0
  39. package/dist/{components → widgets}/timeline/timeline_module.css +10 -10
  40. package/package.json +30 -30
  41. package/src/components/badge/badge.module.css +38 -68
  42. package/src/components/button/button-intents.stories.tsx +1 -1
  43. package/src/components/button/button-overrides.stories.tsx +43 -0
  44. package/src/components/button/button-variants.stories.tsx +1 -1
  45. package/src/components/button/button.module.css +135 -230
  46. package/src/components/button/control-buttons.module.css +5 -17
  47. package/src/components/button/control-buttons.stories.tsx +1 -1
  48. package/src/components/button/copy-button.module.css +32 -14
  49. package/src/components/button/copy-button.stories.tsx +6 -6
  50. package/src/components/button/copy-button.tsx +16 -12
  51. package/src/components/calendar/calendar.stories.tsx +1 -1
  52. package/src/components/input/checkbox.module.css +43 -99
  53. package/src/components/input/input.module.css +44 -119
  54. package/src/components/input/input.stories.tsx +1 -1
  55. package/src/components/input/radio-group.module.css +16 -72
  56. package/src/components/input/radio-group.stories.tsx +1 -1
  57. package/src/components/input/select.stories.tsx +1 -1
  58. package/src/components/notifications/alert.module.css +0 -4
  59. package/src/components/overlay/overlay.tsx +1 -1
  60. package/src/icons/close-icon.tsx +1 -1
  61. package/src/icons/copy-icon.tsx +1 -2
  62. package/src/icons/icons.module.css +1 -0
  63. package/src/react.ts +1 -1
  64. package/src/styles/theme/theme.css +6 -4
  65. package/src/styles/theme/tokens.css +600 -0
  66. package/src/widgets/drawer/drawer.stories.tsx +1 -34
  67. package/src/{components → widgets}/timeline/timeline.stories.tsx +2 -2
  68. package/dist/components/timeline/timeline.d.ts.map +0 -1
  69. package/dist/components/timeline/timeline.module.js +0 -17
  70. /package/dist/{components → widgets}/timeline/timeline.d.ts +0 -0
  71. /package/dist/{components → widgets}/timeline/timeline.js +0 -0
  72. /package/src/components/button/{button-icon.stories.tsx → icon-button.stories.tsx} +0 -0
  73. /package/src/{components → widgets}/timeline/timeline.module.css +0 -0
  74. /package/src/{components → widgets}/timeline/timeline.tsx +0 -0
@@ -1,6 +1,7 @@
1
1
  @layer infonomic-base, infonomic-utilities, infonomic-theme, infonomic-components;
2
2
 
3
3
  @layer infonomic-components {
4
+
4
5
  .stroke-none {
5
6
  stroke: none;
6
7
  }
package/src/react.ts CHANGED
@@ -39,7 +39,6 @@ export * from './components/section/section.js'
39
39
  export * from './components/shimmer/shimmer.js'
40
40
  export * from './components/table/table.js'
41
41
  export * from './components/tabs/tabs.js'
42
- export * from './components/timeline/timeline.js'
43
42
  export * from './components/tooltip/tooltip.js'
44
43
  export * from './icons/activity-icon.js'
45
44
  export * from './icons/calendar-icon.js'
@@ -98,4 +97,5 @@ export * from './widgets/drawer/drawer.js'
98
97
  export * from './widgets/drawer/drawer-context.js'
99
98
  export * from './widgets/modal/modal.js'
100
99
  export * from './widgets/search/search.js'
100
+ export * from './widgets/timeline/timeline.js'
101
101
  export * from './widgets/datepicker/datepicker.js'
@@ -1,5 +1,6 @@
1
1
  @import "./autofill.css";
2
2
  @import "./scrollers.css";
3
+ @import "./tokens.css";
3
4
 
4
5
  @layer infonomic-theme {
5
6
  :root {
@@ -38,10 +39,11 @@
38
39
  --loader-color: var(--invert-loader-color);
39
40
  }
40
41
 
41
- /* Brute force our not-dark class for now until we figure out
42
- * a better way to do this. Note - the following does NOT work:
43
- .dark:not(:where([class~="not-dark"], [class~="not-dark"] *)) {
44
- */
42
+ /* .not-dark override: Forces light mode tokens by re-declaring :root values.
43
+ * This duplication is intentional - it ensures .not-dark always wins over .dark
44
+ * regardless of DOM order, without needing complex :not() selectors.
45
+ * Alternative approaches (revert-layer, :not() patterns) would be more fragile.
46
+ */
45
47
  .not-dark {
46
48
  --background: var(--canvas-25);
47
49
  --foreground: var(--gray-900);
@@ -0,0 +1,600 @@
1
+ /**
2
+ * SEMANTIC TOKEN LAYER
3
+ *
4
+ * This layer provides intent-based semantic tokens that automatically switch
5
+ * between light and dark modes. By defining tokens here (in infonomic-theme layer),
6
+ * component CSS can reference them without needing :not(:where([class~="not-dark"]...))
7
+ * selectors, as the theme layer handles all mode switching.
8
+ *
9
+ * Token Naming Convention: element-intent-emphasis-state
10
+ * - element: fill (backgrounds), text (foreground), stroke (borders), ring (focus)
11
+ * - intent: primary, secondary, noeffect, success, info, warning, danger
12
+ * - emphasis: strong, weak, weaker (optional)
13
+ * - state: hover, press, focus, disabled (optional)
14
+ *
15
+ * Example: --fill-primary-strong-hover
16
+ */
17
+
18
+ @layer infonomic-theme {
19
+ /* ===================================================================
20
+ LIGHT MODE (default)
21
+ =================================================================== */
22
+ :root {
23
+ /* PRIMARY INTENT TOKENS
24
+ ----------------------------------------------------------------- */
25
+
26
+ /* Fill tokens - for solid backgrounds (filled variant) */
27
+ --fill-primary-strong: var(--primary-600);
28
+ --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
29
+ --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 1.1) calc(c * 0.85) h);
30
+
31
+ /* Weak fill - for subtle backgrounds (outlined hover states) */
32
+ --fill-primary-weak: oklch(from var(--primary-600) calc(l * 2.15) calc(c * 0.2) h);
33
+ --fill-primary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
34
+
35
+ /* Text tokens - for foreground colors */
36
+ --text-on-primary: white; /* Text on primary fill */
37
+ --text-on-primary-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
38
+ --text-primary-strong: var(--primary-700); /* Primary-colored text (outlined, text variants) */
39
+ --text-primary-weak: oklch(from var(--primary-600) calc(l * 0.7) c h); /* Muted primary text */
40
+ --text-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.5) h);
41
+
42
+ /* Stroke tokens - for borders */
43
+ --stroke-primary: var(--primary-700);
44
+ --stroke-primary-hover: oklch(from var(--primary-700) calc(l * 0.85) c h);
45
+ --stroke-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.8) h);
46
+
47
+ /* Ring tokens - for focus states */
48
+ --ring-primary: var(--primary-600);
49
+
50
+ /* Gradient tokens */
51
+ --gradient-primary-start: var(--primary-500);
52
+ --gradient-primary-end: var(--primary-700);
53
+ --gradient-primary-foreground: white;
54
+ --gradient-primary-disabled: oklch(from var(--primary-700) calc(l * 1.2) calc(c * 0.85) h);
55
+
56
+ /* SECONDARY INTENT TOKENS
57
+ ----------------------------------------------------------------- */
58
+ --fill-secondary-strong: var(--secondary-500);
59
+ --fill-secondary-strong-hover: oklch(from var(--secondary-500) calc(l * 0.95) c h);
60
+ --fill-secondary-strong-disabled: oklch(from var(--secondary-500) calc(l * 1.1) calc(c * 0.85) h);
61
+ --fill-secondary-weak: oklch(from var(--secondary-500) calc(l * 1.6) calc(c * 0.2) h);
62
+ --fill-secondary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
63
+
64
+ --text-on-secondary: black;
65
+ --text-on-secondary-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
66
+ --text-secondary-strong: var(--secondary-950);
67
+ --text-secondary-weak: oklch(from var(--secondary-500) calc(l * 0.7) c h);
68
+ --text-secondary-disabled: oklch(from var(--secondary-950) calc(l * 1.5) calc(c * 0.5) h);
69
+
70
+ --stroke-secondary: var(--secondary-700);
71
+ --stroke-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.5) calc(c * 0.8) h);
72
+
73
+ --ring-secondary: var(--secondary-500);
74
+
75
+ --stroke-secondary: var(--secondary-700);
76
+ --stroke-secondary-hover: oklch(from var(--secondary-700) calc(l * 0.85) c h);
77
+ --stroke-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.5) calc(c * 0.8) h);
78
+
79
+ --ring-secondary: var(--secondary-500);
80
+
81
+ --gradient-secondary-start: var(--secondary-500);
82
+ --gradient-secondary-end: var(--secondary-700);
83
+ --gradient-secondary-foreground: black;
84
+ --gradient-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.2) calc(c * 0.85) h);
85
+
86
+ /* NOEFFECT INTENT TOKENS (neutral/gray)
87
+ ----------------------------------------------------------------- */
88
+ --fill-noeffect-strong: var(--gray-100);
89
+ --fill-noeffect-strong-hover: oklch(from var(--gray-100) calc(l * 0.95) c h);
90
+ --fill-noeffect-strong-disabled: oklch(from var(--gray-100) calc(l * 1.1) calc(c * 0.85) h);
91
+ --fill-noeffect-weak: oklch(from var(--gray-100) calc(l * 2.9) calc(c * 0.2) h);
92
+ --fill-noeffect-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
93
+
94
+ --text-on-noeffect: black;
95
+ --text-on-noeffect-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
96
+ --text-noeffect-strong: var(--gray-800);
97
+ --text-noeffect-weak: oklch(from var(--gray-100) calc(l * 0.5) c h);
98
+ --text-noeffect-disabled: oklch(from var(--gray-800) calc(l * 1.5) calc(c * 0.5) h);
99
+
100
+ --stroke-noeffect: var(--gray-500);
101
+ --stroke-noeffect-hover: oklch(from var(--gray-500) calc(l * 0.75) c h);
102
+ --stroke-noeffect-disabled: oklch(from var(--gray-500) calc(l * 1.5) calc(c * 0.8) h);
103
+
104
+ --ring-noeffect: var(--gray-200);
105
+
106
+ --gradient-noeffect-start: var(--gray-100);
107
+ --gradient-noeffect-end: var(--gray-200);
108
+ --gradient-noeffect-foreground: black;
109
+ --gradient-noeffect-hover: var(--gray-400);
110
+ --gradient-noeffect-disabled: oklch(from var(--gray-200) calc(l * 1.2) calc(c * 0.85) h);
111
+
112
+ /* SUCCESS INTENT TOKENS
113
+ ----------------------------------------------------------------- */
114
+ --fill-success-strong: var(--green-400);
115
+ --fill-success-strong-hover: oklch(from var(--green-400) calc(l * 0.9) c h);
116
+ --fill-success-strong-disabled: oklch(from var(--green-400) calc(l * 1.1) calc(c * 0.85) h);
117
+ --fill-success-weak: oklch(from var(--green-400) calc(l * 1.6) calc(c * 0.2) h);
118
+ --fill-success-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
119
+
120
+ --text-on-success: white;
121
+ --text-on-success-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
122
+ --text-success-strong: var(--green-600);
123
+ --text-success-weak: oklch(from var(--green-400) calc(l * 0.7) c h);
124
+ --text-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.5) h);
125
+
126
+ --stroke-success: var(--green-600);
127
+ --stroke-success-hover: oklch(from var(--green-600) calc(l * 0.85) c h);
128
+ --stroke-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.8) h);
129
+
130
+ --ring-success: var(--green-400);
131
+
132
+ --gradient-success-start: var(--green-500);
133
+ --gradient-success-end: var(--green-700);
134
+ --gradient-success-foreground: white;
135
+ --gradient-success-disabled: oklch(from var(--green-700) calc(l * 1.2) calc(c * 0.85) h);
136
+
137
+ /* INFO INTENT TOKENS
138
+ ----------------------------------------------------------------- */
139
+ --fill-info-strong: var(--blue-400);
140
+ --fill-info-strong-hover: oklch(from var(--blue-400) calc(l * 0.9) c h);
141
+ --fill-info-strong-disabled: oklch(from var(--blue-400) calc(l * 1.1) calc(c * 0.85) h);
142
+ --fill-info-weak: oklch(from var(--blue-400) calc(l * 1.9) calc(c * 0.2) h);
143
+ --fill-info-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
144
+
145
+ --text-on-info: white;
146
+ --text-on-info-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
147
+ --text-info-strong: var(--blue-300);
148
+ --text-info-weak: oklch(from var(--blue-400) calc(l * 0.7) c h);
149
+ --text-info-disabled: oklch(from var(--blue-300) calc(l * 1.5) calc(c * 0.5) h);
150
+
151
+ --stroke-info: var(--blue-500);
152
+ --stroke-info-hover: oklch(from var(--blue-500) calc(l * 0.85) c h);
153
+ --stroke-info-disabled: oklch(from var(--blue-500) calc(l * 1.5) calc(c * 0.8) h);
154
+
155
+ --ring-info: var(--blue-400);
156
+
157
+ --gradient-info-start: var(--blue-500);
158
+ --gradient-info-end: var(--blue-700);
159
+ --gradient-info-foreground: white;
160
+ --gradient-info-disabled: oklch(from var(--blue-700) calc(l * 1.2) calc(c * 0.85) h);
161
+
162
+ /* WARNING INTENT TOKENS
163
+ ----------------------------------------------------------------- */
164
+ --fill-warning-strong: var(--yellow-300);
165
+ --fill-warning-strong-hover: oklch(from var(--yellow-300) calc(l * 0.95) c h);
166
+ --fill-warning-strong-disabled: oklch(from var(--yellow-300) calc(l * 1.1) calc(c * 0.85) h);
167
+ --fill-warning-weak: oklch(from var(--yellow-300) calc(l * 1.9) calc(c * 0.2) h);
168
+ --fill-warning-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
169
+
170
+ --text-on-warning: black;
171
+ --text-on-warning-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
172
+ --text-warning-strong: var(--yellow-700);
173
+ --text-warning-weak: oklch(from var(--yellow-300) calc(l * 0.6) c h);
174
+ --text-warning-disabled: oklch(from var(--yellow-700) calc(l * 1.5) calc(c * 0.5) h);
175
+
176
+ --stroke-warning: var(--yellow-500);
177
+ --stroke-warning-hover: oklch(from var(--yellow-500) calc(l * 0.85) c h);
178
+ --stroke-warning-disabled: oklch(from var(--yellow-500) calc(l * 1.5) calc(c * 0.8) h);
179
+
180
+ --ring-warning: var(--yellow-300);
181
+
182
+ --gradient-warning-start: var(--yellow-300);
183
+ --gradient-warning-end: var(--yellow-400);
184
+ --gradient-warning-foreground: black;
185
+ --gradient-warning-disabled: oklch(from var(--yellow-400) calc(l * 1.2) calc(c * 0.85) h);
186
+
187
+ /* DANGER INTENT TOKENS
188
+ ----------------------------------------------------------------- */
189
+ --fill-danger-strong: var(--red-400);
190
+ --fill-danger-strong-hover: oklch(from var(--red-400) calc(l * 0.9) c h);
191
+ --fill-danger-strong-disabled: oklch(from var(--red-400) calc(l * 1.1) calc(c * 0.85) h);
192
+ --fill-danger-weak: oklch(from var(--red-400) calc(l * 1.8) calc(c * 0.3) h);
193
+ --fill-danger-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
194
+
195
+ --text-on-danger: white;
196
+ --text-on-danger-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
197
+ --text-danger-strong: var(--red-500);
198
+ --text-danger-weak: oklch(from var(--red-400) calc(l * 0.7) c h);
199
+ --text-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.5) h);
200
+
201
+ --stroke-danger: var(--red-500);
202
+ --stroke-danger-hover: oklch(from var(--red-500) calc(l * 0.85) c h);
203
+ --stroke-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.8) h);
204
+
205
+ --ring-danger: var(--red-400);
206
+
207
+ --gradient-danger-start: var(--red-500);
208
+ --gradient-danger-end: var(--red-700);
209
+ --gradient-danger-foreground: white;
210
+ --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 1.2) calc(c * 0.85) h);
211
+ }
212
+
213
+ /* ===================================================================
214
+ DARK MODE
215
+ =================================================================== */
216
+ .dark {
217
+ /* PRIMARY INTENT TOKENS (Dark Mode)
218
+ ----------------------------------------------------------------- */
219
+
220
+ /* Fill tokens */
221
+ --fill-primary-strong: var(--primary-600);
222
+ --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
223
+ --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 0.85) calc(c * 0.85) h);
224
+
225
+ /* Weak fill - adjusted for dark backgrounds */
226
+ --fill-primary-weak: oklch(from var(--primary-600) calc(l * 0.45) calc(c * 0.1) h);
227
+ --fill-primary-weak-hover: var(--canvas-800);
228
+
229
+ /* Text tokens */
230
+ --text-on-primary: white; /* Same as light mode */
231
+ --text-on-primary-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
232
+ --text-primary-strong: var(--primary-100); /* Lighter for dark backgrounds */
233
+ --text-primary-weak: var(--primary-600); /* Used for text variant */
234
+ --text-primary-disabled: oklch(from var(--primary-100) calc(l * 0.8) calc(c * 0.8) h);
235
+
236
+ /* Stroke tokens */
237
+ --stroke-primary: var(--primary-500);
238
+ --stroke-primary-hover: oklch(from var(--primary-500) calc(l * 1.1) c h);
239
+ --stroke-primary-disabled: oklch(from var(--primary-500) calc(l * 0.8) calc(c * 0.8) h);
240
+
241
+ /* Ring tokens */
242
+ --ring-primary: var(--primary-600);
243
+
244
+ /* Gradient tokens */
245
+ --gradient-primary-start: var(--primary-500);
246
+ --gradient-primary-end: var(--primary-700);
247
+ --gradient-primary-foreground: white;
248
+ --gradient-primary-disabled: oklch(from var(--primary-700) calc(l * 0.85) calc(c * 0.85) h);
249
+
250
+ /* SECONDARY INTENT TOKENS (Dark Mode)
251
+ ----------------------------------------------------------------- */
252
+ --fill-secondary-strong: var(--secondary-500);
253
+ --fill-secondary-strong-hover: oklch(from var(--secondary-500) calc(l * 0.95) c h);
254
+ --fill-secondary-strong-disabled: oklch(from var(--secondary-500) calc(l * 0.85) calc(c * 0.85) h);
255
+ --fill-secondary-weak: oklch(from var(--secondary-500) calc(l * 0.3) calc(c * 0.1) h);
256
+ --fill-secondary-weak-hover: var(--canvas-800);
257
+
258
+ --text-on-secondary: black;
259
+ --text-on-secondary-disabled: oklch(from black calc(l * 0.85) calc(c * 0.85) h);
260
+ --text-secondary-strong: var(--secondary-500);
261
+ --text-secondary-weak: var(--secondary-500);
262
+ --text-secondary-disabled: oklch(from var(--secondary-500) calc(l * 0.8) calc(c * 0.8) h);
263
+
264
+ --stroke-secondary: var(--secondary-500);
265
+ --stroke-secondary-hover: oklch(from var(--secondary-500) calc(l * 1.1) c h);
266
+ --stroke-secondary-disabled: oklch(from var(--secondary-500) calc(l * 0.8) calc(c * 0.8) h);
267
+
268
+ --ring-secondary: var(--secondary-500);
269
+
270
+ --gradient-secondary-start: var(--secondary-500);
271
+ --gradient-secondary-end: var(--secondary-700);
272
+ --gradient-secondary-foreground: black;
273
+ --gradient-secondary-disabled: oklch(from var(--secondary-700) calc(l * 0.85) calc(c * 0.85) h);
274
+
275
+ /* NOEFFECT INTENT TOKENS (Dark Mode)
276
+ ----------------------------------------------------------------- */
277
+ --fill-noeffect-strong: var(--gray-900);
278
+ --fill-noeffect-strong-hover: oklch(from var(--gray-900) calc(l * 0.95) c h);
279
+ --fill-noeffect-strong-disabled: oklch(from var(--gray-900) calc(l * 0.85) calc(c * 0.85) h);
280
+ --fill-noeffect-weak: oklch(from var(--gray-900) calc(l * 0.75) calc(c * 0.2) h);
281
+ --fill-noeffect-weak-hover: var(--canvas-800);
282
+
283
+ --text-on-noeffect: white;
284
+ --text-on-noeffect-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
285
+ --text-noeffect-strong: var(--gray-300);
286
+ --text-noeffect-weak: var(--gray-300);
287
+ --text-noeffect-disabled: oklch(from var(--gray-300) calc(l * 0.85) calc(c * 0.85) h);
288
+
289
+ --stroke-noeffect: var(--gray-500);
290
+ --stroke-noeffect-hover: oklch(from var(--gray-500) calc(l * 1.2) c h);
291
+ --stroke-noeffect-disabled: oklch(from var(--gray-500) calc(l * 0.8) calc(c * 0.8) h);
292
+
293
+ --ring-noeffect: var(--gray-900);
294
+
295
+ --gradient-noeffect-start: var(--gray-950);
296
+ --gradient-noeffect-end: var(--gray-900);
297
+ --gradient-noeffect-foreground: white;
298
+ --gradient-noeffect-hover: var(--gray-900);
299
+ --gradient-noeffect-disabled: oklch(from var(--gray-900) calc(l * 0.85) calc(c * 0.85) h);
300
+
301
+ /* SUCCESS INTENT TOKENS (Dark Mode)
302
+ ----------------------------------------------------------------- */
303
+ --fill-success-strong: var(--green-400);
304
+ --fill-success-strong-hover: oklch(from var(--green-400) calc(l * 0.9) c h);
305
+ --fill-success-strong-disabled: oklch(from var(--green-400) calc(l * 0.85) calc(c * 0.85) h);
306
+ --fill-success-weak: oklch(from var(--green-400) calc(l * 0.35) calc(c * 0.1) h);
307
+ --fill-success-weak-hover: var(--canvas-800);
308
+
309
+ --text-on-success: white;
310
+ --text-on-success-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
311
+ --text-success-strong: var(--green-500);
312
+ --text-success-weak: var(--green-400);
313
+ --text-success-disabled: oklch(from var(--green-500) calc(l * 0.8) calc(c * 0.8) h);
314
+
315
+ --stroke-success: var(--green-500);
316
+ --stroke-success-hover: oklch(from var(--green-500) calc(l * 1.1) c h);
317
+ --stroke-success-disabled: oklch(from var(--green-500) calc(l * 0.8) calc(c * 0.8) h);
318
+
319
+ --ring-success: var(--green-400);
320
+
321
+ --gradient-success-start: var(--green-500);
322
+ --gradient-success-end: var(--green-700);
323
+ --gradient-success-foreground: white;
324
+ --gradient-success-disabled: oklch(from var(--green-700) calc(l * 0.85) calc(c * 0.85) h);
325
+
326
+ /* INFO INTENT TOKENS (Dark Mode)
327
+ ----------------------------------------------------------------- */
328
+ --fill-info-strong: var(--blue-400);
329
+ --fill-info-strong-hover: oklch(from var(--blue-400) calc(l * 0.9) c h);
330
+ --fill-info-strong-disabled: oklch(from var(--blue-400) calc(l * 0.85) calc(c * 0.85) h);
331
+ --fill-info-weak: oklch(from var(--blue-400) calc(l * 0.43) calc(c * 0.1) h);
332
+ --fill-info-weak-hover: var(--canvas-800);
333
+
334
+ --text-on-info: white;
335
+ --text-on-info-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
336
+ --text-info-strong: var(--blue-300);
337
+ --text-info-weak: var(--blue-400);
338
+ --text-info-disabled: oklch(from var(--blue-300) calc(l * 0.8) calc(c * 0.8) h);
339
+
340
+ --stroke-info: var(--blue-500);
341
+ --stroke-info-hover: oklch(from var(--blue-500) calc(l * 1.1) c h);
342
+ --stroke-info-disabled: oklch(from var(--blue-500) calc(l * 0.8) calc(c * 0.8) h);
343
+
344
+ --ring-info: var(--blue-400);
345
+
346
+ --gradient-info-start: var(--blue-500);
347
+ --gradient-info-end: var(--blue-700);
348
+ --gradient-info-foreground: white;
349
+ --gradient-info-disabled: oklch(from var(--blue-700) calc(l * 0.85) calc(c * 0.85) h);
350
+
351
+ /* WARNING INTENT TOKENS (Dark Mode)
352
+ ----------------------------------------------------------------- */
353
+ --fill-warning-strong: var(--yellow-300);
354
+ --fill-warning-strong-hover: oklch(from var(--yellow-300) calc(l * 0.95) c h);
355
+ --fill-warning-strong-disabled: oklch(from var(--yellow-300) calc(l * 0.85) calc(c * 0.85) h);
356
+ --fill-warning-weak: oklch(from var(--yellow-300) calc(l * 0.31) calc(c * 0.1) h);
357
+ --fill-warning-weak-hover: var(--canvas-800);
358
+
359
+ --text-on-warning: black;
360
+ --text-on-warning-disabled: oklch(from black calc(l * 0.85) calc(c * 0.85) h);
361
+ --text-warning-strong: var(--yellow-500);
362
+ --text-warning-weak: var(--yellow-300);
363
+ --text-warning-disabled: oklch(from var(--yellow-500) calc(l * 0.8) calc(c * 0.8) h);
364
+
365
+ --stroke-warning: var(--yellow-500);
366
+ --stroke-warning-hover: oklch(from var(--yellow-500) calc(l * 1.1) c h);
367
+ --stroke-warning-disabled: oklch(from var(--yellow-500) calc(l * 0.8) calc(c * 0.8) h);
368
+
369
+ --ring-warning: var(--yellow-300);
370
+
371
+ --gradient-warning-start: var(--yellow-300);
372
+ --gradient-warning-end: var(--yellow-400);
373
+ --gradient-warning-foreground: black;
374
+ --gradient-warning-disabled: oklch(from var(--yellow-400) calc(l * 0.85) calc(c * 0.85) h);
375
+
376
+ /* DANGER INTENT TOKENS (Dark Mode)
377
+ ----------------------------------------------------------------- */
378
+ --fill-danger-strong: var(--red-400);
379
+ --fill-danger-strong-hover: oklch(from var(--red-400) calc(l * 0.9) c h);
380
+ --fill-danger-strong-disabled: oklch(from var(--red-400) calc(l * 0.85) calc(c * 0.85) h);
381
+ --fill-danger-weak: oklch(from var(--red-400) calc(l * 0.4) calc(c * 0.1) h);
382
+ --fill-danger-weak-hover: var(--canvas-800);
383
+
384
+ --text-on-danger: white;
385
+ --text-on-danger-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
386
+ --text-danger-strong: var(--red-500);
387
+ --text-danger-weak: var(--red-400);
388
+ --text-danger-disabled: oklch(from var(--red-500) calc(l * 0.8) calc(c * 0.8) h);
389
+
390
+ --stroke-danger: var(--red-500);
391
+ --stroke-danger-hover: oklch(from var(--red-500) calc(l * 1.1) c h);
392
+ --stroke-danger-disabled: oklch(from var(--red-500) calc(l * 0.8) calc(c * 0.8) h);
393
+
394
+ --ring-danger: var(--red-400);
395
+
396
+ --gradient-danger-start: var(--red-500);
397
+ --gradient-danger-end: var(--red-700);
398
+ --gradient-danger-foreground: white;
399
+ --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 0.85) calc(c * 0.85) h);
400
+ }
401
+
402
+ /* ===================================================================
403
+ .NOT-DARK OVERRIDE
404
+ }
405
+
406
+ /* .not-dark override: Forces light mode tokens by re-declaring :root values.
407
+ * This duplication is intentional - it ensures .not-dark always wins over .dark
408
+ * regardless of DOM order, without needing complex :not() selectors.
409
+ * Alternative approaches (revert-layer, :not() patterns) would be more fragile.
410
+ */
411
+
412
+ /* ===================================================================
413
+ .NOT-DARK OVERRIDE
414
+ Forces light mode tokens regardless of parent .dark class
415
+ =================================================================== */
416
+ .not-dark {
417
+ /* PRIMARY INTENT TOKENS (Force Light Mode)
418
+ ----------------------------------------------------------------- */
419
+
420
+ /* Fill tokens - identical to :root light mode */
421
+ --fill-primary-strong: var(--primary-600);
422
+ --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
423
+ --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 1.1) calc(c * 0.85) h);
424
+
425
+ --fill-primary-weak: oklch(from var(--primary-600) calc(l * 2.15) calc(c * 0.2) h);
426
+ --fill-primary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
427
+
428
+ /* Text tokens */
429
+ --text-on-primary: white;
430
+ --text-on-primary-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
431
+ --text-primary-strong: var(--primary-700);
432
+ --text-primary-weak: oklch(from var(--primary-600) calc(l * 0.7) c h);
433
+ --text-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.5) h);
434
+
435
+ /* Stroke tokens */
436
+ --stroke-primary: var(--primary-700);
437
+ --stroke-primary-hover: oklch(from var(--primary-700) calc(l * 0.85) c h);
438
+ --stroke-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.8) h);
439
+
440
+ /* Ring tokens */
441
+ --ring-primary: var(--primary-600);
442
+
443
+ /* Gradient tokens */
444
+ --gradient-primary-start: var(--primary-500);
445
+ --gradient-primary-end: var(--primary-700);
446
+ --gradient-primary-foreground: white;
447
+ --gradient-primary-disabled: oklch(from var(--primary-700) calc(l * 1.2) calc(c * 0.85) h);
448
+
449
+ /* SECONDARY INTENT TOKENS (Force Light Mode)
450
+ ----------------------------------------------------------------- */
451
+ --fill-secondary-strong: var(--secondary-500);
452
+ --fill-secondary-strong-hover: oklch(from var(--secondary-500) calc(l * 0.95) c h);
453
+ --fill-secondary-strong-disabled: oklch(from var(--secondary-500) calc(l * 1.1) calc(c * 0.85) h);
454
+ --fill-secondary-weak: oklch(from var(--secondary-500) calc(l * 1.6) calc(c * 0.2) h);
455
+ --fill-secondary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
456
+
457
+ --text-on-secondary: black;
458
+ --text-on-secondary-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
459
+ --text-secondary-strong: var(--secondary-950);
460
+ --text-secondary-weak: oklch(from var(--secondary-500) calc(l * 0.7) c h);
461
+ --text-secondary-disabled: oklch(from var(--secondary-950) calc(l * 1.5) calc(c * 0.5) h);
462
+
463
+ --stroke-secondary: var(--secondary-700);
464
+ --stroke-secondary-hover: oklch(from var(--secondary-700) calc(l * 0.85) c h);
465
+ --stroke-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.5) calc(c * 0.8) h);
466
+
467
+ --ring-secondary: var(--secondary-500);
468
+
469
+ --gradient-secondary-start: var(--secondary-500);
470
+ --gradient-secondary-end: var(--secondary-700);
471
+ --gradient-secondary-foreground: black;
472
+ --gradient-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.2) calc(c * 0.85) h);
473
+
474
+ /* NOEFFECT INTENT TOKENS (Force Light Mode)
475
+ ----------------------------------------------------------------- */
476
+ --fill-noeffect-strong: var(--gray-100);
477
+ --fill-noeffect-strong-hover: oklch(from var(--gray-100) calc(l * 0.95) c h);
478
+ --fill-noeffect-strong-disabled: oklch(from var(--gray-100) calc(l * 1.1) calc(c * 0.85) h);
479
+ --fill-noeffect-weak: oklch(from var(--gray-100) calc(l * 2.9) calc(c * 0.2) h);
480
+ --fill-noeffect-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
481
+
482
+ --text-on-noeffect: black;
483
+ --text-on-noeffect-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
484
+ --text-noeffect-strong: var(--gray-800);
485
+ --text-noeffect-weak: oklch(from var(--gray-100) calc(l * 0.5) c h);
486
+ --text-noeffect-disabled: oklch(from var(--gray-800) calc(l * 1.5) calc(c * 0.5) h);
487
+
488
+ --stroke-noeffect: var(--gray-500);
489
+ --stroke-noeffect-hover: oklch(from var(--gray-500) calc(l * 0.75) c h);
490
+ --stroke-noeffect-disabled: oklch(from var(--gray-500) calc(l * 1.5) calc(c * 0.8) h);
491
+
492
+ --ring-noeffect: var(--gray-200);
493
+
494
+ --gradient-noeffect-start: var(--gray-100);
495
+ --gradient-noeffect-end: var(--gray-200);
496
+ --gradient-noeffect-foreground: black;
497
+ --gradient-noeffect-hover: var(--gray-400);
498
+ --gradient-noeffect-disabled: oklch(from var(--gray-200) calc(l * 1.2) calc(c * 0.85) h);
499
+
500
+ /* SUCCESS INTENT TOKENS (Force Light Mode)
501
+ ----------------------------------------------------------------- */
502
+ --fill-success-strong: var(--green-400);
503
+ --fill-success-strong-hover: oklch(from var(--green-400) calc(l * 0.9) c h);
504
+ --fill-success-strong-disabled: oklch(from var(--green-400) calc(l * 1.1) calc(c * 0.85) h);
505
+ --fill-success-weak: oklch(from var(--green-400) calc(l * 1.6) calc(c * 0.2) h);
506
+ --fill-success-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
507
+
508
+ --text-on-success: white;
509
+ --text-on-success-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
510
+ --text-success-strong: var(--green-600);
511
+ --text-success-weak: oklch(from var(--green-400) calc(l * 0.7) c h);
512
+ --text-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.5) h);
513
+
514
+ --stroke-success: var(--green-600);
515
+ --stroke-success-hover: oklch(from var(--green-600) calc(l * 0.85) c h);
516
+ --stroke-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.8) h);
517
+
518
+ --ring-success: var(--green-400);
519
+
520
+ --gradient-success-start: var(--green-500);
521
+ --gradient-success-end: var(--green-700);
522
+ --gradient-success-foreground: white;
523
+ --gradient-success-disabled: oklch(from var(--green-700) calc(l * 1.2) calc(c * 0.85) h);
524
+
525
+ /* INFO INTENT TOKENS (Force Light Mode)
526
+ ----------------------------------------------------------------- */
527
+ --fill-info-strong: var(--blue-400);
528
+ --fill-info-strong-hover: oklch(from var(--blue-400) calc(l * 0.9) c h);
529
+ --fill-info-strong-disabled: oklch(from var(--blue-400) calc(l * 1.1) calc(c * 0.85) h);
530
+ --fill-info-weak: oklch(from var(--blue-400) calc(l * 1.9) calc(c * 0.2) h);
531
+ --fill-info-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
532
+
533
+ --text-on-info: white;
534
+ --text-on-info-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
535
+ --text-info-strong: var(--blue-300);
536
+ --text-info-weak: oklch(from var(--blue-400) calc(l * 0.7) c h);
537
+ --text-info-disabled: oklch(from var(--blue-300) calc(l * 1.5) calc(c * 0.5) h);
538
+
539
+ --stroke-info: var(--blue-500);
540
+ --stroke-info-hover: oklch(from var(--blue-500) calc(l * 0.85) c h);
541
+ --stroke-info-disabled: oklch(from var(--blue-500) calc(l * 1.5) calc(c * 0.8) h);
542
+
543
+ --ring-info: var(--blue-400);
544
+
545
+ --gradient-info-start: var(--blue-500);
546
+ --gradient-info-end: var(--blue-700);
547
+ --gradient-info-foreground: white;
548
+ --gradient-info-disabled: oklch(from var(--blue-700) calc(l * 1.2) calc(c * 0.85) h);
549
+
550
+ /* WARNING INTENT TOKENS (Force Light Mode)
551
+ ----------------------------------------------------------------- */
552
+ --fill-warning-strong: var(--yellow-300);
553
+ --fill-warning-strong-hover: oklch(from var(--yellow-300) calc(l * 0.95) c h);
554
+ --fill-warning-strong-disabled: oklch(from var(--yellow-300) calc(l * 1.1) calc(c * 0.85) h);
555
+ --fill-warning-weak: oklch(from var(--yellow-300) calc(l * 1.9) calc(c * 0.2) h);
556
+ --fill-warning-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
557
+
558
+ --text-on-warning: black;
559
+ --text-on-warning-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
560
+ --text-warning-strong: var(--yellow-700);
561
+ --text-warning-weak: oklch(from var(--yellow-300) calc(l * 0.6) c h);
562
+ --text-warning-disabled: oklch(from var(--yellow-700) calc(l * 1.5) calc(c * 0.5) h);
563
+
564
+ --stroke-warning: var(--yellow-500);
565
+ --stroke-warning-hover: oklch(from var(--yellow-500) calc(l * 0.85) c h);
566
+ --stroke-warning-disabled: oklch(from var(--yellow-500) calc(l * 1.5) calc(c * 0.8) h);
567
+
568
+ --ring-warning: var(--yellow-300);
569
+
570
+ --gradient-warning-start: var(--yellow-300);
571
+ --gradient-warning-end: var(--yellow-400);
572
+ --gradient-warning-foreground: black;
573
+ --gradient-warning-disabled: oklch(from var(--yellow-400) calc(l * 1.2) calc(c * 0.85) h);
574
+
575
+ /* DANGER INTENT TOKENS (Force Light Mode)
576
+ ----------------------------------------------------------------- */
577
+ --fill-danger-strong: var(--red-400);
578
+ --fill-danger-strong-hover: oklch(from var(--red-400) calc(l * 0.9) c h);
579
+ --fill-danger-strong-disabled: oklch(from var(--red-400) calc(l * 1.1) calc(c * 0.85) h);
580
+ --fill-danger-weak: oklch(from var(--red-400) calc(l * 1.8) calc(c * 0.3) h);
581
+ --fill-danger-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
582
+
583
+ --text-on-danger: white;
584
+ --text-on-danger-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
585
+ --text-danger-strong: var(--red-500);
586
+ --text-danger-weak: oklch(from var(--red-400) calc(l * 0.7) c h);
587
+ --text-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.5) h);
588
+
589
+ --stroke-danger: var(--red-500);
590
+ --stroke-danger-hover: oklch(from var(--red-500) calc(l * 0.85) c h);
591
+ --stroke-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.8) h);
592
+
593
+ --ring-danger: var(--red-400);
594
+
595
+ --gradient-danger-start: var(--red-500);
596
+ --gradient-danger-end: var(--red-700);
597
+ --gradient-danger-foreground: white;
598
+ --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 1.2) calc(c * 0.85) h);
599
+ }
600
+ }