@infonomic/uikit 2.15.0 → 3.1.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/dropdown/dropdown_module.css +8 -13
  10. package/dist/components/input/checkbox_module.css +42 -91
  11. package/dist/components/input/help-text_module.css +1 -5
  12. package/dist/components/input/input_module.css +42 -109
  13. package/dist/components/input/radio-group_module.css +14 -49
  14. package/dist/components/input/select_module.css +10 -17
  15. package/dist/components/notifications/alert_module.css +0 -4
  16. package/dist/components/pager/pagination_module.css +7 -18
  17. package/dist/components/scroll-area/scroll-area_module.css +4 -20
  18. package/dist/components/tooltip/tooltip_module.css +4 -14
  19. package/dist/icons/close-icon.js +1 -1
  20. package/dist/icons/copy-icon.d.ts.map +1 -1
  21. package/dist/icons/copy-icon.js +1 -1
  22. package/dist/react.d.ts +1 -1
  23. package/dist/react.d.ts.map +1 -1
  24. package/dist/react.js +1 -1
  25. package/dist/styles/styles.css +1 -1
  26. package/dist/widgets/datepicker/datepicker_module.css +2 -2
  27. package/dist/widgets/drawer/drawer_module.css +1 -5
  28. package/dist/widgets/modal/modal_module.css +1 -5
  29. package/dist/widgets/timeline/timeline.d.ts.map +1 -0
  30. package/dist/widgets/timeline/timeline.module.js +17 -0
  31. package/dist/{components → widgets}/timeline/timeline_module.css +10 -10
  32. package/package.json +8 -8
  33. package/src/components/badge/badge.module.css +38 -68
  34. package/src/components/button/button-intents.stories.tsx +1 -1
  35. package/src/components/button/button-overrides.stories.tsx +43 -0
  36. package/src/components/button/button-variants.stories.tsx +1 -1
  37. package/src/components/button/button.module.css +135 -230
  38. package/src/components/button/control-buttons.module.css +5 -17
  39. package/src/components/button/control-buttons.stories.tsx +1 -1
  40. package/src/components/button/copy-button.module.css +32 -14
  41. package/src/components/button/copy-button.stories.tsx +6 -6
  42. package/src/components/button/copy-button.tsx +16 -12
  43. package/src/components/calendar/calendar.stories.tsx +1 -1
  44. package/src/components/dropdown/dropdown.module.css +9 -24
  45. package/src/components/input/checkbox.module.css +43 -99
  46. package/src/components/input/help-text.module.css +1 -12
  47. package/src/components/input/input.module.css +44 -119
  48. package/src/components/input/input.stories.tsx +1 -1
  49. package/src/components/input/radio-group.module.css +16 -72
  50. package/src/components/input/radio-group.stories.tsx +1 -1
  51. package/src/components/input/select.module.css +10 -17
  52. package/src/components/input/select.stories.tsx +1 -1
  53. package/src/components/notifications/alert.module.css +0 -4
  54. package/src/components/pager/pagination.module.css +7 -23
  55. package/src/components/scroll-area/scroll-area.module.css +4 -20
  56. package/src/components/tooltip/tooltip.module.css +6 -16
  57. package/src/icons/close-icon.tsx +1 -1
  58. package/src/icons/copy-icon.tsx +1 -2
  59. package/src/icons/icons.module.css +1 -0
  60. package/src/react.ts +1 -1
  61. package/src/styles/theme/theme.css +6 -4
  62. package/src/styles/theme/tokens.css +670 -0
  63. package/src/widgets/datepicker/datepicker.module.css +2 -2
  64. package/src/widgets/drawer/drawer.module.css +1 -5
  65. package/src/widgets/drawer/drawer.stories.tsx +1 -34
  66. package/src/widgets/modal/modal.module.css +1 -5
  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
@@ -0,0 +1,670 @@
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
+ /* SURFACE TOKENS (for panels, dropdowns, menus, lists)
213
+ ----------------------------------------------------------------- */
214
+
215
+ /* Panel/container backgrounds */
216
+ --surface-panel: var(--canvas-25);
217
+ --surface-panel-elevated: white; /* For dropdowns/popovers with shadow */
218
+ --surface-panel-border: var(--border-color);
219
+
220
+ /* Item backgrounds (default transparent, inherits panel) */
221
+ --surface-item: transparent;
222
+ --surface-item-hover: var(--canvas-50);
223
+ --surface-item-active: var(--canvas-100);
224
+
225
+ /* Item text colors */
226
+ --surface-item-text: var(--text);
227
+ --surface-item-text-hover: var(--text);
228
+ --surface-item-text-active: var(--text);
229
+ --surface-item-text-disabled: var(--gray-400);
230
+
231
+ /* Panel scrollers */
232
+ --surface-panel-scrollbar: var(--gray-50);
233
+ --surface-panel-scrollbar-thumb: var(--primary-100);
234
+
235
+ }
236
+
237
+ /* ===================================================================
238
+ DARK MODE
239
+ =================================================================== */
240
+ .dark {
241
+ /* PRIMARY INTENT TOKENS (Dark Mode)
242
+ ----------------------------------------------------------------- */
243
+
244
+ /* Fill tokens */
245
+ --fill-primary-strong: var(--primary-600);
246
+ --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
247
+ --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 0.85) calc(c * 0.85) h);
248
+
249
+ /* Weak fill - adjusted for dark backgrounds */
250
+ --fill-primary-weak: oklch(from var(--primary-600) calc(l * 0.45) calc(c * 0.1) h);
251
+ --fill-primary-weak-hover: var(--canvas-800);
252
+
253
+ /* Text tokens */
254
+ --text-on-primary: white; /* Same as light mode */
255
+ --text-on-primary-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
256
+ --text-primary-strong: var(--primary-100); /* Lighter for dark backgrounds */
257
+ --text-primary-weak: var(--primary-600); /* Used for text variant */
258
+ --text-primary-disabled: oklch(from var(--primary-100) calc(l * 0.8) calc(c * 0.8) h);
259
+
260
+ /* Stroke tokens */
261
+ --stroke-primary: var(--primary-500);
262
+ --stroke-primary-hover: oklch(from var(--primary-500) calc(l * 1.1) c h);
263
+ --stroke-primary-disabled: oklch(from var(--primary-500) calc(l * 0.8) calc(c * 0.8) h);
264
+
265
+ /* Ring tokens */
266
+ --ring-primary: var(--primary-600);
267
+
268
+ /* Gradient tokens */
269
+ --gradient-primary-start: var(--primary-500);
270
+ --gradient-primary-end: var(--primary-700);
271
+ --gradient-primary-foreground: white;
272
+ --gradient-primary-disabled: oklch(from var(--primary-700) calc(l * 0.85) calc(c * 0.85) h);
273
+
274
+ /* SECONDARY INTENT TOKENS (Dark Mode)
275
+ ----------------------------------------------------------------- */
276
+ --fill-secondary-strong: var(--secondary-500);
277
+ --fill-secondary-strong-hover: oklch(from var(--secondary-500) calc(l * 0.95) c h);
278
+ --fill-secondary-strong-disabled: oklch(from var(--secondary-500) calc(l * 0.85) calc(c * 0.85) h);
279
+ --fill-secondary-weak: oklch(from var(--secondary-500) calc(l * 0.3) calc(c * 0.1) h);
280
+ --fill-secondary-weak-hover: var(--canvas-800);
281
+
282
+ --text-on-secondary: black;
283
+ --text-on-secondary-disabled: oklch(from black calc(l * 0.85) calc(c * 0.85) h);
284
+ --text-secondary-strong: var(--secondary-500);
285
+ --text-secondary-weak: var(--secondary-500);
286
+ --text-secondary-disabled: oklch(from var(--secondary-500) calc(l * 0.8) calc(c * 0.8) h);
287
+
288
+ --stroke-secondary: var(--secondary-500);
289
+ --stroke-secondary-hover: oklch(from var(--secondary-500) calc(l * 1.1) c h);
290
+ --stroke-secondary-disabled: oklch(from var(--secondary-500) calc(l * 0.8) calc(c * 0.8) h);
291
+
292
+ --ring-secondary: var(--secondary-500);
293
+
294
+ --gradient-secondary-start: var(--secondary-500);
295
+ --gradient-secondary-end: var(--secondary-700);
296
+ --gradient-secondary-foreground: black;
297
+ --gradient-secondary-disabled: oklch(from var(--secondary-700) calc(l * 0.85) calc(c * 0.85) h);
298
+
299
+ /* NOEFFECT INTENT TOKENS (Dark Mode)
300
+ ----------------------------------------------------------------- */
301
+ --fill-noeffect-strong: var(--gray-900);
302
+ --fill-noeffect-strong-hover: oklch(from var(--gray-900) calc(l * 0.95) c h);
303
+ --fill-noeffect-strong-disabled: oklch(from var(--gray-900) calc(l * 0.85) calc(c * 0.85) h);
304
+ --fill-noeffect-weak: oklch(from var(--gray-900) calc(l * 0.75) calc(c * 0.2) h);
305
+ --fill-noeffect-weak-hover: var(--canvas-800);
306
+
307
+ --text-on-noeffect: white;
308
+ --text-on-noeffect-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
309
+ --text-noeffect-strong: var(--gray-300);
310
+ --text-noeffect-weak: var(--gray-300);
311
+ --text-noeffect-disabled: oklch(from var(--gray-300) calc(l * 0.85) calc(c * 0.85) h);
312
+
313
+ --stroke-noeffect: var(--gray-500);
314
+ --stroke-noeffect-hover: oklch(from var(--gray-500) calc(l * 1.2) c h);
315
+ --stroke-noeffect-disabled: oklch(from var(--gray-500) calc(l * 0.8) calc(c * 0.8) h);
316
+
317
+ --ring-noeffect: var(--gray-900);
318
+
319
+ --gradient-noeffect-start: var(--gray-950);
320
+ --gradient-noeffect-end: var(--gray-900);
321
+ --gradient-noeffect-foreground: white;
322
+ --gradient-noeffect-hover: var(--gray-900);
323
+ --gradient-noeffect-disabled: oklch(from var(--gray-900) calc(l * 0.85) calc(c * 0.85) h);
324
+
325
+ /* SUCCESS INTENT TOKENS (Dark Mode)
326
+ ----------------------------------------------------------------- */
327
+ --fill-success-strong: var(--green-400);
328
+ --fill-success-strong-hover: oklch(from var(--green-400) calc(l * 0.9) c h);
329
+ --fill-success-strong-disabled: oklch(from var(--green-400) calc(l * 0.85) calc(c * 0.85) h);
330
+ --fill-success-weak: oklch(from var(--green-400) calc(l * 0.35) calc(c * 0.1) h);
331
+ --fill-success-weak-hover: var(--canvas-800);
332
+
333
+ --text-on-success: white;
334
+ --text-on-success-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
335
+ --text-success-strong: var(--green-500);
336
+ --text-success-weak: var(--green-400);
337
+ --text-success-disabled: oklch(from var(--green-500) calc(l * 0.8) calc(c * 0.8) h);
338
+
339
+ --stroke-success: var(--green-500);
340
+ --stroke-success-hover: oklch(from var(--green-500) calc(l * 1.1) c h);
341
+ --stroke-success-disabled: oklch(from var(--green-500) calc(l * 0.8) calc(c * 0.8) h);
342
+
343
+ --ring-success: var(--green-400);
344
+
345
+ --gradient-success-start: var(--green-500);
346
+ --gradient-success-end: var(--green-700);
347
+ --gradient-success-foreground: white;
348
+ --gradient-success-disabled: oklch(from var(--green-700) calc(l * 0.85) calc(c * 0.85) h);
349
+
350
+ /* INFO INTENT TOKENS (Dark Mode)
351
+ ----------------------------------------------------------------- */
352
+ --fill-info-strong: var(--blue-400);
353
+ --fill-info-strong-hover: oklch(from var(--blue-400) calc(l * 0.9) c h);
354
+ --fill-info-strong-disabled: oklch(from var(--blue-400) calc(l * 0.85) calc(c * 0.85) h);
355
+ --fill-info-weak: oklch(from var(--blue-400) calc(l * 0.43) calc(c * 0.1) h);
356
+ --fill-info-weak-hover: var(--canvas-800);
357
+
358
+ --text-on-info: white;
359
+ --text-on-info-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
360
+ --text-info-strong: var(--blue-300);
361
+ --text-info-weak: var(--blue-400);
362
+ --text-info-disabled: oklch(from var(--blue-300) calc(l * 0.8) calc(c * 0.8) h);
363
+
364
+ --stroke-info: var(--blue-500);
365
+ --stroke-info-hover: oklch(from var(--blue-500) calc(l * 1.1) c h);
366
+ --stroke-info-disabled: oklch(from var(--blue-500) calc(l * 0.8) calc(c * 0.8) h);
367
+
368
+ --ring-info: var(--blue-400);
369
+
370
+ --gradient-info-start: var(--blue-500);
371
+ --gradient-info-end: var(--blue-700);
372
+ --gradient-info-foreground: white;
373
+ --gradient-info-disabled: oklch(from var(--blue-700) calc(l * 0.85) calc(c * 0.85) h);
374
+
375
+ /* WARNING INTENT TOKENS (Dark Mode)
376
+ ----------------------------------------------------------------- */
377
+ --fill-warning-strong: var(--yellow-300);
378
+ --fill-warning-strong-hover: oklch(from var(--yellow-300) calc(l * 0.95) c h);
379
+ --fill-warning-strong-disabled: oklch(from var(--yellow-300) calc(l * 0.85) calc(c * 0.85) h);
380
+ --fill-warning-weak: oklch(from var(--yellow-300) calc(l * 0.31) calc(c * 0.1) h);
381
+ --fill-warning-weak-hover: var(--canvas-800);
382
+
383
+ --text-on-warning: black;
384
+ --text-on-warning-disabled: oklch(from black calc(l * 0.85) calc(c * 0.85) h);
385
+ --text-warning-strong: var(--yellow-500);
386
+ --text-warning-weak: var(--yellow-300);
387
+ --text-warning-disabled: oklch(from var(--yellow-500) calc(l * 0.8) calc(c * 0.8) h);
388
+
389
+ --stroke-warning: var(--yellow-500);
390
+ --stroke-warning-hover: oklch(from var(--yellow-500) calc(l * 1.1) c h);
391
+ --stroke-warning-disabled: oklch(from var(--yellow-500) calc(l * 0.8) calc(c * 0.8) h);
392
+
393
+ --ring-warning: var(--yellow-300);
394
+
395
+ --gradient-warning-start: var(--yellow-300);
396
+ --gradient-warning-end: var(--yellow-400);
397
+ --gradient-warning-foreground: black;
398
+ --gradient-warning-disabled: oklch(from var(--yellow-400) calc(l * 0.85) calc(c * 0.85) h);
399
+
400
+ /* DANGER INTENT TOKENS (Dark Mode)
401
+ ----------------------------------------------------------------- */
402
+ --fill-danger-strong: var(--red-400);
403
+ --fill-danger-strong-hover: oklch(from var(--red-400) calc(l * 0.9) c h);
404
+ --fill-danger-strong-disabled: oklch(from var(--red-400) calc(l * 0.85) calc(c * 0.85) h);
405
+ --fill-danger-weak: oklch(from var(--red-400) calc(l * 0.4) calc(c * 0.1) h);
406
+ --fill-danger-weak-hover: var(--canvas-800);
407
+
408
+ --text-on-danger: white;
409
+ --text-on-danger-disabled: oklch(from white calc(l * 0.85) calc(c * 0.85) h);
410
+ --text-danger-strong: var(--red-500);
411
+ --text-danger-weak: var(--red-400);
412
+ --text-danger-disabled: oklch(from var(--red-500) calc(l * 0.8) calc(c * 0.8) h);
413
+
414
+ --stroke-danger: var(--red-500);
415
+ --stroke-danger-hover: oklch(from var(--red-500) calc(l * 1.1) c h);
416
+ --stroke-danger-disabled: oklch(from var(--red-500) calc(l * 0.8) calc(c * 0.8) h);
417
+
418
+ --ring-danger: var(--red-400);
419
+
420
+ --gradient-danger-start: var(--red-500);
421
+ --gradient-danger-end: var(--red-700);
422
+ --gradient-danger-foreground: white;
423
+ --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 0.85) calc(c * 0.85) h);
424
+
425
+ /* SURFACE TOKENS (Dark Mode)
426
+ ----------------------------------------------------------------- */
427
+
428
+ /* Panel/container backgrounds - slightly elevated from canvas-900 base */
429
+ --surface-panel: var(--canvas-800);
430
+ --surface-panel-elevated: var(--canvas-800);
431
+ --surface-panel-border: var(--border-color);
432
+
433
+ /* Item backgrounds - lighter than panel for hover/active */
434
+ --surface-item: transparent;
435
+ --surface-item-hover: var(--canvas-700);
436
+ --surface-item-active: var(--canvas-600);
437
+
438
+ /* Item text colors */
439
+ --surface-item-text: var(--text);
440
+ --surface-item-text-hover: var(--text);
441
+ --surface-item-text-active: var(--text);
442
+ --surface-item-text-disabled: var(--gray-500);
443
+
444
+ /* Panel scrollers */
445
+ --surface-panel-scrollbar: var(--canvas-700);
446
+ --surface-panel-scrollbar-thumb: var(--primary-400);
447
+ }
448
+
449
+ /* ===================================================================
450
+ .NOT-DARK OVERRIDE
451
+ }
452
+
453
+ /* .not-dark override: Forces light mode tokens by re-declaring :root values.
454
+ * This duplication is intentional - it ensures .not-dark always wins over .dark
455
+ * regardless of DOM order, without needing complex :not() selectors.
456
+ * Alternative approaches (revert-layer, :not() patterns) would be more fragile.
457
+ */
458
+
459
+ /* ===================================================================
460
+ .NOT-DARK OVERRIDE
461
+ Forces light mode tokens regardless of parent .dark class
462
+ =================================================================== */
463
+ .not-dark {
464
+ /* PRIMARY INTENT TOKENS (Force Light Mode)
465
+ ----------------------------------------------------------------- */
466
+
467
+ /* Fill tokens - identical to :root light mode */
468
+ --fill-primary-strong: var(--primary-600);
469
+ --fill-primary-strong-hover: oklch(from var(--primary-600) calc(l * 0.9) c h);
470
+ --fill-primary-strong-disabled: oklch(from var(--primary-600) calc(l * 1.1) calc(c * 0.85) h);
471
+
472
+ --fill-primary-weak: oklch(from var(--primary-600) calc(l * 2.15) calc(c * 0.2) h);
473
+ --fill-primary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
474
+
475
+ /* Text tokens */
476
+ --text-on-primary: white;
477
+ --text-on-primary-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
478
+ --text-primary-strong: var(--primary-700);
479
+ --text-primary-weak: oklch(from var(--primary-600) calc(l * 0.7) c h);
480
+ --text-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.5) h);
481
+
482
+ /* Stroke tokens */
483
+ --stroke-primary: var(--primary-700);
484
+ --stroke-primary-hover: oklch(from var(--primary-700) calc(l * 0.85) c h);
485
+ --stroke-primary-disabled: oklch(from var(--primary-700) calc(l * 1.5) calc(c * 0.8) h);
486
+
487
+ /* Ring tokens */
488
+ --ring-primary: var(--primary-600);
489
+
490
+ /* Gradient tokens */
491
+ --gradient-primary-start: var(--primary-500);
492
+ --gradient-primary-end: var(--primary-700);
493
+ --gradient-primary-foreground: white;
494
+ --gradient-primary-disabled: oklch(from var(--primary-700) calc(l * 1.2) calc(c * 0.85) h);
495
+
496
+ /* SECONDARY INTENT TOKENS (Force Light Mode)
497
+ ----------------------------------------------------------------- */
498
+ --fill-secondary-strong: var(--secondary-500);
499
+ --fill-secondary-strong-hover: oklch(from var(--secondary-500) calc(l * 0.95) c h);
500
+ --fill-secondary-strong-disabled: oklch(from var(--secondary-500) calc(l * 1.1) calc(c * 0.85) h);
501
+ --fill-secondary-weak: oklch(from var(--secondary-500) calc(l * 1.6) calc(c * 0.2) h);
502
+ --fill-secondary-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
503
+
504
+ --text-on-secondary: black;
505
+ --text-on-secondary-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
506
+ --text-secondary-strong: var(--secondary-950);
507
+ --text-secondary-weak: oklch(from var(--secondary-500) calc(l * 0.7) c h);
508
+ --text-secondary-disabled: oklch(from var(--secondary-950) calc(l * 1.5) calc(c * 0.5) h);
509
+
510
+ --stroke-secondary: var(--secondary-700);
511
+ --stroke-secondary-hover: oklch(from var(--secondary-700) calc(l * 0.85) c h);
512
+ --stroke-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.5) calc(c * 0.8) h);
513
+
514
+ --ring-secondary: var(--secondary-500);
515
+
516
+ --gradient-secondary-start: var(--secondary-500);
517
+ --gradient-secondary-end: var(--secondary-700);
518
+ --gradient-secondary-foreground: black;
519
+ --gradient-secondary-disabled: oklch(from var(--secondary-700) calc(l * 1.2) calc(c * 0.85) h);
520
+
521
+ /* NOEFFECT INTENT TOKENS (Force Light Mode)
522
+ ----------------------------------------------------------------- */
523
+ --fill-noeffect-strong: var(--gray-100);
524
+ --fill-noeffect-strong-hover: oklch(from var(--gray-100) calc(l * 0.95) c h);
525
+ --fill-noeffect-strong-disabled: oklch(from var(--gray-100) calc(l * 1.1) calc(c * 0.85) h);
526
+ --fill-noeffect-weak: oklch(from var(--gray-100) calc(l * 2.9) calc(c * 0.2) h);
527
+ --fill-noeffect-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
528
+
529
+ --text-on-noeffect: black;
530
+ --text-on-noeffect-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
531
+ --text-noeffect-strong: var(--gray-800);
532
+ --text-noeffect-weak: oklch(from var(--gray-100) calc(l * 0.5) c h);
533
+ --text-noeffect-disabled: oklch(from var(--gray-800) calc(l * 1.5) calc(c * 0.5) h);
534
+
535
+ --stroke-noeffect: var(--gray-500);
536
+ --stroke-noeffect-hover: oklch(from var(--gray-500) calc(l * 0.75) c h);
537
+ --stroke-noeffect-disabled: oklch(from var(--gray-500) calc(l * 1.5) calc(c * 0.8) h);
538
+
539
+ --ring-noeffect: var(--gray-200);
540
+
541
+ --gradient-noeffect-start: var(--gray-100);
542
+ --gradient-noeffect-end: var(--gray-200);
543
+ --gradient-noeffect-foreground: black;
544
+ --gradient-noeffect-hover: var(--gray-400);
545
+ --gradient-noeffect-disabled: oklch(from var(--gray-200) calc(l * 1.2) calc(c * 0.85) h);
546
+
547
+ /* SUCCESS INTENT TOKENS (Force Light Mode)
548
+ ----------------------------------------------------------------- */
549
+ --fill-success-strong: var(--green-400);
550
+ --fill-success-strong-hover: oklch(from var(--green-400) calc(l * 0.9) c h);
551
+ --fill-success-strong-disabled: oklch(from var(--green-400) calc(l * 1.1) calc(c * 0.85) h);
552
+ --fill-success-weak: oklch(from var(--green-400) calc(l * 1.6) calc(c * 0.2) h);
553
+ --fill-success-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
554
+
555
+ --text-on-success: white;
556
+ --text-on-success-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
557
+ --text-success-strong: var(--green-600);
558
+ --text-success-weak: oklch(from var(--green-400) calc(l * 0.7) c h);
559
+ --text-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.5) h);
560
+
561
+ --stroke-success: var(--green-600);
562
+ --stroke-success-hover: oklch(from var(--green-600) calc(l * 0.85) c h);
563
+ --stroke-success-disabled: oklch(from var(--green-600) calc(l * 1.5) calc(c * 0.8) h);
564
+
565
+ --ring-success: var(--green-400);
566
+
567
+ --gradient-success-start: var(--green-500);
568
+ --gradient-success-end: var(--green-700);
569
+ --gradient-success-foreground: white;
570
+ --gradient-success-disabled: oklch(from var(--green-700) calc(l * 1.2) calc(c * 0.85) h);
571
+
572
+ /* INFO INTENT TOKENS (Force Light Mode)
573
+ ----------------------------------------------------------------- */
574
+ --fill-info-strong: var(--blue-400);
575
+ --fill-info-strong-hover: oklch(from var(--blue-400) calc(l * 0.9) c h);
576
+ --fill-info-strong-disabled: oklch(from var(--blue-400) calc(l * 1.1) calc(c * 0.85) h);
577
+ --fill-info-weak: oklch(from var(--blue-400) calc(l * 1.9) calc(c * 0.2) h);
578
+ --fill-info-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
579
+
580
+ --text-on-info: white;
581
+ --text-on-info-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
582
+ --text-info-strong: var(--blue-300);
583
+ --text-info-weak: oklch(from var(--blue-400) calc(l * 0.7) c h);
584
+ --text-info-disabled: oklch(from var(--blue-300) calc(l * 1.5) calc(c * 0.5) h);
585
+
586
+ --stroke-info: var(--blue-500);
587
+ --stroke-info-hover: oklch(from var(--blue-500) calc(l * 0.85) c h);
588
+ --stroke-info-disabled: oklch(from var(--blue-500) calc(l * 1.5) calc(c * 0.8) h);
589
+
590
+ --ring-info: var(--blue-400);
591
+
592
+ --gradient-info-start: var(--blue-500);
593
+ --gradient-info-end: var(--blue-700);
594
+ --gradient-info-foreground: white;
595
+ --gradient-info-disabled: oklch(from var(--blue-700) calc(l * 1.2) calc(c * 0.85) h);
596
+
597
+ /* WARNING INTENT TOKENS (Force Light Mode)
598
+ ----------------------------------------------------------------- */
599
+ --fill-warning-strong: var(--yellow-300);
600
+ --fill-warning-strong-hover: oklch(from var(--yellow-300) calc(l * 0.95) c h);
601
+ --fill-warning-strong-disabled: oklch(from var(--yellow-300) calc(l * 1.1) calc(c * 0.85) h);
602
+ --fill-warning-weak: oklch(from var(--yellow-300) calc(l * 1.9) calc(c * 0.2) h);
603
+ --fill-warning-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
604
+
605
+ --text-on-warning: black;
606
+ --text-on-warning-disabled: oklch(from black calc(l * 0.9) calc(c * 0.85) h);
607
+ --text-warning-strong: var(--yellow-700);
608
+ --text-warning-weak: oklch(from var(--yellow-300) calc(l * 0.6) c h);
609
+ --text-warning-disabled: oklch(from var(--yellow-700) calc(l * 1.5) calc(c * 0.5) h);
610
+
611
+ --stroke-warning: var(--yellow-500);
612
+ --stroke-warning-hover: oklch(from var(--yellow-500) calc(l * 0.85) c h);
613
+ --stroke-warning-disabled: oklch(from var(--yellow-500) calc(l * 1.5) calc(c * 0.8) h);
614
+
615
+ --ring-warning: var(--yellow-300);
616
+
617
+ --gradient-warning-start: var(--yellow-300);
618
+ --gradient-warning-end: var(--yellow-400);
619
+ --gradient-warning-foreground: black;
620
+ --gradient-warning-disabled: oklch(from var(--yellow-400) calc(l * 1.2) calc(c * 0.85) h);
621
+
622
+ /* DANGER INTENT TOKENS (Force Light Mode)
623
+ ----------------------------------------------------------------- */
624
+ --fill-danger-strong: var(--red-400);
625
+ --fill-danger-strong-hover: oklch(from var(--red-400) calc(l * 0.9) c h);
626
+ --fill-danger-strong-disabled: oklch(from var(--red-400) calc(l * 1.1) calc(c * 0.85) h);
627
+ --fill-danger-weak: oklch(from var(--red-400) calc(l * 1.8) calc(c * 0.3) h);
628
+ --fill-danger-weak-hover: oklch(from var(--canvas-50) calc(l * 0.995) c h);
629
+
630
+ --text-on-danger: white;
631
+ --text-on-danger-disabled: oklch(from white calc(l * 0.9) calc(c * 0.85) h);
632
+ --text-danger-strong: var(--red-500);
633
+ --text-danger-weak: oklch(from var(--red-400) calc(l * 0.7) c h);
634
+ --text-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.5) h);
635
+
636
+ --stroke-danger: var(--red-500);
637
+ --stroke-danger-hover: oklch(from var(--red-500) calc(l * 0.85) c h);
638
+ --stroke-danger-disabled: oklch(from var(--red-500) calc(l * 1.5) calc(c * 0.8) h);
639
+
640
+ --ring-danger: var(--red-400);
641
+
642
+ --gradient-danger-start: var(--red-500);
643
+ --gradient-danger-end: var(--red-700);
644
+ --gradient-danger-foreground: white;
645
+ --gradient-danger-disabled: oklch(from var(--red-700) calc(l * 1.2) calc(c * 0.85) h);
646
+
647
+ /* SURFACE TOKENS (Force Light Mode)
648
+ ----------------------------------------------------------------- */
649
+
650
+ /* Panel/container backgrounds - identical to :root */
651
+ --surface-panel: var(--canvas-25);
652
+ --surface-panel-elevated: white;
653
+ --surface-panel-border: var(--border-color);
654
+
655
+ /* Item backgrounds */
656
+ --surface-item: transparent;
657
+ --surface-item-hover: var(--canvas-50);
658
+ --surface-item-active: var(--canvas-100);
659
+
660
+ /* Item text colors */
661
+ --surface-item-text: var(--text);
662
+ --surface-item-text-hover: var(--text);
663
+ --surface-item-text-active: var(--text);
664
+ --surface-item-text-disabled: var(--gray-400);
665
+
666
+ /* Panel scrollers */
667
+ --surface-panel-scrollbar: var(--gray-50);
668
+ --surface-panel-scrollbar-thumb: var(--primary-100);
669
+ }
670
+ }
@@ -109,11 +109,11 @@
109
109
  right: 5px;
110
110
 
111
111
  &:hover {
112
- background-color: var(--violet-4);
112
+ background-color: var(--primary-400);
113
113
  }
114
114
 
115
115
  &:focus {
116
- box-shadow: 0 0 0 2px var(--violet-7);
116
+ box-shadow: 0 0 0 2px var(--primary-600);
117
117
  }
118
118
  }
119
119