@avento-space/ts-ui 1.2.2 → 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.
@@ -0,0 +1,2254 @@
1
+ import { effect } from './chunk-Q5RCPPCF.js';
2
+
3
+ // src/core/tokens.ts
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
+ }
114
+ sheet.replaceSync(`
115
+ :host {
116
+ --u-radius-xs: 2px;
117
+ --u-radius-sm: 4px;
118
+ --u-radius-md: 6px;
119
+ --u-radius-lg: 8px;
120
+ --u-radius-xl: 10px;
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;
126
+ --u-font-xs: 0.75rem;
127
+ --u-font-sm: 0.875rem;
128
+ --u-font-md: 1rem;
129
+ --u-font-lg: 1.125rem;
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;
165
+ }
166
+
167
+ @media (prefers-reduced-motion: reduce) {
168
+ *, *::before, *::after {
169
+ animation-duration: 0.01ms !important;
170
+ animation-iteration-count: 1 !important;
171
+ transition-duration: 0.01ms !important;
172
+ }
173
+ }
174
+ `);
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();
213
+
214
+ // src/core/element.ts
215
+ var nextId = 0;
216
+ var UElement = class extends HTMLElement {
217
+ constructor() {
218
+ super();
219
+ this._cleanups = [];
220
+ this._id = ++nextId;
221
+ this._root = this.attachShadow({ mode: "open" });
222
+ try {
223
+ this._root.adoptedStyleSheets = [globalStyles];
224
+ } catch {
225
+ const style = document.createElement("style");
226
+ style.textContent = ":host {}";
227
+ this._root.appendChild(style);
228
+ }
229
+ }
230
+ connectedCallback() {
231
+ this._mount();
232
+ }
233
+ disconnectedCallback() {
234
+ for (const fn of this._cleanups) {
235
+ try {
236
+ fn();
237
+ } catch (e) {
238
+ console.error(e);
239
+ }
240
+ }
241
+ this._cleanups = [];
242
+ }
243
+ adoptEffect(fn) {
244
+ const dispose = effect(fn);
245
+ this._cleanups.push(dispose);
246
+ return dispose;
247
+ }
248
+ };
249
+
250
+ // src/components/styles/button.ts
251
+ var buttonStyles = `
252
+ :host {
253
+ display: inline-block;
254
+ }
255
+ button {
256
+ font-family: inherit;
257
+ font-size: var(--u-font-sm);
258
+ line-height: var(--u-line-height-none);
259
+ border: 1px solid transparent;
260
+ border-radius: var(--u-radius-md);
261
+ cursor: pointer;
262
+ display: inline-flex;
263
+ align-items: center;
264
+ justify-content: center;
265
+ gap: 6px;
266
+ transition: background-color var(--u-transition-base), opacity var(--u-transition-base), box-shadow var(--u-transition-base);
267
+ outline: none;
268
+ }
269
+ button:focus-visible {
270
+ box-shadow: 0 0 0 2px var(--u-color-focus);
271
+ }
272
+ button:disabled {
273
+ opacity: var(--u-opacity-disabled);
274
+ cursor: not-allowed;
275
+ }
276
+ .btn-primary {
277
+ background: var(--u-color-primary);
278
+ color: var(--u-color-white);
279
+ border-color: var(--u-color-primary-hover);
280
+ }
281
+ .btn-primary:hover:not(:disabled) {
282
+ background: var(--u-color-primary-hover);
283
+ }
284
+ .btn-secondary {
285
+ background: var(--u-color-bg-hover);
286
+ color: var(--u-color-text-secondary);
287
+ border-color: var(--u-color-border);
288
+ }
289
+ .btn-secondary:hover:not(:disabled) {
290
+ background: var(--u-color-bg-hover-strong);
291
+ }
292
+ .btn-ghost {
293
+ background: transparent;
294
+ color: var(--u-color-text-secondary);
295
+ border-color: transparent;
296
+ }
297
+ .btn-ghost:hover:not(:disabled) {
298
+ background: var(--u-color-bg-hover);
299
+ }
300
+ .btn-danger {
301
+ background: var(--u-color-danger);
302
+ color: var(--u-color-white);
303
+ border-color: var(--u-color-danger);
304
+ }
305
+ .btn-danger:hover:not(:disabled) {
306
+ background: var(--u-color-danger-hover);
307
+ }
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); }
311
+ .btn-link {
312
+ background: transparent;
313
+ color: var(--u-color-primary-hover);
314
+ border-color: transparent;
315
+ padding: 0;
316
+ height: auto;
317
+ font-size: inherit;
318
+ font-weight: inherit;
319
+ text-decoration: none;
320
+ border-radius: var(--u-radius-xs);
321
+ }
322
+ .btn-link:hover:not(:disabled) {
323
+ background: transparent;
324
+ text-decoration: underline;
325
+ color: var(--u-color-primary-hover);
326
+ }
327
+ .btn-link:disabled {
328
+ opacity: var(--u-opacity-disabled);
329
+ cursor: not-allowed;
330
+ }
331
+ `;
332
+
333
+ // src/components/styles/input.ts
334
+ var inputStyles = `
335
+ :host {
336
+ display: inline-block;
337
+ }
338
+ .input-wrapper {
339
+ position: relative;
340
+ display: flex;
341
+ align-items: center;
342
+ }
343
+ input {
344
+ font-family: inherit;
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);
348
+ border: 1px solid var(--u-color-border-light);
349
+ border-radius: var(--u-radius-md);
350
+ outline: none;
351
+ width: 100%;
352
+ box-sizing: border-box;
353
+ background: var(--u-color-bg);
354
+ color: var(--u-color-text);
355
+ transition: border-color var(--u-transition-base);
356
+ }
357
+ input::placeholder { color: var(--u-color-text-muted); }
358
+ input:focus {
359
+ border-color: var(--u-color-primary-hover);
360
+ box-shadow: var(--u-shadow-focus);
361
+ }
362
+ input:disabled {
363
+ background: var(--u-color-bg-muted);
364
+ color: var(--u-color-text-muted);
365
+ cursor: not-allowed;
366
+ }
367
+ `;
368
+
369
+ // src/components/styles/box.ts
370
+ var boxStyles = `
371
+ :host {
372
+ display: block;
373
+ }
374
+ `;
375
+
376
+ // src/components/styles/list.ts
377
+ var listStyles = `
378
+ :host {
379
+ display: block;
380
+ }
381
+ ul, ol {
382
+ margin: 0;
383
+ padding: 0;
384
+ list-style: none;
385
+ }
386
+ .list-empty {
387
+ padding: var(--u-spacing-6);
388
+ text-align: center;
389
+ color: var(--u-color-text-muted);
390
+ }
391
+ `;
392
+
393
+ // src/components/styles/icon.ts
394
+ var iconStyles = `
395
+ :host {
396
+ display: inline-flex;
397
+ align-items: center;
398
+ justify-content: center;
399
+ }
400
+ svg {
401
+ fill: none;
402
+ stroke: currentColor;
403
+ stroke-linecap: round;
404
+ stroke-linejoin: round;
405
+ }
406
+ `;
407
+
408
+ // src/components/styles/text.ts
409
+ var textStyles = `
410
+ :host {
411
+ display: inline;
412
+ }
413
+ [part="text"] {
414
+ margin: 0;
415
+ font-family: inherit;
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); }
429
+ .text-default { color: inherit; }
430
+ .text-muted { color: var(--u-color-text-muted); }
431
+ .text-accent { color: var(--u-color-primary-hover); }
432
+ .text-danger { color: var(--u-color-danger); }
433
+ .text-success { color: var(--u-color-success); }
434
+ .text-left { text-align: left; }
435
+ .text-center { text-align: center; }
436
+ .text-right { text-align: right; }
437
+ .text-truncate {
438
+ overflow: hidden;
439
+ text-overflow: ellipsis;
440
+ white-space: nowrap;
441
+ }
442
+ `;
443
+
444
+ // src/components/styles/stack.ts
445
+ var stackStyles = `
446
+ :host {
447
+ display: flex;
448
+ }
449
+ [part="stack"] {
450
+ display: flex;
451
+ width: 100%;
452
+ }
453
+ .stack-v {
454
+ flex-direction: column;
455
+ }
456
+ .stack-h {
457
+ flex-direction: row;
458
+ }
459
+ `;
460
+
461
+ // src/components/styles/grid.ts
462
+ var gridStyles = `
463
+ :host {
464
+ display: block;
465
+ }
466
+ [part="grid"] {
467
+ display: grid;
468
+ }
469
+ `;
470
+
471
+ // src/components/styles/overlay.ts
472
+ var overlayStyles = `
473
+ :host {
474
+ position: fixed;
475
+ inset: 0;
476
+ z-index: var(--u-z-backdrop);
477
+ }
478
+ [part="overlay"] {
479
+ position: fixed;
480
+ inset: 0;
481
+ background: var(--u-color-overlay);
482
+ display: flex;
483
+ align-items: center;
484
+ justify-content: center;
485
+ }
486
+ .overlay-blur {
487
+ backdrop-filter: blur(var(--u-blur));
488
+ }
489
+ [hidden] {
490
+ display: none !important;
491
+ }
492
+ `;
493
+
494
+ // src/components/styles/field.ts
495
+ var fieldStyles = `
496
+ :host {
497
+ display: block;
498
+ }
499
+ [part="field"] {
500
+ display: flex;
501
+ flex-direction: column;
502
+ gap: var(--u-spacing-1);
503
+ }
504
+ .field-label {
505
+ font-size: var(--u-font-sm);
506
+ font-weight: var(--u-font-weight-medium);
507
+ color: var(--u-color-text-secondary);
508
+ }
509
+ .field-label-required::after {
510
+ content: ' *';
511
+ color: var(--u-color-danger);
512
+ }
513
+ .field-content {
514
+ display: flex;
515
+ flex-direction: column;
516
+ }
517
+ .field-hint {
518
+ font-size: var(--u-font-xs);
519
+ color: var(--u-color-text-muted);
520
+ }
521
+ .field-error {
522
+ font-size: var(--u-font-xs);
523
+ color: var(--u-color-danger);
524
+ }
525
+ .hidden {
526
+ display: none;
527
+ }
528
+ `;
529
+
530
+ // src/components/styles/checkbox.ts
531
+ var checkboxStyles = `
532
+ :host {
533
+ display: inline-flex;
534
+ align-items: center;
535
+ }
536
+ [part="checkbox"] {
537
+ display: inline-flex;
538
+ align-items: center;
539
+ gap: var(--u-spacing-2);
540
+ cursor: pointer;
541
+ }
542
+ :host(:focus-visible) .checkbox-indicator { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
543
+ input {
544
+ position: absolute;
545
+ opacity: 0;
546
+ width: 0;
547
+ height: 0;
548
+ pointer-events: none;
549
+ }
550
+ .checkbox-indicator {
551
+ display: inline-flex;
552
+ align-items: center;
553
+ justify-content: center;
554
+ width: 18px;
555
+ height: 18px;
556
+ border: 2px solid var(--u-color-border);
557
+ border-radius: var(--u-radius-sm);
558
+ transition: all var(--u-transition-base);
559
+ flex-shrink: 0;
560
+ box-sizing: border-box;
561
+ }
562
+ .checkbox-indicator.checked {
563
+ background: var(--u-color-primary);
564
+ border-color: var(--u-color-primary-hover);
565
+ color: var(--u-color-white);
566
+ }
567
+ .checkbox-indicator svg {
568
+ opacity: 0;
569
+ transition: opacity var(--u-transition-base);
570
+ }
571
+ .checkbox-indicator.checked svg {
572
+ opacity: 1;
573
+ }
574
+ .checkbox-label {
575
+ font-size: var(--u-font-sm);
576
+ color: var(--u-color-text-secondary);
577
+ }
578
+ :host([disabled]) [part="checkbox"] {
579
+ opacity: var(--u-opacity-disabled);
580
+ cursor: not-allowed;
581
+ }
582
+ `;
583
+
584
+ // src/components/styles/select.ts
585
+ var selectStyles = `
586
+ :host {
587
+ display: inline-block;
588
+ position: relative;
589
+ }
590
+ .select-wrapper {
591
+ position: relative;
592
+ display: flex;
593
+ align-items: center;
594
+ }
595
+ .select {
596
+ font-family: inherit;
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);
600
+ border: 1px solid var(--u-color-border-light);
601
+ border-radius: var(--u-radius-md);
602
+ outline: none;
603
+ width: 100%;
604
+ box-sizing: border-box;
605
+ background: var(--u-color-bg);
606
+ color: var(--u-color-text);
607
+ transition: border-color var(--u-transition-base);
608
+ appearance: none;
609
+ -webkit-appearance: none;
610
+ cursor: pointer;
611
+ }
612
+ .select:focus {
613
+ border-color: var(--u-color-primary-hover);
614
+ box-shadow: var(--u-shadow-focus);
615
+ }
616
+ .select:disabled {
617
+ background: var(--u-color-bg-muted);
618
+ color: var(--u-color-text-muted);
619
+ cursor: not-allowed;
620
+ }
621
+ .select-arrow {
622
+ position: absolute;
623
+ right: var(--u-spacing-2);
624
+ pointer-events: none;
625
+ color: var(--u-color-text-muted);
626
+ display: flex;
627
+ align-items: center;
628
+ }
629
+ `;
630
+
631
+ // src/components/styles/link.ts
632
+ var linkStyles = `
633
+ :host {
634
+ display: inline;
635
+ }
636
+ [part="link"] {
637
+ font-family: inherit;
638
+ font-size: inherit;
639
+ line-height: inherit;
640
+ cursor: pointer;
641
+ transition: color var(--u-transition-base);
642
+ text-decoration: none;
643
+ border-radius: var(--u-radius-xs);
644
+ }
645
+ [part="link"]:focus-visible {
646
+ outline: 2px solid var(--u-color-focus);
647
+ outline-offset: 2px;
648
+ }
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); }
652
+ .link-accent:hover { color: var(--u-color-text); text-decoration: underline; }
653
+ .link-muted { color: var(--u-color-text-muted); }
654
+ .link-muted:hover { color: var(--u-color-text-secondary); text-decoration: underline; }
655
+ .link-danger { color: var(--u-color-danger); }
656
+ .link-danger:hover { color: var(--u-color-danger-hover); text-decoration: underline; }
657
+ .link-underline-always { text-decoration: underline; }
658
+ .link-underline-none:hover { text-decoration: none; }
659
+ .link-disabled {
660
+ color: var(--u-color-text-muted) !important;
661
+ cursor: not-allowed;
662
+ pointer-events: none;
663
+ text-decoration: none !important;
664
+ }
665
+ `;
666
+
667
+ // src/components/styles/container.ts
668
+ var containerStyles = `
669
+ :host {
670
+ display: block;
671
+ width: 100%;
672
+ }
673
+ [part="container"] {
674
+ margin: 0 auto;
675
+ width: 100%;
676
+ box-sizing: border-box;
677
+ }
678
+ `;
679
+
680
+ // src/components/styles/dialog.ts
681
+ var dialogStyles = `
682
+ :host {
683
+ display: contents;
684
+ }
685
+ [part="dialog-root"] {
686
+ display: contents;
687
+ }
688
+ `;
689
+
690
+ // src/components/styles/tooltip.ts
691
+ var tooltipStyles = `
692
+ :host {
693
+ position: relative;
694
+ display: inline-flex;
695
+ }
696
+ [part="tooltip"] {
697
+ position: fixed;
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);
702
+ padding: 6px 10px;
703
+ border-radius: var(--u-radius-md);
704
+ pointer-events: none;
705
+ line-height: var(--u-line-height-sm);
706
+ max-width: 200px;
707
+ box-shadow: var(--u-shadow-tooltip);
708
+ animation: u-tooltip-in 120ms ease;
709
+ }
710
+ @keyframes u-tooltip-in {
711
+ from { opacity: 0; transform: translateY(3px); }
712
+ to { opacity: 1; transform: translateY(0); }
713
+ }
714
+ .tooltip-arrow {
715
+ position: absolute;
716
+ width: 6px;
717
+ height: 6px;
718
+ background: var(--u-color-tooltip-bg);
719
+ transform: rotate(45deg);
720
+ }
721
+ .arrow-top { bottom: -3px; left: calc(50% - 3px); }
722
+ .arrow-bottom { top: -3px; left: calc(50% - 3px); }
723
+ .arrow-left { right: -3px; top: calc(50% - 3px); }
724
+ .arrow-right { left: -3px; top: calc(50% - 3px); }
725
+ `;
726
+
727
+ // src/components/styles/textarea.ts
728
+ var textareaStyles = `
729
+ :host {
730
+ display: inline-block;
731
+ }
732
+ .textarea-wrapper {
733
+ position: relative;
734
+ display: flex;
735
+ }
736
+ textarea {
737
+ font-family: inherit;
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);
741
+ border: 1px solid var(--u-color-border-light);
742
+ border-radius: var(--u-radius-md);
743
+ outline: none;
744
+ width: 100%;
745
+ box-sizing: border-box;
746
+ background: var(--u-color-bg);
747
+ color: var(--u-color-text);
748
+ transition: border-color var(--u-transition-base);
749
+ resize: vertical;
750
+ min-height: 60px;
751
+ }
752
+ textarea::placeholder { color: var(--u-color-text-muted); }
753
+ textarea:focus {
754
+ border-color: var(--u-color-primary-hover);
755
+ box-shadow: var(--u-shadow-focus);
756
+ }
757
+ textarea:disabled {
758
+ background: var(--u-color-bg-muted);
759
+ color: var(--u-color-text-muted);
760
+ cursor: not-allowed;
761
+ }
762
+ `;
763
+
764
+ // src/components/styles/radio.ts
765
+ var radioStyles = `
766
+ :host {
767
+ display: block;
768
+ }
769
+ [part="group"] {
770
+ display: flex;
771
+ }
772
+ [part="radio"] {
773
+ display: inline-flex;
774
+ align-items: center;
775
+ gap: var(--u-spacing-2);
776
+ cursor: pointer;
777
+ font-size: var(--u-font-sm);
778
+ color: var(--u-color-text-secondary);
779
+ }
780
+ :host(:focus-visible) .radio-circle { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
781
+ input[type="radio"] {
782
+ position: absolute;
783
+ opacity: 0;
784
+ width: 0;
785
+ height: 0;
786
+ pointer-events: none;
787
+ }
788
+ .radio-circle {
789
+ display: inline-flex;
790
+ align-items: center;
791
+ justify-content: center;
792
+ width: 18px;
793
+ height: 18px;
794
+ border: 2px solid var(--u-color-border);
795
+ border-radius: var(--u-radius-round);
796
+ transition: all var(--u-transition-base);
797
+ flex-shrink: 0;
798
+ box-sizing: border-box;
799
+ }
800
+ .radio-circle.checked {
801
+ border-color: var(--u-color-primary-hover);
802
+ background: var(--u-color-primary);
803
+ box-shadow: inset 0 0 0 3px var(--u-color-white);
804
+ }
805
+ :host([disabled]) [part="radio"] {
806
+ opacity: var(--u-opacity-disabled);
807
+ cursor: not-allowed;
808
+ }
809
+ `;
810
+
811
+ // src/components/styles/switch.ts
812
+ var switchStyles = `
813
+ :host {
814
+ display: inline-flex;
815
+ }
816
+ [part="switch"] {
817
+ display: inline-flex;
818
+ cursor: pointer;
819
+ }
820
+ :host(:focus-visible) .switch-track { outline: 2px solid var(--u-color-focus); outline-offset: 3px; }
821
+ input {
822
+ position: absolute;
823
+ opacity: 0;
824
+ width: 0;
825
+ height: 0;
826
+ pointer-events: none;
827
+ }
828
+ .switch-track {
829
+ width: 40px;
830
+ height: 22px;
831
+ background: var(--u-color-border);
832
+ border-radius: 11px;
833
+ position: relative;
834
+ transition: background var(--u-transition-slow);
835
+ }
836
+ .switch-track.checked {
837
+ background: var(--u-color-primary);
838
+ }
839
+ .switch-thumb {
840
+ position: absolute;
841
+ top: 2px;
842
+ left: 2px;
843
+ width: 18px;
844
+ height: 18px;
845
+ background: var(--u-color-bg);
846
+ border-radius: var(--u-radius-round);
847
+ transition: transform var(--u-transition-slow);
848
+ box-shadow: var(--u-shadow-thumb);
849
+ }
850
+ .switch-track.checked .switch-thumb {
851
+ transform: translateX(18px);
852
+ }
853
+ :host([disabled]) [part="switch"] {
854
+ opacity: var(--u-opacity-disabled);
855
+ cursor: not-allowed;
856
+ }
857
+ `;
858
+
859
+ // src/components/styles/label.ts
860
+ var labelStyles = `
861
+ :host {
862
+ display: inline;
863
+ }
864
+ [part="label"] {
865
+ font-size: var(--u-font-sm);
866
+ font-weight: var(--u-font-weight-medium);
867
+ color: var(--u-color-text-secondary);
868
+ cursor: default;
869
+ }
870
+ .label-required::after {
871
+ content: ' *';
872
+ color: var(--u-color-danger);
873
+ }
874
+ `;
875
+
876
+ // src/components/styles/tree.ts
877
+ var treeStyles = `
878
+ :host {
879
+ display: block;
880
+ }
881
+ [part="tree"] {
882
+ list-style: none;
883
+ margin: 0;
884
+ padding: 0;
885
+ font-size: var(--u-font-sm);
886
+ }
887
+ .tree-node {
888
+ list-style: none;
889
+ }
890
+ .tree-row {
891
+ display: flex;
892
+ align-items: center;
893
+ gap: var(--u-spacing-1);
894
+ padding: var(--u-spacing-1) var(--u-spacing-2);
895
+ cursor: pointer;
896
+ border-radius: var(--u-radius-sm);
897
+ }
898
+ .tree-row:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
899
+ .tree-row:hover {
900
+ background: var(--u-color-bg-hover);
901
+ }
902
+ .tree-toggle {
903
+ width: var(--u-spacing-4);
904
+ flex-shrink: 0;
905
+ text-align: center;
906
+ font-size: var(--u-font-xs);
907
+ color: var(--u-color-text-muted);
908
+ }
909
+ .tree-toggle-spacer {
910
+ width: var(--u-spacing-4);
911
+ flex-shrink: 0;
912
+ }
913
+ .tree-label {
914
+ color: var(--u-color-text-secondary);
915
+ }
916
+ .tree-children {
917
+ list-style: none;
918
+ margin: 0;
919
+ padding: 0;
920
+ }
921
+ `;
922
+
923
+ // src/components/styles/table.ts
924
+ var tableStyles = `
925
+ :host {
926
+ display: block;
927
+ overflow-x: auto;
928
+ }
929
+ .table-wrapper {
930
+ width: 100%;
931
+ }
932
+ .table {
933
+ width: 100%;
934
+ border-collapse: collapse;
935
+ font-size: var(--u-font-sm);
936
+ }
937
+ .table th {
938
+ text-align: left;
939
+ padding: 10px var(--u-spacing-3);
940
+ border-bottom: 2px solid var(--u-color-border-lighter);
941
+ font-weight: var(--u-font-weight-semibold);
942
+ color: var(--u-color-text-secondary);
943
+ white-space: nowrap;
944
+ background: var(--u-color-bg-muted);
945
+ }
946
+ .table th.sortable {
947
+ cursor: pointer;
948
+ user-select: none;
949
+ }
950
+ .table th.sortable:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
951
+ .table th.sortable:hover {
952
+ background: var(--u-color-bg-hover);
953
+ }
954
+ .table td {
955
+ padding: 10px var(--u-spacing-3);
956
+ border-bottom: 1px solid var(--u-color-border-lighter);
957
+ color: var(--u-color-text-muted);
958
+ }
959
+ .table tr:hover td {
960
+ background: var(--u-color-bg-muted);
961
+ }
962
+ `;
963
+
964
+ // src/components/styles/breadcrumb.ts
965
+ var breadcrumbStyles = `
966
+ :host {
967
+ display: block;
968
+ }
969
+ [part="breadcrumb"] {
970
+ font-size: var(--u-font-sm);
971
+ }
972
+ [part="list"] {
973
+ display: flex;
974
+ align-items: center;
975
+ gap: var(--u-spacing-1);
976
+ list-style: none;
977
+ margin: 0;
978
+ padding: 0;
979
+ }
980
+ .breadcrumb-item {
981
+ display: flex;
982
+ align-items: center;
983
+ gap: var(--u-spacing-1);
984
+ color: var(--u-color-text-muted);
985
+ }
986
+ .breadcrumb-item a {
987
+ color: var(--u-color-primary-text);
988
+ text-decoration: none;
989
+ }
990
+ .breadcrumb-item a:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
991
+ .breadcrumb-item a:hover {
992
+ text-decoration: underline;
993
+ }
994
+ .breadcrumb-item[aria-current="page"] {
995
+ color: var(--u-color-text);
996
+ font-weight: var(--u-font-weight-medium);
997
+ }
998
+ .breadcrumb-separator {
999
+ color: var(--u-color-border-light);
1000
+ margin: 0 var(--u-spacing-05);
1001
+ }
1002
+ `;
1003
+
1004
+ // src/components/styles/tabs.ts
1005
+ var tabsStyles = `
1006
+ :host {
1007
+ display: block;
1008
+ }
1009
+ [part="tabs"] {
1010
+ display: flex;
1011
+ flex-direction: column;
1012
+ }
1013
+ [part="tablist"] {
1014
+ display: flex;
1015
+ gap: 0;
1016
+ position: relative;
1017
+ outline: none;
1018
+ }
1019
+ .tablist-underline {
1020
+ border-bottom: 1px solid var(--u-color-border-light);
1021
+ }
1022
+ .tablist-underline .tab-indicator {
1023
+ position: absolute;
1024
+ bottom: 0;
1025
+ height: 2px;
1026
+ background: var(--u-color-primary);
1027
+ transition: left var(--u-transition-slow) ease, width var(--u-transition-slow) ease;
1028
+ border-radius: 1px;
1029
+ }
1030
+ .tablist-pills {
1031
+ gap: var(--u-spacing-1);
1032
+ flex-wrap: wrap;
1033
+ }
1034
+ .tablist-buttons {
1035
+ gap: var(--u-spacing-1);
1036
+ flex-wrap: wrap;
1037
+ }
1038
+ .tablist-full {
1039
+ width: 100%;
1040
+ }
1041
+ .tablist-full .tab-trigger {
1042
+ flex: 1;
1043
+ text-align: center;
1044
+ }
1045
+ .tab-trigger {
1046
+ font-family: inherit;
1047
+ font-size: var(--u-font-sm);
1048
+ padding: 10px var(--u-spacing-4);
1049
+ border: none;
1050
+ background: none;
1051
+ cursor: pointer;
1052
+ color: var(--u-color-text-muted);
1053
+ transition: all var(--u-transition-base);
1054
+ outline: none;
1055
+ display: inline-flex;
1056
+ align-items: center;
1057
+ justify-content: center;
1058
+ gap: var(--u-spacing-2);
1059
+ white-space: nowrap;
1060
+ user-select: none;
1061
+ position: relative;
1062
+ border-radius: 0;
1063
+ }
1064
+ .tab-trigger:hover:not(:disabled):not(.active) {
1065
+ color: var(--u-color-text-secondary);
1066
+ }
1067
+ .tab-trigger.active {
1068
+ color: var(--u-color-primary-text);
1069
+ font-weight: var(--u-font-weight-medium);
1070
+ }
1071
+ .tab-trigger:focus-visible {
1072
+ box-shadow: inset 0 0 0 2px var(--u-color-focus);
1073
+ }
1074
+ .tab-trigger:disabled {
1075
+ opacity: var(--u-opacity-muted);
1076
+ cursor: not-allowed;
1077
+ }
1078
+ .tab-trigger-icon {
1079
+ display: inline-flex;
1080
+ align-items: center;
1081
+ justify-content: center;
1082
+ width: var(--u-spacing-4);
1083
+ height: var(--u-spacing-4);
1084
+ flex-shrink: 0;
1085
+ }
1086
+ .tab-trigger-icon svg {
1087
+ width: var(--u-spacing-4);
1088
+ height: var(--u-spacing-4);
1089
+ }
1090
+ .tablist-pills .tab-trigger {
1091
+ border-radius: var(--u-radius-full);
1092
+ padding: 6px 14px;
1093
+ }
1094
+ .tablist-pills .tab-trigger:hover:not(:disabled) {
1095
+ background: var(--u-color-bg-hover);
1096
+ }
1097
+ .tablist-pills .tab-trigger.active {
1098
+ background: var(--u-color-bg-selected);
1099
+ color: var(--u-color-primary-text);
1100
+ }
1101
+ .tablist-buttons .tab-trigger {
1102
+ border-radius: var(--u-radius-md);
1103
+ padding: 6px 14px;
1104
+ }
1105
+ .tablist-buttons .tab-trigger:hover:not(:disabled) {
1106
+ background: var(--u-color-bg-hover);
1107
+ }
1108
+ .tablist-buttons .tab-trigger.active {
1109
+ background: var(--u-color-primary);
1110
+ color: var(--u-color-white);
1111
+ }
1112
+ [part="tabpanels"] {
1113
+ padding: var(--u-spacing-4) 0;
1114
+ outline: none;
1115
+ }
1116
+ .tab-panel {
1117
+ outline: none;
1118
+ animation: u-tab-panel-in var(--u-transition-base) ease;
1119
+ }
1120
+ @keyframes u-tab-panel-in {
1121
+ from { opacity: 0; }
1122
+ to { opacity: 1; }
1123
+ }
1124
+ `;
1125
+
1126
+ // src/components/styles/visually-hidden.ts
1127
+ var visuallyHiddenStyles = `
1128
+ :host {
1129
+ display: inline;
1130
+ }
1131
+ [part="hidden"] {
1132
+ position: absolute;
1133
+ width: 1px;
1134
+ height: 1px;
1135
+ padding: 0;
1136
+ margin: -1px;
1137
+ overflow: hidden;
1138
+ clip: rect(0,0,0,0);
1139
+ white-space: nowrap;
1140
+ border: 0;
1141
+ }
1142
+ `;
1143
+
1144
+ // src/components/styles/presence.ts
1145
+ var presenceStyles = `
1146
+ [part="presence"] {
1147
+ animation-fill-mode: both;
1148
+ }
1149
+ .presence-enter {
1150
+ opacity: 0;
1151
+ }
1152
+ .presence-enter-active {
1153
+ opacity: 1;
1154
+ transition: opacity var(--duration, 200ms) ease;
1155
+ }
1156
+ .presence-leave {
1157
+ opacity: 1;
1158
+ }
1159
+ .presence-leave-active {
1160
+ opacity: 0;
1161
+ transition: opacity var(--duration, 200ms) ease;
1162
+ }
1163
+ `;
1164
+
1165
+ // src/components/styles/animate.ts
1166
+ var animateKeyframes = `
1167
+ @keyframes u-fade-in {
1168
+ from { opacity: 0; }
1169
+ to { opacity: 1; }
1170
+ }
1171
+ @keyframes u-fade-out {
1172
+ from { opacity: 1; }
1173
+ to { opacity: 0; }
1174
+ }
1175
+ @keyframes u-slide-in-up {
1176
+ from { opacity: 0; transform: translateY(20px); }
1177
+ to { opacity: 1; transform: translateY(0); }
1178
+ }
1179
+ @keyframes u-slide-in-down {
1180
+ from { opacity: 0; transform: translateY(-20px); }
1181
+ to { opacity: 1; transform: translateY(0); }
1182
+ }
1183
+ @keyframes u-slide-in-left {
1184
+ from { opacity: 0; transform: translateX(20px); }
1185
+ to { opacity: 1; transform: translateX(0); }
1186
+ }
1187
+ @keyframes u-slide-in-right {
1188
+ from { opacity: 0; transform: translateX(-20px); }
1189
+ to { opacity: 1; transform: translateX(0); }
1190
+ }
1191
+ @keyframes u-slide-out-up {
1192
+ from { opacity: 1; transform: translateY(0); }
1193
+ to { opacity: 0; transform: translateY(-20px); }
1194
+ }
1195
+ @keyframes u-slide-out-down {
1196
+ from { opacity: 1; transform: translateY(0); }
1197
+ to { opacity: 0; transform: translateY(20px); }
1198
+ }
1199
+ @keyframes u-scale-in {
1200
+ from { opacity: 0; transform: scale(0.95); }
1201
+ to { opacity: 1; transform: scale(1); }
1202
+ }
1203
+ @keyframes u-scale-out {
1204
+ from { opacity: 1; transform: scale(1); }
1205
+ to { opacity: 0; transform: scale(0.95); }
1206
+ }
1207
+ @keyframes u-bounce-in {
1208
+ 0% { opacity: 0; transform: scale(0.3); }
1209
+ 50% { transform: scale(1.05); }
1210
+ 70% { transform: scale(0.9); }
1211
+ 100% { opacity: 1; transform: scale(1); }
1212
+ }
1213
+ `;
1214
+
1215
+ // src/components/styles/modal.ts
1216
+ var modalStyles = `
1217
+ :host {
1218
+ display: contents;
1219
+ }
1220
+ @keyframes u-modal-fade-in {
1221
+ from { opacity: 0; }
1222
+ to { opacity: 1; }
1223
+ }
1224
+ @keyframes u-modal-scale-in {
1225
+ from { opacity: 0; transform: scale(0.95) translateY(8px); }
1226
+ to { opacity: 1; transform: scale(1) translateY(0); }
1227
+ }
1228
+ .modal-backdrop {
1229
+ position: fixed;
1230
+ inset: 0;
1231
+ background: var(--u-color-overlay);
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;
1237
+ }
1238
+ .modal {
1239
+ position: fixed;
1240
+ inset: 0;
1241
+ z-index: var(--u-z-modal);
1242
+ display: flex;
1243
+ align-items: center;
1244
+ justify-content: center;
1245
+ padding: var(--u-spacing-4);
1246
+ }
1247
+ .modal[hidden] {
1248
+ display: none !important;
1249
+ }
1250
+ .modal-wrapper {
1251
+ background: var(--u-color-bg);
1252
+ border-radius: var(--u-radius-2xl);
1253
+ box-shadow: var(--u-shadow-xl);
1254
+ display: flex;
1255
+ flex-direction: column;
1256
+ max-height: 85vh;
1257
+ width: 100%;
1258
+ animation: u-modal-scale-in var(--u-transition-slow) ease;
1259
+ }
1260
+ .modal-sm { max-width: 400px; }
1261
+ .modal-md { max-width: 500px; }
1262
+ .modal-lg { max-width: 640px; }
1263
+ .modal-xl { max-width: 800px; }
1264
+ .modal-full { max-width: calc(100vw - 32px); }
1265
+ .modal-header {
1266
+ display: flex;
1267
+ align-items: center;
1268
+ justify-content: space-between;
1269
+ padding: var(--u-spacing-4) var(--u-spacing-5);
1270
+ border-bottom: 1px solid var(--u-color-border-lighter);
1271
+ gap: var(--u-spacing-3);
1272
+ }
1273
+ .modal-title {
1274
+ font-weight: var(--u-font-weight-semibold);
1275
+ font-size: var(--u-font-lg);
1276
+ color: var(--u-color-text);
1277
+ flex: 1;
1278
+ min-width: 0;
1279
+ overflow: hidden;
1280
+ text-overflow: ellipsis;
1281
+ white-space: nowrap;
1282
+ }
1283
+ .modal-close {
1284
+ background: none;
1285
+ border: none;
1286
+ cursor: pointer;
1287
+ color: var(--u-color-text-muted);
1288
+ padding: var(--u-spacing-1);
1289
+ line-height: var(--u-line-height-none);
1290
+ border-radius: var(--u-radius-md);
1291
+ display: inline-flex;
1292
+ align-items: center;
1293
+ justify-content: center;
1294
+ flex-shrink: 0;
1295
+ transition: color var(--u-transition-base), background var(--u-transition-base);
1296
+ }
1297
+ .modal-close:hover { color: var(--u-color-text-secondary); background: var(--u-color-bg-hover); }
1298
+ .modal-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1299
+ .modal-close svg {
1300
+ width: 18px;
1301
+ height: 18px;
1302
+ }
1303
+ .modal-content {
1304
+ padding: var(--u-spacing-5);
1305
+ overflow-y: auto;
1306
+ flex: 1;
1307
+ color: var(--u-color-text-secondary);
1308
+ font-size: var(--u-font-sm);
1309
+ line-height: var(--u-line-height-lg);
1310
+ }
1311
+ .modal-footer {
1312
+ display: flex;
1313
+ align-items: center;
1314
+ justify-content: flex-end;
1315
+ gap: var(--u-spacing-2);
1316
+ padding: var(--u-spacing-3) var(--u-spacing-5);
1317
+ border-top: 1px solid var(--u-color-border-lighter);
1318
+ }
1319
+ .modal-mobile.modal-wrapper {
1320
+ max-height: calc(100vh - 32px) !important;
1321
+ border-radius: var(--u-radius-xl);
1322
+ }
1323
+ `;
1324
+
1325
+ // src/components/styles/drawer.ts
1326
+ var drawerStyles = `
1327
+ :host {
1328
+ display: contents;
1329
+ }
1330
+ .drawer-backdrop {
1331
+ position: fixed;
1332
+ inset: 0;
1333
+ background: var(--u-color-overlay);
1334
+ z-index: var(--u-z-backdrop);
1335
+ }
1336
+ .drawer {
1337
+ position: fixed;
1338
+ z-index: var(--u-z-modal);
1339
+ }
1340
+ .drawer-right { top: 0; right: 0; height: 100%; }
1341
+ .drawer-left { top: 0; left: 0; height: 100%; }
1342
+ .drawer-top { top: 0; left: 0; width: 100%; }
1343
+ .drawer-bottom { bottom: 0; left: 0; width: 100%; }
1344
+ .drawer-content {
1345
+ background: var(--u-color-bg);
1346
+ display: flex;
1347
+ flex-direction: column;
1348
+ box-shadow: var(--u-shadow-drawer);
1349
+ }
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; }
1354
+ .drawer-open .drawer-content { transform: translate(0,0); }
1355
+ .drawer-header {
1356
+ display: flex;
1357
+ align-items: center;
1358
+ justify-content: space-between;
1359
+ padding: var(--u-spacing-4) var(--u-spacing-5);
1360
+ border-bottom: 1px solid var(--u-color-border-lighter);
1361
+ font-weight: var(--u-font-weight-semibold);
1362
+ font-size: var(--u-font-lg);
1363
+ }
1364
+ .drawer-close {
1365
+ background: none;
1366
+ border: none;
1367
+ font-size: var(--u-font-2xl);
1368
+ cursor: pointer;
1369
+ color: var(--u-color-text-muted);
1370
+ padding: 0;
1371
+ line-height: var(--u-line-height-none);
1372
+ }
1373
+ .drawer-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1374
+ .drawer-close:hover { color: var(--u-color-text-secondary); }
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; }
1377
+ `;
1378
+
1379
+ // src/components/styles/popover.ts
1380
+ var popoverStyles = `
1381
+ :host {
1382
+ position: relative;
1383
+ display: inline-flex;
1384
+ }
1385
+ .popover-trigger {
1386
+ display: inline-flex;
1387
+ }
1388
+ .popover {
1389
+ position: fixed;
1390
+ z-index: var(--u-z-dropdown);
1391
+ filter: drop-shadow(0 8px 24px rgba(0,0,0,.14));
1392
+ }
1393
+ .popover-content {
1394
+ background: var(--u-color-bg);
1395
+ border: 1px solid var(--u-color-border-light);
1396
+ border-radius: var(--u-radius-xl);
1397
+ padding: var(--u-spacing-2);
1398
+ font-size: var(--u-font-sm);
1399
+ color: var(--u-color-text-secondary);
1400
+ min-width: 160px;
1401
+ animation: u-popover-in var(--u-transition-base) ease;
1402
+ }
1403
+ @keyframes u-popover-in {
1404
+ from { opacity: 0; transform: scale(.95); }
1405
+ to { opacity: 1; transform: scale(1); }
1406
+ }
1407
+ .popover-arrow {
1408
+ position: absolute;
1409
+ width: 10px;
1410
+ height: 10px;
1411
+ background: var(--u-color-bg);
1412
+ border: 1px solid var(--u-color-border-light);
1413
+ transform: rotate(45deg);
1414
+ z-index: -1;
1415
+ }
1416
+ .arrow-top { bottom: -5px; left: calc(50% - 5px); border-top: none; border-left: none; }
1417
+ .arrow-bottom { top: -5px; left: calc(50% - 5px); border-bottom: none; border-right: none; }
1418
+ .arrow-left { right: -5px; top: calc(50% - 5px); border-bottom: none; border-left: none; }
1419
+ .arrow-right { left: -5px; top: calc(50% - 5px); border-top: none; border-right: none; }
1420
+ `;
1421
+
1422
+ // src/components/styles/dropdown.ts
1423
+ var dropdownStyles = `
1424
+ :host {
1425
+ position: relative;
1426
+ display: inline-flex;
1427
+ }
1428
+ .dropdown-trigger {
1429
+ display: inline-flex;
1430
+ }
1431
+ .dropdown-menu {
1432
+ position: fixed;
1433
+ z-index: var(--u-z-dropdown);
1434
+ background: var(--u-color-bg);
1435
+ border: 1px solid var(--u-color-border-light);
1436
+ border-radius: var(--u-radius-xl);
1437
+ box-shadow: var(--u-shadow-lg);
1438
+ padding: var(--u-spacing-1);
1439
+ min-width: 180px;
1440
+ outline: none;
1441
+ animation: u-dropdown-in 120ms ease;
1442
+ }
1443
+ @keyframes u-dropdown-in {
1444
+ from { opacity: 0; transform: scale(.95); }
1445
+ to { opacity: 1; transform: scale(1); }
1446
+ }
1447
+ .dropdown-items {
1448
+ display: flex;
1449
+ flex-direction: column;
1450
+ }
1451
+ .dropdown-item {
1452
+ font-family: inherit;
1453
+ font-size: var(--u-font-sm);
1454
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1455
+ border: none;
1456
+ background: none;
1457
+ cursor: pointer;
1458
+ color: var(--u-color-text-secondary);
1459
+ text-align: left;
1460
+ border-radius: var(--u-radius-md);
1461
+ transition: background var(--u-transition-fast);
1462
+ display: flex;
1463
+ align-items: center;
1464
+ gap: var(--u-spacing-2);
1465
+ width: 100%;
1466
+ box-sizing: border-box;
1467
+ }
1468
+ .dropdown-item:hover { background: var(--u-color-bg-hover); }
1469
+ .dropdown-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
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; }
1472
+ .dropdown-item-active { background: var(--u-color-bg-selected); color: var(--u-color-primary-hover); }
1473
+ .dropdown-item-icon {
1474
+ width: var(--u-spacing-4);
1475
+ height: var(--u-spacing-4);
1476
+ flex-shrink: 0;
1477
+ display: inline-flex;
1478
+ align-items: center;
1479
+ justify-content: center;
1480
+ color: var(--u-color-text-muted);
1481
+ }
1482
+ .dropdown-item-icon svg {
1483
+ width: var(--u-spacing-4);
1484
+ height: var(--u-spacing-4);
1485
+ }
1486
+ .dropdown-item-text {
1487
+ flex: 1;
1488
+ min-width: 0;
1489
+ }
1490
+ .dropdown-item-label {
1491
+ display: block;
1492
+ line-height: var(--u-line-height-sm);
1493
+ }
1494
+ .dropdown-item-desc {
1495
+ display: block;
1496
+ font-size: var(--u-font-xs);
1497
+ color: var(--u-color-text-muted);
1498
+ line-height: var(--u-line-height-tight);
1499
+ margin-top: 1px;
1500
+ }
1501
+ .dropdown-item-shortcut {
1502
+ font-size: var(--u-font-xs);
1503
+ color: var(--u-color-text-muted);
1504
+ padding: 2px 6px;
1505
+ background: var(--u-color-bg-hover);
1506
+ border-radius: var(--u-radius-sm);
1507
+ font-family: inherit;
1508
+ flex-shrink: 0;
1509
+ }
1510
+ .dropdown-group-label {
1511
+ font-size: var(--u-font-xs);
1512
+ font-weight: var(--u-font-weight-semibold);
1513
+ color: var(--u-color-text-muted);
1514
+ text-transform: uppercase;
1515
+ letter-spacing: var(--u-letter-spacing-wide);
1516
+ padding: var(--u-spacing-2) var(--u-spacing-3) var(--u-spacing-1);
1517
+ }
1518
+ .dropdown-divider { height: 1px; background: var(--u-color-bg-hover); margin: var(--u-spacing-1) 0; }
1519
+ `;
1520
+
1521
+ // src/components/styles/accordion.ts
1522
+ var accordionStyles = `
1523
+ :host {
1524
+ display: block;
1525
+ }
1526
+ [part="accordion"] {
1527
+ border: 1px solid var(--u-color-border);
1528
+ border-radius: var(--u-radius-lg);
1529
+ overflow: hidden;
1530
+ }
1531
+ .accordion-item {
1532
+ border-bottom: 1px solid var(--u-color-border-lighter);
1533
+ }
1534
+ .accordion-item:last-child { border-bottom: none; }
1535
+ .accordion-header {
1536
+ display: flex;
1537
+ align-items: center;
1538
+ justify-content: space-between;
1539
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1540
+ cursor: pointer;
1541
+ font-weight: var(--u-font-weight-medium);
1542
+ font-size: var(--u-font-sm);
1543
+ color: var(--u-color-text-secondary);
1544
+ transition: background var(--u-transition-base);
1545
+ user-select: none;
1546
+ }
1547
+ .accordion-header:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1548
+ .accordion-header:hover { background: var(--u-color-bg-muted); }
1549
+ .accordion-icon {
1550
+ transition: transform var(--u-transition-slow);
1551
+ font-size: var(--u-font-xs);
1552
+ color: var(--u-color-text-muted);
1553
+ }
1554
+ .accordion-item[open] .accordion-icon { transform: rotate(180deg); }
1555
+ .accordion-content {
1556
+ overflow: hidden;
1557
+ transition: height var(--u-transition-slower) ease;
1558
+ }
1559
+ .accordion-body {
1560
+ padding: 0 var(--u-spacing-4) var(--u-spacing-3);
1561
+ font-size: var(--u-font-sm);
1562
+ color: var(--u-color-text-muted);
1563
+ }
1564
+ `;
1565
+
1566
+ // src/components/styles/calendar.ts
1567
+ var calendarStyles = `
1568
+ :host {
1569
+ display: inline-block;
1570
+ }
1571
+ .calendar {
1572
+ font-size: var(--u-font-sm);
1573
+ width: 280px;
1574
+ background: var(--u-color-bg);
1575
+ border-radius: var(--u-radius-lg);
1576
+ box-shadow: var(--u-shadow-calendar);
1577
+ padding: var(--u-spacing-4);
1578
+ }
1579
+ .cal-header {
1580
+ display: flex;
1581
+ align-items: center;
1582
+ justify-content: space-between;
1583
+ margin-bottom: var(--u-spacing-3);
1584
+ }
1585
+ .cal-title {
1586
+ font-weight: var(--u-font-weight-semibold);
1587
+ color: var(--u-color-text);
1588
+ }
1589
+ .cal-nav-btn {
1590
+ background: none;
1591
+ border: 1px solid var(--u-color-border);
1592
+ border-radius: var(--u-radius-md);
1593
+ width: var(--u-spacing-8);
1594
+ height: var(--u-spacing-8);
1595
+ cursor: pointer;
1596
+ font-size: 1.2rem;
1597
+ display: flex;
1598
+ align-items: center;
1599
+ justify-content: center;
1600
+ color: var(--u-color-text-muted);
1601
+ transition: all var(--u-transition-base);
1602
+ }
1603
+ .cal-nav-btn:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1604
+ .cal-nav-btn:hover {
1605
+ background: var(--u-color-bg-hover);
1606
+ color: var(--u-color-text-secondary);
1607
+ }
1608
+ .cal-day-names {
1609
+ display: grid;
1610
+ grid-template-columns: repeat(7, 1fr);
1611
+ text-align: center;
1612
+ font-size: var(--u-font-xs);
1613
+ color: var(--u-color-text-muted);
1614
+ font-weight: var(--u-font-weight-medium);
1615
+ margin-bottom: var(--u-spacing-2);
1616
+ }
1617
+ .cal-day-name {
1618
+ padding: var(--u-spacing-1) 0;
1619
+ }
1620
+ .cal-days-grid {
1621
+ display: grid;
1622
+ grid-template-columns: repeat(7, 1fr);
1623
+ gap: 2px;
1624
+ }
1625
+ .cal-day {
1626
+ background: none;
1627
+ border: none;
1628
+ border-radius: var(--u-radius-md);
1629
+ width: 100%;
1630
+ aspect-ratio: 1;
1631
+ cursor: pointer;
1632
+ font-size: var(--u-font-sm);
1633
+ color: var(--u-color-text-secondary);
1634
+ transition: all var(--u-transition-fast);
1635
+ font-family: inherit;
1636
+ }
1637
+ .cal-day:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
1638
+ .cal-day:hover { background: var(--u-color-bg-hover); }
1639
+ .cal-day-empty { pointer-events: none; }
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); }
1642
+ .cal-selected:hover { background: var(--u-color-primary-hover); }
1643
+ .cal-disabled { opacity: var(--u-opacity-fade); pointer-events: none; }
1644
+ `;
1645
+
1646
+ // src/components/styles/data-table.ts
1647
+ var dataTableStyles = `
1648
+ :host {
1649
+ display: block;
1650
+ }
1651
+ .data-table {
1652
+ font-size: var(--u-font-sm);
1653
+ border: 1px solid var(--u-color-border);
1654
+ border-radius: var(--u-radius-lg);
1655
+ overflow: hidden;
1656
+ }
1657
+ .dt-toolbar {
1658
+ display: flex;
1659
+ align-items: center;
1660
+ justify-content: space-between;
1661
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1662
+ border-bottom: 1px solid var(--u-color-border);
1663
+ background: var(--u-color-bg-muted);
1664
+ }
1665
+ .dt-search-input {
1666
+ font-family: inherit;
1667
+ font-size: var(--u-font-sm);
1668
+ padding: 6px var(--u-spacing-3);
1669
+ border: 1px solid var(--u-color-border);
1670
+ border-radius: var(--u-radius-md);
1671
+ outline: none;
1672
+ width: 200px;
1673
+ }
1674
+ .dt-search-input:focus {
1675
+ border-color: var(--u-color-primary-text);
1676
+ box-shadow: var(--u-shadow-focus);
1677
+ }
1678
+ .dt-page-info { color: var(--u-color-text-muted); font-size: var(--u-font-xs); }
1679
+ .dt-table-wrapper { overflow-x: auto; }
1680
+ .dt-table { width: 100%; border-collapse: collapse; }
1681
+ .dt-table th {
1682
+ text-align: left;
1683
+ padding: 10px var(--u-spacing-3);
1684
+ border-bottom: 2px solid var(--u-color-border-lighter);
1685
+ font-weight: var(--u-font-weight-semibold);
1686
+ color: var(--u-color-text-secondary);
1687
+ white-space: nowrap;
1688
+ background: var(--u-color-bg-muted);
1689
+ }
1690
+ .dt-table th.dt-sortable { cursor: pointer; user-select: none; }
1691
+ .dt-table th.dt-sortable:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: -2px; }
1692
+ .dt-table th.dt-sortable:hover { background: var(--u-color-bg-hover); }
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); }
1694
+ .dt-table tr:hover td { background: var(--u-color-bg-muted); }
1695
+ .dt-row-selected td { background: var(--u-color-bg-selected); }
1696
+ .dt-col-check { width: 40px; }
1697
+ .dt-empty { text-align: center; color: var(--u-color-text-muted); padding: var(--u-spacing-8); }
1698
+ .dt-pagination {
1699
+ display: flex;
1700
+ align-items: center;
1701
+ justify-content: space-between;
1702
+ padding: var(--u-spacing-2) var(--u-spacing-4);
1703
+ border-top: 1px solid var(--u-color-border);
1704
+ background: var(--u-color-bg-muted);
1705
+ }
1706
+ .dt-page-btn {
1707
+ font-family: inherit;
1708
+ font-size: var(--u-font-xs);
1709
+ padding: 6px var(--u-spacing-3);
1710
+ border: 1px solid var(--u-color-border);
1711
+ border-radius: var(--u-radius-md);
1712
+ background: var(--u-color-bg);
1713
+ cursor: pointer;
1714
+ color: var(--u-color-text-secondary);
1715
+ }
1716
+ .dt-page-btn:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1717
+ .dt-page-btn:hover { background: var(--u-color-bg-hover); }
1718
+ .dt-page-numbers { display: flex; gap: var(--u-spacing-1); }
1719
+ .dt-page-num {
1720
+ font-family: inherit;
1721
+ font-size: var(--u-font-xs);
1722
+ width: var(--u-spacing-8);
1723
+ height: var(--u-spacing-8);
1724
+ border: 1px solid transparent;
1725
+ border-radius: var(--u-radius-md);
1726
+ background: none;
1727
+ cursor: pointer;
1728
+ color: var(--u-color-text-muted);
1729
+ }
1730
+ .dt-page-num:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
1731
+ .dt-page-num:hover { background: var(--u-color-bg-hover); }
1732
+ .dt-page-num.active { background: var(--u-color-primary); color: var(--u-color-white); font-weight: var(--u-font-weight-semibold); }
1733
+ `;
1734
+
1735
+ // src/components/styles/command-palette.ts
1736
+ var commandPaletteStyles = `
1737
+ :host {
1738
+ display: contents;
1739
+ }
1740
+ .cp-backdrop {
1741
+ position: fixed;
1742
+ inset: 0;
1743
+ background: var(--u-color-overlay);
1744
+ z-index: var(--u-z-backdrop);
1745
+ }
1746
+ .cp-dialog {
1747
+ position: fixed;
1748
+ top: 20%;
1749
+ left: 50%;
1750
+ transform: translateX(-50%);
1751
+ z-index: var(--u-z-command-palette);
1752
+ width: 540px;
1753
+ max-width: calc(100vw - 32px);
1754
+ }
1755
+ .cp-dialog-inner {
1756
+ background: var(--u-color-bg);
1757
+ border-radius: var(--u-radius-2xl);
1758
+ box-shadow: var(--u-shadow-command-palette);
1759
+ overflow: hidden;
1760
+ }
1761
+ .cp-search-wrapper {
1762
+ display: flex;
1763
+ align-items: center;
1764
+ padding: var(--u-spacing-3) var(--u-spacing-4);
1765
+ border-bottom: 1px solid var(--u-color-border-lighter);
1766
+ gap: var(--u-spacing-2);
1767
+ }
1768
+ .cp-search-icon { font-size: var(--u-font-md); color: var(--u-color-text-muted); }
1769
+ .cp-search-input {
1770
+ flex: 1;
1771
+ border: none;
1772
+ outline: none;
1773
+ font-family: inherit;
1774
+ font-size: var(--u-font-md);
1775
+ color: var(--u-color-text);
1776
+ background: none;
1777
+ }
1778
+ .cp-shortcut-hint {
1779
+ font-size: var(--u-font-xs);
1780
+ padding: 2px 6px;
1781
+ background: var(--u-color-bg-hover);
1782
+ border-radius: var(--u-radius-sm);
1783
+ color: var(--u-color-text-muted);
1784
+ font-family: inherit;
1785
+ }
1786
+ .cp-results {
1787
+ max-height: 320px;
1788
+ overflow-y: auto;
1789
+ padding: var(--u-spacing-1);
1790
+ }
1791
+ .cp-group-label {
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);
1795
+ color: var(--u-color-text-muted);
1796
+ text-transform: uppercase;
1797
+ letter-spacing: var(--u-letter-spacing-wide);
1798
+ }
1799
+ .cp-item {
1800
+ display: flex;
1801
+ align-items: center;
1802
+ gap: var(--u-spacing-2);
1803
+ width: 100%;
1804
+ padding: 10px var(--u-spacing-3);
1805
+ border: none;
1806
+ background: none;
1807
+ cursor: pointer;
1808
+ text-align: left;
1809
+ border-radius: var(--u-radius-md);
1810
+ font-family: inherit;
1811
+ box-sizing: border-box;
1812
+ }
1813
+ .cp-item:hover { background: var(--u-color-bg-hover); }
1814
+ .cp-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1815
+ .cp-item-active { background: var(--u-color-bg-selected); }
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; }
1818
+ .cp-item-shortcut {
1819
+ font-size: var(--u-font-xs);
1820
+ padding: 2px 6px;
1821
+ background: var(--u-color-bg-hover);
1822
+ border-radius: var(--u-radius-sm);
1823
+ color: var(--u-color-text-muted);
1824
+ font-family: inherit;
1825
+ }
1826
+ .cp-empty { padding: var(--u-spacing-6); text-align: center; color: var(--u-color-text-muted); font-size: var(--u-font-sm); }
1827
+ .cp-footer {
1828
+ display: flex;
1829
+ gap: var(--u-spacing-4);
1830
+ padding: var(--u-spacing-2) var(--u-spacing-4);
1831
+ border-top: 1px solid var(--u-color-border-lighter);
1832
+ font-size: var(--u-font-xs);
1833
+ color: var(--u-color-text-muted);
1834
+ }
1835
+ `;
1836
+
1837
+ // src/components/styles/combobox.ts
1838
+ var comboboxStyles = `
1839
+ :host {
1840
+ display: inline-block;
1841
+ position: relative;
1842
+ }
1843
+ .combobox {
1844
+ position: relative;
1845
+ }
1846
+ .combobox-input-wrapper {
1847
+ display: flex;
1848
+ align-items: center;
1849
+ border: 1px solid var(--u-color-border-light);
1850
+ border-radius: var(--u-radius-md);
1851
+ transition: border-color var(--u-transition-base);
1852
+ background: var(--u-color-bg);
1853
+ }
1854
+ .combobox-input-wrapper:focus-within {
1855
+ border-color: var(--u-color-primary-hover);
1856
+ box-shadow: var(--u-shadow-focus);
1857
+ }
1858
+ .combobox-input {
1859
+ font-family: inherit;
1860
+ font-size: var(--u-font-sm);
1861
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1862
+ border: none;
1863
+ outline: none;
1864
+ background: none;
1865
+ width: 100%;
1866
+ box-sizing: border-box;
1867
+ color: var(--u-color-text);
1868
+ }
1869
+ .combobox-toggle {
1870
+ background: none;
1871
+ border: none;
1872
+ padding: 0 var(--u-spacing-2);
1873
+ cursor: pointer;
1874
+ color: var(--u-color-text-muted);
1875
+ font-size: var(--u-font-xs);
1876
+ display: flex;
1877
+ align-items: center;
1878
+ }
1879
+ .combobox-listbox {
1880
+ position: fixed;
1881
+ z-index: var(--u-z-dropdown);
1882
+ background: var(--u-color-bg);
1883
+ border-radius: var(--u-radius-md);
1884
+ box-shadow: var(--u-shadow-combobox);
1885
+ max-height: 240px;
1886
+ overflow-y: auto;
1887
+ padding: var(--u-spacing-1);
1888
+ }
1889
+ .combobox-option {
1890
+ display: block;
1891
+ width: 100%;
1892
+ font-family: inherit;
1893
+ font-size: var(--u-font-sm);
1894
+ padding: var(--u-spacing-2) var(--u-spacing-3);
1895
+ border: none;
1896
+ background: none;
1897
+ cursor: pointer;
1898
+ color: var(--u-color-text-secondary);
1899
+ text-align: left;
1900
+ border-radius: var(--u-radius-sm);
1901
+ box-sizing: border-box;
1902
+ }
1903
+ .combobox-option:hover { background: var(--u-color-bg-hover); }
1904
+ .combobox-option.active { color: var(--u-color-primary-hover); font-weight: var(--u-font-weight-medium); }
1905
+ .combobox-option:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
1906
+ .combobox-empty { padding: var(--u-spacing-3); text-align: center; color: var(--u-color-text-muted); font-size: var(--u-font-sm); }
1907
+ `;
1908
+
1909
+ // src/components/styles/toast.ts
1910
+ var toastStyles = `
1911
+ :host {
1912
+ display: block;
1913
+ position: fixed;
1914
+ z-index: var(--u-z-toast);
1915
+ pointer-events: none;
1916
+ }
1917
+ .toast-container {
1918
+ position: fixed;
1919
+ display: flex;
1920
+ flex-direction: column;
1921
+ gap: var(--u-spacing-2);
1922
+ padding: var(--u-spacing-4);
1923
+ pointer-events: none;
1924
+ z-index: var(--u-z-toast);
1925
+ }
1926
+ .toast-top-right { top: 0; right: 0; }
1927
+ .toast-top-left { top: 0; left: 0; }
1928
+ .toast-top-center { top: 0; left: 50%; transform: translateX(-50%); }
1929
+ .toast-bottom-right { bottom: 0; right: 0; flex-direction: column-reverse; }
1930
+ .toast-bottom-left { bottom: 0; left: 0; flex-direction: column-reverse; }
1931
+ .toast-bottom-center { bottom: 0; left: 50%; transform: translateX(-50%); flex-direction: column-reverse; }
1932
+ .toast {
1933
+ pointer-events: auto;
1934
+ display: flex;
1935
+ align-items: flex-start;
1936
+ gap: var(--u-spacing-3);
1937
+ padding: 14px var(--u-spacing-4);
1938
+ border-radius: var(--u-radius-lg);
1939
+ box-shadow: var(--u-shadow-lg);
1940
+ font-size: var(--u-font-sm);
1941
+ min-width: 280px;
1942
+ max-width: 400px;
1943
+ animation: u-slide-in-right var(--u-transition-slow) ease;
1944
+ background: var(--u-color-bg);
1945
+ border: 1px solid var(--u-color-border);
1946
+ }
1947
+ .toast-exit {
1948
+ animation: u-slide-out-right var(--u-transition-slow) ease forwards;
1949
+ }
1950
+ .toast-info { border-left: 4px solid var(--u-color-primary); }
1951
+ .toast-success { border-left: 4px solid var(--u-color-success); }
1952
+ .toast-warning { border-left: 4px solid var(--u-color-warning); }
1953
+ .toast-error { border-left: 4px solid var(--u-color-danger); }
1954
+ .toast-body { flex: 1; }
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); }
1957
+ .toast-action {
1958
+ background: none;
1959
+ border: none;
1960
+ color: var(--u-color-primary-hover);
1961
+ cursor: pointer;
1962
+ font-weight: var(--u-font-weight-medium);
1963
+ font-family: inherit;
1964
+ font-size: var(--u-font-tiny);
1965
+ white-space: nowrap;
1966
+ padding: 0;
1967
+ margin-top: var(--u-spacing-1);
1968
+ }
1969
+ .toast-action:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
1970
+ .toast-action:hover { color: var(--u-color-primary-hover); }
1971
+ .toast-close {
1972
+ background: none;
1973
+ border: none;
1974
+ cursor: pointer;
1975
+ color: var(--u-color-text-muted);
1976
+ font-size: 1.2rem;
1977
+ padding: 0;
1978
+ line-height: var(--u-line-height-none);
1979
+ flex-shrink: 0;
1980
+ }
1981
+ .toast-close:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; border-radius: var(--u-radius-xs); }
1982
+ .toast-close:hover { color: var(--u-color-text-secondary); }
1983
+ `;
1984
+
1985
+ // src/components/styles/context-menu.ts
1986
+ var contextMenuStyles = `
1987
+ :host {
1988
+ position: relative;
1989
+ display: inline-flex;
1990
+ }
1991
+ .cm-trigger {
1992
+ display: inline;
1993
+ }
1994
+ .cm-menu {
1995
+ position: fixed;
1996
+ z-index: var(--u-z-dropdown);
1997
+ background: var(--u-color-bg);
1998
+ border: 1px solid var(--u-color-border-light);
1999
+ border-radius: var(--u-radius-xl);
2000
+ box-shadow: var(--u-shadow-lg);
2001
+ padding: var(--u-spacing-1);
2002
+ min-width: 180px;
2003
+ max-height: 320px;
2004
+ overflow-y: auto;
2005
+ animation: u-cm-in 120ms ease;
2006
+ }
2007
+ @keyframes u-cm-in {
2008
+ from { opacity: 0; transform: scale(.95); }
2009
+ to { opacity: 1; transform: scale(1); }
2010
+ }
2011
+ .cm-items {
2012
+ display: flex;
2013
+ flex-direction: column;
2014
+ }
2015
+ .cm-item {
2016
+ font-family: inherit;
2017
+ font-size: var(--u-font-sm);
2018
+ padding: var(--u-spacing-2) var(--u-spacing-3);
2019
+ border: none;
2020
+ background: none;
2021
+ cursor: pointer;
2022
+ color: var(--u-color-text-secondary);
2023
+ text-align: left;
2024
+ border-radius: var(--u-radius-md);
2025
+ transition: background var(--u-transition-fast);
2026
+ display: flex;
2027
+ align-items: center;
2028
+ gap: var(--u-spacing-2);
2029
+ width: 100%;
2030
+ box-sizing: border-box;
2031
+ }
2032
+ .cm-item:hover { background: var(--u-color-bg-hover); }
2033
+ .cm-item:focus-visible { box-shadow: 0 0 0 2px var(--u-color-focus); }
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; }
2036
+ .cm-item-label { flex: 1; }
2037
+ .cm-divider { height: 1px; background: var(--u-color-bg-hover); margin: var(--u-spacing-1) 0; }
2038
+ `;
2039
+
2040
+ // src/components/styles/sortable.ts
2041
+ var sortableStyles = `
2042
+ :host {
2043
+ display: block;
2044
+ }
2045
+ .sortable {
2046
+ display: flex;
2047
+ flex-direction: column;
2048
+ gap: var(--u-spacing-1);
2049
+ }
2050
+ .sortable-dragging {
2051
+ opacity: 0.9;
2052
+ box-shadow: var(--u-shadow-lg);
2053
+ border-radius: var(--u-radius-md);
2054
+ cursor: grabbing;
2055
+ }
2056
+ .sortable-item:focus-visible { outline: 2px solid var(--u-color-focus); outline-offset: 2px; }
2057
+ .sortable-placeholder {
2058
+ border: 2px dashed var(--u-color-border-light);
2059
+ border-radius: var(--u-radius-md);
2060
+ opacity: var(--u-opacity-disabled);
2061
+ box-sizing: border-box;
2062
+ transition: height var(--u-transition-base) ease, margin var(--u-transition-base) ease;
2063
+ }
2064
+ `;
2065
+
2066
+ // src/components/styles/form.ts
2067
+ var formStyles = `
2068
+ :host {
2069
+ display: block;
2070
+ }
2071
+ .form {
2072
+ display: flex;
2073
+ flex-direction: column;
2074
+ gap: var(--u-spacing-4);
2075
+ }
2076
+ `;
2077
+
2078
+ // src/components/styles/badge.ts
2079
+ var badgeStyles = `
2080
+ :host {
2081
+ display: inline-flex;
2082
+ vertical-align: middle;
2083
+ }
2084
+ [part="badge"] {
2085
+ font-family: inherit;
2086
+ display: inline-flex;
2087
+ align-items: center;
2088
+ justify-content: center;
2089
+ font-weight: var(--u-font-weight-medium);
2090
+ line-height: var(--u-line-height-none);
2091
+ white-space: nowrap;
2092
+ user-select: none;
2093
+ transition: background var(--u-transition-base), color var(--u-transition-base);
2094
+ }
2095
+ .badge-pill {
2096
+ border-radius: var(--u-radius-full);
2097
+ }
2098
+ .badge-square {
2099
+ border-radius: var(--u-radius-sm);
2100
+ }
2101
+ .badge-sm {
2102
+ font-size: var(--u-font-2xs);
2103
+ padding: 2px 6px;
2104
+ min-height: var(--u-spacing-4);
2105
+ min-width: var(--u-spacing-4);
2106
+ }
2107
+ .badge-md {
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);
2112
+ }
2113
+ .badge-lg {
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);
2118
+ }
2119
+ .badge-default {
2120
+ background: var(--u-color-bg-hover);
2121
+ color: var(--u-color-text-secondary);
2122
+ }
2123
+ .badge-primary {
2124
+ background: var(--u-color-bg-selected);
2125
+ color: var(--u-color-primary-hover);
2126
+ }
2127
+ .badge-success {
2128
+ background: var(--u-color-success-bg);
2129
+ color: var(--u-color-success-text);
2130
+ }
2131
+ .badge-warning {
2132
+ background: var(--u-color-warning-bg);
2133
+ color: var(--u-color-warning-text);
2134
+ }
2135
+ .badge-danger {
2136
+ background: var(--u-color-danger-bg);
2137
+ color: var(--u-color-danger-text);
2138
+ }
2139
+ .badge-info {
2140
+ background: var(--u-color-info-bg);
2141
+ color: var(--u-color-info-text);
2142
+ }
2143
+ .badge-dot {
2144
+ width: var(--u-spacing-2);
2145
+ height: var(--u-spacing-2);
2146
+ padding: 0;
2147
+ border-radius: var(--u-radius-round);
2148
+ min-width: var(--u-spacing-2);
2149
+ min-height: var(--u-spacing-2);
2150
+ }
2151
+ .badge-dot.badge-sm {
2152
+ width: 6px;
2153
+ height: 6px;
2154
+ min-width: 6px;
2155
+ min-height: 6px;
2156
+ }
2157
+ .badge-dot.badge-lg {
2158
+ width: 10px;
2159
+ height: 10px;
2160
+ min-width: 10px;
2161
+ min-height: 10px;
2162
+ }
2163
+ `;
2164
+
2165
+ // src/components/styles/card.ts
2166
+ var cardStyles = `
2167
+ :host {
2168
+ display: block;
2169
+ }
2170
+ [part="card"] {
2171
+ display: flex;
2172
+ flex-direction: column;
2173
+ font-family: inherit;
2174
+ transition: box-shadow var(--u-transition-slow), border-color var(--u-transition-slow), transform var(--u-transition-slow);
2175
+ position: relative;
2176
+ overflow: hidden;
2177
+ }
2178
+ .card-default {
2179
+ background: var(--u-color-bg);
2180
+ border: 1px solid var(--u-color-border-light);
2181
+ border-radius: var(--u-radius-2xl);
2182
+ box-shadow: var(--u-shadow-sm);
2183
+ }
2184
+ .card-outlined {
2185
+ background: transparent;
2186
+ border: 1px solid var(--u-color-border-light);
2187
+ border-radius: var(--u-radius-2xl);
2188
+ }
2189
+ .card-elevated {
2190
+ background: var(--u-color-bg);
2191
+ border: 1px solid transparent;
2192
+ border-radius: var(--u-radius-2xl);
2193
+ box-shadow: var(--u-shadow-md);
2194
+ }
2195
+ .card-hoverable:hover {
2196
+ box-shadow: var(--u-shadow-lg);
2197
+ border-color: var(--u-color-border);
2198
+ transform: translateY(-2px);
2199
+ }
2200
+ .card-image {
2201
+ width: 100%;
2202
+ overflow: hidden;
2203
+ line-height: 0;
2204
+ }
2205
+ .card-image img,
2206
+ .card-image ::slotted(img) {
2207
+ width: 100%;
2208
+ height: auto;
2209
+ display: block;
2210
+ object-fit: cover;
2211
+ }
2212
+ .card-image-full {
2213
+ border-radius: 0;
2214
+ }
2215
+ .card-image-top {
2216
+ border-radius: var(--u-radius-2xl) var(--u-radius-2xl) 0 0;
2217
+ }
2218
+ .card-image-bottom {
2219
+ border-radius: 0 0 var(--u-radius-2xl) var(--u-radius-2xl);
2220
+ }
2221
+ [part="header"] {
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);
2225
+ color: var(--u-color-text);
2226
+ }
2227
+ [part="content"] {
2228
+ padding: var(--u-spacing-4) var(--u-spacing-5);
2229
+ flex: 1;
2230
+ min-width: 0;
2231
+ color: var(--u-color-text-secondary);
2232
+ font-size: var(--u-font-sm);
2233
+ line-height: var(--u-line-height-lg);
2234
+ }
2235
+ [part="footer"] {
2236
+ padding: 0 var(--u-spacing-5) var(--u-spacing-4);
2237
+ display: flex;
2238
+ align-items: center;
2239
+ gap: var(--u-spacing-2);
2240
+ }
2241
+ .card-padding-none [part="header"] { padding: 0; }
2242
+ .card-padding-none [part="content"] { padding: 0; }
2243
+ .card-padding-none [part="footer"] { padding: 0; }
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); }
2250
+ `;
2251
+
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