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