@avento-space/ts-ui 1.2.3 → 1.2.4

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.
@@ -2,42 +2,166 @@ import { effect } from './chunk-Q5RCPPCF.js';
2
2
 
3
3
  // src/core/tokens.ts
4
4
  var sheet = new CSSStyleSheet();
5
+ var LIGHT = {
6
+ "u-color-primary": "#3b82f6",
7
+ "u-color-primary-hover": "#2563eb",
8
+ "u-color-primary-text": "#2563eb",
9
+ "u-color-danger": "#ef4444",
10
+ "u-color-danger-hover": "#dc2626",
11
+ "u-color-success": "#16a34a",
12
+ "u-color-warning": "#d97706",
13
+ "u-color-info": "#0284c7",
14
+ "u-color-text": "#111827",
15
+ "u-color-text-secondary": "#374151",
16
+ "u-color-text-muted": "#4b5563",
17
+ "u-color-text-disabled": "#6b7280",
18
+ "u-color-border": "#9ca3af",
19
+ "u-color-border-light": "#d1d5db",
20
+ "u-color-border-lighter": "#e5e7eb",
21
+ "u-color-bg": "#fff",
22
+ "u-color-bg-muted": "#f9fafb",
23
+ "u-color-bg-hover": "#f3f4f6",
24
+ "u-color-bg-hover-strong": "#e5e7eb",
25
+ "u-color-bg-selected": "#eff6ff",
26
+ "u-color-focus": "#3b82f6",
27
+ "u-color-overlay": "rgba(0,0,0,0.5)",
28
+ "u-color-white": "#fff",
29
+ "u-color-tooltip-bg": "#1f2937",
30
+ "u-color-success-bg": "#dcfce7",
31
+ "u-color-success-text": "#15803d",
32
+ "u-color-warning-bg": "#fef3c7",
33
+ "u-color-warning-text": "#b45309",
34
+ "u-color-danger-bg": "#fef2f2",
35
+ "u-color-danger-text": "#dc2626",
36
+ "u-color-info-bg": "#e0f2fe",
37
+ "u-color-info-text": "#0369a1",
38
+ // Shadows
39
+ "u-shadow-sm": "0 1px 3px rgba(0,0,0,.05)",
40
+ "u-shadow-md": "0 4px 16px rgba(0,0,0,.08)",
41
+ "u-shadow-lg": "0 8px 24px rgba(0,0,0,.12)",
42
+ "u-shadow-xl": "0 20px 60px rgba(0,0,0,.15)",
43
+ "u-shadow-focus": "0 0 0 2px rgba(59,130,246,.25)",
44
+ "u-shadow-tooltip": "0 4px 12px rgba(0,0,0,.25)",
45
+ "u-shadow-drawer": "0 0 40px rgba(0,0,0,.1)",
46
+ "u-shadow-thumb": "0 1px 2px rgba(0,0,0,.15)",
47
+ "u-shadow-combobox": "0 4px 20px rgba(0,0,0,.1)",
48
+ "u-shadow-calendar": "0 4px 20px rgba(0,0,0,.08)",
49
+ "u-shadow-command-palette": "0 20px 60px rgba(0,0,0,.2)"
50
+ };
51
+ var DARK = {
52
+ "u-color-primary": "#60a5fa",
53
+ "u-color-primary-hover": "#93c5fd",
54
+ "u-color-primary-text": "#93c5fd",
55
+ "u-color-danger": "#f87171",
56
+ "u-color-danger-hover": "#fca5a5",
57
+ "u-color-success": "#22c55e",
58
+ "u-color-warning": "#eab308",
59
+ "u-color-info": "#0ea5e9",
60
+ "u-color-text": "#f1f5f9",
61
+ "u-color-text-secondary": "#cbd5e1",
62
+ "u-color-text-muted": "#94a3b8",
63
+ "u-color-text-disabled": "#64748b",
64
+ "u-color-border": "#475569",
65
+ "u-color-border-light": "#334155",
66
+ "u-color-border-lighter": "#1e293b",
67
+ "u-color-bg": "#0f172a",
68
+ "u-color-bg-muted": "#1e293b",
69
+ "u-color-bg-hover": "#334155",
70
+ "u-color-bg-hover-strong": "#475569",
71
+ "u-color-bg-selected": "#1e3a5f",
72
+ "u-color-focus": "#60a5fa",
73
+ "u-color-overlay": "rgba(0,0,0,0.7)",
74
+ "u-color-white": "#fff",
75
+ "u-color-tooltip-bg": "#334155",
76
+ "u-color-success-bg": "#052e16",
77
+ "u-color-success-text": "#4ade80",
78
+ "u-color-warning-bg": "#422006",
79
+ "u-color-warning-text": "#fbbf24",
80
+ "u-color-danger-bg": "#450a0a",
81
+ "u-color-danger-text": "#f87171",
82
+ "u-color-info-bg": "#0c4a6e",
83
+ "u-color-info-text": "#38bdf8",
84
+ // Shadows (more visible on dark backgrounds)
85
+ "u-shadow-sm": "0 1px 3px rgba(0,0,0,.25)",
86
+ "u-shadow-md": "0 4px 16px rgba(0,0,0,.35)",
87
+ "u-shadow-lg": "0 8px 24px rgba(0,0,0,.45)",
88
+ "u-shadow-xl": "0 20px 60px rgba(0,0,0,.5)",
89
+ "u-shadow-focus": "0 0 0 2px rgba(96,165,250,.4)",
90
+ "u-shadow-tooltip": "0 4px 12px rgba(0,0,0,.5)",
91
+ "u-shadow-drawer": "0 0 40px rgba(0,0,0,.4)",
92
+ "u-shadow-thumb": "0 1px 2px rgba(0,0,0,.3)",
93
+ "u-shadow-combobox": "0 4px 20px rgba(0,0,0,.4)",
94
+ "u-shadow-calendar": "0 4px 20px rgba(0,0,0,.35)",
95
+ "u-shadow-command-palette": "0 20px 60px rgba(0,0,0,.55)"
96
+ };
97
+ function tokensToCSS(vals) {
98
+ return Object.entries(vals).map(([k, v]) => ` --${k}: ${v};`).join("\n");
99
+ }
100
+ function generateColorTokenCSS() {
101
+ return `:root {
102
+ ${tokensToCSS(LIGHT)}
103
+ }
104
+ @media (prefers-color-scheme: dark) {
105
+ :root:not([data-theme="light"]) {
106
+ ${tokensToCSS(DARK)}
107
+ }
108
+ }
109
+ :root[data-theme="dark"] {
110
+ ${tokensToCSS(DARK)}
111
+ }
112
+ `;
113
+ }
5
114
  sheet.replaceSync(`
6
115
  :host {
7
- --u-color-primary: #3b82f6;
8
- --u-color-primary-hover: #2563eb;
9
- --u-color-primary-text: #2563eb;
10
- --u-color-danger: #ef4444;
11
- --u-color-danger-hover: #dc2626;
12
- --u-color-success: #16a34a;
13
- --u-color-warning: #d97706;
14
- --u-color-info: #0284c7;
15
- --u-color-text: #111827;
16
- --u-color-text-secondary: #374151;
17
- --u-color-text-muted: #4b5563;
18
- --u-color-text-disabled: #6b7280;
19
- --u-color-border: #9ca3af;
20
- --u-color-border-light: #d1d5db;
21
- --u-color-border-lighter: #e5e7eb;
22
- --u-color-bg: #fff;
23
- --u-color-bg-muted: #f9fafb;
24
- --u-color-bg-hover: #f3f4f6;
25
- --u-color-bg-selected: #eff6ff;
26
- --u-color-focus: #3b82f6;
27
- --u-color-overlay: rgba(0,0,0,0.5);
116
+ --u-radius-xs: 2px;
28
117
  --u-radius-sm: 4px;
29
118
  --u-radius-md: 6px;
30
119
  --u-radius-lg: 8px;
31
120
  --u-radius-xl: 10px;
32
121
  --u-radius-2xl: 12px;
122
+ --u-radius-full: 999px;
123
+ --u-radius-round: 50%;
124
+ --u-font-tiny: 0.8rem;
125
+ --u-font-2xs: 0.6875rem;
33
126
  --u-font-xs: 0.75rem;
34
127
  --u-font-sm: 0.875rem;
35
128
  --u-font-md: 1rem;
36
129
  --u-font-lg: 1.125rem;
37
- --u-shadow-sm: 0 1px 3px rgba(0,0,0,.05);
38
- --u-shadow-md: 0 4px 16px rgba(0,0,0,.08);
39
- --u-shadow-lg: 0 8px 24px rgba(0,0,0,.12);
40
- --u-shadow-xl: 0 20px 60px rgba(0,0,0,.15);
130
+ --u-font-xl: 1.25rem;
131
+ --u-font-2xl: 1.5rem;
132
+ --u-font-3xl: 1.875rem;
133
+ --u-font-weight-normal: 400;
134
+ --u-font-weight-medium: 500;
135
+ --u-font-weight-semibold: 600;
136
+ --u-font-weight-bold: 700;
137
+ --u-line-height-none: 1;
138
+ --u-line-height-tight: 1.3;
139
+ --u-line-height-sm: 1.4;
140
+ --u-line-height-md: 1.5;
141
+ --u-line-height-lg: 1.6;
142
+ --u-letter-spacing-wide: 0.05em;
143
+ --u-spacing-05: 2px;
144
+ --u-spacing-1: 4px;
145
+ --u-spacing-2: 8px;
146
+ --u-spacing-3: 12px;
147
+ --u-spacing-4: 16px;
148
+ --u-spacing-5: 20px;
149
+ --u-spacing-6: 24px;
150
+ --u-spacing-8: 32px;
151
+ --u-opacity-disabled: 0.5;
152
+ --u-opacity-muted: 0.4;
153
+ --u-opacity-fade: 0.3;
154
+ --u-z-backdrop: 100;
155
+ --u-z-modal: 200;
156
+ --u-z-command-palette: 300;
157
+ --u-z-dropdown: 400;
158
+ --u-z-drag: 500;
159
+ --u-z-toast: 600;
160
+ --u-blur: 4px;
161
+ --u-transition-fast: 100ms;
162
+ --u-transition-base: 150ms;
163
+ --u-transition-slow: 200ms;
164
+ --u-transition-slower: 250ms;
41
165
  }
42
166
 
43
167
  @media (prefers-reduced-motion: reduce) {
@@ -49,6 +173,43 @@ sheet.replaceSync(`
49
173
  }
50
174
  `);
51
175
  var globalStyles = sheet;
176
+ function setTheme(theme) {
177
+ const root = document.documentElement;
178
+ if (theme === "system") {
179
+ root.removeAttribute("data-theme");
180
+ } else {
181
+ root.setAttribute("data-theme", theme);
182
+ }
183
+ try {
184
+ localStorage.setItem("u-theme", theme);
185
+ } catch {
186
+ }
187
+ }
188
+ function getTheme() {
189
+ const root = document.documentElement;
190
+ if (root.hasAttribute("data-theme")) {
191
+ return root.getAttribute("data-theme");
192
+ }
193
+ return "system";
194
+ }
195
+ function restoreTheme() {
196
+ let theme = null;
197
+ try {
198
+ theme = localStorage.getItem("u-theme");
199
+ } catch {
200
+ }
201
+ if (theme) setTheme(theme);
202
+ }
203
+ var STYLE_ID = "u-color-tokens";
204
+ function injectColorTokens() {
205
+ if (typeof document === "undefined") return;
206
+ if (document.getElementById(STYLE_ID)) return;
207
+ const style = document.createElement("style");
208
+ style.id = STYLE_ID;
209
+ style.textContent = generateColorTokenCSS();
210
+ document.head.appendChild(style);
211
+ }
212
+ injectColorTokens();
52
213
 
53
214
  // src/core/element.ts
54
215
  var nextId = 0;
@@ -93,8 +254,8 @@ var buttonStyles = `
93
254
  }
94
255
  button {
95
256
  font-family: inherit;
96
- font-size: 14px;
97
- line-height: 1;
257
+ font-size: var(--u-font-sm);
258
+ line-height: var(--u-line-height-none);
98
259
  border: 1px solid transparent;
99
260
  border-radius: var(--u-radius-md);
100
261
  cursor: pointer;
@@ -102,19 +263,19 @@ button {
102
263
  align-items: center;
103
264
  justify-content: center;
104
265
  gap: 6px;
105
- transition: background-color .15s, opacity .15s, box-shadow .15s;
266
+ transition: background-color var(--u-transition-base), opacity var(--u-transition-base), box-shadow var(--u-transition-base);
106
267
  outline: none;
107
268
  }
108
269
  button:focus-visible {
109
270
  box-shadow: 0 0 0 2px var(--u-color-focus);
110
271
  }
111
272
  button:disabled {
112
- opacity: .5;
273
+ opacity: var(--u-opacity-disabled);
113
274
  cursor: not-allowed;
114
275
  }
115
276
  .btn-primary {
116
277
  background: var(--u-color-primary);
117
- color: #fff;
278
+ color: var(--u-color-white);
118
279
  border-color: var(--u-color-primary-hover);
119
280
  }
120
281
  .btn-primary:hover:not(:disabled) {
@@ -126,7 +287,7 @@ button:disabled {
126
287
  border-color: var(--u-color-border);
127
288
  }
128
289
  .btn-secondary:hover:not(:disabled) {
129
- background: #e5e7eb;
290
+ background: var(--u-color-bg-hover-strong);
130
291
  }
131
292
  .btn-ghost {
132
293
  background: transparent;
@@ -138,33 +299,33 @@ button:disabled {
138
299
  }
139
300
  .btn-danger {
140
301
  background: var(--u-color-danger);
141
- color: #fff;
302
+ color: var(--u-color-white);
142
303
  border-color: var(--u-color-danger);
143
304
  }
144
305
  .btn-danger:hover:not(:disabled) {
145
306
  background: var(--u-color-danger-hover);
146
307
  }
147
- .btn-sm { height: 32px; padding: 0 12px; font-size: 13px; }
148
- .btn-md { height: 40px; padding: 0 16px; font-size: 14px; }
149
- .btn-lg { height: 48px; padding: 0 24px; font-size: 16px; }
308
+ .btn-sm { height: var(--u-spacing-8); padding: 0 var(--u-spacing-3); font-size: 13px; }
309
+ .btn-md { height: 40px; padding: 0 var(--u-spacing-4); font-size: var(--u-font-sm); }
310
+ .btn-lg { height: 48px; padding: 0 var(--u-spacing-6); font-size: var(--u-font-md); }
150
311
  .btn-link {
151
312
  background: transparent;
152
- color: #2563eb;
313
+ color: var(--u-color-primary-hover);
153
314
  border-color: transparent;
154
315
  padding: 0;
155
316
  height: auto;
156
317
  font-size: inherit;
157
318
  font-weight: inherit;
158
319
  text-decoration: none;
159
- border-radius: 2px;
320
+ border-radius: var(--u-radius-xs);
160
321
  }
161
322
  .btn-link:hover:not(:disabled) {
162
323
  background: transparent;
163
324
  text-decoration: underline;
164
- color: #2563eb;
325
+ color: var(--u-color-primary-hover);
165
326
  }
166
327
  .btn-link:disabled {
167
- opacity: .5;
328
+ opacity: var(--u-opacity-disabled);
168
329
  cursor: not-allowed;
169
330
  }
170
331
  `;
@@ -181,9 +342,9 @@ var inputStyles = `
181
342
  }
182
343
  input {
183
344
  font-family: inherit;
184
- font-size: 14px;
185
- line-height: 1.5;
186
- padding: 8px 12px;
345
+ font-size: var(--u-font-sm);
346
+ line-height: var(--u-line-height-md);
347
+ padding: var(--u-spacing-2) var(--u-spacing-3);
187
348
  border: 1px solid var(--u-color-border-light);
188
349
  border-radius: var(--u-radius-md);
189
350
  outline: none;
@@ -191,12 +352,12 @@ input {
191
352
  box-sizing: border-box;
192
353
  background: var(--u-color-bg);
193
354
  color: var(--u-color-text);
194
- transition: border-color .15s;
355
+ transition: border-color var(--u-transition-base);
195
356
  }
196
357
  input::placeholder { color: var(--u-color-text-muted); }
197
358
  input:focus {
198
- border-color: #2563eb;
199
- box-shadow: 0 0 0 2px rgba(59,130,246,.25);
359
+ border-color: var(--u-color-primary-hover);
360
+ box-shadow: var(--u-shadow-focus);
200
361
  }
201
362
  input:disabled {
202
363
  background: var(--u-color-bg-muted);
@@ -223,7 +384,7 @@ ul, ol {
223
384
  list-style: none;
224
385
  }
225
386
  .list-empty {
226
- padding: 24px;
387
+ padding: var(--u-spacing-6);
227
388
  text-align: center;
228
389
  color: var(--u-color-text-muted);
229
390
  }
@@ -252,24 +413,24 @@ var textStyles = `
252
413
  [part="text"] {
253
414
  margin: 0;
254
415
  font-family: inherit;
255
- line-height: 1.5;
256
- }
257
- .text-xs { font-size: 0.75rem; }
258
- .text-sm { font-size: 0.875rem; }
259
- .text-md { font-size: 1rem; }
260
- .text-lg { font-size: 1.125rem; }
261
- .text-xl { font-size: 1.25rem; }
262
- .text-2xl { font-size: 1.5rem; }
263
- .text-3xl { font-size: 1.875rem; }
264
- .text-normal { font-weight: 400; }
265
- .text-medium { font-weight: 500; }
266
- .text-semibold { font-weight: 600; }
267
- .text-bold { font-weight: 700; }
416
+ line-height: var(--u-line-height-md);
417
+ }
418
+ .text-xs { font-size: var(--u-font-xs); }
419
+ .text-sm { font-size: var(--u-font-sm); }
420
+ .text-md { font-size: var(--u-font-md); }
421
+ .text-lg { font-size: var(--u-font-lg); }
422
+ .text-xl { font-size: var(--u-font-xl); }
423
+ .text-2xl { font-size: var(--u-font-2xl); }
424
+ .text-3xl { font-size: var(--u-font-3xl); }
425
+ .text-normal { font-weight: var(--u-font-weight-normal); }
426
+ .text-medium { font-weight: var(--u-font-weight-medium); }
427
+ .text-semibold { font-weight: var(--u-font-weight-semibold); }
428
+ .text-bold { font-weight: var(--u-font-weight-bold); }
268
429
  .text-default { color: inherit; }
269
430
  .text-muted { color: var(--u-color-text-muted); }
270
- .text-accent { color: #2563eb; }
431
+ .text-accent { color: var(--u-color-primary-hover); }
271
432
  .text-danger { color: var(--u-color-danger); }
272
- .text-success { color: #16a34a; }
433
+ .text-success { color: var(--u-color-success); }
273
434
  .text-left { text-align: left; }
274
435
  .text-center { text-align: center; }
275
436
  .text-right { text-align: right; }
@@ -312,7 +473,7 @@ var overlayStyles = `
312
473
  :host {
313
474
  position: fixed;
314
475
  inset: 0;
315
- z-index: 9999;
476
+ z-index: var(--u-z-backdrop);
316
477
  }
317
478
  [part="overlay"] {
318
479
  position: fixed;
@@ -323,7 +484,7 @@ var overlayStyles = `
323
484
  justify-content: center;
324
485
  }
325
486
  .overlay-blur {
326
- backdrop-filter: blur(4px);
487
+ backdrop-filter: blur(var(--u-blur));
327
488
  }
328
489
  [hidden] {
329
490
  display: none !important;
@@ -338,11 +499,11 @@ var fieldStyles = `
338
499
  [part="field"] {
339
500
  display: flex;
340
501
  flex-direction: column;
341
- gap: 4px;
502
+ gap: var(--u-spacing-1);
342
503
  }
343
504
  .field-label {
344
- font-size: 0.875rem;
345
- font-weight: 500;
505
+ font-size: var(--u-font-sm);
506
+ font-weight: var(--u-font-weight-medium);
346
507
  color: var(--u-color-text-secondary);
347
508
  }
348
509
  .field-label-required::after {
@@ -354,11 +515,11 @@ var fieldStyles = `
354
515
  flex-direction: column;
355
516
  }
356
517
  .field-hint {
357
- font-size: 0.75rem;
518
+ font-size: var(--u-font-xs);
358
519
  color: var(--u-color-text-muted);
359
520
  }
360
521
  .field-error {
361
- font-size: 0.75rem;
522
+ font-size: var(--u-font-xs);
362
523
  color: var(--u-color-danger);
363
524
  }
364
525
  .hidden {
@@ -375,7 +536,7 @@ var checkboxStyles = `
375
536
  [part="checkbox"] {
376
537
  display: inline-flex;
377
538
  align-items: center;
378
- gap: 8px;
539
+ gap: var(--u-spacing-2);
379
540
  cursor: pointer;
380
541
  }
381
542
  :host(:focus-visible) .checkbox-indicator { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
@@ -394,28 +555,28 @@ input {
394
555
  height: 18px;
395
556
  border: 2px solid var(--u-color-border);
396
557
  border-radius: var(--u-radius-sm);
397
- transition: all .15s;
558
+ transition: all var(--u-transition-base);
398
559
  flex-shrink: 0;
399
560
  box-sizing: border-box;
400
561
  }
401
562
  .checkbox-indicator.checked {
402
563
  background: var(--u-color-primary);
403
564
  border-color: var(--u-color-primary-hover);
404
- color: #fff;
565
+ color: var(--u-color-white);
405
566
  }
406
567
  .checkbox-indicator svg {
407
568
  opacity: 0;
408
- transition: opacity .15s;
569
+ transition: opacity var(--u-transition-base);
409
570
  }
410
571
  .checkbox-indicator.checked svg {
411
572
  opacity: 1;
412
573
  }
413
574
  .checkbox-label {
414
- font-size: 0.875rem;
575
+ font-size: var(--u-font-sm);
415
576
  color: var(--u-color-text-secondary);
416
577
  }
417
578
  :host([disabled]) [part="checkbox"] {
418
- opacity: 0.5;
579
+ opacity: var(--u-opacity-disabled);
419
580
  cursor: not-allowed;
420
581
  }
421
582
  `;
@@ -433,9 +594,9 @@ var selectStyles = `
433
594
  }
434
595
  .select {
435
596
  font-family: inherit;
436
- font-size: 14px;
437
- line-height: 1.5;
438
- padding: 8px 32px 8px 12px;
597
+ font-size: var(--u-font-sm);
598
+ line-height: var(--u-line-height-md);
599
+ padding: var(--u-spacing-2) var(--u-spacing-8) var(--u-spacing-2) var(--u-spacing-3);
439
600
  border: 1px solid var(--u-color-border-light);
440
601
  border-radius: var(--u-radius-md);
441
602
  outline: none;
@@ -443,14 +604,14 @@ var selectStyles = `
443
604
  box-sizing: border-box;
444
605
  background: var(--u-color-bg);
445
606
  color: var(--u-color-text);
446
- transition: border-color .15s;
607
+ transition: border-color var(--u-transition-base);
447
608
  appearance: none;
448
609
  -webkit-appearance: none;
449
610
  cursor: pointer;
450
611
  }
451
612
  .select:focus {
452
- border-color: #2563eb;
453
- box-shadow: 0 0 0 2px rgba(59,130,246,.25);
613
+ border-color: var(--u-color-primary-hover);
614
+ box-shadow: var(--u-shadow-focus);
454
615
  }
455
616
  .select:disabled {
456
617
  background: var(--u-color-bg-muted);
@@ -459,7 +620,7 @@ var selectStyles = `
459
620
  }
460
621
  .select-arrow {
461
622
  position: absolute;
462
- right: 8px;
623
+ right: var(--u-spacing-2);
463
624
  pointer-events: none;
464
625
  color: var(--u-color-text-muted);
465
626
  display: flex;
@@ -477,17 +638,17 @@ var linkStyles = `
477
638
  font-size: inherit;
478
639
  line-height: inherit;
479
640
  cursor: pointer;
480
- transition: color .15s;
641
+ transition: color var(--u-transition-base);
481
642
  text-decoration: none;
482
- border-radius: 2px;
643
+ border-radius: var(--u-radius-xs);
483
644
  }
484
645
  [part="link"]:focus-visible {
485
646
  outline: 2px solid var(--u-color-focus);
486
647
  outline-offset: 2px;
487
648
  }
488
- .link-default { color: #2563eb; }
489
- .link-default:hover { color: #2563eb; text-decoration: underline; }
490
- .link-accent { color: var(--u-color-text-secondary); font-weight: 500; }
649
+ .link-default { color: var(--u-color-primary-hover); }
650
+ .link-default:hover { color: var(--u-color-primary-hover); text-decoration: underline; }
651
+ .link-accent { color: var(--u-color-text-secondary); font-weight: var(--u-font-weight-medium); }
491
652
  .link-accent:hover { color: var(--u-color-text); text-decoration: underline; }
492
653
  .link-muted { color: var(--u-color-text-muted); }
493
654
  .link-muted:hover { color: var(--u-color-text-secondary); text-decoration: underline; }
@@ -534,17 +695,17 @@ var tooltipStyles = `
534
695
  }
535
696
  [part="tooltip"] {
536
697
  position: fixed;
537
- z-index: 99999;
538
- background: #1f2937;
539
- color: #fff;
540
- font-size: 0.75rem;
698
+ z-index: var(--u-z-dropdown);
699
+ background: var(--u-color-tooltip-bg);
700
+ color: var(--u-color-white);
701
+ font-size: var(--u-font-xs);
541
702
  padding: 6px 10px;
542
703
  border-radius: var(--u-radius-md);
543
704
  pointer-events: none;
544
- line-height: 1.4;
705
+ line-height: var(--u-line-height-sm);
545
706
  max-width: 200px;
546
- box-shadow: 0 4px 12px rgba(0,0,0,.25);
547
- animation: u-tooltip-in .12s ease;
707
+ box-shadow: var(--u-shadow-tooltip);
708
+ animation: u-tooltip-in 120ms ease;
548
709
  }
549
710
  @keyframes u-tooltip-in {
550
711
  from { opacity: 0; transform: translateY(3px); }
@@ -554,7 +715,7 @@ var tooltipStyles = `
554
715
  position: absolute;
555
716
  width: 6px;
556
717
  height: 6px;
557
- background: #1f2937;
718
+ background: var(--u-color-tooltip-bg);
558
719
  transform: rotate(45deg);
559
720
  }
560
721
  .arrow-top { bottom: -3px; left: calc(50% - 3px); }
@@ -574,9 +735,9 @@ var textareaStyles = `
574
735
  }
575
736
  textarea {
576
737
  font-family: inherit;
577
- font-size: 14px;
578
- line-height: 1.5;
579
- padding: 8px 12px;
738
+ font-size: var(--u-font-sm);
739
+ line-height: var(--u-line-height-md);
740
+ padding: var(--u-spacing-2) var(--u-spacing-3);
580
741
  border: 1px solid var(--u-color-border-light);
581
742
  border-radius: var(--u-radius-md);
582
743
  outline: none;
@@ -584,14 +745,14 @@ textarea {
584
745
  box-sizing: border-box;
585
746
  background: var(--u-color-bg);
586
747
  color: var(--u-color-text);
587
- transition: border-color .15s;
748
+ transition: border-color var(--u-transition-base);
588
749
  resize: vertical;
589
750
  min-height: 60px;
590
751
  }
591
752
  textarea::placeholder { color: var(--u-color-text-muted); }
592
753
  textarea:focus {
593
- border-color: #2563eb;
594
- box-shadow: 0 0 0 2px rgba(59,130,246,.25);
754
+ border-color: var(--u-color-primary-hover);
755
+ box-shadow: var(--u-shadow-focus);
595
756
  }
596
757
  textarea:disabled {
597
758
  background: var(--u-color-bg-muted);
@@ -611,9 +772,9 @@ var radioStyles = `
611
772
  [part="radio"] {
612
773
  display: inline-flex;
613
774
  align-items: center;
614
- gap: 8px;
775
+ gap: var(--u-spacing-2);
615
776
  cursor: pointer;
616
- font-size: 0.875rem;
777
+ font-size: var(--u-font-sm);
617
778
  color: var(--u-color-text-secondary);
618
779
  }
619
780
  :host(:focus-visible) .radio-circle { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
@@ -631,18 +792,18 @@ input[type="radio"] {
631
792
  width: 18px;
632
793
  height: 18px;
633
794
  border: 2px solid var(--u-color-border);
634
- border-radius: 50%;
635
- transition: all .15s;
795
+ border-radius: var(--u-radius-round);
796
+ transition: all var(--u-transition-base);
636
797
  flex-shrink: 0;
637
798
  box-sizing: border-box;
638
799
  }
639
800
  .radio-circle.checked {
640
801
  border-color: var(--u-color-primary-hover);
641
802
  background: var(--u-color-primary);
642
- box-shadow: inset 0 0 0 3px #fff;
803
+ box-shadow: inset 0 0 0 3px var(--u-color-white);
643
804
  }
644
805
  :host([disabled]) [part="radio"] {
645
- opacity: 0.5;
806
+ opacity: var(--u-opacity-disabled);
646
807
  cursor: not-allowed;
647
808
  }
648
809
  `;
@@ -667,10 +828,10 @@ input {
667
828
  .switch-track {
668
829
  width: 40px;
669
830
  height: 22px;
670
- background: #9ca3af;
831
+ background: var(--u-color-border);
671
832
  border-radius: 11px;
672
833
  position: relative;
673
- transition: background .2s;
834
+ transition: background var(--u-transition-slow);
674
835
  }
675
836
  .switch-track.checked {
676
837
  background: var(--u-color-primary);
@@ -682,15 +843,15 @@ input {
682
843
  width: 18px;
683
844
  height: 18px;
684
845
  background: var(--u-color-bg);
685
- border-radius: 50%;
686
- transition: transform .2s;
687
- box-shadow: 0 1px 2px rgba(0,0,0,.15);
846
+ border-radius: var(--u-radius-round);
847
+ transition: transform var(--u-transition-slow);
848
+ box-shadow: var(--u-shadow-thumb);
688
849
  }
689
850
  .switch-track.checked .switch-thumb {
690
851
  transform: translateX(18px);
691
852
  }
692
853
  :host([disabled]) [part="switch"] {
693
- opacity: 0.5;
854
+ opacity: var(--u-opacity-disabled);
694
855
  cursor: not-allowed;
695
856
  }
696
857
  `;
@@ -701,8 +862,8 @@ var labelStyles = `
701
862
  display: inline;
702
863
  }
703
864
  [part="label"] {
704
- font-size: 0.875rem;
705
- font-weight: 500;
865
+ font-size: var(--u-font-sm);
866
+ font-weight: var(--u-font-weight-medium);
706
867
  color: var(--u-color-text-secondary);
707
868
  cursor: default;
708
869
  }
@@ -721,7 +882,7 @@ var treeStyles = `
721
882
  list-style: none;
722
883
  margin: 0;
723
884
  padding: 0;
724
- font-size: 0.875rem;
885
+ font-size: var(--u-font-sm);
725
886
  }
726
887
  .tree-node {
727
888
  list-style: none;
@@ -729,8 +890,8 @@ var treeStyles = `
729
890
  .tree-row {
730
891
  display: flex;
731
892
  align-items: center;
732
- gap: 4px;
733
- padding: 4px 8px;
893
+ gap: var(--u-spacing-1);
894
+ padding: var(--u-spacing-1) var(--u-spacing-2);
734
895
  cursor: pointer;
735
896
  border-radius: var(--u-radius-sm);
736
897
  }
@@ -739,14 +900,14 @@ var treeStyles = `
739
900
  background: var(--u-color-bg-hover);
740
901
  }
741
902
  .tree-toggle {
742
- width: 16px;
903
+ width: var(--u-spacing-4);
743
904
  flex-shrink: 0;
744
905
  text-align: center;
745
- font-size: 12px;
906
+ font-size: var(--u-font-xs);
746
907
  color: var(--u-color-text-muted);
747
908
  }
748
909
  .tree-toggle-spacer {
749
- width: 16px;
910
+ width: var(--u-spacing-4);
750
911
  flex-shrink: 0;
751
912
  }
752
913
  .tree-label {
@@ -771,13 +932,13 @@ var tableStyles = `
771
932
  .table {
772
933
  width: 100%;
773
934
  border-collapse: collapse;
774
- font-size: 0.875rem;
935
+ font-size: var(--u-font-sm);
775
936
  }
776
937
  .table th {
777
938
  text-align: left;
778
- padding: 10px 12px;
939
+ padding: 10px var(--u-spacing-3);
779
940
  border-bottom: 2px solid var(--u-color-border-lighter);
780
- font-weight: 600;
941
+ font-weight: var(--u-font-weight-semibold);
781
942
  color: var(--u-color-text-secondary);
782
943
  white-space: nowrap;
783
944
  background: var(--u-color-bg-muted);
@@ -791,7 +952,7 @@ var tableStyles = `
791
952
  background: var(--u-color-bg-hover);
792
953
  }
793
954
  .table td {
794
- padding: 10px 12px;
955
+ padding: 10px var(--u-spacing-3);
795
956
  border-bottom: 1px solid var(--u-color-border-lighter);
796
957
  color: var(--u-color-text-muted);
797
958
  }
@@ -806,12 +967,12 @@ var breadcrumbStyles = `
806
967
  display: block;
807
968
  }
808
969
  [part="breadcrumb"] {
809
- font-size: 0.875rem;
970
+ font-size: var(--u-font-sm);
810
971
  }
811
972
  [part="list"] {
812
973
  display: flex;
813
974
  align-items: center;
814
- gap: 4px;
975
+ gap: var(--u-spacing-1);
815
976
  list-style: none;
816
977
  margin: 0;
817
978
  padding: 0;
@@ -819,24 +980,24 @@ var breadcrumbStyles = `
819
980
  .breadcrumb-item {
820
981
  display: flex;
821
982
  align-items: center;
822
- gap: 4px;
983
+ gap: var(--u-spacing-1);
823
984
  color: var(--u-color-text-muted);
824
985
  }
825
986
  .breadcrumb-item a {
826
987
  color: var(--u-color-primary-text);
827
988
  text-decoration: none;
828
989
  }
829
- .breadcrumb-item a:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: 2px; }
990
+ .breadcrumb-item a:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
830
991
  .breadcrumb-item a:hover {
831
992
  text-decoration: underline;
832
993
  }
833
994
  .breadcrumb-item[aria-current="page"] {
834
995
  color: var(--u-color-text);
835
- font-weight: 500;
996
+ font-weight: var(--u-font-weight-medium);
836
997
  }
837
998
  .breadcrumb-separator {
838
999
  color: var(--u-color-border-light);
839
- margin: 0 2px;
1000
+ margin: 0 var(--u-spacing-05);
840
1001
  }
841
1002
  `;
842
1003
 
@@ -863,15 +1024,15 @@ var tabsStyles = `
863
1024
  bottom: 0;
864
1025
  height: 2px;
865
1026
  background: var(--u-color-primary);
866
- transition: left .2s ease, width .2s ease;
1027
+ transition: left var(--u-transition-slow) ease, width var(--u-transition-slow) ease;
867
1028
  border-radius: 1px;
868
1029
  }
869
1030
  .tablist-pills {
870
- gap: 4px;
1031
+ gap: var(--u-spacing-1);
871
1032
  flex-wrap: wrap;
872
1033
  }
873
1034
  .tablist-buttons {
874
- gap: 4px;
1035
+ gap: var(--u-spacing-1);
875
1036
  flex-wrap: wrap;
876
1037
  }
877
1038
  .tablist-full {
@@ -883,18 +1044,18 @@ var tabsStyles = `
883
1044
  }
884
1045
  .tab-trigger {
885
1046
  font-family: inherit;
886
- font-size: 0.875rem;
887
- padding: 10px 16px;
1047
+ font-size: var(--u-font-sm);
1048
+ padding: 10px var(--u-spacing-4);
888
1049
  border: none;
889
1050
  background: none;
890
1051
  cursor: pointer;
891
1052
  color: var(--u-color-text-muted);
892
- transition: all .15s;
1053
+ transition: all var(--u-transition-base);
893
1054
  outline: none;
894
1055
  display: inline-flex;
895
1056
  align-items: center;
896
1057
  justify-content: center;
897
- gap: 8px;
1058
+ gap: var(--u-spacing-2);
898
1059
  white-space: nowrap;
899
1060
  user-select: none;
900
1061
  position: relative;
@@ -905,29 +1066,29 @@ var tabsStyles = `
905
1066
  }
906
1067
  .tab-trigger.active {
907
1068
  color: var(--u-color-primary-text);
908
- font-weight: 500;
1069
+ font-weight: var(--u-font-weight-medium);
909
1070
  }
910
1071
  .tab-trigger:focus-visible {
911
1072
  box-shadow: inset 0 0 0 2px var(--u-color-focus);
912
1073
  }
913
1074
  .tab-trigger:disabled {
914
- opacity: .4;
1075
+ opacity: var(--u-opacity-muted);
915
1076
  cursor: not-allowed;
916
1077
  }
917
1078
  .tab-trigger-icon {
918
1079
  display: inline-flex;
919
1080
  align-items: center;
920
1081
  justify-content: center;
921
- width: 16px;
922
- height: 16px;
1082
+ width: var(--u-spacing-4);
1083
+ height: var(--u-spacing-4);
923
1084
  flex-shrink: 0;
924
1085
  }
925
1086
  .tab-trigger-icon svg {
926
- width: 16px;
927
- height: 16px;
1087
+ width: var(--u-spacing-4);
1088
+ height: var(--u-spacing-4);
928
1089
  }
929
1090
  .tablist-pills .tab-trigger {
930
- border-radius: 999px;
1091
+ border-radius: var(--u-radius-full);
931
1092
  padding: 6px 14px;
932
1093
  }
933
1094
  .tablist-pills .tab-trigger:hover:not(:disabled) {
@@ -946,15 +1107,15 @@ var tabsStyles = `
946
1107
  }
947
1108
  .tablist-buttons .tab-trigger.active {
948
1109
  background: var(--u-color-primary);
949
- color: #fff;
1110
+ color: var(--u-color-white);
950
1111
  }
951
1112
  [part="tabpanels"] {
952
- padding: 16px 0;
1113
+ padding: var(--u-spacing-4) 0;
953
1114
  outline: none;
954
1115
  }
955
1116
  .tab-panel {
956
1117
  outline: none;
957
- animation: u-tab-panel-in .15s ease;
1118
+ animation: u-tab-panel-in var(--u-transition-base) ease;
958
1119
  }
959
1120
  @keyframes u-tab-panel-in {
960
1121
  from { opacity: 0; }
@@ -1068,27 +1229,33 @@ var modalStyles = `
1068
1229
  position: fixed;
1069
1230
  inset: 0;
1070
1231
  background: var(--u-color-overlay);
1071
- z-index: 9998;
1072
- animation: u-modal-fade-in .15s ease;
1232
+ z-index: var(--u-z-backdrop);
1233
+ animation: u-modal-fade-in var(--u-transition-base) ease;
1234
+ }
1235
+ .modal-backdrop[hidden] {
1236
+ display: none !important;
1073
1237
  }
1074
1238
  .modal {
1075
1239
  position: fixed;
1076
1240
  inset: 0;
1077
- z-index: 9999;
1241
+ z-index: var(--u-z-modal);
1078
1242
  display: flex;
1079
1243
  align-items: center;
1080
1244
  justify-content: center;
1081
- padding: 16px;
1245
+ padding: var(--u-spacing-4);
1246
+ }
1247
+ .modal[hidden] {
1248
+ display: none !important;
1082
1249
  }
1083
1250
  .modal-wrapper {
1084
1251
  background: var(--u-color-bg);
1085
1252
  border-radius: var(--u-radius-2xl);
1086
- box-shadow: 0 20px 60px rgba(0,0,0,.15);
1253
+ box-shadow: var(--u-shadow-xl);
1087
1254
  display: flex;
1088
1255
  flex-direction: column;
1089
1256
  max-height: 85vh;
1090
1257
  width: 100%;
1091
- animation: u-modal-scale-in .2s ease;
1258
+ animation: u-modal-scale-in var(--u-transition-slow) ease;
1092
1259
  }
1093
1260
  .modal-sm { max-width: 400px; }
1094
1261
  .modal-md { max-width: 500px; }
@@ -1099,13 +1266,13 @@ var modalStyles = `
1099
1266
  display: flex;
1100
1267
  align-items: center;
1101
1268
  justify-content: space-between;
1102
- padding: 16px 20px;
1269
+ padding: var(--u-spacing-4) var(--u-spacing-5);
1103
1270
  border-bottom: 1px solid var(--u-color-border-lighter);
1104
- gap: 12px;
1271
+ gap: var(--u-spacing-3);
1105
1272
  }
1106
1273
  .modal-title {
1107
- font-weight: 600;
1108
- font-size: 1.125rem;
1274
+ font-weight: var(--u-font-weight-semibold);
1275
+ font-size: var(--u-font-lg);
1109
1276
  color: var(--u-color-text);
1110
1277
  flex: 1;
1111
1278
  min-width: 0;
@@ -1118,14 +1285,14 @@ var modalStyles = `
1118
1285
  border: none;
1119
1286
  cursor: pointer;
1120
1287
  color: var(--u-color-text-muted);
1121
- padding: 4px;
1122
- line-height: 1;
1288
+ padding: var(--u-spacing-1);
1289
+ line-height: var(--u-line-height-none);
1123
1290
  border-radius: var(--u-radius-md);
1124
1291
  display: inline-flex;
1125
1292
  align-items: center;
1126
1293
  justify-content: center;
1127
1294
  flex-shrink: 0;
1128
- transition: color .15s, background .15s;
1295
+ transition: color var(--u-transition-base), background var(--u-transition-base);
1129
1296
  }
1130
1297
  .modal-close:hover { color: var(--u-color-text-secondary); background: var(--u-color-bg-hover); }
1131
1298
  .modal-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
@@ -1134,19 +1301,19 @@ var modalStyles = `
1134
1301
  height: 18px;
1135
1302
  }
1136
1303
  .modal-content {
1137
- padding: 20px;
1304
+ padding: var(--u-spacing-5);
1138
1305
  overflow-y: auto;
1139
1306
  flex: 1;
1140
1307
  color: var(--u-color-text-secondary);
1141
- font-size: 0.875rem;
1142
- line-height: 1.6;
1308
+ font-size: var(--u-font-sm);
1309
+ line-height: var(--u-line-height-lg);
1143
1310
  }
1144
1311
  .modal-footer {
1145
1312
  display: flex;
1146
1313
  align-items: center;
1147
1314
  justify-content: flex-end;
1148
- gap: 8px;
1149
- padding: 12px 20px;
1315
+ gap: var(--u-spacing-2);
1316
+ padding: var(--u-spacing-3) var(--u-spacing-5);
1150
1317
  border-top: 1px solid var(--u-color-border-lighter);
1151
1318
  }
1152
1319
  .modal-mobile.modal-wrapper {
@@ -1164,11 +1331,11 @@ var drawerStyles = `
1164
1331
  position: fixed;
1165
1332
  inset: 0;
1166
1333
  background: var(--u-color-overlay);
1167
- z-index: 9998;
1334
+ z-index: var(--u-z-backdrop);
1168
1335
  }
1169
1336
  .drawer {
1170
1337
  position: fixed;
1171
- z-index: 9999;
1338
+ z-index: var(--u-z-modal);
1172
1339
  }
1173
1340
  .drawer-right { top: 0; right: 0; height: 100%; }
1174
1341
  .drawer-left { top: 0; left: 0; height: 100%; }
@@ -1178,35 +1345,35 @@ var drawerStyles = `
1178
1345
  background: var(--u-color-bg);
1179
1346
  display: flex;
1180
1347
  flex-direction: column;
1181
- box-shadow: 0 0 40px rgba(0,0,0,.1);
1348
+ box-shadow: var(--u-shadow-drawer);
1182
1349
  }
1183
- .drawer-right .drawer-content { height: 100%; transform: translateX(100%); transition: transform .25s ease; border-radius: var(--u-radius-2xl) 0 0 var(--u-radius-2xl); }
1184
- .drawer-left .drawer-content { height: 100%; transform: translateX(-100%); transition: transform .25s ease; border-radius: 0 var(--u-radius-2xl) var(--u-radius-2xl) 0; }
1185
- .drawer-top .drawer-content { width: 100%; transform: translateY(-100%); transition: transform .25s ease; border-radius: 0 0 var(--u-radius-2xl) var(--u-radius-2xl); }
1186
- .drawer-bottom .drawer-content { width: 100%; transform: translateY(100%); transition: transform .25s ease; border-radius: var(--u-radius-2xl) var(--u-radius-2xl) 0 0; }
1350
+ .drawer-right .drawer-content { height: 100%; transform: translateX(100%); transition: transform var(--u-transition-slower) ease; border-radius: var(--u-radius-2xl) 0 0 var(--u-radius-2xl); }
1351
+ .drawer-left .drawer-content { height: 100%; transform: translateX(-100%); transition: transform var(--u-transition-slower) ease; border-radius: 0 var(--u-radius-2xl) var(--u-radius-2xl) 0; }
1352
+ .drawer-top .drawer-content { width: 100%; transform: translateY(-100%); transition: transform var(--u-transition-slower) ease; border-radius: 0 0 var(--u-radius-2xl) var(--u-radius-2xl); }
1353
+ .drawer-bottom .drawer-content { width: 100%; transform: translateY(100%); transition: transform var(--u-transition-slower) ease; border-radius: var(--u-radius-2xl) var(--u-radius-2xl) 0 0; }
1187
1354
  .drawer-open .drawer-content { transform: translate(0,0); }
1188
1355
  .drawer-header {
1189
1356
  display: flex;
1190
1357
  align-items: center;
1191
1358
  justify-content: space-between;
1192
- padding: 16px 20px;
1359
+ padding: var(--u-spacing-4) var(--u-spacing-5);
1193
1360
  border-bottom: 1px solid var(--u-color-border-lighter);
1194
- font-weight: 600;
1195
- font-size: 1.125rem;
1361
+ font-weight: var(--u-font-weight-semibold);
1362
+ font-size: var(--u-font-lg);
1196
1363
  }
1197
1364
  .drawer-close {
1198
1365
  background: none;
1199
1366
  border: none;
1200
- font-size: 1.5rem;
1367
+ font-size: var(--u-font-2xl);
1201
1368
  cursor: pointer;
1202
1369
  color: var(--u-color-text-muted);
1203
1370
  padding: 0;
1204
- line-height: 1;
1371
+ line-height: var(--u-line-height-none);
1205
1372
  }
1206
1373
  .drawer-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1207
1374
  .drawer-close:hover { color: var(--u-color-text-secondary); }
1208
- .drawer-body { padding: 20px; overflow-y: auto; flex: 1; color: var(--u-color-text-muted); font-size: 0.875rem; }
1209
- .drawer-footer { padding: 12px 20px; border-top: 1px solid var(--u-color-border-lighter); display: flex; gap: 8px; justify-content: flex-end; }
1375
+ .drawer-body { padding: var(--u-spacing-5); overflow-y: auto; flex: 1; color: var(--u-color-text-muted); font-size: var(--u-font-sm); }
1376
+ .drawer-footer { padding: var(--u-spacing-3) var(--u-spacing-5); border-top: 1px solid var(--u-color-border-lighter); display: flex; gap: var(--u-spacing-2); justify-content: flex-end; }
1210
1377
  `;
1211
1378
 
1212
1379
  // src/components/styles/popover.ts
@@ -1220,18 +1387,18 @@ var popoverStyles = `
1220
1387
  }
1221
1388
  .popover {
1222
1389
  position: fixed;
1223
- z-index: 99999;
1390
+ z-index: var(--u-z-dropdown);
1224
1391
  filter: drop-shadow(0 8px 24px rgba(0,0,0,.14));
1225
1392
  }
1226
1393
  .popover-content {
1227
1394
  background: var(--u-color-bg);
1228
1395
  border: 1px solid var(--u-color-border-light);
1229
1396
  border-radius: var(--u-radius-xl);
1230
- padding: 8px;
1231
- font-size: 0.875rem;
1397
+ padding: var(--u-spacing-2);
1398
+ font-size: var(--u-font-sm);
1232
1399
  color: var(--u-color-text-secondary);
1233
1400
  min-width: 160px;
1234
- animation: u-popover-in .15s ease;
1401
+ animation: u-popover-in var(--u-transition-base) ease;
1235
1402
  }
1236
1403
  @keyframes u-popover-in {
1237
1404
  from { opacity: 0; transform: scale(.95); }
@@ -1263,15 +1430,15 @@ var dropdownStyles = `
1263
1430
  }
1264
1431
  .dropdown-menu {
1265
1432
  position: fixed;
1266
- z-index: 99999;
1433
+ z-index: var(--u-z-dropdown);
1267
1434
  background: var(--u-color-bg);
1268
1435
  border: 1px solid var(--u-color-border-light);
1269
1436
  border-radius: var(--u-radius-xl);
1270
- box-shadow: 0 8px 24px rgba(0,0,0,.14);
1271
- padding: 4px;
1437
+ box-shadow: var(--u-shadow-lg);
1438
+ padding: var(--u-spacing-1);
1272
1439
  min-width: 180px;
1273
1440
  outline: none;
1274
- animation: u-dropdown-in .12s ease;
1441
+ animation: u-dropdown-in 120ms ease;
1275
1442
  }
1276
1443
  @keyframes u-dropdown-in {
1277
1444
  from { opacity: 0; transform: scale(.95); }
@@ -1283,29 +1450,29 @@ var dropdownStyles = `
1283
1450
  }
1284
1451
  .dropdown-item {
1285
1452
  font-family: inherit;
1286
- font-size: 0.875rem;
1287
- padding: 8px 12px;
1453
+ font-size: var(--u-font-sm);
1454
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1288
1455
  border: none;
1289
1456
  background: none;
1290
1457
  cursor: pointer;
1291
1458
  color: var(--u-color-text-secondary);
1292
1459
  text-align: left;
1293
1460
  border-radius: var(--u-radius-md);
1294
- transition: background .1s;
1461
+ transition: background var(--u-transition-fast);
1295
1462
  display: flex;
1296
1463
  align-items: center;
1297
- gap: 8px;
1464
+ gap: var(--u-spacing-2);
1298
1465
  width: 100%;
1299
1466
  box-sizing: border-box;
1300
1467
  }
1301
1468
  .dropdown-item:hover { background: var(--u-color-bg-hover); }
1302
1469
  .dropdown-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1303
- .dropdown-item.selected { color: var(--u-color-primary-hover); font-weight: 500; background: var(--u-color-bg-selected); }
1304
- .dropdown-item:disabled { opacity: 0.4; cursor: not-allowed; }
1470
+ .dropdown-item.selected { color: var(--u-color-primary-hover); font-weight: var(--u-font-weight-medium); background: var(--u-color-bg-selected); }
1471
+ .dropdown-item:disabled { opacity: var(--u-opacity-muted); cursor: not-allowed; }
1305
1472
  .dropdown-item-active { background: var(--u-color-bg-selected); color: var(--u-color-primary-hover); }
1306
1473
  .dropdown-item-icon {
1307
- width: 16px;
1308
- height: 16px;
1474
+ width: var(--u-spacing-4);
1475
+ height: var(--u-spacing-4);
1309
1476
  flex-shrink: 0;
1310
1477
  display: inline-flex;
1311
1478
  align-items: center;
@@ -1313,8 +1480,8 @@ var dropdownStyles = `
1313
1480
  color: var(--u-color-text-muted);
1314
1481
  }
1315
1482
  .dropdown-item-icon svg {
1316
- width: 16px;
1317
- height: 16px;
1483
+ width: var(--u-spacing-4);
1484
+ height: var(--u-spacing-4);
1318
1485
  }
1319
1486
  .dropdown-item-text {
1320
1487
  flex: 1;
@@ -1322,17 +1489,17 @@ var dropdownStyles = `
1322
1489
  }
1323
1490
  .dropdown-item-label {
1324
1491
  display: block;
1325
- line-height: 1.4;
1492
+ line-height: var(--u-line-height-sm);
1326
1493
  }
1327
1494
  .dropdown-item-desc {
1328
1495
  display: block;
1329
- font-size: 0.75rem;
1496
+ font-size: var(--u-font-xs);
1330
1497
  color: var(--u-color-text-muted);
1331
- line-height: 1.3;
1498
+ line-height: var(--u-line-height-tight);
1332
1499
  margin-top: 1px;
1333
1500
  }
1334
1501
  .dropdown-item-shortcut {
1335
- font-size: 0.75rem;
1502
+ font-size: var(--u-font-xs);
1336
1503
  color: var(--u-color-text-muted);
1337
1504
  padding: 2px 6px;
1338
1505
  background: var(--u-color-bg-hover);
@@ -1341,14 +1508,14 @@ var dropdownStyles = `
1341
1508
  flex-shrink: 0;
1342
1509
  }
1343
1510
  .dropdown-group-label {
1344
- font-size: 0.75rem;
1345
- font-weight: 600;
1511
+ font-size: var(--u-font-xs);
1512
+ font-weight: var(--u-font-weight-semibold);
1346
1513
  color: var(--u-color-text-muted);
1347
1514
  text-transform: uppercase;
1348
- letter-spacing: 0.05em;
1349
- padding: 8px 12px 4px;
1515
+ letter-spacing: var(--u-letter-spacing-wide);
1516
+ padding: var(--u-spacing-2) var(--u-spacing-3) var(--u-spacing-1);
1350
1517
  }
1351
- .dropdown-divider { height: 1px; background: var(--u-color-bg-hover); margin: 4px 0; }
1518
+ .dropdown-divider { height: 1px; background: var(--u-color-bg-hover); margin: var(--u-spacing-1) 0; }
1352
1519
  `;
1353
1520
 
1354
1521
  // src/components/styles/accordion.ts
@@ -1369,29 +1536,29 @@ var accordionStyles = `
1369
1536
  display: flex;
1370
1537
  align-items: center;
1371
1538
  justify-content: space-between;
1372
- padding: 12px 16px;
1539
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1373
1540
  cursor: pointer;
1374
- font-weight: 500;
1375
- font-size: 0.875rem;
1541
+ font-weight: var(--u-font-weight-medium);
1542
+ font-size: var(--u-font-sm);
1376
1543
  color: var(--u-color-text-secondary);
1377
- transition: background .15s;
1544
+ transition: background var(--u-transition-base);
1378
1545
  user-select: none;
1379
1546
  }
1380
1547
  .accordion-header:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1381
1548
  .accordion-header:hover { background: var(--u-color-bg-muted); }
1382
1549
  .accordion-icon {
1383
- transition: transform .2s;
1384
- font-size: 12px;
1550
+ transition: transform var(--u-transition-slow);
1551
+ font-size: var(--u-font-xs);
1385
1552
  color: var(--u-color-text-muted);
1386
1553
  }
1387
1554
  .accordion-item[open] .accordion-icon { transform: rotate(180deg); }
1388
1555
  .accordion-content {
1389
1556
  overflow: hidden;
1390
- transition: height .25s ease;
1557
+ transition: height var(--u-transition-slower) ease;
1391
1558
  }
1392
1559
  .accordion-body {
1393
- padding: 0 16px 12px;
1394
- font-size: 0.875rem;
1560
+ padding: 0 var(--u-spacing-4) var(--u-spacing-3);
1561
+ font-size: var(--u-font-sm);
1395
1562
  color: var(--u-color-text-muted);
1396
1563
  }
1397
1564
  `;
@@ -1402,36 +1569,36 @@ var calendarStyles = `
1402
1569
  display: inline-block;
1403
1570
  }
1404
1571
  .calendar {
1405
- font-size: 0.875rem;
1572
+ font-size: var(--u-font-sm);
1406
1573
  width: 280px;
1407
1574
  background: var(--u-color-bg);
1408
1575
  border-radius: var(--u-radius-lg);
1409
- box-shadow: 0 4px 20px rgba(0,0,0,.08);
1410
- padding: 16px;
1576
+ box-shadow: var(--u-shadow-calendar);
1577
+ padding: var(--u-spacing-4);
1411
1578
  }
1412
1579
  .cal-header {
1413
1580
  display: flex;
1414
1581
  align-items: center;
1415
1582
  justify-content: space-between;
1416
- margin-bottom: 12px;
1583
+ margin-bottom: var(--u-spacing-3);
1417
1584
  }
1418
1585
  .cal-title {
1419
- font-weight: 600;
1586
+ font-weight: var(--u-font-weight-semibold);
1420
1587
  color: var(--u-color-text);
1421
1588
  }
1422
1589
  .cal-nav-btn {
1423
1590
  background: none;
1424
1591
  border: 1px solid var(--u-color-border);
1425
1592
  border-radius: var(--u-radius-md);
1426
- width: 32px;
1427
- height: 32px;
1593
+ width: var(--u-spacing-8);
1594
+ height: var(--u-spacing-8);
1428
1595
  cursor: pointer;
1429
1596
  font-size: 1.2rem;
1430
1597
  display: flex;
1431
1598
  align-items: center;
1432
1599
  justify-content: center;
1433
1600
  color: var(--u-color-text-muted);
1434
- transition: all .15s;
1601
+ transition: all var(--u-transition-base);
1435
1602
  }
1436
1603
  .cal-nav-btn:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1437
1604
  .cal-nav-btn:hover {
@@ -1442,13 +1609,13 @@ var calendarStyles = `
1442
1609
  display: grid;
1443
1610
  grid-template-columns: repeat(7, 1fr);
1444
1611
  text-align: center;
1445
- font-size: 0.75rem;
1612
+ font-size: var(--u-font-xs);
1446
1613
  color: var(--u-color-text-muted);
1447
- font-weight: 500;
1448
- margin-bottom: 8px;
1614
+ font-weight: var(--u-font-weight-medium);
1615
+ margin-bottom: var(--u-spacing-2);
1449
1616
  }
1450
1617
  .cal-day-name {
1451
- padding: 4px 0;
1618
+ padding: var(--u-spacing-1) 0;
1452
1619
  }
1453
1620
  .cal-days-grid {
1454
1621
  display: grid;
@@ -1462,18 +1629,18 @@ var calendarStyles = `
1462
1629
  width: 100%;
1463
1630
  aspect-ratio: 1;
1464
1631
  cursor: pointer;
1465
- font-size: 0.875rem;
1632
+ font-size: var(--u-font-sm);
1466
1633
  color: var(--u-color-text-secondary);
1467
- transition: all .1s;
1634
+ transition: all var(--u-transition-fast);
1468
1635
  font-family: inherit;
1469
1636
  }
1470
1637
  .cal-day:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
1471
1638
  .cal-day:hover { background: var(--u-color-bg-hover); }
1472
1639
  .cal-day-empty { pointer-events: none; }
1473
- .cal-today { font-weight: 600; color: var(--u-color-primary-text); }
1474
- .cal-selected { background: var(--u-color-primary); color: #fff; font-weight: 600; }
1640
+ .cal-today { font-weight: var(--u-font-weight-semibold); color: var(--u-color-primary-text); }
1641
+ .cal-selected { background: var(--u-color-primary); color: var(--u-color-white); font-weight: var(--u-font-weight-semibold); }
1475
1642
  .cal-selected:hover { background: var(--u-color-primary-hover); }
1476
- .cal-disabled { opacity: 0.3; pointer-events: none; }
1643
+ .cal-disabled { opacity: var(--u-opacity-fade); pointer-events: none; }
1477
1644
  `;
1478
1645
 
1479
1646
  // src/components/styles/data-table.ts
@@ -1482,7 +1649,7 @@ var dataTableStyles = `
1482
1649
  display: block;
1483
1650
  }
1484
1651
  .data-table {
1485
- font-size: 0.875rem;
1652
+ font-size: var(--u-font-sm);
1486
1653
  border: 1px solid var(--u-color-border);
1487
1654
  border-radius: var(--u-radius-lg);
1488
1655
  overflow: hidden;
@@ -1491,14 +1658,14 @@ var dataTableStyles = `
1491
1658
  display: flex;
1492
1659
  align-items: center;
1493
1660
  justify-content: space-between;
1494
- padding: 12px 16px;
1661
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1495
1662
  border-bottom: 1px solid var(--u-color-border);
1496
1663
  background: var(--u-color-bg-muted);
1497
1664
  }
1498
1665
  .dt-search-input {
1499
1666
  font-family: inherit;
1500
- font-size: 0.875rem;
1501
- padding: 6px 12px;
1667
+ font-size: var(--u-font-sm);
1668
+ padding: 6px var(--u-spacing-3);
1502
1669
  border: 1px solid var(--u-color-border);
1503
1670
  border-radius: var(--u-radius-md);
1504
1671
  outline: none;
@@ -1506,16 +1673,16 @@ var dataTableStyles = `
1506
1673
  }
1507
1674
  .dt-search-input:focus {
1508
1675
  border-color: var(--u-color-primary-text);
1509
- box-shadow: 0 0 0 2px rgba(59,130,246,.25);
1676
+ box-shadow: var(--u-shadow-focus);
1510
1677
  }
1511
- .dt-page-info { color: var(--u-color-text-muted); font-size: 0.8rem; }
1678
+ .dt-page-info { color: var(--u-color-text-muted); font-size: var(--u-font-xs); }
1512
1679
  .dt-table-wrapper { overflow-x: auto; }
1513
1680
  .dt-table { width: 100%; border-collapse: collapse; }
1514
1681
  .dt-table th {
1515
1682
  text-align: left;
1516
- padding: 10px 12px;
1683
+ padding: 10px var(--u-spacing-3);
1517
1684
  border-bottom: 2px solid var(--u-color-border-lighter);
1518
- font-weight: 600;
1685
+ font-weight: var(--u-font-weight-semibold);
1519
1686
  color: var(--u-color-text-secondary);
1520
1687
  white-space: nowrap;
1521
1688
  background: var(--u-color-bg-muted);
@@ -1523,23 +1690,23 @@ var dataTableStyles = `
1523
1690
  .dt-table th.dt-sortable { cursor: pointer; user-select: none; }
1524
1691
  .dt-table th.dt-sortable:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
1525
1692
  .dt-table th.dt-sortable:hover { background: var(--u-color-bg-hover); }
1526
- .dt-table td { padding: 10px 12px; border-bottom: 1px solid var(--u-color-border-lighter); color: var(--u-color-text-muted); }
1693
+ .dt-table td { padding: 10px var(--u-spacing-3); border-bottom: 1px solid var(--u-color-border-lighter); color: var(--u-color-text-muted); }
1527
1694
  .dt-table tr:hover td { background: var(--u-color-bg-muted); }
1528
1695
  .dt-row-selected td { background: var(--u-color-bg-selected); }
1529
1696
  .dt-col-check { width: 40px; }
1530
- .dt-empty { text-align: center; color: var(--u-color-text-muted); padding: 32px; }
1697
+ .dt-empty { text-align: center; color: var(--u-color-text-muted); padding: var(--u-spacing-8); }
1531
1698
  .dt-pagination {
1532
1699
  display: flex;
1533
1700
  align-items: center;
1534
1701
  justify-content: space-between;
1535
- padding: 8px 16px;
1702
+ padding: var(--u-spacing-2) var(--u-spacing-4);
1536
1703
  border-top: 1px solid var(--u-color-border);
1537
1704
  background: var(--u-color-bg-muted);
1538
1705
  }
1539
1706
  .dt-page-btn {
1540
1707
  font-family: inherit;
1541
- font-size: 0.8rem;
1542
- padding: 6px 12px;
1708
+ font-size: var(--u-font-xs);
1709
+ padding: 6px var(--u-spacing-3);
1543
1710
  border: 1px solid var(--u-color-border);
1544
1711
  border-radius: var(--u-radius-md);
1545
1712
  background: var(--u-color-bg);
@@ -1548,12 +1715,12 @@ var dataTableStyles = `
1548
1715
  }
1549
1716
  .dt-page-btn:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1550
1717
  .dt-page-btn:hover { background: var(--u-color-bg-hover); }
1551
- .dt-page-numbers { display: flex; gap: 4px; }
1718
+ .dt-page-numbers { display: flex; gap: var(--u-spacing-1); }
1552
1719
  .dt-page-num {
1553
1720
  font-family: inherit;
1554
- font-size: 0.8rem;
1555
- width: 32px;
1556
- height: 32px;
1721
+ font-size: var(--u-font-xs);
1722
+ width: var(--u-spacing-8);
1723
+ height: var(--u-spacing-8);
1557
1724
  border: 1px solid transparent;
1558
1725
  border-radius: var(--u-radius-md);
1559
1726
  background: none;
@@ -1562,7 +1729,7 @@ var dataTableStyles = `
1562
1729
  }
1563
1730
  .dt-page-num:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1564
1731
  .dt-page-num:hover { background: var(--u-color-bg-hover); }
1565
- .dt-page-num.active { background: var(--u-color-primary); color: #fff; font-weight: 600; }
1732
+ .dt-page-num.active { background: var(--u-color-primary); color: var(--u-color-white); font-weight: var(--u-font-weight-semibold); }
1566
1733
  `;
1567
1734
 
1568
1735
  // src/components/styles/command-palette.ts
@@ -1574,42 +1741,42 @@ var commandPaletteStyles = `
1574
1741
  position: fixed;
1575
1742
  inset: 0;
1576
1743
  background: var(--u-color-overlay);
1577
- z-index: 99999;
1744
+ z-index: var(--u-z-backdrop);
1578
1745
  }
1579
1746
  .cp-dialog {
1580
1747
  position: fixed;
1581
1748
  top: 20%;
1582
1749
  left: 50%;
1583
1750
  transform: translateX(-50%);
1584
- z-index: 100000;
1751
+ z-index: var(--u-z-command-palette);
1585
1752
  width: 540px;
1586
1753
  max-width: calc(100vw - 32px);
1587
1754
  }
1588
1755
  .cp-dialog-inner {
1589
1756
  background: var(--u-color-bg);
1590
1757
  border-radius: var(--u-radius-2xl);
1591
- box-shadow: 0 20px 60px rgba(0,0,0,.2);
1758
+ box-shadow: var(--u-shadow-command-palette);
1592
1759
  overflow: hidden;
1593
1760
  }
1594
1761
  .cp-search-wrapper {
1595
1762
  display: flex;
1596
1763
  align-items: center;
1597
- padding: 12px 16px;
1764
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1598
1765
  border-bottom: 1px solid var(--u-color-border-lighter);
1599
- gap: 8px;
1766
+ gap: var(--u-spacing-2);
1600
1767
  }
1601
- .cp-search-icon { font-size: 1rem; color: var(--u-color-text-muted); }
1768
+ .cp-search-icon { font-size: var(--u-font-md); color: var(--u-color-text-muted); }
1602
1769
  .cp-search-input {
1603
1770
  flex: 1;
1604
1771
  border: none;
1605
1772
  outline: none;
1606
1773
  font-family: inherit;
1607
- font-size: 1rem;
1774
+ font-size: var(--u-font-md);
1608
1775
  color: var(--u-color-text);
1609
1776
  background: none;
1610
1777
  }
1611
1778
  .cp-shortcut-hint {
1612
- font-size: 0.75rem;
1779
+ font-size: var(--u-font-xs);
1613
1780
  padding: 2px 6px;
1614
1781
  background: var(--u-color-bg-hover);
1615
1782
  border-radius: var(--u-radius-sm);
@@ -1619,22 +1786,22 @@ var commandPaletteStyles = `
1619
1786
  .cp-results {
1620
1787
  max-height: 320px;
1621
1788
  overflow-y: auto;
1622
- padding: 4px;
1789
+ padding: var(--u-spacing-1);
1623
1790
  }
1624
1791
  .cp-group-label {
1625
- padding: 8px 12px 4px;
1626
- font-size: 0.75rem;
1627
- font-weight: 600;
1792
+ padding: var(--u-spacing-2) var(--u-spacing-3) var(--u-spacing-1);
1793
+ font-size: var(--u-font-xs);
1794
+ font-weight: var(--u-font-weight-semibold);
1628
1795
  color: var(--u-color-text-muted);
1629
1796
  text-transform: uppercase;
1630
- letter-spacing: 0.05em;
1797
+ letter-spacing: var(--u-letter-spacing-wide);
1631
1798
  }
1632
1799
  .cp-item {
1633
1800
  display: flex;
1634
1801
  align-items: center;
1635
- gap: 8px;
1802
+ gap: var(--u-spacing-2);
1636
1803
  width: 100%;
1637
- padding: 10px 12px;
1804
+ padding: 10px var(--u-spacing-3);
1638
1805
  border: none;
1639
1806
  background: none;
1640
1807
  cursor: pointer;
@@ -1646,23 +1813,23 @@ var commandPaletteStyles = `
1646
1813
  .cp-item:hover { background: var(--u-color-bg-hover); }
1647
1814
  .cp-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1648
1815
  .cp-item-active { background: var(--u-color-bg-selected); }
1649
- .cp-item-label { font-size: 0.875rem; color: var(--u-color-text); flex: 1; }
1650
- .cp-item-desc { font-size: 0.75rem; color: var(--u-color-text-muted); flex: 1; }
1816
+ .cp-item-label { font-size: var(--u-font-sm); color: var(--u-color-text); flex: 1; }
1817
+ .cp-item-desc { font-size: var(--u-font-xs); color: var(--u-color-text-muted); flex: 1; }
1651
1818
  .cp-item-shortcut {
1652
- font-size: 0.75rem;
1819
+ font-size: var(--u-font-xs);
1653
1820
  padding: 2px 6px;
1654
1821
  background: var(--u-color-bg-hover);
1655
1822
  border-radius: var(--u-radius-sm);
1656
1823
  color: var(--u-color-text-muted);
1657
1824
  font-family: inherit;
1658
1825
  }
1659
- .cp-empty { padding: 24px; text-align: center; color: var(--u-color-text-muted); font-size: 0.875rem; }
1826
+ .cp-empty { padding: var(--u-spacing-6); text-align: center; color: var(--u-color-text-muted); font-size: var(--u-font-sm); }
1660
1827
  .cp-footer {
1661
1828
  display: flex;
1662
- gap: 16px;
1663
- padding: 8px 16px;
1829
+ gap: var(--u-spacing-4);
1830
+ padding: var(--u-spacing-2) var(--u-spacing-4);
1664
1831
  border-top: 1px solid var(--u-color-border-lighter);
1665
- font-size: 0.75rem;
1832
+ font-size: var(--u-font-xs);
1666
1833
  color: var(--u-color-text-muted);
1667
1834
  }
1668
1835
  `;
@@ -1681,17 +1848,17 @@ var comboboxStyles = `
1681
1848
  align-items: center;
1682
1849
  border: 1px solid var(--u-color-border-light);
1683
1850
  border-radius: var(--u-radius-md);
1684
- transition: border-color .15s;
1851
+ transition: border-color var(--u-transition-base);
1685
1852
  background: var(--u-color-bg);
1686
1853
  }
1687
1854
  .combobox-input-wrapper:focus-within {
1688
1855
  border-color: var(--u-color-primary-hover);
1689
- box-shadow: 0 0 0 2px rgba(59,130,246,.25);
1856
+ box-shadow: var(--u-shadow-focus);
1690
1857
  }
1691
1858
  .combobox-input {
1692
1859
  font-family: inherit;
1693
- font-size: 14px;
1694
- padding: 8px 12px;
1860
+ font-size: var(--u-font-sm);
1861
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1695
1862
  border: none;
1696
1863
  outline: none;
1697
1864
  background: none;
@@ -1702,29 +1869,29 @@ var comboboxStyles = `
1702
1869
  .combobox-toggle {
1703
1870
  background: none;
1704
1871
  border: none;
1705
- padding: 0 8px;
1872
+ padding: 0 var(--u-spacing-2);
1706
1873
  cursor: pointer;
1707
1874
  color: var(--u-color-text-muted);
1708
- font-size: 12px;
1875
+ font-size: var(--u-font-xs);
1709
1876
  display: flex;
1710
1877
  align-items: center;
1711
1878
  }
1712
1879
  .combobox-listbox {
1713
1880
  position: fixed;
1714
- z-index: 99999;
1881
+ z-index: var(--u-z-dropdown);
1715
1882
  background: var(--u-color-bg);
1716
1883
  border-radius: var(--u-radius-md);
1717
- box-shadow: 0 4px 20px rgba(0,0,0,.1);
1884
+ box-shadow: var(--u-shadow-combobox);
1718
1885
  max-height: 240px;
1719
1886
  overflow-y: auto;
1720
- padding: 4px;
1887
+ padding: var(--u-spacing-1);
1721
1888
  }
1722
1889
  .combobox-option {
1723
1890
  display: block;
1724
1891
  width: 100%;
1725
1892
  font-family: inherit;
1726
- font-size: 0.875rem;
1727
- padding: 8px 12px;
1893
+ font-size: var(--u-font-sm);
1894
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1728
1895
  border: none;
1729
1896
  background: none;
1730
1897
  cursor: pointer;
@@ -1734,9 +1901,9 @@ var comboboxStyles = `
1734
1901
  box-sizing: border-box;
1735
1902
  }
1736
1903
  .combobox-option:hover { background: var(--u-color-bg-hover); }
1737
- .combobox-option.active { color: var(--u-color-primary-hover); font-weight: 500; }
1904
+ .combobox-option.active { color: var(--u-color-primary-hover); font-weight: var(--u-font-weight-medium); }
1738
1905
  .combobox-option:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1739
- .combobox-empty { padding: 12px; text-align: center; color: var(--u-color-text-muted); font-size: 0.875rem; }
1906
+ .combobox-empty { padding: var(--u-spacing-3); text-align: center; color: var(--u-color-text-muted); font-size: var(--u-font-sm); }
1740
1907
  `;
1741
1908
 
1742
1909
  // src/components/styles/toast.ts
@@ -1744,17 +1911,17 @@ var toastStyles = `
1744
1911
  :host {
1745
1912
  display: block;
1746
1913
  position: fixed;
1747
- z-index: 100000;
1914
+ z-index: var(--u-z-toast);
1748
1915
  pointer-events: none;
1749
1916
  }
1750
1917
  .toast-container {
1751
1918
  position: fixed;
1752
1919
  display: flex;
1753
1920
  flex-direction: column;
1754
- gap: 8px;
1755
- padding: 16px;
1921
+ gap: var(--u-spacing-2);
1922
+ padding: var(--u-spacing-4);
1756
1923
  pointer-events: none;
1757
- z-index: 100001;
1924
+ z-index: var(--u-z-toast);
1758
1925
  }
1759
1926
  .toast-top-right { top: 0; right: 0; }
1760
1927
  .toast-top-left { top: 0; left: 0; }
@@ -1766,40 +1933,40 @@ var toastStyles = `
1766
1933
  pointer-events: auto;
1767
1934
  display: flex;
1768
1935
  align-items: flex-start;
1769
- gap: 12px;
1770
- padding: 14px 16px;
1936
+ gap: var(--u-spacing-3);
1937
+ padding: 14px var(--u-spacing-4);
1771
1938
  border-radius: var(--u-radius-lg);
1772
- box-shadow: 0 8px 24px rgba(0,0,0,.12);
1773
- font-size: 0.875rem;
1939
+ box-shadow: var(--u-shadow-lg);
1940
+ font-size: var(--u-font-sm);
1774
1941
  min-width: 280px;
1775
1942
  max-width: 400px;
1776
- animation: u-slide-in-right .2s ease;
1943
+ animation: u-slide-in-right var(--u-transition-slow) ease;
1777
1944
  background: var(--u-color-bg);
1778
1945
  border: 1px solid var(--u-color-border);
1779
1946
  }
1780
1947
  .toast-exit {
1781
- animation: u-slide-out-right .2s ease forwards;
1948
+ animation: u-slide-out-right var(--u-transition-slow) ease forwards;
1782
1949
  }
1783
1950
  .toast-info { border-left: 4px solid var(--u-color-primary); }
1784
- .toast-success { border-left: 4px solid #16a34a; }
1785
- .toast-warning { border-left: 4px solid #d97706; }
1951
+ .toast-success { border-left: 4px solid var(--u-color-success); }
1952
+ .toast-warning { border-left: 4px solid var(--u-color-warning); }
1786
1953
  .toast-error { border-left: 4px solid var(--u-color-danger); }
1787
1954
  .toast-body { flex: 1; }
1788
- .toast-title { font-weight: 600; color: var(--u-color-text); }
1789
- .toast-desc { color: var(--u-color-text-muted); margin-top: 4px; font-size: 0.8rem; }
1955
+ .toast-title { font-weight: var(--u-font-weight-semibold); color: var(--u-color-text); }
1956
+ .toast-desc { color: var(--u-color-text-muted); margin-top: var(--u-spacing-1); font-size: var(--u-font-tiny); }
1790
1957
  .toast-action {
1791
1958
  background: none;
1792
1959
  border: none;
1793
1960
  color: var(--u-color-primary-hover);
1794
1961
  cursor: pointer;
1795
- font-weight: 500;
1962
+ font-weight: var(--u-font-weight-medium);
1796
1963
  font-family: inherit;
1797
- font-size: 0.8rem;
1964
+ font-size: var(--u-font-tiny);
1798
1965
  white-space: nowrap;
1799
1966
  padding: 0;
1800
- margin-top: 4px;
1967
+ margin-top: var(--u-spacing-1);
1801
1968
  }
1802
- .toast-action:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: 2px; }
1969
+ .toast-action:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
1803
1970
  .toast-action:hover { color: var(--u-color-primary-hover); }
1804
1971
  .toast-close {
1805
1972
  background: none;
@@ -1808,10 +1975,10 @@ var toastStyles = `
1808
1975
  color: var(--u-color-text-muted);
1809
1976
  font-size: 1.2rem;
1810
1977
  padding: 0;
1811
- line-height: 1;
1978
+ line-height: var(--u-line-height-none);
1812
1979
  flex-shrink: 0;
1813
1980
  }
1814
- .toast-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: 2px; }
1981
+ .toast-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
1815
1982
  .toast-close:hover { color: var(--u-color-text-secondary); }
1816
1983
  `;
1817
1984
 
@@ -1826,16 +1993,16 @@ var contextMenuStyles = `
1826
1993
  }
1827
1994
  .cm-menu {
1828
1995
  position: fixed;
1829
- z-index: 99999;
1996
+ z-index: var(--u-z-dropdown);
1830
1997
  background: var(--u-color-bg);
1831
1998
  border: 1px solid var(--u-color-border-light);
1832
1999
  border-radius: var(--u-radius-xl);
1833
- box-shadow: 0 8px 24px rgba(0,0,0,.14);
1834
- padding: 4px;
2000
+ box-shadow: var(--u-shadow-lg);
2001
+ padding: var(--u-spacing-1);
1835
2002
  min-width: 180px;
1836
2003
  max-height: 320px;
1837
2004
  overflow-y: auto;
1838
- animation: u-cm-in .12s ease;
2005
+ animation: u-cm-in 120ms ease;
1839
2006
  }
1840
2007
  @keyframes u-cm-in {
1841
2008
  from { opacity: 0; transform: scale(.95); }
@@ -1847,27 +2014,27 @@ var contextMenuStyles = `
1847
2014
  }
1848
2015
  .cm-item {
1849
2016
  font-family: inherit;
1850
- font-size: 0.875rem;
1851
- padding: 8px 12px;
2017
+ font-size: var(--u-font-sm);
2018
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1852
2019
  border: none;
1853
2020
  background: none;
1854
2021
  cursor: pointer;
1855
2022
  color: var(--u-color-text-secondary);
1856
2023
  text-align: left;
1857
2024
  border-radius: var(--u-radius-md);
1858
- transition: background .1s;
2025
+ transition: background var(--u-transition-fast);
1859
2026
  display: flex;
1860
2027
  align-items: center;
1861
- gap: 8px;
2028
+ gap: var(--u-spacing-2);
1862
2029
  width: 100%;
1863
2030
  box-sizing: border-box;
1864
2031
  }
1865
2032
  .cm-item:hover { background: var(--u-color-bg-hover); }
1866
2033
  .cm-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1867
- .cm-item:disabled { opacity: 0.4; cursor: not-allowed; }
1868
- .cm-item-icon { width: 16px; text-align: center; font-size: 1rem; flex-shrink: 0; }
2034
+ .cm-item:disabled { opacity: var(--u-opacity-muted); cursor: not-allowed; }
2035
+ .cm-item-icon { width: var(--u-spacing-4); text-align: center; font-size: var(--u-font-md); flex-shrink: 0; }
1869
2036
  .cm-item-label { flex: 1; }
1870
- .cm-divider { height: 1px; background: var(--u-color-bg-hover); margin: 4px 0; }
2037
+ .cm-divider { height: 1px; background: var(--u-color-bg-hover); margin: var(--u-spacing-1) 0; }
1871
2038
  `;
1872
2039
 
1873
2040
  // src/components/styles/sortable.ts
@@ -1878,11 +2045,11 @@ var sortableStyles = `
1878
2045
  .sortable {
1879
2046
  display: flex;
1880
2047
  flex-direction: column;
1881
- gap: 4px;
2048
+ gap: var(--u-spacing-1);
1882
2049
  }
1883
2050
  .sortable-dragging {
1884
2051
  opacity: 0.9;
1885
- box-shadow: 0 8px 24px rgba(0,0,0,.15);
2052
+ box-shadow: var(--u-shadow-lg);
1886
2053
  border-radius: var(--u-radius-md);
1887
2054
  cursor: grabbing;
1888
2055
  }
@@ -1890,9 +2057,9 @@ var sortableStyles = `
1890
2057
  .sortable-placeholder {
1891
2058
  border: 2px dashed var(--u-color-border-light);
1892
2059
  border-radius: var(--u-radius-md);
1893
- opacity: 0.5;
2060
+ opacity: var(--u-opacity-disabled);
1894
2061
  box-sizing: border-box;
1895
- transition: height 0.15s ease, margin 0.15s ease;
2062
+ transition: height var(--u-transition-base) ease, margin var(--u-transition-base) ease;
1896
2063
  }
1897
2064
  `;
1898
2065
 
@@ -1904,7 +2071,7 @@ var formStyles = `
1904
2071
  .form {
1905
2072
  display: flex;
1906
2073
  flex-direction: column;
1907
- gap: 16px;
2074
+ gap: var(--u-spacing-4);
1908
2075
  }
1909
2076
  `;
1910
2077
 
@@ -1919,35 +2086,35 @@ var badgeStyles = `
1919
2086
  display: inline-flex;
1920
2087
  align-items: center;
1921
2088
  justify-content: center;
1922
- font-weight: 500;
1923
- line-height: 1;
2089
+ font-weight: var(--u-font-weight-medium);
2090
+ line-height: var(--u-line-height-none);
1924
2091
  white-space: nowrap;
1925
2092
  user-select: none;
1926
- transition: background .15s, color .15s;
2093
+ transition: background var(--u-transition-base), color var(--u-transition-base);
1927
2094
  }
1928
2095
  .badge-pill {
1929
- border-radius: 999px;
2096
+ border-radius: var(--u-radius-full);
1930
2097
  }
1931
2098
  .badge-square {
1932
2099
  border-radius: var(--u-radius-sm);
1933
2100
  }
1934
2101
  .badge-sm {
1935
- font-size: 0.6875rem;
2102
+ font-size: var(--u-font-2xs);
1936
2103
  padding: 2px 6px;
1937
- min-height: 16px;
1938
- min-width: 16px;
2104
+ min-height: var(--u-spacing-4);
2105
+ min-width: var(--u-spacing-4);
1939
2106
  }
1940
2107
  .badge-md {
1941
- font-size: 0.75rem;
1942
- padding: 3px 8px;
1943
- min-height: 20px;
1944
- min-width: 20px;
2108
+ font-size: var(--u-font-xs);
2109
+ padding: 3px var(--u-spacing-2);
2110
+ min-height: var(--u-spacing-5);
2111
+ min-width: var(--u-spacing-5);
1945
2112
  }
1946
2113
  .badge-lg {
1947
- font-size: 0.8125rem;
1948
- padding: 4px 10px;
1949
- min-height: 24px;
1950
- min-width: 24px;
2114
+ font-size: var(--u-font-xs);
2115
+ padding: var(--u-spacing-1) 10px;
2116
+ min-height: var(--u-spacing-6);
2117
+ min-width: var(--u-spacing-6);
1951
2118
  }
1952
2119
  .badge-default {
1953
2120
  background: var(--u-color-bg-hover);
@@ -1955,31 +2122,31 @@ var badgeStyles = `
1955
2122
  }
1956
2123
  .badge-primary {
1957
2124
  background: var(--u-color-bg-selected);
1958
- color: #2563eb;
2125
+ color: var(--u-color-primary-hover);
1959
2126
  }
1960
2127
  .badge-success {
1961
- background: #dcfce7;
1962
- color: #15803d;
2128
+ background: var(--u-color-success-bg);
2129
+ color: var(--u-color-success-text);
1963
2130
  }
1964
2131
  .badge-warning {
1965
- background: #fef3c7;
1966
- color: #b45309;
2132
+ background: var(--u-color-warning-bg);
2133
+ color: var(--u-color-warning-text);
1967
2134
  }
1968
2135
  .badge-danger {
1969
- background: #fef2f2;
1970
- color: #dc2626;
2136
+ background: var(--u-color-danger-bg);
2137
+ color: var(--u-color-danger-text);
1971
2138
  }
1972
2139
  .badge-info {
1973
- background: #e0f2fe;
1974
- color: #0369a1;
2140
+ background: var(--u-color-info-bg);
2141
+ color: var(--u-color-info-text);
1975
2142
  }
1976
2143
  .badge-dot {
1977
- width: 8px;
1978
- height: 8px;
2144
+ width: var(--u-spacing-2);
2145
+ height: var(--u-spacing-2);
1979
2146
  padding: 0;
1980
- border-radius: 50%;
1981
- min-width: 8px;
1982
- min-height: 8px;
2147
+ border-radius: var(--u-radius-round);
2148
+ min-width: var(--u-spacing-2);
2149
+ min-height: var(--u-spacing-2);
1983
2150
  }
1984
2151
  .badge-dot.badge-sm {
1985
2152
  width: 6px;
@@ -2004,7 +2171,7 @@ var cardStyles = `
2004
2171
  display: flex;
2005
2172
  flex-direction: column;
2006
2173
  font-family: inherit;
2007
- transition: box-shadow .2s, border-color .2s, transform .2s;
2174
+ transition: box-shadow var(--u-transition-slow), border-color var(--u-transition-slow), transform var(--u-transition-slow);
2008
2175
  position: relative;
2009
2176
  overflow: hidden;
2010
2177
  }
@@ -2012,7 +2179,7 @@ var cardStyles = `
2012
2179
  background: var(--u-color-bg);
2013
2180
  border: 1px solid var(--u-color-border-light);
2014
2181
  border-radius: var(--u-radius-2xl);
2015
- box-shadow: 0 1px 3px rgba(0,0,0,.05);
2182
+ box-shadow: var(--u-shadow-sm);
2016
2183
  }
2017
2184
  .card-outlined {
2018
2185
  background: transparent;
@@ -2023,10 +2190,10 @@ var cardStyles = `
2023
2190
  background: var(--u-color-bg);
2024
2191
  border: 1px solid transparent;
2025
2192
  border-radius: var(--u-radius-2xl);
2026
- box-shadow: 0 4px 16px rgba(0,0,0,.08);
2193
+ box-shadow: var(--u-shadow-md);
2027
2194
  }
2028
2195
  .card-hoverable:hover {
2029
- box-shadow: 0 8px 24px rgba(0,0,0,.12);
2196
+ box-shadow: var(--u-shadow-lg);
2030
2197
  border-color: var(--u-color-border);
2031
2198
  transform: translateY(-2px);
2032
2199
  }
@@ -2052,36 +2219,36 @@ var cardStyles = `
2052
2219
  border-radius: 0 0 var(--u-radius-2xl) var(--u-radius-2xl);
2053
2220
  }
2054
2221
  [part="header"] {
2055
- padding: 16px 20px 0;
2056
- font-weight: 600;
2057
- font-size: 1rem;
2222
+ padding: var(--u-spacing-4) var(--u-spacing-5) 0;
2223
+ font-weight: var(--u-font-weight-semibold);
2224
+ font-size: var(--u-font-md);
2058
2225
  color: var(--u-color-text);
2059
2226
  }
2060
2227
  [part="content"] {
2061
- padding: 16px 20px;
2228
+ padding: var(--u-spacing-4) var(--u-spacing-5);
2062
2229
  flex: 1;
2063
2230
  min-width: 0;
2064
2231
  color: var(--u-color-text-secondary);
2065
- font-size: 0.875rem;
2066
- line-height: 1.6;
2232
+ font-size: var(--u-font-sm);
2233
+ line-height: var(--u-line-height-lg);
2067
2234
  }
2068
2235
  [part="footer"] {
2069
- padding: 0 20px 16px;
2236
+ padding: 0 var(--u-spacing-5) var(--u-spacing-4);
2070
2237
  display: flex;
2071
2238
  align-items: center;
2072
- gap: 8px;
2239
+ gap: var(--u-spacing-2);
2073
2240
  }
2074
2241
  .card-padding-none [part="header"] { padding: 0; }
2075
2242
  .card-padding-none [part="content"] { padding: 0; }
2076
2243
  .card-padding-none [part="footer"] { padding: 0; }
2077
- .card-padding-sm [part="header"] { padding: 12px 14px 0; }
2078
- .card-padding-sm [part="content"] { padding: 12px 14px; }
2079
- .card-padding-sm [part="footer"] { padding: 0 14px 12px; }
2080
- .card-padding-lg [part="header"] { padding: 20px 24px 0; }
2081
- .card-padding-lg [part="content"] { padding: 20px 24px; }
2082
- .card-padding-lg [part="footer"] { padding: 0 24px 20px; }
2244
+ .card-padding-sm [part="header"] { padding: var(--u-spacing-3) 14px 0; }
2245
+ .card-padding-sm [part="content"] { padding: var(--u-spacing-3) 14px; }
2246
+ .card-padding-sm [part="footer"] { padding: 0 14px var(--u-spacing-3); }
2247
+ .card-padding-lg [part="header"] { padding: var(--u-spacing-5) var(--u-spacing-6) 0; }
2248
+ .card-padding-lg [part="content"] { padding: var(--u-spacing-5) var(--u-spacing-6); }
2249
+ .card-padding-lg [part="footer"] { padding: 0 var(--u-spacing-6) var(--u-spacing-5); }
2083
2250
  `;
2084
2251
 
2085
- export { UElement, accordionStyles, animateKeyframes, badgeStyles, boxStyles, breadcrumbStyles, buttonStyles, calendarStyles, cardStyles, checkboxStyles, comboboxStyles, commandPaletteStyles, containerStyles, contextMenuStyles, dataTableStyles, dialogStyles, drawerStyles, dropdownStyles, fieldStyles, formStyles, gridStyles, iconStyles, inputStyles, labelStyles, linkStyles, listStyles, modalStyles, overlayStyles, popoverStyles, presenceStyles, radioStyles, selectStyles, sortableStyles, stackStyles, switchStyles, tableStyles, tabsStyles, textStyles, textareaStyles, toastStyles, tooltipStyles, treeStyles, visuallyHiddenStyles };
2086
- //# sourceMappingURL=chunk-2UKGVIH2.js.map
2087
- //# sourceMappingURL=chunk-2UKGVIH2.js.map
2252
+ export { UElement, accordionStyles, animateKeyframes, badgeStyles, boxStyles, breadcrumbStyles, buttonStyles, calendarStyles, cardStyles, checkboxStyles, comboboxStyles, commandPaletteStyles, containerStyles, contextMenuStyles, dataTableStyles, dialogStyles, drawerStyles, dropdownStyles, fieldStyles, formStyles, getTheme, gridStyles, iconStyles, inputStyles, labelStyles, linkStyles, listStyles, modalStyles, overlayStyles, popoverStyles, presenceStyles, radioStyles, restoreTheme, selectStyles, setTheme, sortableStyles, stackStyles, switchStyles, tableStyles, tabsStyles, textStyles, textareaStyles, toastStyles, tooltipStyles, treeStyles, visuallyHiddenStyles };
2253
+ //# sourceMappingURL=chunk-AOFVLHAJ.js.map
2254
+ //# sourceMappingURL=chunk-AOFVLHAJ.js.map