@diniz/webcomponents 1.1.2 → 1.1.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.
package/dist/style.css ADDED
@@ -0,0 +1,1256 @@
1
+ :root {
2
+ --color-primary: #24ec71;
3
+ --color-primary-contrast: #ffffff;
4
+ --color-ink: #0f172a;
5
+ --color-muted: #f1f5f9;
6
+ --color-header: #34a8eb;
7
+ --color-border: #f3f5f7;
8
+ --color-border-strong: #cbd5f5;
9
+ --color-nav-bg: #222222;
10
+ --color-nav-text: #ffffff;
11
+ --shadow-primary: 0 8px 18px rgba(31, 111, 235, 0.25);
12
+ --focus-ring: #9ec5ff;
13
+ --radius-pill: 999px;
14
+ --radius-md: 12px;
15
+ --color-page-bg: #ffffff;
16
+ --color-page-text: #0f172a;
17
+ }
18
+
19
+ body {
20
+ background: var(--color-page-bg);
21
+ color: var(--color-page-text);
22
+ margin: 0;
23
+ font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
24
+ }
25
+
26
+ :host([data-ui="button"]) {
27
+ display: inline-block;
28
+ }
29
+
30
+ :host([data-ui="table"]) {
31
+ display: block;
32
+ }
33
+
34
+ :host([data-ui="layout"]) {
35
+ display: block;
36
+ }
37
+
38
+ :host([data-ui="sidebar"]) {
39
+ display: block;
40
+ }
41
+
42
+ .btn {
43
+ align-items: center;
44
+ border: 1px solid transparent;
45
+ border-radius: var(--radius-pill);
46
+ cursor: pointer;
47
+ display: inline-flex;
48
+ font-family: inherit;
49
+ font-size: 0.95rem;
50
+ font-weight: 600;
51
+ gap: 0.5rem;
52
+ line-height: 1;
53
+ padding: 0.65rem 1.2rem;
54
+ transition: transform 120ms ease, box-shadow 120ms ease, background-color 120ms ease;
55
+ }
56
+
57
+ .btn:focus-visible {
58
+ outline: 3px solid var(--focus-ring);
59
+ outline-offset: 2px;
60
+ }
61
+
62
+ .btn:active:not(:disabled) {
63
+ transform: translateY(1px);
64
+ }
65
+
66
+ .btn:disabled {
67
+ cursor: not-allowed;
68
+ opacity: 0.6;
69
+ }
70
+
71
+ .btn.primary {
72
+ background: var(--color-primary);
73
+ color: var(--color-primary-contrast);
74
+ box-shadow: var(--shadow-primary);
75
+ }
76
+
77
+ .btn.secondary {
78
+ background: var(--color-muted);
79
+ color: var(--color-ink);
80
+ border-color: var(--color-border-strong);
81
+ }
82
+
83
+ .btn.ghost {
84
+ background: transparent;
85
+ color: var(--color-primary);
86
+ border-color: var(--color-border-strong);
87
+ }
88
+ .btn.danger {
89
+ background: #ef4444;
90
+ color: white;
91
+ border-color: #ef4444;
92
+ }
93
+ .btn-danger:hover {
94
+ background: #6626dc;
95
+ border-color: #dc2626;
96
+ }
97
+ .btn.has-icon {
98
+ line-height: 1.2;
99
+ }
100
+
101
+ .btn .btn-icon {
102
+ width: 18px;
103
+ height: 18px;
104
+ flex-shrink: 0;
105
+ }
106
+
107
+ .btn .btn-icon svg {
108
+ width: 100%;
109
+ height: 100%;
110
+ }
111
+
112
+ .btn.icon-only {
113
+ padding: 0.65rem;
114
+ aspect-ratio: 1;
115
+ }
116
+
117
+ .btn.icon-only.sm {
118
+ padding: 0.45rem;
119
+ }
120
+
121
+ .btn.icon-only.lg {
122
+ padding: 0.8rem;
123
+ }
124
+
125
+ .btn.sm .btn-icon {
126
+ width: 14px;
127
+ height: 14px;
128
+ }
129
+
130
+ .btn.lg .btn-icon {
131
+ width: 22px;
132
+ height: 22px;
133
+ }
134
+
135
+ .btn.sm {
136
+ font-size: 0.85rem;
137
+ padding: 0.45rem 0.9rem;
138
+ box-shadow: 0 4px 12px rgba(167, 18, 68, 0.15);
139
+ }
140
+
141
+ .btn.md {
142
+ font-size: 0.95rem;
143
+ padding: 0.65rem 1.2rem;
144
+ }
145
+
146
+ .btn.lg {
147
+ font-size: 1.05rem;
148
+ padding: 0.8rem 1.5rem;
149
+ }
150
+
151
+ .table-wrap {
152
+ border: 1px solid var(--color-border);
153
+ border-radius: var(--radius-md);
154
+ overflow: hidden;
155
+ }
156
+
157
+ table {
158
+ border-collapse: collapse;
159
+ width: 100%;
160
+ }
161
+
162
+ thead {
163
+ background: var(--color-header);
164
+ }
165
+
166
+ th,
167
+ td {
168
+ padding: 0.75rem 1rem;
169
+ text-align: left;
170
+ border-bottom: 1px solid var(--color-border);
171
+ font-size: 0.95rem;
172
+ border-right: 1px solid var(--color-border);
173
+ }
174
+
175
+ tr:last-child td {
176
+ border-bottom: none;
177
+ }
178
+
179
+ .align-left {
180
+ text-align: left;
181
+ }
182
+
183
+ .align-center {
184
+ text-align: center;
185
+ }
186
+
187
+ .align-right {
188
+ text-align: right;
189
+ }
190
+
191
+ .actions-cell {
192
+ display: flex;
193
+ gap: 0.5rem;
194
+ justify-content: center;
195
+ }
196
+
197
+ .app-nav {
198
+ padding: 1rem;
199
+ background: var(--color-nav-bg);
200
+ color: var(--color-nav-text);
201
+ }
202
+
203
+ .app-link {
204
+ color: var(--color-nav-text);
205
+ margin-right: 1rem;
206
+ text-decoration: none;
207
+ }
208
+
209
+ .signal-demo {
210
+ margin-top: 16px;
211
+ display: flex;
212
+ align-items: center;
213
+ gap: 12px;
214
+ }
215
+
216
+ .theme-toggle {
217
+ margin-top: 16px;
218
+ display: flex;
219
+ align-items: center;
220
+ gap: 12px;
221
+ }
222
+
223
+ .data-table {
224
+ margin-top: 15px;
225
+ }
226
+
227
+ .dashboard-layout {
228
+ display: grid;
229
+ grid-template-columns: 220px minmax(0, 1fr);
230
+ gap: 24px;
231
+ padding: 24px;
232
+ }
233
+
234
+ .dashboard-sidebar {
235
+ background: var(--color-muted);
236
+ border: 1px solid var(--color-border);
237
+ border-radius: var(--radius-md);
238
+ padding: 18px;
239
+ }
240
+
241
+ .sidebar-title {
242
+ margin: 0 0 12px;
243
+ font-size: 1rem;
244
+ }
245
+
246
+ .sidebar-nav {
247
+ display: flex;
248
+ flex-direction: column;
249
+ gap: 10px;
250
+ }
251
+
252
+ .sidebar-link {
253
+ color: var(--color-ink);
254
+ text-decoration: none;
255
+ font-weight: 600;
256
+ }
257
+
258
+ .dashboard-main {
259
+ display: flex;
260
+ flex-direction: column;
261
+ gap: 12px;
262
+ }
263
+
264
+ .dashboard-actions {
265
+ display: flex;
266
+ flex-wrap: wrap;
267
+ gap: 12px;
268
+ }
269
+
270
+ @media (max-width: 900px) {
271
+ .dashboard-layout {
272
+ grid-template-columns: 1fr;
273
+ }
274
+ }
275
+
276
+ :host([data-ui="input"]) {
277
+ display: block;
278
+ }
279
+
280
+ .input-wrapper {
281
+ display: flex;
282
+ flex-direction: column;
283
+ gap: 0.35rem;
284
+ }
285
+
286
+ .input-label {
287
+ font-size: 0.9rem;
288
+ font-weight: 600;
289
+ color: var(--color-ink);
290
+ }
291
+
292
+ .input-field {
293
+ padding: 0.6rem 0.85rem;
294
+ font-size: 0.95rem;
295
+ font-family: inherit;
296
+ border: 1.5px solid var(--color-border);
297
+ border-radius: 6px;
298
+ background: var(--color-page-bg);
299
+ color: var(--color-page-text);
300
+ transition: border-color 150ms ease, box-shadow 150ms ease;
301
+ outline: none;
302
+ }
303
+
304
+ .input-field::placeholder {
305
+ color: #94a3b8;
306
+ }
307
+
308
+ .input-field:focus {
309
+ border-color: var(--color-primary);
310
+ box-shadow: 0 0 0 3px rgba(36, 236, 113, 0.15);
311
+ }
312
+
313
+ .input-field:disabled {
314
+ background: var(--color-muted);
315
+ cursor: not-allowed;
316
+ opacity: 0.7;
317
+ }
318
+
319
+ .input-wrapper.invalid .input-field {
320
+ border-color: #ef4444;
321
+ }
322
+
323
+ .input-wrapper.invalid .input-field:focus {
324
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
325
+ }
326
+
327
+ .input-error {
328
+ font-size: 0.8rem;
329
+ color: #ef4444;
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 0.25rem;
333
+ }
334
+
335
+ .input-error.hidden {
336
+ display: none;
337
+ }
338
+ /* ============================================
339
+ CHECKBOX COMPONENT STYLES
340
+ ============================================ */
341
+
342
+ :host([data-ui="checkbox"]) {
343
+ display: inline-flex;
344
+ align-items: center;
345
+ cursor: pointer;
346
+ user-select: none;
347
+ }
348
+
349
+ :host([data-ui="checkbox"][disabled]) {
350
+ cursor: not-allowed;
351
+ opacity: 0.6;
352
+ }
353
+
354
+ .checkbox-container {
355
+ display: inline-flex;
356
+ align-items: center;
357
+ gap: 0.75rem;
358
+ }
359
+
360
+ .checkbox-box {
361
+ position: relative;
362
+ display: inline-flex;
363
+ align-items: center;
364
+ justify-content: center;
365
+ border: 2px solid var(--color-border, #cbd5e1);
366
+ border-radius: var(--radius-sm, 4px);
367
+ background: white;
368
+ transition: all 0.2s;
369
+ flex-shrink: 0;
370
+ box-sizing: border-box;
371
+ }
372
+
373
+ .checkbox-box.size-sm {
374
+ min-width: 16px;
375
+ max-width: 16px;
376
+ min-height: 16px;
377
+ max-height: 16px;
378
+ }
379
+
380
+ .checkbox-box.size-md {
381
+ min-width: 18px;
382
+ max-width: 18px;
383
+ min-height: 18px;
384
+ max-height: 18px;
385
+ }
386
+
387
+ .checkbox-box.size-lg {
388
+ min-width: 20px;
389
+ max-width: 20px;
390
+ min-height: 20px;
391
+ max-height: 20px;
392
+ }
393
+
394
+ .checkbox-box:hover:not(.disabled) {
395
+ border-color: var(--color-primary, #24ec71);
396
+ }
397
+
398
+ .checkbox-box.checked,
399
+ .checkbox-box.indeterminate {
400
+ background: var(--color-primary, #24ec71);
401
+ border-color: var(--color-primary, #24ec71);
402
+ }
403
+
404
+ .checkbox-box.disabled {
405
+ background: var(--color-muted, #f1f5f9);
406
+ cursor: not-allowed;
407
+ }
408
+
409
+ .checkbox-icon {
410
+ display: none;
411
+ color: white;
412
+ position: absolute;
413
+ }
414
+
415
+ .checkbox-box.checked .checkbox-icon.check,
416
+ .checkbox-box.indeterminate .checkbox-icon.minus {
417
+ display: block;
418
+ }
419
+
420
+ .checkbox-icon.check {
421
+ width: 12px;
422
+ height: 12px;
423
+ }
424
+
425
+ .checkbox-icon.minus {
426
+ width: 10px;
427
+ height: 10px;
428
+ }
429
+
430
+ .checkbox-label {
431
+ font-size: 0.95rem;
432
+ color: var(--color-ink, #0f172a);
433
+ line-height: 1.5;
434
+ }
435
+
436
+ .checkbox-container.size-sm .checkbox-label {
437
+ font-size: 0.875rem;
438
+ }
439
+
440
+ .checkbox-container.size-lg .checkbox-label {
441
+ font-size: 1rem;
442
+ }
443
+
444
+ input[type="checkbox"] {
445
+ position: absolute;
446
+ opacity: 0;
447
+ pointer-events: none;
448
+ }
449
+
450
+ /* ============================================
451
+ MODAL COMPONENT STYLES
452
+ ============================================ */
453
+
454
+ .modal-backdrop {
455
+ display: none;
456
+ position: fixed;
457
+ inset: 0;
458
+ background: rgba(0, 0, 0, 0.5);
459
+ backdrop-filter: blur(4px);
460
+ z-index: 9999;
461
+ animation: fadeIn 0.2s ease-out;
462
+ }
463
+
464
+ .modal-backdrop.open {
465
+ display: flex;
466
+ align-items: center;
467
+ justify-content: center;
468
+ padding: 1rem;
469
+ }
470
+
471
+ .modal-content {
472
+ background: var(--color-surface, white);
473
+ border-radius: var(--radius-lg, 16px);
474
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
475
+ max-height: 90vh;
476
+ display: flex;
477
+ flex-direction: column;
478
+ width: 100%;
479
+ animation: slideUp 0.2s ease-out;
480
+ }
481
+
482
+ .modal-content.sm { max-width: 400px; }
483
+ .modal-content.md { max-width: 600px; }
484
+ .modal-content.lg { max-width: 800px; }
485
+ .modal-content.xl { max-width: 1200px; }
486
+ .modal-content.full { max-width: 95vw; }
487
+
488
+ .modal-header {
489
+ padding: 1.5rem;
490
+ border-bottom: 1px solid var(--color-border, #e2e8f0);
491
+ display: flex;
492
+ align-items: center;
493
+ justify-content: space-between;
494
+ }
495
+
496
+ .modal-title {
497
+ font-size: 1.25rem;
498
+ font-weight: 600;
499
+ color: var(--color-ink, #0f172a);
500
+ margin: 0;
501
+ }
502
+
503
+ .modal-close {
504
+ background: none;
505
+ border: none;
506
+ cursor: pointer;
507
+ padding: 0.5rem;
508
+ display: flex;
509
+ align-items: center;
510
+ justify-content: center;
511
+ border-radius: var(--radius-md, 8px);
512
+ color: var(--color-text-muted, #64748b);
513
+ transition: all 0.2s;
514
+ }
515
+
516
+ .modal-close:hover {
517
+ background: var(--color-muted, #f1f5f9);
518
+ color: var(--color-ink, #0f172a);
519
+ }
520
+
521
+ .modal-body {
522
+ padding: 1.5rem;
523
+ overflow-y: auto;
524
+ flex: 1;
525
+ }
526
+
527
+ .modal-footer {
528
+ padding: 1.5rem;
529
+ border-top: 1px solid var(--color-border, #e2e8f0);
530
+ display: flex;
531
+ gap: 0.75rem;
532
+ justify-content: flex-end;
533
+ }
534
+
535
+ @keyframes fadeIn {
536
+ from { opacity: 0; }
537
+ to { opacity: 1; }
538
+ }
539
+
540
+ @keyframes slideUp {
541
+ from {
542
+ opacity: 0;
543
+ transform: translateY(20px);
544
+ }
545
+ to {
546
+ opacity: 1;
547
+ transform: translateY(0);
548
+ }
549
+ }
550
+
551
+ /* ============================================
552
+ SELECT COMPONENT STYLES
553
+ ============================================ */
554
+
555
+ :host([data-ui="select"]) {
556
+ display: block;
557
+ width: 90%;
558
+ }
559
+
560
+ .select-container {
561
+ position: relative;
562
+ width: 100%;
563
+ }
564
+
565
+ .select-label {
566
+ display: block;
567
+ margin-bottom: 0.5rem;
568
+ font-size: 0.875rem;
569
+ font-weight: 500;
570
+ color: var(--color-ink, #0f172a);
571
+ }
572
+
573
+ .select-trigger {
574
+ width: 100%;
575
+ padding: 0.625rem 1rem;
576
+ background: white;
577
+ border: 1px solid var(--color-border, #e2e8f0);
578
+ border-radius: var(--radius-md, 8px);
579
+ display: flex;
580
+ align-items: center;
581
+ justify-content: space-between;
582
+ cursor: pointer;
583
+ transition: all 0.2s;
584
+ font-size: 0.95rem;
585
+ color: var(--color-ink, #0f172a);
586
+ }
587
+
588
+ .select-trigger:hover:not(:disabled) {
589
+ border-color: var(--color-primary, #24ec71);
590
+ }
591
+
592
+ .select-trigger:focus {
593
+ outline: none;
594
+ border-color: var(--color-primary, #24ec71);
595
+ box-shadow: 0 0 0 3px rgba(36, 236, 113, 0.1);
596
+ }
597
+
598
+ .select-trigger:disabled {
599
+ background: var(--color-muted, #f1f5f9);
600
+ cursor: not-allowed;
601
+ opacity: 0.6;
602
+ }
603
+
604
+ .select-trigger.open {
605
+ border-color: var(--color-primary, #24ec71);
606
+ }
607
+
608
+ .select-placeholder {
609
+ color: var(--color-text-muted, #94a3b8);
610
+ flex: 1;
611
+ text-align: left;
612
+ }
613
+
614
+ .select-placeholder.has-selection {
615
+ color: var(--color-ink, #0f172a);
616
+ }
617
+
618
+ .select-arrow {
619
+ display: flex;
620
+ transition: transform 0.2s;
621
+ color: var(--color-text-muted, #64748b);
622
+ }
623
+
624
+ .select-arrow.open {
625
+ transform: rotate(180deg);
626
+ }
627
+
628
+ .select-dropdown {
629
+ position: absolute;
630
+ top: calc(100% + 0.25rem);
631
+ left: 0;
632
+ right: 0;
633
+ background: white;
634
+ border: 1px solid var(--color-border, #e2e8f0);
635
+ border-radius: var(--radius-md, 8px);
636
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
637
+ max-height: 300px;
638
+ overflow-y: auto;
639
+ z-index: 1000;
640
+ display: none;
641
+ animation: slideDown 0.15s ease-out;
642
+ }
643
+
644
+ .select-dropdown.open {
645
+ display: block;
646
+ }
647
+
648
+ .select-search {
649
+ width: 100%;
650
+ padding: 0.625rem 1rem;
651
+ border: none;
652
+ border-bottom: 1px solid var(--color-border, #e2e8f0);
653
+ font-size: 0.95rem;
654
+ outline: none;
655
+ }
656
+
657
+ .select-search:focus {
658
+ background: var(--color-muted, #f1f5f9);
659
+ }
660
+
661
+ .select-option {
662
+ padding: 0.625rem 1rem;
663
+ cursor: pointer;
664
+ transition: background 0.15s;
665
+ color: var(--color-ink, #0f172a);
666
+ font-size: 0.95rem;
667
+ }
668
+
669
+ .select-option:hover:not(.disabled) {
670
+ background: var(--color-muted, #f1f5f9);
671
+ }
672
+
673
+ .select-option.selected {
674
+ background: rgba(36, 236, 113, 0.1);
675
+ color: var(--color-primary, #24ec71);
676
+ font-weight: 500;
677
+ }
678
+
679
+ .select-option.disabled {
680
+ opacity: 0.5;
681
+ cursor: not-allowed;
682
+ }
683
+
684
+ .select-empty {
685
+ padding: 1rem;
686
+ text-align: center;
687
+ color: var(--color-text-muted, #94a3b8);
688
+ font-size: 0.875rem;
689
+ }
690
+
691
+ @keyframes slideDown {
692
+ from {
693
+ opacity: 0;
694
+ transform: translateY(-8px);
695
+ }
696
+ to {
697
+ opacity: 1;
698
+ transform: translateY(0);
699
+ }
700
+ }
701
+
702
+ /* ============================================
703
+ UPLOAD COMPONENT STYLES
704
+ ============================================ */
705
+
706
+ :host([data-ui="upload"]) {
707
+ display: block;
708
+ width: 100%;
709
+ }
710
+
711
+ .upload {
712
+ display: flex;
713
+ flex-direction: column;
714
+ gap: 0.75rem;
715
+ }
716
+
717
+ .upload-label {
718
+ font-size: 0.9rem;
719
+ font-weight: 700;
720
+ color: var(--color-ink);
721
+ }
722
+
723
+ .upload-drop {
724
+ border: 1.5px dashed rgba(36, 236, 113, 0.55);
725
+ border-radius: 16px;
726
+ background: linear-gradient(135deg, rgba(36, 236, 113, 0.08), rgba(52, 168, 235, 0.08));
727
+ padding: 1.25rem 1.5rem;
728
+ position: relative;
729
+ transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
730
+ }
731
+
732
+ .upload-drop.dragging {
733
+ border-color: var(--color-primary);
734
+ box-shadow: 0 16px 30px rgba(36, 236, 113, 0.18);
735
+ transform: translateY(-2px);
736
+ }
737
+
738
+ .upload-drop.disabled {
739
+ opacity: 0.6;
740
+ cursor: not-allowed;
741
+ }
742
+
743
+ .upload-input {
744
+ position: absolute;
745
+ inset: 0;
746
+ opacity: 0;
747
+ cursor: pointer;
748
+ }
749
+
750
+ .upload-content {
751
+ display: grid;
752
+ grid-template-columns: auto 1fr auto;
753
+ gap: 1rem;
754
+ align-items: center;
755
+ }
756
+
757
+ .upload-icon {
758
+ width: 46px;
759
+ height: 46px;
760
+ border-radius: 14px;
761
+ display: grid;
762
+ place-items: center;
763
+ background: #0f172a;
764
+ color: #ffffff;
765
+ box-shadow: 0 12px 20px rgba(15, 23, 42, 0.18);
766
+ }
767
+
768
+ .upload-icon svg {
769
+ width: 20px;
770
+ height: 20px;
771
+ }
772
+
773
+ .upload-title {
774
+ font-weight: 700;
775
+ color: var(--color-ink);
776
+ }
777
+
778
+ .upload-sub {
779
+ font-size: 0.85rem;
780
+ color: var(--color-text-muted, #64748b);
781
+ margin-top: 0.2rem;
782
+ }
783
+
784
+ .upload-btn {
785
+ border: none;
786
+ border-radius: 999px;
787
+ padding: 0.45rem 1rem;
788
+ font-size: 0.85rem;
789
+ font-weight: 700;
790
+ background: #0f172a;
791
+ color: #ffffff;
792
+ cursor: pointer;
793
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
794
+ }
795
+
796
+ .upload-btn:hover:not(:disabled) {
797
+ transform: translateY(-1px);
798
+ box-shadow: 0 10px 16px rgba(15, 23, 42, 0.18);
799
+ }
800
+
801
+ .upload-btn:disabled {
802
+ cursor: not-allowed;
803
+ opacity: 0.5;
804
+ }
805
+
806
+ .upload-helper {
807
+ font-size: 0.85rem;
808
+ color: var(--color-text-muted, #64748b);
809
+ }
810
+
811
+ .upload-list {
812
+ list-style: none;
813
+ padding: 0;
814
+ margin: 0;
815
+ display: grid;
816
+ gap: 0.5rem;
817
+ }
818
+
819
+ .upload-list li {
820
+ display: grid;
821
+ grid-template-columns: 1fr auto auto;
822
+ gap: 0.75rem;
823
+ align-items: center;
824
+ padding: 0.6rem 0.75rem;
825
+ border-radius: 12px;
826
+ background: #ffffff;
827
+ border: 1px solid rgba(148, 163, 184, 0.35);
828
+ font-size: 0.9rem;
829
+ color: var(--color-ink);
830
+ }
831
+
832
+ .upload-meta {
833
+ font-size: 0.78rem;
834
+ color: var(--color-text-muted, #64748b);
835
+ }
836
+
837
+ .upload-remove {
838
+ border: none;
839
+ background: rgba(239, 68, 68, 0.1);
840
+ color: #b91c1c;
841
+ padding: 0.25rem 0.65rem;
842
+ border-radius: 999px;
843
+ font-size: 0.75rem;
844
+ font-weight: 600;
845
+ cursor: pointer;
846
+ }
847
+
848
+ .upload-remove:hover {
849
+ background: rgba(239, 68, 68, 0.2);
850
+ }
851
+
852
+ /* ============================================
853
+ PAGINATION COMPONENT STYLES
854
+ ============================================ */
855
+
856
+ :host([data-ui="pagination"]) {
857
+ display: block;
858
+ }
859
+
860
+ .pagination-container {
861
+ display: flex;
862
+ align-items: center;
863
+ justify-content: space-between;
864
+ gap: 1rem;
865
+ flex-wrap: wrap;
866
+ }
867
+
868
+ .pagination-info {
869
+ font-size: 0.9rem;
870
+ color: var(--color-ink);
871
+ opacity: 0.7;
872
+ }
873
+
874
+ .pagination {
875
+ display: flex;
876
+ align-items: center;
877
+ gap: 0.25rem;
878
+ }
879
+
880
+ .page-btn {
881
+ min-width: 2.5rem;
882
+ height: 2.5rem;
883
+ padding: 0.5rem;
884
+ border: 1px solid var(--color-border);
885
+ background: white;
886
+ color: var(--color-ink);
887
+ font-size: 0.9rem;
888
+ font-weight: 500;
889
+ border-radius: 6px;
890
+ cursor: pointer;
891
+ transition: all 0.2s ease;
892
+ display: flex;
893
+ align-items: center;
894
+ justify-content: center;
895
+ }
896
+
897
+ .page-btn:hover:not(:disabled):not(.active) {
898
+ background: var(--color-muted);
899
+ border-color: var(--color-border-strong);
900
+ }
901
+
902
+ .page-btn:disabled {
903
+ opacity: 0.4;
904
+ cursor: not-allowed;
905
+ }
906
+
907
+ .page-btn.active {
908
+ background: var(--color-primary);
909
+ color: var(--color-primary-contrast);
910
+ border-color: var(--color-primary);
911
+ font-weight: 600;
912
+ }
913
+
914
+ .page-btn.ellipsis {
915
+ border: none;
916
+ background: transparent;
917
+ cursor: default;
918
+ pointer-events: none;
919
+ }
920
+
921
+ .nav-btn {
922
+ padding: 0.5rem 0.75rem;
923
+ }
924
+
925
+ .nav-btn svg {
926
+ width: 16px;
927
+ height: 16px;
928
+ }
929
+
930
+ /* ============================================
931
+ STEPPER COMPONENT STYLES
932
+ ============================================ */
933
+
934
+ :host([data-ui="stepper"]) {
935
+ display: block;
936
+ }
937
+
938
+ .stepper-wrap {
939
+ width: 100%;
940
+ }
941
+
942
+ .stepper-empty {
943
+ padding: 1rem;
944
+ border: 1px dashed var(--color-border);
945
+ border-radius: var(--radius-md);
946
+ color: var(--color-text-muted, #64748b);
947
+ text-align: center;
948
+ font-size: 0.9rem;
949
+ }
950
+
951
+ .stepper {
952
+ list-style: none;
953
+ padding: 0;
954
+ margin: 0;
955
+ display: flex;
956
+ flex-wrap: wrap;
957
+ gap: 1.25rem;
958
+ }
959
+
960
+ .stepper.vertical {
961
+ flex-direction: column;
962
+ gap: 1rem;
963
+ }
964
+
965
+ .step {
966
+ display: flex;
967
+ align-items: center;
968
+ position: relative;
969
+ }
970
+
971
+ .stepper.vertical .step {
972
+ flex-direction: column;
973
+ align-items: flex-start;
974
+ }
975
+
976
+ .step-trigger {
977
+ display: flex;
978
+ align-items: center;
979
+ gap: 0.75rem;
980
+ background: transparent;
981
+ border: none;
982
+ padding: 0;
983
+ cursor: pointer;
984
+ text-align: left;
985
+ font-family: inherit;
986
+ color: var(--color-ink);
987
+ }
988
+
989
+ .step-trigger:disabled {
990
+ cursor: not-allowed;
991
+ opacity: 0.5;
992
+ }
993
+
994
+ .step-node {
995
+ width: 2.1rem;
996
+ height: 2.1rem;
997
+ border-radius: 12px;
998
+ background: var(--color-muted);
999
+ border: 1px solid var(--color-border-strong);
1000
+ display: inline-flex;
1001
+ align-items: center;
1002
+ justify-content: center;
1003
+ font-weight: 700;
1004
+ font-size: 0.9rem;
1005
+ color: var(--color-ink);
1006
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.6);
1007
+ }
1008
+
1009
+ .step-text {
1010
+ display: flex;
1011
+ flex-direction: column;
1012
+ gap: 0.2rem;
1013
+ }
1014
+
1015
+ .step-title {
1016
+ font-weight: 700;
1017
+ letter-spacing: 0.2px;
1018
+ font-size: 0.98rem;
1019
+ }
1020
+
1021
+ .step-desc {
1022
+ font-size: 0.85rem;
1023
+ color: var(--color-text-muted, #64748b);
1024
+ }
1025
+
1026
+ .step-connector {
1027
+ width: 48px;
1028
+ height: 2px;
1029
+ margin: 0 0.65rem;
1030
+ background: linear-gradient(90deg, var(--color-border), rgba(255, 255, 255, 0));
1031
+ flex-shrink: 0;
1032
+ }
1033
+
1034
+ .stepper.vertical .step-connector {
1035
+ width: 2px;
1036
+ height: 28px;
1037
+ margin: 0.65rem 0 0.25rem 1.05rem;
1038
+ background: linear-gradient(180deg, var(--color-border), rgba(255, 255, 255, 0));
1039
+ }
1040
+
1041
+ .step.complete .step-node {
1042
+ background: linear-gradient(135deg, #24ec71 0%, #34a8eb 100%);
1043
+ color: #0f172a;
1044
+ border-color: transparent;
1045
+ box-shadow: 0 8px 18px rgba(36, 236, 113, 0.25);
1046
+ }
1047
+
1048
+ .step.complete .step-connector {
1049
+ background: linear-gradient(90deg, #24ec71, #34a8eb);
1050
+ }
1051
+
1052
+ .stepper.vertical .step.complete .step-connector {
1053
+ background: linear-gradient(180deg, #24ec71, #34a8eb);
1054
+ }
1055
+
1056
+ .step.active .step-node {
1057
+ background: #ffffff;
1058
+ color: var(--color-ink);
1059
+ border-color: var(--color-primary);
1060
+ box-shadow: 0 0 0 4px rgba(36, 236, 113, 0.18), 0 12px 20px rgba(36, 236, 113, 0.22);
1061
+ animation: stepGlow 1.6s ease-in-out infinite;
1062
+ }
1063
+
1064
+ .step.active .step-title {
1065
+ color: var(--color-ink);
1066
+ }
1067
+
1068
+ .step.upcoming .step-title {
1069
+ color: var(--color-ink);
1070
+ opacity: 0.7;
1071
+ }
1072
+
1073
+ .step.error .step-node {
1074
+ background: #fee2e2;
1075
+ border-color: #f87171;
1076
+ color: #991b1b;
1077
+ box-shadow: 0 8px 16px rgba(239, 68, 68, 0.2);
1078
+ }
1079
+
1080
+ .step.warning .step-node {
1081
+ background: #fef3c7;
1082
+ border-color: #f59e0b;
1083
+ color: #92400e;
1084
+ box-shadow: 0 8px 16px rgba(245, 158, 11, 0.2);
1085
+ }
1086
+
1087
+ .stepper.sm .step-node {
1088
+ width: 1.65rem;
1089
+ height: 1.65rem;
1090
+ font-size: 0.75rem;
1091
+ border-radius: 10px;
1092
+ }
1093
+
1094
+ .stepper.sm .step-title {
1095
+ font-size: 0.9rem;
1096
+ }
1097
+
1098
+ .stepper.sm .step-desc {
1099
+ font-size: 0.78rem;
1100
+ }
1101
+
1102
+ .stepper.lg .step-node {
1103
+ width: 2.6rem;
1104
+ height: 2.6rem;
1105
+ font-size: 1.05rem;
1106
+ border-radius: 14px;
1107
+ }
1108
+
1109
+ .stepper.lg .step-title {
1110
+ font-size: 1.1rem;
1111
+ }
1112
+
1113
+ .stepper.lg .step-desc {
1114
+ font-size: 0.92rem;
1115
+ }
1116
+
1117
+ @keyframes stepGlow {
1118
+ 0%,
1119
+ 100% {
1120
+ transform: translateY(0);
1121
+ }
1122
+ 50% {
1123
+ transform: translateY(-2px);
1124
+ }
1125
+ }
1126
+
1127
+ /* ============================================
1128
+ DATE PICKER COMPONENT STYLES
1129
+ ============================================ */
1130
+
1131
+ :host([data-ui="date-picker"]) {
1132
+ display: block;
1133
+ width: 100%;
1134
+ }
1135
+
1136
+ .date-picker-label {
1137
+ display: block;
1138
+ font-size: 0.9rem;
1139
+ font-weight: 500;
1140
+ color: var(--color-ink);
1141
+ margin-bottom: 0.5rem;
1142
+ }
1143
+
1144
+ .date-picker-container {
1145
+ position: relative;
1146
+ display: flex;
1147
+ flex-direction: column;
1148
+ gap: 0.5rem;
1149
+ }
1150
+
1151
+ .date-input-wrapper {
1152
+ position: relative;
1153
+ display: flex;
1154
+ align-items: center;
1155
+ border: 1px solid var(--color-border);
1156
+ border-radius: var(--radius-md);
1157
+ background: white;
1158
+ transition: all 0.2s ease;
1159
+ }
1160
+
1161
+ .date-input-wrapper:hover:not(.disabled) {
1162
+ border-color: var(--color-border-strong);
1163
+ }
1164
+
1165
+ .date-input-wrapper:focus-within {
1166
+ border-color: var(--color-primary);
1167
+ box-shadow: 0 0 0 3px rgba(36, 236, 113, 0.1);
1168
+ outline: none;
1169
+ }
1170
+
1171
+ .date-input-wrapper.disabled {
1172
+ background: var(--color-muted);
1173
+ cursor: not-allowed;
1174
+ opacity: 0.6;
1175
+ }
1176
+
1177
+ .formatted-input {
1178
+ flex: 1;
1179
+ border: none;
1180
+ padding: 0.75rem 1rem;
1181
+ font-size: 0.95rem;
1182
+ font-family: inherit;
1183
+ background: transparent;
1184
+ color: var(--color-ink);
1185
+ outline: none;
1186
+ }
1187
+
1188
+ .formatted-input:disabled {
1189
+ cursor: not-allowed;
1190
+ color: var(--color-ink);
1191
+ opacity: 0.7;
1192
+ }
1193
+
1194
+ .formatted-input::placeholder {
1195
+ color: #94a3b8;
1196
+ opacity: 0.7;
1197
+ }
1198
+
1199
+ .formatted-input.invalid {
1200
+ color: #dc2626;
1201
+ }
1202
+
1203
+ .hidden-date-input {
1204
+ position: absolute;
1205
+ opacity: 0;
1206
+ width: 100%;
1207
+ height: 100%;
1208
+ top: 0;
1209
+ left: 0;
1210
+ pointer-events: none;
1211
+ cursor: pointer;
1212
+ }
1213
+
1214
+ .calendar-btn {
1215
+ padding: 0.5rem;
1216
+ margin-right: 0.5rem;
1217
+ border: none;
1218
+ background: transparent;
1219
+ cursor: pointer;
1220
+ display: flex;
1221
+ align-items: center;
1222
+ justify-content: center;
1223
+ color: var(--color-ink);
1224
+ opacity: 0.6;
1225
+ transition: all 0.2s ease;
1226
+ border-radius: 6px;
1227
+ }
1228
+
1229
+ .calendar-btn:hover:not(:disabled) {
1230
+ background: var(--color-muted);
1231
+ opacity: 1;
1232
+ }
1233
+
1234
+ .calendar-btn:disabled {
1235
+ cursor: not-allowed;
1236
+ opacity: 0.3;
1237
+ }
1238
+
1239
+ .calendar-icon {
1240
+ width: 20px;
1241
+ height: 20px;
1242
+ }
1243
+
1244
+ .format-label {
1245
+ font-size: 0.75rem;
1246
+ color: var(--color-ink);
1247
+ opacity: 0.6;
1248
+ padding: 0 0.25rem;
1249
+ font-weight: 500;
1250
+ }
1251
+
1252
+ #ui-datepicker-div,
1253
+ .datepicker,
1254
+ .react-datepicker-popper {
1255
+ z-index: 99999 !important;
1256
+ }