@vhyxui/tokens 0.1.0-alpha.1

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.
package/index.css ADDED
@@ -0,0 +1,479 @@
1
+ /* AUTO-GENERATED — do not edit directly.
2
+ Run pnpm --filter @vhyxui/tokens sync to regenerate.
3
+ Source files are in packages/tokens/src/
4
+ */
5
+
6
+ /* === src/primitives/colors.css === */
7
+ :root {
8
+ /* Slate — neutral scale */
9
+ --vhyx-primitive-slate-50: #f8fafc;
10
+ --vhyx-primitive-slate-100: #f1f5f9;
11
+ --vhyx-primitive-slate-200: #e2e8f0;
12
+ --vhyx-primitive-slate-300: #cbd5e1;
13
+ --vhyx-primitive-slate-400: #94a3b8;
14
+ --vhyx-primitive-slate-500: #64748b;
15
+ --vhyx-primitive-slate-600: #475569;
16
+ --vhyx-primitive-slate-700: #334155;
17
+ --vhyx-primitive-slate-800: #1e293b;
18
+ --vhyx-primitive-slate-900: #0f172a;
19
+ --vhyx-primitive-slate-950: #020617;
20
+
21
+ /* Indigo — default accent */
22
+ --vhyx-primitive-indigo-50: #eef2ff;
23
+ --vhyx-primitive-indigo-100: #e0e7ff;
24
+ --vhyx-primitive-indigo-200: #c7d2fe;
25
+ --vhyx-primitive-indigo-300: #a5b4fc;
26
+ --vhyx-primitive-indigo-400: #818cf8;
27
+ --vhyx-primitive-indigo-500: #6366f1;
28
+ --vhyx-primitive-indigo-600: #4f46e5;
29
+ --vhyx-primitive-indigo-700: #4338ca;
30
+ --vhyx-primitive-indigo-800: #3730a3;
31
+ --vhyx-primitive-indigo-900: #312e81;
32
+
33
+ /* Green — success */
34
+ --vhyx-primitive-green-50: #f0fdf4;
35
+ --vhyx-primitive-green-500: #22c55e;
36
+ --vhyx-primitive-green-600: #16a34a;
37
+ --vhyx-primitive-green-700: #15803d;
38
+
39
+ /* Red — danger */
40
+ --vhyx-primitive-red-50: #fef2f2;
41
+ --vhyx-primitive-red-500: #ef4444;
42
+ --vhyx-primitive-red-600: #dc2626;
43
+ --vhyx-primitive-red-700: #b91c1c;
44
+
45
+ /* Amber — warning */
46
+ --vhyx-primitive-amber-50: #fffbeb;
47
+ --vhyx-primitive-amber-500: #f59e0b;
48
+ --vhyx-primitive-amber-600: #d97706;
49
+
50
+ /* Blue — info */
51
+ --vhyx-primitive-blue-50: #eff6ff;
52
+ --vhyx-primitive-blue-500: #3b82f6;
53
+ --vhyx-primitive-blue-600: #2563eb;
54
+ }
55
+
56
+ /* === src/primitives/typography.css === */
57
+ :root {
58
+ /* Font family stacks */
59
+ --vhyx-primitive-font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
60
+ --vhyx-primitive-font-mono: ui-monospace, 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
61
+ --vhyx-primitive-font-serif: ui-serif, Georgia, serif;
62
+
63
+ /* Raw size scale */
64
+ --vhyx-primitive-text-2xs: 0.625rem;
65
+ --vhyx-primitive-text-xs: 0.75rem;
66
+ --vhyx-primitive-text-sm: 0.875rem;
67
+ --vhyx-primitive-text-md: 1rem;
68
+ --vhyx-primitive-text-lg: 1.125rem;
69
+ --vhyx-primitive-text-xl: 1.25rem;
70
+ --vhyx-primitive-text-2xl: 1.5rem;
71
+ --vhyx-primitive-text-3xl: 1.875rem;
72
+ --vhyx-primitive-text-4xl: 2.25rem;
73
+ }
74
+
75
+ /* === src/semantic/colors.css === */
76
+ :root {
77
+ /* Background */
78
+ --vhyx-color-bg: var(--vhyx-primitive-slate-50);
79
+ --vhyx-color-bg-subtle: var(--vhyx-primitive-slate-100);
80
+ --vhyx-color-bg-muted: var(--vhyx-primitive-slate-200);
81
+ --vhyx-color-bg-inverse: var(--vhyx-primitive-slate-900);
82
+
83
+ /* Surface — components sit on surface, not bg */
84
+ --vhyx-color-surface: #ffffff;
85
+ --vhyx-color-surface-raised: #ffffff;
86
+ --vhyx-color-surface-overlay: #ffffff;
87
+
88
+ /* Overlay backdrop */
89
+ --vhyx-color-overlay: rgba(0, 0, 0, 0.5);
90
+
91
+ /* Border */
92
+ --vhyx-color-border: var(--vhyx-primitive-slate-200);
93
+ --vhyx-color-border-strong: var(--vhyx-primitive-slate-300);
94
+ --vhyx-color-border-focus: var(--vhyx-primitive-indigo-500);
95
+
96
+ /* Text */
97
+ --vhyx-color-text: var(--vhyx-primitive-slate-900);
98
+ --vhyx-color-text-subtle: var(--vhyx-primitive-slate-500);
99
+ --vhyx-color-text-muted: var(--vhyx-primitive-slate-400);
100
+ --vhyx-color-text-disabled: var(--vhyx-primitive-slate-300);
101
+ --vhyx-color-text-inverse: var(--vhyx-primitive-slate-50);
102
+ --vhyx-color-text-on-accent: #ffffff;
103
+
104
+ /* Accent */
105
+ --vhyx-color-accent: var(--vhyx-primitive-indigo-500);
106
+ --vhyx-color-accent-hover: var(--vhyx-primitive-indigo-600);
107
+ --vhyx-color-accent-active: var(--vhyx-primitive-indigo-700);
108
+ --vhyx-color-accent-subtle: var(--vhyx-primitive-indigo-50);
109
+ --vhyx-color-accent-muted: var(--vhyx-primitive-indigo-100);
110
+
111
+ /* Success */
112
+ --vhyx-color-success: var(--vhyx-primitive-green-500);
113
+ --vhyx-color-success-hover: var(--vhyx-primitive-green-600);
114
+ --vhyx-color-success-subtle: var(--vhyx-primitive-green-50);
115
+ --vhyx-color-success-text: var(--vhyx-primitive-green-700);
116
+
117
+ /* Danger */
118
+ --vhyx-color-danger: var(--vhyx-primitive-red-500);
119
+ --vhyx-color-danger-hover: var(--vhyx-primitive-red-600);
120
+ --vhyx-color-danger-subtle: var(--vhyx-primitive-red-50);
121
+ --vhyx-color-danger-text: var(--vhyx-primitive-red-700);
122
+
123
+ /* Warning */
124
+ --vhyx-color-warning: var(--vhyx-primitive-amber-500);
125
+ --vhyx-color-warning-hover: var(--vhyx-primitive-amber-600);
126
+ --vhyx-color-warning-subtle: var(--vhyx-primitive-amber-50);
127
+ --vhyx-color-warning-text: var(--vhyx-primitive-amber-600);
128
+
129
+ /* Info */
130
+ --vhyx-color-info: var(--vhyx-primitive-blue-500);
131
+ --vhyx-color-info-hover: var(--vhyx-primitive-blue-600);
132
+ --vhyx-color-info-subtle: var(--vhyx-primitive-blue-50);
133
+ --vhyx-color-info-text: var(--vhyx-primitive-blue-600);
134
+ }
135
+
136
+ /* === src/semantic/typography.css === */
137
+ :root {
138
+ /* Font families */
139
+ --vhyx-font-sans: system-ui, -apple-system, BlinkMacSystemFont,
140
+ 'Segoe UI', sans-serif;
141
+ --vhyx-font-mono: ui-monospace, 'Cascadia Code', 'Fira Code',
142
+ 'Consolas', monospace;
143
+ --vhyx-font-serif: ui-serif, Georgia, serif;
144
+
145
+ /* Size scale */
146
+ --vhyx-text-2xs: 0.625rem;
147
+ --vhyx-text-xs: 0.75rem;
148
+ --vhyx-text-sm: 0.875rem;
149
+ --vhyx-text-md: 1rem;
150
+ --vhyx-text-lg: 1.125rem;
151
+ --vhyx-text-xl: 1.25rem;
152
+ --vhyx-text-2xl: 1.5rem;
153
+ --vhyx-text-3xl: 1.875rem;
154
+ --vhyx-text-4xl: 2.25rem;
155
+
156
+ /* Line height */
157
+ --vhyx-leading-none: 1;
158
+ --vhyx-leading-tight: 1.25;
159
+ --vhyx-leading-snug: 1.375;
160
+ --vhyx-leading-normal: 1.5;
161
+ --vhyx-leading-relaxed: 1.625;
162
+ --vhyx-leading-loose: 2;
163
+
164
+ /* Font weight */
165
+ --vhyx-weight-light: 300;
166
+ --vhyx-weight-normal: 400;
167
+ --vhyx-weight-medium: 500;
168
+ --vhyx-weight-semibold: 600;
169
+ --vhyx-weight-bold: 700;
170
+ --vhyx-weight-extrabold: 800;
171
+
172
+ /* Letter spacing */
173
+ --vhyx-tracking-tight: -0.025em;
174
+ --vhyx-tracking-normal: 0em;
175
+ --vhyx-tracking-wide: 0.025em;
176
+ --vhyx-tracking-wider: 0.05em;
177
+ --vhyx-tracking-widest: 0.1em;
178
+ }
179
+
180
+ /* === src/semantic/spacing.css === */
181
+ :root {
182
+ --vhyx-space-px: 1px;
183
+ --vhyx-space-0: 0;
184
+ --vhyx-space-0-5: 0.125rem;
185
+ --vhyx-space-1: 0.25rem;
186
+ --vhyx-space-1-5: 0.375rem;
187
+ --vhyx-space-2: 0.5rem;
188
+ --vhyx-space-2-5: 0.625rem;
189
+ --vhyx-space-3: 0.75rem;
190
+ --vhyx-space-3-5: 0.875rem;
191
+ --vhyx-space-4: 1rem;
192
+ --vhyx-space-5: 1.25rem;
193
+ --vhyx-space-6: 1.5rem;
194
+ --vhyx-space-7: 1.75rem;
195
+ --vhyx-space-8: 2rem;
196
+ --vhyx-space-9: 2.25rem;
197
+ --vhyx-space-10: 2.5rem;
198
+ --vhyx-space-12: 3rem;
199
+ --vhyx-space-14: 3.5rem;
200
+ --vhyx-space-16: 4rem;
201
+ --vhyx-space-20: 5rem;
202
+ --vhyx-space-24: 6rem;
203
+ --vhyx-space-32: 8rem;
204
+
205
+ /* Component heights — consistent across all interactive elements */
206
+ --vhyx-size-xs: 1.5rem;
207
+ --vhyx-size-sm: 2rem;
208
+ --vhyx-size-md: 2.5rem;
209
+ --vhyx-size-lg: 3rem;
210
+ --vhyx-size-xl: 3.5rem;
211
+
212
+ /* Drawer panel dimensions */
213
+ --vhyx-drawer-sm: 20rem;
214
+ --vhyx-drawer-md: 25rem;
215
+ --vhyx-drawer-lg: 32rem;
216
+ --vhyx-drawer-full: 100%;
217
+
218
+ /* Dialog panel dimensions */
219
+ --vhyx-dialog-sm: 20rem;
220
+ --vhyx-dialog-md: 32rem;
221
+ --vhyx-dialog-lg: 48rem;
222
+
223
+ /* Popover layout constraints */
224
+ --vhyx-popover-max-width: 20rem;
225
+ }
226
+
227
+ /* === src/semantic/borders.css === */
228
+ :root {
229
+ --vhyx-radius-none: 0;
230
+ --vhyx-radius-xs: 2px;
231
+ --vhyx-radius-sm: 4px;
232
+ --vhyx-radius-md: 6px;
233
+ --vhyx-radius-lg: 8px;
234
+ --vhyx-radius-xl: 12px;
235
+ --vhyx-radius-2xl: 16px;
236
+ --vhyx-radius-3xl: 24px;
237
+ --vhyx-radius-full: 9999px;
238
+
239
+ --vhyx-border-width: 1px;
240
+ --vhyx-border-width-2: 2px;
241
+ }
242
+
243
+ /* === src/semantic/shadows.css === */
244
+ :root {
245
+ --vhyx-shadow-none: none;
246
+ --vhyx-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
247
+ --vhyx-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1),
248
+ 0 1px 2px rgba(0, 0, 0, 0.06);
249
+ --vhyx-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07),
250
+ 0 2px 4px rgba(0, 0, 0, 0.05);
251
+ --vhyx-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1),
252
+ 0 4px 6px rgba(0, 0, 0, 0.05);
253
+ --vhyx-shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1),
254
+ 0 10px 10px rgba(0, 0, 0, 0.04);
255
+ --vhyx-shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.25);
256
+ --vhyx-shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.06);
257
+
258
+ /* Focus ring — consistent across all interactive elements */
259
+ --vhyx-shadow-focus: 0 0 0 3px rgba(99, 102, 241, 0.4);
260
+ --vhyx-shadow-focus-danger: 0 0 0 3px rgba(239, 68, 68, 0.4);
261
+ }
262
+
263
+ /* === src/semantic/motion.css === */
264
+ :root {
265
+ /* Duration */
266
+ --vhyx-duration-instant: 50ms;
267
+ --vhyx-duration-fast: 100ms;
268
+ --vhyx-duration-normal: 200ms;
269
+ --vhyx-duration-slow: 350ms;
270
+ --vhyx-duration-glacial: 500ms;
271
+
272
+ /* Easing */
273
+ --vhyx-easing-linear: linear;
274
+ --vhyx-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
275
+ --vhyx-easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
276
+ --vhyx-easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
277
+ --vhyx-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
278
+ --vhyx-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
279
+ --vhyx-easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
280
+ }
281
+
282
+ /* Reduced motion — collapses all durations */
283
+ @media (prefers-reduced-motion: reduce) {
284
+ :root {
285
+ --vhyx-duration-instant: 0ms;
286
+ --vhyx-duration-fast: 0ms;
287
+ --vhyx-duration-normal: 0ms;
288
+ --vhyx-duration-slow: 0ms;
289
+ --vhyx-duration-glacial: 0ms;
290
+ }
291
+ }
292
+
293
+ /* Appear / Disappear */
294
+ @keyframes vhyx-fade-in {
295
+ from { opacity: 0; }
296
+ to { opacity: 1; }
297
+ }
298
+ @keyframes vhyx-fade-out {
299
+ from { opacity: 1; }
300
+ to { opacity: 0; }
301
+ }
302
+
303
+ @keyframes vhyx-scale-in {
304
+ from { opacity: 0; transform: scale(0.95); }
305
+ to { opacity: 1; transform: scale(1); }
306
+ }
307
+ @keyframes vhyx-scale-out {
308
+ from { opacity: 1; transform: scale(1); }
309
+ to { opacity: 0; transform: scale(0.95); }
310
+ }
311
+
312
+ @keyframes vhyx-slide-up-in {
313
+ from { opacity: 0; transform: translateY(8px) scale(0.98); }
314
+ to { opacity: 1; transform: translateY(0) scale(1); }
315
+ }
316
+ @keyframes vhyx-slide-up-out {
317
+ from { opacity: 1; transform: translateY(0) scale(1); }
318
+ to { opacity: 0; transform: translateY(8px) scale(0.98); }
319
+ }
320
+
321
+ @keyframes vhyx-slide-right-in {
322
+ from { transform: translateX(100%); }
323
+ to { transform: translateX(0); }
324
+ }
325
+ @keyframes vhyx-slide-right-out {
326
+ from { transform: translateX(0); }
327
+ to { transform: translateX(100%); }
328
+ }
329
+
330
+ @keyframes vhyx-slide-left-in {
331
+ from { transform: translateX(-100%); }
332
+ to { transform: translateX(0); }
333
+ }
334
+ @keyframes vhyx-slide-left-out {
335
+ from { transform: translateX(0); }
336
+ to { transform: translateX(-100%); }
337
+ }
338
+
339
+ @keyframes vhyx-slide-down-in {
340
+ from { transform: translateY(-100%); }
341
+ to { transform: translateY(0); }
342
+ }
343
+ @keyframes vhyx-slide-down-out {
344
+ from { transform: translateY(0); }
345
+ to { transform: translateY(-100%); }
346
+ }
347
+
348
+ @keyframes vhyx-overlay-in {
349
+ from { opacity: 0; }
350
+ to { opacity: 1; }
351
+ }
352
+ @keyframes vhyx-overlay-out {
353
+ from { opacity: 1; }
354
+ to { opacity: 0; }
355
+ }
356
+
357
+ /* Feedback */
358
+ @keyframes vhyx-shake {
359
+ 0%, 100% { transform: translateX(0); }
360
+ 20% { transform: translateX(-6px); }
361
+ 40% { transform: translateX(6px); }
362
+ 60% { transform: translateX(-4px); }
363
+ 80% { transform: translateX(4px); }
364
+ }
365
+
366
+ @keyframes vhyx-success-pulse {
367
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
368
+ 50% { box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.3); }
369
+ }
370
+
371
+ /* Ambient */
372
+ @keyframes vhyx-spin {
373
+ from { transform: rotate(0deg); }
374
+ to { transform: rotate(360deg); }
375
+ }
376
+
377
+ @keyframes vhyx-shimmer {
378
+ from { background-position: -200% center; }
379
+ to { background-position: 200% center; }
380
+ }
381
+
382
+ @keyframes vhyx-indeterminate {
383
+ 0% { transform: translateX(-100%) scaleX(0.5); }
384
+ 50% { transform: translateX(0%) scaleX(0.3); }
385
+ 100% { transform: translateX(100%) scaleX(0.5); }
386
+ }
387
+
388
+ /* === src/semantic/zindex.css === */
389
+ :root {
390
+ --vhyx-z-hide: -1;
391
+ --vhyx-z-base: 0;
392
+ --vhyx-z-raised: 10;
393
+ --vhyx-z-dropdown: 100;
394
+ --vhyx-z-sticky: 200;
395
+ --vhyx-z-banner: 250;
396
+ --vhyx-z-overlay: 300;
397
+ --vhyx-z-modal: 400;
398
+ --vhyx-z-popover: 450;
399
+ --vhyx-z-toast: 500;
400
+ --vhyx-z-tooltip: 550;
401
+ --vhyx-z-top: 999;
402
+ }
403
+
404
+ /* === src/themes/dark.css === */
405
+ [data-theme="dark"] {
406
+ --vhyx-color-bg: var(--vhyx-primitive-slate-950);
407
+ --vhyx-color-bg-subtle: var(--vhyx-primitive-slate-900);
408
+ --vhyx-color-bg-muted: var(--vhyx-primitive-slate-800);
409
+ --vhyx-color-bg-inverse: var(--vhyx-primitive-slate-50);
410
+
411
+ --vhyx-color-surface: var(--vhyx-primitive-slate-900);
412
+ --vhyx-color-surface-raised: var(--vhyx-primitive-slate-800);
413
+ --vhyx-color-surface-overlay: var(--vhyx-primitive-slate-800);
414
+ --vhyx-color-overlay: rgba(0, 0, 0, 0.65);
415
+
416
+ --vhyx-color-border: var(--vhyx-primitive-slate-800);
417
+ --vhyx-color-border-strong: var(--vhyx-primitive-slate-700);
418
+ --vhyx-color-border-focus: var(--vhyx-primitive-indigo-400);
419
+
420
+ --vhyx-color-text: var(--vhyx-primitive-slate-50);
421
+ --vhyx-color-text-subtle: var(--vhyx-primitive-slate-400);
422
+ --vhyx-color-text-muted: var(--vhyx-primitive-slate-500);
423
+ --vhyx-color-text-disabled: var(--vhyx-primitive-slate-600);
424
+ --vhyx-color-text-inverse: var(--vhyx-primitive-slate-900);
425
+
426
+ --vhyx-color-accent-subtle: #1e1b4b;
427
+ --vhyx-color-accent-muted: #312e81;
428
+
429
+ --vhyx-color-success-subtle: #052e16;
430
+ --vhyx-color-danger-subtle: #450a0a;
431
+ --vhyx-color-warning-subtle: #431407;
432
+ --vhyx-color-info-subtle: #0c1a45;
433
+ }
434
+
435
+ /* === src/reset.css === */
436
+ *, *::before, *::after {
437
+ box-sizing: border-box;
438
+ margin: 0;
439
+ padding: 0;
440
+ }
441
+
442
+ html {
443
+ -webkit-font-smoothing: antialiased;
444
+ -moz-osx-font-smoothing: grayscale;
445
+ text-size-adjust: 100%;
446
+ }
447
+
448
+ body {
449
+ font-family: var(--vhyx-font-sans);
450
+ font-size: var(--vhyx-text-md);
451
+ line-height: var(--vhyx-leading-normal);
452
+ color: var(--vhyx-color-text);
453
+ background-color: var(--vhyx-color-bg);
454
+ }
455
+
456
+ img, video, svg {
457
+ display: block;
458
+ max-width: 100%;
459
+ }
460
+
461
+ button, input, select, textarea {
462
+ font: inherit;
463
+ }
464
+
465
+ p, h1, h2, h3, h4, h5, h6 {
466
+ overflow-wrap: break-word;
467
+ }
468
+
469
+ /* Remove list styles on ul/ol with role=list */
470
+ ul[role="list"], ol[role="list"] {
471
+ list-style: none;
472
+ }
473
+
474
+ /* Focus visible — never outline none without replacement */
475
+ :focus-visible {
476
+ outline: none;
477
+ box-shadow: var(--vhyx-shadow-focus);
478
+ }
479
+
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@vhyxui/tokens",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "CSS design tokens for VhyxUI — zero JavaScript, zero build step",
5
+ "license": "MIT",
6
+ "exports": {
7
+ ".": "./index.css",
8
+ "./index.css": "./index.css",
9
+ "./reset.css": "./reset.css",
10
+ "./dark.css": "./src/themes/dark.css"
11
+ },
12
+ "scripts": {
13
+ "sync": "node scripts/sync-bundle.js"
14
+ }
15
+ }
package/reset.css ADDED
@@ -0,0 +1,43 @@
1
+ *, *::before, *::after {
2
+ box-sizing: border-box;
3
+ margin: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ html {
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ text-size-adjust: 100%;
11
+ }
12
+
13
+ body {
14
+ font-family: var(--vhyx-font-sans);
15
+ font-size: var(--vhyx-text-md);
16
+ line-height: var(--vhyx-leading-normal);
17
+ color: var(--vhyx-color-text);
18
+ background-color: var(--vhyx-color-bg);
19
+ }
20
+
21
+ img, video, svg {
22
+ display: block;
23
+ max-width: 100%;
24
+ }
25
+
26
+ button, input, select, textarea {
27
+ font: inherit;
28
+ }
29
+
30
+ p, h1, h2, h3, h4, h5, h6 {
31
+ overflow-wrap: break-word;
32
+ }
33
+
34
+ /* Remove list styles on ul/ol with role=list */
35
+ ul[role="list"], ol[role="list"] {
36
+ list-style: none;
37
+ }
38
+
39
+ /* Focus visible — never outline none without replacement */
40
+ :focus-visible {
41
+ outline: none;
42
+ box-shadow: var(--vhyx-shadow-focus);
43
+ }
@@ -0,0 +1,39 @@
1
+ const fs = require('fs')
2
+ const path = require('path')
3
+
4
+ // Source files in dependency order
5
+ const SRC_FILES = [
6
+ 'src/primitives/colors.css',
7
+ 'src/primitives/typography.css',
8
+ 'src/primitives/index.css',
9
+ 'src/semantic/colors.css',
10
+ 'src/semantic/typography.css',
11
+ 'src/semantic/spacing.css',
12
+ 'src/semantic/borders.css',
13
+ 'src/semantic/shadows.css',
14
+ 'src/semantic/motion.css',
15
+ 'src/semantic/zindex.css',
16
+ 'src/semantic/index.css',
17
+ 'src/themes/dark.css',
18
+ 'src/themes/index.css',
19
+ 'src/reset.css',
20
+ 'src/index.css',
21
+ ]
22
+
23
+ const root = path.join(__dirname, '..')
24
+ const header = '/* AUTO-GENERATED — do not edit directly.\n' +
25
+ ' Run pnpm --filter @vhyxui/tokens sync to regenerate.\n' +
26
+ ' Source files are in packages/tokens/src/\n */\n\n'
27
+
28
+ let output = header
29
+ for (const file of SRC_FILES) {
30
+ const content = fs.readFileSync(path.join(root, file), 'utf8')
31
+ // Remove @import statements — we are inlining everything
32
+ const stripped = content.replace(/@import[^;]+;/g, '').trim()
33
+ if (stripped) {
34
+ output += `/* === ${file} === */\n${stripped}\n\n`
35
+ }
36
+ }
37
+
38
+ fs.writeFileSync(path.join(root, 'index.css'), output)
39
+ console.log('Token bundle synced.')
package/src/index.css ADDED
@@ -0,0 +1,3 @@
1
+ @import './primitives/index.css';
2
+ @import './semantic/index.css';
3
+ @import './themes/index.css';
@@ -0,0 +1,48 @@
1
+ :root {
2
+ /* Slate — neutral scale */
3
+ --vhyx-primitive-slate-50: #f8fafc;
4
+ --vhyx-primitive-slate-100: #f1f5f9;
5
+ --vhyx-primitive-slate-200: #e2e8f0;
6
+ --vhyx-primitive-slate-300: #cbd5e1;
7
+ --vhyx-primitive-slate-400: #94a3b8;
8
+ --vhyx-primitive-slate-500: #64748b;
9
+ --vhyx-primitive-slate-600: #475569;
10
+ --vhyx-primitive-slate-700: #334155;
11
+ --vhyx-primitive-slate-800: #1e293b;
12
+ --vhyx-primitive-slate-900: #0f172a;
13
+ --vhyx-primitive-slate-950: #020617;
14
+
15
+ /* Indigo — default accent */
16
+ --vhyx-primitive-indigo-50: #eef2ff;
17
+ --vhyx-primitive-indigo-100: #e0e7ff;
18
+ --vhyx-primitive-indigo-200: #c7d2fe;
19
+ --vhyx-primitive-indigo-300: #a5b4fc;
20
+ --vhyx-primitive-indigo-400: #818cf8;
21
+ --vhyx-primitive-indigo-500: #6366f1;
22
+ --vhyx-primitive-indigo-600: #4f46e5;
23
+ --vhyx-primitive-indigo-700: #4338ca;
24
+ --vhyx-primitive-indigo-800: #3730a3;
25
+ --vhyx-primitive-indigo-900: #312e81;
26
+
27
+ /* Green — success */
28
+ --vhyx-primitive-green-50: #f0fdf4;
29
+ --vhyx-primitive-green-500: #22c55e;
30
+ --vhyx-primitive-green-600: #16a34a;
31
+ --vhyx-primitive-green-700: #15803d;
32
+
33
+ /* Red — danger */
34
+ --vhyx-primitive-red-50: #fef2f2;
35
+ --vhyx-primitive-red-500: #ef4444;
36
+ --vhyx-primitive-red-600: #dc2626;
37
+ --vhyx-primitive-red-700: #b91c1c;
38
+
39
+ /* Amber — warning */
40
+ --vhyx-primitive-amber-50: #fffbeb;
41
+ --vhyx-primitive-amber-500: #f59e0b;
42
+ --vhyx-primitive-amber-600: #d97706;
43
+
44
+ /* Blue — info */
45
+ --vhyx-primitive-blue-50: #eff6ff;
46
+ --vhyx-primitive-blue-500: #3b82f6;
47
+ --vhyx-primitive-blue-600: #2563eb;
48
+ }
@@ -0,0 +1,2 @@
1
+ @import './colors.css';
2
+ @import './typography.css';
@@ -0,0 +1,17 @@
1
+ :root {
2
+ /* Font family stacks */
3
+ --vhyx-primitive-font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
4
+ --vhyx-primitive-font-mono: ui-monospace, 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
5
+ --vhyx-primitive-font-serif: ui-serif, Georgia, serif;
6
+
7
+ /* Raw size scale */
8
+ --vhyx-primitive-text-2xs: 0.625rem;
9
+ --vhyx-primitive-text-xs: 0.75rem;
10
+ --vhyx-primitive-text-sm: 0.875rem;
11
+ --vhyx-primitive-text-md: 1rem;
12
+ --vhyx-primitive-text-lg: 1.125rem;
13
+ --vhyx-primitive-text-xl: 1.25rem;
14
+ --vhyx-primitive-text-2xl: 1.5rem;
15
+ --vhyx-primitive-text-3xl: 1.875rem;
16
+ --vhyx-primitive-text-4xl: 2.25rem;
17
+ }
package/src/reset.css ADDED
@@ -0,0 +1,43 @@
1
+ *, *::before, *::after {
2
+ box-sizing: border-box;
3
+ margin: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ html {
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ text-size-adjust: 100%;
11
+ }
12
+
13
+ body {
14
+ font-family: var(--vhyx-font-sans);
15
+ font-size: var(--vhyx-text-md);
16
+ line-height: var(--vhyx-leading-normal);
17
+ color: var(--vhyx-color-text);
18
+ background-color: var(--vhyx-color-bg);
19
+ }
20
+
21
+ img, video, svg {
22
+ display: block;
23
+ max-width: 100%;
24
+ }
25
+
26
+ button, input, select, textarea {
27
+ font: inherit;
28
+ }
29
+
30
+ p, h1, h2, h3, h4, h5, h6 {
31
+ overflow-wrap: break-word;
32
+ }
33
+
34
+ /* Remove list styles on ul/ol with role=list */
35
+ ul[role="list"], ol[role="list"] {
36
+ list-style: none;
37
+ }
38
+
39
+ /* Focus visible — never outline none without replacement */
40
+ :focus-visible {
41
+ outline: none;
42
+ box-shadow: var(--vhyx-shadow-focus);
43
+ }
@@ -0,0 +1,14 @@
1
+ :root {
2
+ --vhyx-radius-none: 0;
3
+ --vhyx-radius-xs: 2px;
4
+ --vhyx-radius-sm: 4px;
5
+ --vhyx-radius-md: 6px;
6
+ --vhyx-radius-lg: 8px;
7
+ --vhyx-radius-xl: 12px;
8
+ --vhyx-radius-2xl: 16px;
9
+ --vhyx-radius-3xl: 24px;
10
+ --vhyx-radius-full: 9999px;
11
+
12
+ --vhyx-border-width: 1px;
13
+ --vhyx-border-width-2: 2px;
14
+ }
@@ -0,0 +1,59 @@
1
+ :root {
2
+ /* Background */
3
+ --vhyx-color-bg: var(--vhyx-primitive-slate-50);
4
+ --vhyx-color-bg-subtle: var(--vhyx-primitive-slate-100);
5
+ --vhyx-color-bg-muted: var(--vhyx-primitive-slate-200);
6
+ --vhyx-color-bg-inverse: var(--vhyx-primitive-slate-900);
7
+
8
+ /* Surface — components sit on surface, not bg */
9
+ --vhyx-color-surface: #ffffff;
10
+ --vhyx-color-surface-raised: #ffffff;
11
+ --vhyx-color-surface-overlay: #ffffff;
12
+
13
+ /* Overlay backdrop */
14
+ --vhyx-color-overlay: rgba(0, 0, 0, 0.5);
15
+
16
+ /* Border */
17
+ --vhyx-color-border: var(--vhyx-primitive-slate-200);
18
+ --vhyx-color-border-strong: var(--vhyx-primitive-slate-300);
19
+ --vhyx-color-border-focus: var(--vhyx-primitive-indigo-500);
20
+
21
+ /* Text */
22
+ --vhyx-color-text: var(--vhyx-primitive-slate-900);
23
+ --vhyx-color-text-subtle: var(--vhyx-primitive-slate-500);
24
+ --vhyx-color-text-muted: var(--vhyx-primitive-slate-400);
25
+ --vhyx-color-text-disabled: var(--vhyx-primitive-slate-300);
26
+ --vhyx-color-text-inverse: var(--vhyx-primitive-slate-50);
27
+ --vhyx-color-text-on-accent: #ffffff;
28
+
29
+ /* Accent */
30
+ --vhyx-color-accent: var(--vhyx-primitive-indigo-500);
31
+ --vhyx-color-accent-hover: var(--vhyx-primitive-indigo-600);
32
+ --vhyx-color-accent-active: var(--vhyx-primitive-indigo-700);
33
+ --vhyx-color-accent-subtle: var(--vhyx-primitive-indigo-50);
34
+ --vhyx-color-accent-muted: var(--vhyx-primitive-indigo-100);
35
+
36
+ /* Success */
37
+ --vhyx-color-success: var(--vhyx-primitive-green-500);
38
+ --vhyx-color-success-hover: var(--vhyx-primitive-green-600);
39
+ --vhyx-color-success-subtle: var(--vhyx-primitive-green-50);
40
+ --vhyx-color-success-text: var(--vhyx-primitive-green-700);
41
+
42
+ /* Danger */
43
+ --vhyx-color-danger: var(--vhyx-primitive-red-500);
44
+ --vhyx-color-danger-hover: var(--vhyx-primitive-red-600);
45
+ --vhyx-color-danger-subtle: var(--vhyx-primitive-red-50);
46
+ --vhyx-color-danger-text: var(--vhyx-primitive-red-700);
47
+
48
+ /* Warning */
49
+ --vhyx-color-warning: var(--vhyx-primitive-amber-500);
50
+ --vhyx-color-warning-hover: var(--vhyx-primitive-amber-600);
51
+ --vhyx-color-warning-subtle: var(--vhyx-primitive-amber-50);
52
+ --vhyx-color-warning-text: var(--vhyx-primitive-amber-600);
53
+
54
+ /* Info */
55
+ --vhyx-color-info: var(--vhyx-primitive-blue-500);
56
+ --vhyx-color-info-hover: var(--vhyx-primitive-blue-600);
57
+ --vhyx-color-info-subtle: var(--vhyx-primitive-blue-50);
58
+ --vhyx-color-info-text: var(--vhyx-primitive-blue-600);
59
+ }
@@ -0,0 +1,7 @@
1
+ @import './colors.css';
2
+ @import './typography.css';
3
+ @import './spacing.css';
4
+ @import './borders.css';
5
+ @import './shadows.css';
6
+ @import './motion.css';
7
+ @import './zindex.css';
@@ -0,0 +1,123 @@
1
+ :root {
2
+ /* Duration */
3
+ --vhyx-duration-instant: 50ms;
4
+ --vhyx-duration-fast: 100ms;
5
+ --vhyx-duration-normal: 200ms;
6
+ --vhyx-duration-slow: 350ms;
7
+ --vhyx-duration-glacial: 500ms;
8
+
9
+ /* Easing */
10
+ --vhyx-easing-linear: linear;
11
+ --vhyx-easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
12
+ --vhyx-easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
13
+ --vhyx-easing-accelerate: cubic-bezier(0.4, 0, 1, 1);
14
+ --vhyx-easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
15
+ --vhyx-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
16
+ --vhyx-easing-smooth: cubic-bezier(0.25, 0.46, 0.45, 0.94);
17
+ }
18
+
19
+ /* Reduced motion — collapses all durations */
20
+ @media (prefers-reduced-motion: reduce) {
21
+ :root {
22
+ --vhyx-duration-instant: 0ms;
23
+ --vhyx-duration-fast: 0ms;
24
+ --vhyx-duration-normal: 0ms;
25
+ --vhyx-duration-slow: 0ms;
26
+ --vhyx-duration-glacial: 0ms;
27
+ }
28
+ }
29
+
30
+ /* Appear / Disappear */
31
+ @keyframes vhyx-fade-in {
32
+ from { opacity: 0; }
33
+ to { opacity: 1; }
34
+ }
35
+ @keyframes vhyx-fade-out {
36
+ from { opacity: 1; }
37
+ to { opacity: 0; }
38
+ }
39
+
40
+ @keyframes vhyx-scale-in {
41
+ from { opacity: 0; transform: scale(0.95); }
42
+ to { opacity: 1; transform: scale(1); }
43
+ }
44
+ @keyframes vhyx-scale-out {
45
+ from { opacity: 1; transform: scale(1); }
46
+ to { opacity: 0; transform: scale(0.95); }
47
+ }
48
+
49
+ @keyframes vhyx-slide-up-in {
50
+ from { opacity: 0; transform: translateY(8px) scale(0.98); }
51
+ to { opacity: 1; transform: translateY(0) scale(1); }
52
+ }
53
+ @keyframes vhyx-slide-up-out {
54
+ from { opacity: 1; transform: translateY(0) scale(1); }
55
+ to { opacity: 0; transform: translateY(8px) scale(0.98); }
56
+ }
57
+
58
+ @keyframes vhyx-slide-right-in {
59
+ from { transform: translateX(100%); }
60
+ to { transform: translateX(0); }
61
+ }
62
+ @keyframes vhyx-slide-right-out {
63
+ from { transform: translateX(0); }
64
+ to { transform: translateX(100%); }
65
+ }
66
+
67
+ @keyframes vhyx-slide-left-in {
68
+ from { transform: translateX(-100%); }
69
+ to { transform: translateX(0); }
70
+ }
71
+ @keyframes vhyx-slide-left-out {
72
+ from { transform: translateX(0); }
73
+ to { transform: translateX(-100%); }
74
+ }
75
+
76
+ @keyframes vhyx-slide-down-in {
77
+ from { transform: translateY(-100%); }
78
+ to { transform: translateY(0); }
79
+ }
80
+ @keyframes vhyx-slide-down-out {
81
+ from { transform: translateY(0); }
82
+ to { transform: translateY(-100%); }
83
+ }
84
+
85
+ @keyframes vhyx-overlay-in {
86
+ from { opacity: 0; }
87
+ to { opacity: 1; }
88
+ }
89
+ @keyframes vhyx-overlay-out {
90
+ from { opacity: 1; }
91
+ to { opacity: 0; }
92
+ }
93
+
94
+ /* Feedback */
95
+ @keyframes vhyx-shake {
96
+ 0%, 100% { transform: translateX(0); }
97
+ 20% { transform: translateX(-6px); }
98
+ 40% { transform: translateX(6px); }
99
+ 60% { transform: translateX(-4px); }
100
+ 80% { transform: translateX(4px); }
101
+ }
102
+
103
+ @keyframes vhyx-success-pulse {
104
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); }
105
+ 50% { box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.3); }
106
+ }
107
+
108
+ /* Ambient */
109
+ @keyframes vhyx-spin {
110
+ from { transform: rotate(0deg); }
111
+ to { transform: rotate(360deg); }
112
+ }
113
+
114
+ @keyframes vhyx-shimmer {
115
+ from { background-position: -200% center; }
116
+ to { background-position: 200% center; }
117
+ }
118
+
119
+ @keyframes vhyx-indeterminate {
120
+ 0% { transform: translateX(-100%) scaleX(0.5); }
121
+ 50% { transform: translateX(0%) scaleX(0.3); }
122
+ 100% { transform: translateX(100%) scaleX(0.5); }
123
+ }
@@ -0,0 +1,18 @@
1
+ :root {
2
+ --vhyx-shadow-none: none;
3
+ --vhyx-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
4
+ --vhyx-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1),
5
+ 0 1px 2px rgba(0, 0, 0, 0.06);
6
+ --vhyx-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07),
7
+ 0 2px 4px rgba(0, 0, 0, 0.05);
8
+ --vhyx-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1),
9
+ 0 4px 6px rgba(0, 0, 0, 0.05);
10
+ --vhyx-shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1),
11
+ 0 10px 10px rgba(0, 0, 0, 0.04);
12
+ --vhyx-shadow-2xl: 0 25px 50px rgba(0, 0, 0, 0.25);
13
+ --vhyx-shadow-inner: inset 0 2px 4px rgba(0, 0, 0, 0.06);
14
+
15
+ /* Focus ring — consistent across all interactive elements */
16
+ --vhyx-shadow-focus: 0 0 0 3px rgba(99, 102, 241, 0.4);
17
+ --vhyx-shadow-focus-danger: 0 0 0 3px rgba(239, 68, 68, 0.4);
18
+ }
@@ -0,0 +1,45 @@
1
+ :root {
2
+ --vhyx-space-px: 1px;
3
+ --vhyx-space-0: 0;
4
+ --vhyx-space-0-5: 0.125rem;
5
+ --vhyx-space-1: 0.25rem;
6
+ --vhyx-space-1-5: 0.375rem;
7
+ --vhyx-space-2: 0.5rem;
8
+ --vhyx-space-2-5: 0.625rem;
9
+ --vhyx-space-3: 0.75rem;
10
+ --vhyx-space-3-5: 0.875rem;
11
+ --vhyx-space-4: 1rem;
12
+ --vhyx-space-5: 1.25rem;
13
+ --vhyx-space-6: 1.5rem;
14
+ --vhyx-space-7: 1.75rem;
15
+ --vhyx-space-8: 2rem;
16
+ --vhyx-space-9: 2.25rem;
17
+ --vhyx-space-10: 2.5rem;
18
+ --vhyx-space-12: 3rem;
19
+ --vhyx-space-14: 3.5rem;
20
+ --vhyx-space-16: 4rem;
21
+ --vhyx-space-20: 5rem;
22
+ --vhyx-space-24: 6rem;
23
+ --vhyx-space-32: 8rem;
24
+
25
+ /* Component heights — consistent across all interactive elements */
26
+ --vhyx-size-xs: 1.5rem;
27
+ --vhyx-size-sm: 2rem;
28
+ --vhyx-size-md: 2.5rem;
29
+ --vhyx-size-lg: 3rem;
30
+ --vhyx-size-xl: 3.5rem;
31
+
32
+ /* Drawer panel dimensions */
33
+ --vhyx-drawer-sm: 20rem;
34
+ --vhyx-drawer-md: 25rem;
35
+ --vhyx-drawer-lg: 32rem;
36
+ --vhyx-drawer-full: 100%;
37
+
38
+ /* Dialog panel dimensions */
39
+ --vhyx-dialog-sm: 20rem;
40
+ --vhyx-dialog-md: 32rem;
41
+ --vhyx-dialog-lg: 48rem;
42
+
43
+ /* Popover layout constraints */
44
+ --vhyx-popover-max-width: 20rem;
45
+ }
@@ -0,0 +1,42 @@
1
+ :root {
2
+ /* Font families */
3
+ --vhyx-font-sans: system-ui, -apple-system, BlinkMacSystemFont,
4
+ 'Segoe UI', sans-serif;
5
+ --vhyx-font-mono: ui-monospace, 'Cascadia Code', 'Fira Code',
6
+ 'Consolas', monospace;
7
+ --vhyx-font-serif: ui-serif, Georgia, serif;
8
+
9
+ /* Size scale */
10
+ --vhyx-text-2xs: 0.625rem;
11
+ --vhyx-text-xs: 0.75rem;
12
+ --vhyx-text-sm: 0.875rem;
13
+ --vhyx-text-md: 1rem;
14
+ --vhyx-text-lg: 1.125rem;
15
+ --vhyx-text-xl: 1.25rem;
16
+ --vhyx-text-2xl: 1.5rem;
17
+ --vhyx-text-3xl: 1.875rem;
18
+ --vhyx-text-4xl: 2.25rem;
19
+
20
+ /* Line height */
21
+ --vhyx-leading-none: 1;
22
+ --vhyx-leading-tight: 1.25;
23
+ --vhyx-leading-snug: 1.375;
24
+ --vhyx-leading-normal: 1.5;
25
+ --vhyx-leading-relaxed: 1.625;
26
+ --vhyx-leading-loose: 2;
27
+
28
+ /* Font weight */
29
+ --vhyx-weight-light: 300;
30
+ --vhyx-weight-normal: 400;
31
+ --vhyx-weight-medium: 500;
32
+ --vhyx-weight-semibold: 600;
33
+ --vhyx-weight-bold: 700;
34
+ --vhyx-weight-extrabold: 800;
35
+
36
+ /* Letter spacing */
37
+ --vhyx-tracking-tight: -0.025em;
38
+ --vhyx-tracking-normal: 0em;
39
+ --vhyx-tracking-wide: 0.025em;
40
+ --vhyx-tracking-wider: 0.05em;
41
+ --vhyx-tracking-widest: 0.1em;
42
+ }
@@ -0,0 +1,14 @@
1
+ :root {
2
+ --vhyx-z-hide: -1;
3
+ --vhyx-z-base: 0;
4
+ --vhyx-z-raised: 10;
5
+ --vhyx-z-dropdown: 100;
6
+ --vhyx-z-sticky: 200;
7
+ --vhyx-z-banner: 250;
8
+ --vhyx-z-overlay: 300;
9
+ --vhyx-z-modal: 400;
10
+ --vhyx-z-popover: 450;
11
+ --vhyx-z-toast: 500;
12
+ --vhyx-z-tooltip: 550;
13
+ --vhyx-z-top: 999;
14
+ }
@@ -0,0 +1,29 @@
1
+ [data-theme="dark"] {
2
+ --vhyx-color-bg: var(--vhyx-primitive-slate-950);
3
+ --vhyx-color-bg-subtle: var(--vhyx-primitive-slate-900);
4
+ --vhyx-color-bg-muted: var(--vhyx-primitive-slate-800);
5
+ --vhyx-color-bg-inverse: var(--vhyx-primitive-slate-50);
6
+
7
+ --vhyx-color-surface: var(--vhyx-primitive-slate-900);
8
+ --vhyx-color-surface-raised: var(--vhyx-primitive-slate-800);
9
+ --vhyx-color-surface-overlay: var(--vhyx-primitive-slate-800);
10
+ --vhyx-color-overlay: rgba(0, 0, 0, 0.65);
11
+
12
+ --vhyx-color-border: var(--vhyx-primitive-slate-800);
13
+ --vhyx-color-border-strong: var(--vhyx-primitive-slate-700);
14
+ --vhyx-color-border-focus: var(--vhyx-primitive-indigo-400);
15
+
16
+ --vhyx-color-text: var(--vhyx-primitive-slate-50);
17
+ --vhyx-color-text-subtle: var(--vhyx-primitive-slate-400);
18
+ --vhyx-color-text-muted: var(--vhyx-primitive-slate-500);
19
+ --vhyx-color-text-disabled: var(--vhyx-primitive-slate-600);
20
+ --vhyx-color-text-inverse: var(--vhyx-primitive-slate-900);
21
+
22
+ --vhyx-color-accent-subtle: #1e1b4b;
23
+ --vhyx-color-accent-muted: #312e81;
24
+
25
+ --vhyx-color-success-subtle: #052e16;
26
+ --vhyx-color-danger-subtle: #450a0a;
27
+ --vhyx-color-warning-subtle: #431407;
28
+ --vhyx-color-info-subtle: #0c1a45;
29
+ }
@@ -0,0 +1 @@
1
+ @import './dark.css';