@metropolle/design-system 1.0.0-beta.2 → 1.0.0-beta.2025.10.2.18.1677567

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.
Files changed (52) hide show
  1. package/README.md +1 -0
  2. package/dist/css/compat/back.css +466 -0
  3. package/dist/css/components.css +1182 -2
  4. package/dist/css/mermaid.css +163 -0
  5. package/dist/css/tokens.css +53 -0
  6. package/dist/react/components/react/DataTable/DataTable.d.ts +4 -0
  7. package/dist/react/components/react/DataTable/DataTable.d.ts.map +1 -0
  8. package/dist/react/components/react/DataTable/TableHeader.d.ts +4 -0
  9. package/dist/react/components/react/DataTable/TableHeader.d.ts.map +1 -0
  10. package/dist/react/components/react/DataTable/TableRow.d.ts +4 -0
  11. package/dist/react/components/react/DataTable/TableRow.d.ts.map +1 -0
  12. package/dist/react/components/react/DataTable/examples.d.ts +28 -0
  13. package/dist/react/components/react/DataTable/examples.d.ts.map +1 -0
  14. package/dist/react/components/react/DataTable/index.d.ts +7 -0
  15. package/dist/react/components/react/DataTable/index.d.ts.map +1 -0
  16. package/dist/react/components/react/DataTable/migration-example.d.ts +46 -0
  17. package/dist/react/components/react/DataTable/migration-example.d.ts.map +1 -0
  18. package/dist/react/components/react/DataTable/renderers.d.ts +24 -0
  19. package/dist/react/components/react/DataTable/renderers.d.ts.map +1 -0
  20. package/dist/react/components/react/DataTable/types.d.ts +57 -0
  21. package/dist/react/components/react/DataTable/types.d.ts.map +1 -0
  22. package/dist/react/components/react/Modal/ConfirmDialog.d.ts +17 -0
  23. package/dist/react/components/react/Modal/ConfirmDialog.d.ts.map +1 -0
  24. package/dist/react/components/react/Modal/Modal.d.ts +12 -0
  25. package/dist/react/components/react/Modal/Modal.d.ts.map +1 -0
  26. package/dist/react/components/react/Modal/ModalBody.d.ts +9 -0
  27. package/dist/react/components/react/Modal/ModalBody.d.ts.map +1 -0
  28. package/dist/react/components/react/Modal/ModalFooter.d.ts +8 -0
  29. package/dist/react/components/react/Modal/ModalFooter.d.ts.map +1 -0
  30. package/dist/react/components/react/Modal/ModalHeader.d.ts +11 -0
  31. package/dist/react/components/react/Modal/ModalHeader.d.ts.map +1 -0
  32. package/dist/react/components/react/Modal/index.d.ts +6 -0
  33. package/dist/react/components/react/Modal/index.d.ts.map +1 -0
  34. package/dist/react/components/react/Select/Select.d.ts +20 -0
  35. package/dist/react/components/react/Select/Select.d.ts.map +1 -0
  36. package/dist/react/components/react/Select/index.d.ts +2 -0
  37. package/dist/react/components/react/Select/index.d.ts.map +1 -0
  38. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts +28 -0
  39. package/dist/react/components/react/ThemeToggle/ThemeToggle.d.ts.map +1 -0
  40. package/dist/react/components/react/ThemeToggle/index.d.ts +3 -0
  41. package/dist/react/components/react/ThemeToggle/index.d.ts.map +1 -0
  42. package/dist/react/components/react/Typography/Typography.d.ts.map +1 -1
  43. package/dist/react/components/react/index.d.ts +11 -0
  44. package/dist/react/components/react/index.d.ts.map +1 -1
  45. package/dist/react/index.d.ts +11 -0
  46. package/dist/react/index.esm.js +827 -4
  47. package/dist/react/index.esm.js.map +1 -1
  48. package/dist/react/index.js +844 -2
  49. package/dist/react/index.js.map +1 -1
  50. package/dist/tokens/index.d.ts +19 -24
  51. package/dist/tokens/index.js +55 -2
  52. package/package.json +21 -13
@@ -42,6 +42,178 @@
42
42
  width: 100%;
43
43
  }
44
44
 
45
+ /* =========================
46
+ Modal Styles
47
+ ========================= */
48
+
49
+ /* Modal overlay styles */
50
+ .mds-modal-overlay,
51
+ .modal-overlay {
52
+ position: fixed !important;
53
+ top: 0 !important;
54
+ left: 0 !important;
55
+ right: 0 !important;
56
+ bottom: 0 !important;
57
+ background-color: transparent !important;
58
+ backdrop-filter: blur(4px) !important;
59
+ z-index: 9999 !important;
60
+ display: flex !important;
61
+ align-items: center !important;
62
+ justify-content: center !important;
63
+ }
64
+
65
+ /* Modal card styles - Liquid Glass Effect */
66
+ .mds-modal-overlay .mds-modal-card,
67
+ .modal-overlay .mds-modal-card {
68
+ background: rgba(255, 255, 255, 0.3) !important;
69
+ backdrop-filter: blur(20px) !important;
70
+ -webkit-backdrop-filter: blur(20px) !important;
71
+ border: 1px solid rgba(255, 255, 255, 0.4) !important;
72
+ box-shadow:
73
+ 0 8px 32px rgba(0, 0, 0, 0.2) !important,
74
+ 0 0 0 1px rgba(255, 255, 255, 0.2) !important,
75
+ inset 0 1px 0 rgba(255, 255, 255, 0.4) !important;
76
+ color: var(--text-primary) !important;
77
+ min-width: 320px !important;
78
+ max-width: 600px !important;
79
+ width: 90vw !important;
80
+ border-radius: 16px !important;
81
+ position: relative !important;
82
+ overflow: hidden !important;
83
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
84
+ transform: translate(0, 0) !important;
85
+ }
86
+
87
+ /* Inner glow effect */
88
+ .mds-modal-overlay .mds-modal-card::before,
89
+ .modal-overlay .mds-modal-card::before {
90
+ content: '' !important;
91
+ position: absolute !important;
92
+ top: 0 !important;
93
+ left: 0 !important;
94
+ right: 0 !important;
95
+ bottom: 0 !important;
96
+ background: linear-gradient(
97
+ 135deg,
98
+ rgba(255, 255, 255, 0.1) 0%,
99
+ rgba(255, 255, 255, 0.05) 50%,
100
+ rgba(255, 255, 255, 0.02) 100%
101
+ ) !important;
102
+ border-radius: 16px !important;
103
+ pointer-events: none !important;
104
+ z-index: -1 !important;
105
+ }
106
+
107
+ /* Border glow */
108
+ .mds-modal-overlay .mds-modal-card::after,
109
+ .modal-overlay .mds-modal-card::after {
110
+ content: '' !important;
111
+ position: absolute !important;
112
+ top: -1px !important;
113
+ left: -1px !important;
114
+ right: -1px !important;
115
+ bottom: -1px !important;
116
+ background: linear-gradient(
117
+ 45deg,
118
+ rgba(255, 255, 255, 0.3),
119
+ rgba(255, 255, 255, 0.1),
120
+ rgba(255, 255, 255, 0.05),
121
+ rgba(255, 255, 255, 0.1),
122
+ rgba(255, 255, 255, 0.3)
123
+ ) !important;
124
+ border-radius: 16px !important;
125
+ z-index: -2 !important;
126
+ opacity: 0.6 !important;
127
+ animation: mdsLiquidBorder 3s ease-in-out infinite !important;
128
+ }
129
+
130
+ @keyframes mdsLiquidBorder {
131
+ 0%, 100% { opacity: 0.6; transform: scale(1); }
132
+ 50% { opacity: 0.8; transform: scale(1.02); }
133
+ }
134
+
135
+ /* No hover lift or color change */
136
+ .mds-modal-overlay .mds-modal-card,
137
+ .mds-modal-overlay .mds-modal-card:hover,
138
+ .modal-overlay .mds-modal-card,
139
+ .modal-overlay .mds-modal-card:hover {
140
+ transform: none !important;
141
+ }
142
+ .mds-modal-overlay .mds-modal-card:hover::after,
143
+ .modal-overlay .mds-modal-card:hover::after {
144
+ opacity: 0.6 !important;
145
+ animation-duration: 3s !important;
146
+ }
147
+
148
+ /* Light theme */
149
+ html[data-theme="light"] .mds-modal-overlay .mds-modal-card,
150
+ html[data-theme="light"] .modal-overlay .mds-modal-card {
151
+ background: rgba(255, 255, 255, 0.35) !important;
152
+ border: 1px solid rgba(255, 255, 255, 0.5) !important;
153
+ box-shadow:
154
+ 0 8px 32px rgba(0, 0, 0, 0.15) !important,
155
+ 0 0 0 1px rgba(255, 255, 255, 0.3) !important,
156
+ inset 0 1px 0 rgba(255, 255, 255, 0.5) !important;
157
+ }
158
+
159
+ /* Dark theme */
160
+ html[data-theme="dark"] .mds-modal-overlay .mds-modal-card,
161
+ html:not([data-theme]) .mds-modal-overlay .mds-modal-card,
162
+ html[data-theme="dark"] .modal-overlay .mds-modal-card,
163
+ html:not([data-theme]) .modal-overlay .mds-modal-card {
164
+ background: rgba(30, 41, 59, 0.5) !important;
165
+ border: 1px solid rgba(255, 255, 255, 0.35) !important;
166
+ box-shadow:
167
+ 0 8px 32px rgba(0, 0, 0, 0.5) !important,
168
+ 0 0 0 1px rgba(255, 255, 255, 0.25) !important,
169
+ inset 0 1px 0 rgba(255, 255, 255, 0.3) !important;
170
+ }
171
+
172
+ /* Header close button sizing + alignment */
173
+ .mds-modal-header > button[aria-label="Fechar"] {
174
+ /* Size and reset */
175
+ font-size: 1rem !important;
176
+ line-height: 1 !important;
177
+ transition: none !important;
178
+ padding: 0 !important;
179
+ background: transparent !important;
180
+ border: none !important;
181
+ /* Colors from DS tokens with robust fallback */
182
+ color: var(--mds-color-text-secondary, var(--text-secondary, rgba(0,0,0,0.65))) !important;
183
+ /* Absolute centering like the left icon */
184
+ position: absolute !important;
185
+ right: 16px !important;
186
+ top: 50% !important;
187
+ transform: translateY(-50%) !important;
188
+ width: 32px !important;
189
+ height: 32px !important;
190
+ display: inline-flex !important;
191
+ align-items: center !important;
192
+ justify-content: center !important;
193
+ }
194
+ .mds-modal-header > button[aria-label="Fechar"]:hover,
195
+ .mds-modal-header > button[aria-label="Fechar"]:focus,
196
+ .mds-modal-header > button[aria-label="Fechar"]:focus-visible {
197
+ /* Keep centered on interactive states and avoid lifts/shadows */
198
+ position: absolute !important;
199
+ right: 16px !important;
200
+ top: 50% !important;
201
+ transform: translateY(-50%) !important;
202
+ box-shadow: none !important;
203
+ transition: none !important;
204
+ color: var(--mds-color-text-primary, var(--text-primary, #111827)) !important;
205
+ }
206
+
207
+ /* Responsive modal */
208
+ @media (max-width: 768px) {
209
+ .mds-modal-overlay .mds-modal-card,
210
+ .modal-overlay .mds-modal-card {
211
+ min-width: 90vw !important;
212
+ max-width: 95vw !important;
213
+ margin: 20px !important;
214
+ }
215
+ }
216
+
45
217
  /* Button Sizes */
46
218
  .mds-button--sm {
47
219
  padding: var(--mds-spacing-sm) var(--mds-spacing-md);
@@ -275,7 +447,7 @@
275
447
  font-size: var(--mds-typography-fontSize-4xl);
276
448
  line-height: var(--mds-typography-lineHeight-tight);
277
449
  letter-spacing: var(--mds-typography-letterSpacing-brand);
278
- font-weight: var(--mds-typography-fontWeight-normal);
450
+ font-weight: var(--mds-typography-fontWeight-bold);
279
451
  color: var(--mds-color-text-primary);
280
452
  }
281
453
 
@@ -327,7 +499,1015 @@
327
499
  outline-offset: 2px;
328
500
  }
329
501
 
502
+ /* Dashboard Components */
503
+
504
+ /* Dashboard Action Controls */
505
+ .mds-dashboard-controls {
506
+ display: flex;
507
+ align-items: center;
508
+ gap: var(--mds-spacing-md);
509
+ }
510
+
511
+ /* Period Filter Dropdown */
512
+ .mds-period-filter {
513
+ position: relative;
514
+ display: inline-block;
515
+ }
516
+
517
+ .mds-period-filter__select {
518
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
519
+ font-weight: var(--mds-typography-fontWeight-medium);
520
+ font-size: var(--mds-typography-fontSize-sm);
521
+ font-family: var(--mds-typography-fontFamily-brand);
522
+ border-radius: var(--mds-spacing-borderRadius-md);
523
+ cursor: pointer;
524
+ outline: none;
525
+ -webkit-appearance: none;
526
+ -moz-appearance: none;
527
+ appearance: none;
528
+ background-repeat: no-repeat;
529
+ background-size: 16px;
530
+ padding-right: 2rem;
531
+ min-width: 140px;
532
+ transition: var(--mds-effects-transition-normal);
533
+
534
+ /* Theme-specific styles are applied via CSS custom properties */
535
+ background-color: var(--mds-dashboard-control-bg);
536
+ color: var(--mds-dashboard-control-color);
537
+ border: 1px solid var(--mds-dashboard-control-border);
538
+ background-image: var(--mds-dashboard-control-dropdown-icon);
539
+ background-position: right 8px center;
540
+ box-shadow: var(--mds-dashboard-control-shadow);
541
+ }
542
+
543
+ .mds-period-filter__select:hover:not(:disabled) {
544
+ background-color: var(--mds-dashboard-control-bg-hover);
545
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
546
+ }
547
+
548
+ .mds-period-filter__select:disabled {
549
+ opacity: var(--mds-effects-opacity-disabled);
550
+ cursor: not-allowed;
551
+ }
552
+
553
+ /* Dropdown Options Styling - High specificity to override compat rules */
554
+ select.mds-period-filter__select option {
555
+ background-color: var(--mds-dashboard-control-option-bg) !important;
556
+ color: var(--mds-dashboard-control-option-color) !important;
557
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
558
+ -webkit-appearance: none !important;
559
+ }
560
+
561
+ select.mds-period-filter__select option:hover,
562
+ select.mds-period-filter__select option:focus,
563
+ select.mds-period-filter__select option:checked {
564
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
565
+ color: var(--mds-dashboard-control-option-color-hover) !important;
566
+ }
567
+
568
+ /* Enhanced contrast for webkit-based browsers */
569
+ select.mds-period-filter__select option:focus,
570
+ select.mds-period-filter__select option:active,
571
+ select.mds-period-filter__select option[selected] {
572
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
573
+ color: var(--mds-dashboard-control-option-color-hover) !important;
574
+ font-weight: 500 !important;
575
+ }
576
+
577
+ /* Additional styling for browsers that support it */
578
+ .mds-period-filter__select::-webkit-scrollbar {
579
+ width: 8px;
580
+ }
581
+
582
+ .mds-period-filter__select::-webkit-scrollbar-track {
583
+ background: var(--mds-dashboard-control-option-bg);
584
+ }
585
+
586
+ .mds-period-filter__select::-webkit-scrollbar-thumb {
587
+ background: var(--mds-dashboard-control-border);
588
+ border-radius: 4px;
589
+ }
590
+
591
+ .mds-period-filter__select::-webkit-scrollbar-thumb:hover {
592
+ background: var(--mds-dashboard-control-border-disabled);
593
+ }
594
+
595
+ /* =========================
596
+ Generic Dropdown/Select Component
597
+ ========================= */
598
+
599
+ /* Generic dropdown container */
600
+ .mds-dropdown {
601
+ position: relative;
602
+ display: inline-block;
603
+ }
604
+
605
+ /* Generic themed select - inherits dashboard control styling */
606
+ .mds-select-themed {
607
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md) !important;
608
+ font-weight: var(--mds-typography-fontWeight-medium) !important;
609
+ font-size: var(--mds-typography-fontSize-sm) !important;
610
+ font-family: var(--mds-typography-fontFamily-brand) !important;
611
+ border-radius: var(--mds-spacing-borderRadius-md) !important;
612
+ cursor: pointer !important;
613
+ outline: none !important;
614
+ -webkit-appearance: none !important;
615
+ -moz-appearance: none !important;
616
+ appearance: none !important;
617
+ background-repeat: no-repeat !important;
618
+ background-size: 16px !important;
619
+ padding-right: 2rem !important;
620
+ transition: var(--mds-effects-transition-normal) !important;
621
+
622
+ /* Theme-specific styles are applied via CSS custom properties */
623
+ background-color: var(--mds-dashboard-control-bg) !important;
624
+ color: var(--mds-dashboard-control-color) !important;
625
+ border: 1px solid var(--mds-dashboard-control-border) !important;
626
+ background-image: var(--mds-dashboard-control-dropdown-icon) !important;
627
+ background-position: right 8px center !important;
628
+ box-shadow: var(--mds-dashboard-control-shadow) !important;
629
+ }
630
+
631
+ .mds-select-themed:hover:not(:disabled) {
632
+ background-color: var(--mds-dashboard-control-bg-hover) !important;
633
+ box-shadow: var(--mds-dashboard-control-shadow-hover) !important;
634
+ }
635
+
636
+ .mds-select-themed:disabled {
637
+ opacity: var(--mds-effects-opacity-disabled) !important;
638
+ cursor: not-allowed !important;
639
+ }
640
+
641
+ /* Dropdown Options Styling - High specificity to override compat rules */
642
+ select.mds-select-themed option {
643
+ background-color: var(--mds-dashboard-control-option-bg) !important;
644
+ color: var(--mds-dashboard-control-option-color) !important;
645
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
646
+ -webkit-appearance: none !important;
647
+ }
648
+
649
+ select.mds-select-themed option:hover,
650
+ select.mds-select-themed option:focus,
651
+ select.mds-select-themed option:checked {
652
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
653
+ color: var(--mds-dashboard-control-option-color-hover) !important;
654
+ }
655
+
656
+ /* Enhanced contrast for webkit-based browsers */
657
+ select.mds-select-themed option:focus,
658
+ select.mds-select-themed option:active,
659
+ select.mds-select-themed option[selected] {
660
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
661
+ color: var(--mds-dashboard-control-option-color-hover) !important;
662
+ font-weight: 500 !important;
663
+ }
664
+
665
+ /* Maximum specificity for geo dropdowns to ensure they always work */
666
+ html .mds-dropdown select.mds-select-themed option {
667
+ background-color: var(--mds-dashboard-control-option-bg) !important;
668
+ color: var(--mds-dashboard-control-option-color) !important;
669
+ }
670
+
671
+ html .mds-dropdown select.mds-select-themed option:hover,
672
+ html .mds-dropdown select.mds-select-themed option:focus,
673
+ html .mds-dropdown select.mds-select-themed option:checked {
674
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
675
+ color: var(--mds-dashboard-control-option-color-hover) !important;
676
+ }
677
+
678
+ /* Absolute specificity to override any browser or other CSS */
679
+ html body .mds-dropdown select.mds-select-themed option,
680
+ html body div .mds-dropdown select.mds-select-themed option {
681
+ background-color: var(--mds-dashboard-control-option-bg) !important;
682
+ color: var(--mds-dashboard-control-option-color) !important;
683
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
684
+ font-size: var(--mds-typography-fontSize-sm) !important;
685
+ font-family: var(--mds-typography-fontFamily-brand) !important;
686
+ }
687
+
688
+ html body .mds-dropdown select.mds-select-themed option:hover,
689
+ html body .mds-dropdown select.mds-select-themed option:focus,
690
+ html body .mds-dropdown select.mds-select-themed option:checked,
691
+ html body div .mds-dropdown select.mds-select-themed option:hover,
692
+ html body div .mds-dropdown select.mds-select-themed option:focus,
693
+ html body div .mds-dropdown select.mds-select-themed option:checked {
694
+ background-color: var(--mds-dashboard-control-option-bg-hover) !important;
695
+ color: var(--mds-dashboard-control-option-color-hover) !important;
696
+ font-weight: 500 !important;
697
+ }
698
+
699
+ /* Ultimate specificity safeguard for geo dropdowns */
700
+ html body div.mds-dropdown select.mds-select-themed {
701
+ background-color: var(--mds-dashboard-control-bg) !important;
702
+ color: var(--mds-dashboard-control-color) !important;
703
+ border: 1px solid var(--mds-dashboard-control-border) !important;
704
+ background-image: var(--mds-dashboard-control-dropdown-icon) !important;
705
+ background-position: right 8px center !important;
706
+ background-repeat: no-repeat !important;
707
+ background-size: 16px !important;
708
+ padding-right: 2rem !important;
709
+ }
710
+
711
+ /* Additional styling for browsers that support it */
712
+ .mds-select-themed::-webkit-scrollbar {
713
+ width: 8px;
714
+ }
715
+
716
+ .mds-select-themed::-webkit-scrollbar-track {
717
+ background: var(--mds-dashboard-control-option-bg);
718
+ }
719
+
720
+ .mds-select-themed::-webkit-scrollbar-thumb {
721
+ background: var(--mds-dashboard-control-border);
722
+ border-radius: 4px;
723
+ }
724
+
725
+ .mds-select-themed::-webkit-scrollbar-thumb:hover {
726
+ background: var(--mds-dashboard-control-border-disabled);
727
+ }
728
+
729
+ /* Compatibility alias - maps period filter to generic themed select */
730
+ .mds-period-filter__select {
731
+ /* Copy all styles from .mds-select-themed for full compatibility */
732
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
733
+ font-weight: var(--mds-typography-fontWeight-medium);
734
+ font-size: var(--mds-typography-fontSize-sm);
735
+ font-family: var(--mds-typography-fontFamily-brand);
736
+ border-radius: var(--mds-spacing-borderRadius-md);
737
+ cursor: pointer;
738
+ outline: none;
739
+ -webkit-appearance: none;
740
+ -moz-appearance: none;
741
+ appearance: none;
742
+ background-repeat: no-repeat;
743
+ background-size: 16px;
744
+ padding-right: 2rem;
745
+ min-width: 140px;
746
+ transition: var(--mds-effects-transition-normal);
747
+
748
+ /* Theme-specific styles are applied via CSS custom properties */
749
+ background-color: var(--mds-dashboard-control-bg);
750
+ color: var(--mds-dashboard-control-color);
751
+ border: 1px solid var(--mds-dashboard-control-border);
752
+ background-image: var(--mds-dashboard-control-dropdown-icon);
753
+ background-position: right 8px center;
754
+ box-shadow: var(--mds-dashboard-control-shadow);
755
+ }
756
+
757
+ .mds-period-filter__select:hover:not(:disabled) {
758
+ background-color: var(--mds-dashboard-control-bg-hover);
759
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
760
+ }
761
+
762
+ .mds-period-filter__select:disabled {
763
+ opacity: var(--mds-effects-opacity-disabled);
764
+ cursor: not-allowed;
765
+ }
766
+
767
+ /* Dashboard Refresh Button */
768
+ .mds-dashboard-refresh {
769
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
770
+ font-weight: var(--mds-typography-fontWeight-medium);
771
+ font-size: var(--mds-typography-fontSize-sm);
772
+ font-family: var(--mds-typography-fontFamily-brand);
773
+ border-radius: var(--mds-spacing-borderRadius-md);
774
+ cursor: pointer;
775
+ outline: none;
776
+ border: 1px solid var(--mds-dashboard-control-border);
777
+ transition: var(--mds-effects-transition-normal);
778
+ min-width: 140px;
779
+ width: 140px;
780
+
781
+ /* Theme-specific styles */
782
+ background-color: var(--mds-dashboard-control-bg);
783
+ color: var(--mds-dashboard-control-color);
784
+ box-shadow: var(--mds-dashboard-control-shadow);
785
+ }
786
+
787
+ .mds-dashboard-refresh:hover:not(:disabled) {
788
+ background-color: var(--mds-dashboard-control-bg-hover);
789
+ transform: translateY(-2px);
790
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
791
+ }
792
+
793
+ .mds-dashboard-refresh:disabled {
794
+ opacity: var(--mds-effects-opacity-disabled);
795
+ cursor: not-allowed;
796
+ background-color: transparent !important;
797
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
798
+ transform: none !important;
799
+ box-shadow: none !important;
800
+ }
801
+
802
+ /* Theme Support - Default (Dark Theme) */
803
+ :root {
804
+ /* Dashboard Control Variables - Dark Theme (default) */
805
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.35);
806
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.5);
807
+ --mds-dashboard-control-color: #ffffff;
808
+ --mds-dashboard-control-border: rgba(255, 255, 255, 0.18);
809
+ --mds-dashboard-control-border-disabled: rgba(255, 255, 255, 0.3);
810
+ --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
811
+ --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
812
+ --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
813
+
814
+ /* Dropdown Options - Dark Theme */
815
+ --mds-dashboard-control-option-bg: #2a2a2a;
816
+ --mds-dashboard-control-option-color: #ffffff;
817
+ --mds-dashboard-control-option-bg-hover: #505050;
818
+ --mds-dashboard-control-option-color-hover: #ffffff;
819
+
820
+ /* Login specific variables - Dark Theme */
821
+ --mds-login-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
822
+ --mds-input-bg: rgba(255, 255, 255, 0.1);
823
+ --mds-input-focus-border: #aaaaaa;
824
+ --mds-input-focus-bg: rgba(255, 255, 255, 0.15);
825
+ --mds-input-focus-shadow: 0 4px 12px rgba(170, 170, 170, 0.2);
826
+ --mds-error-bg: rgba(200, 200, 200, 0.15);
827
+ --mds-error-border: rgba(200, 200, 200, 0.3);
828
+ }
829
+
830
+ /* Theme Toggle (square, themed) */
831
+ .mds-theme-toggle {
832
+ position: relative;
833
+ display: inline-flex;
834
+ align-items: center;
835
+ justify-content: center;
836
+ width: var(--mds-theme-toggle-size, 2.5rem);
837
+ height: var(--mds-theme-toggle-size, 2.5rem);
838
+ min-width: var(--mds-theme-toggle-size, 2.5rem);
839
+ padding: 0;
840
+ border-radius: var(--mds-spacing-borderRadius-md);
841
+ border: 1px solid var(--mds-dashboard-control-border);
842
+ background-color: var(--mds-dashboard-control-bg);
843
+ color: var(--mds-dashboard-control-color);
844
+ box-shadow: var(--mds-dashboard-control-shadow);
845
+ cursor: pointer;
846
+ outline: none;
847
+ transition: var(--mds-effects-transition-normal);
848
+ }
849
+
850
+ /* Force dark background in dark theme */
851
+ .mds-theme-toggle[data-theme="dark"] {
852
+ background-color: rgba(0, 0, 0, 0.35) !important;
853
+ border: 1px solid rgba(255, 255, 255, 0.18) !important;
854
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important;
855
+ }
856
+
857
+ .mds-theme-toggle:hover:not(:disabled) {
858
+ background-color: var(--mds-dashboard-control-bg-hover);
859
+ box-shadow: var(--mds-dashboard-control-shadow-hover);
860
+ }
861
+
862
+ /* Force dark hover in dark theme */
863
+ .mds-theme-toggle[data-theme="dark"]:hover:not(:disabled) {
864
+ background-color: rgba(0, 0, 0, 0.5) !important;
865
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important;
866
+ }
867
+
868
+ .mds-theme-toggle:disabled {
869
+ opacity: var(--mds-effects-opacity-disabled);
870
+ cursor: not-allowed;
871
+ background-color: transparent !important;
872
+ border: 2px solid var(--mds-dashboard-control-border-disabled);
873
+ box-shadow: none !important;
874
+ }
875
+
876
+ .mds-theme-toggle--sm { --mds-theme-toggle-size: 2rem; }
877
+ .mds-theme-toggle--md { --mds-theme-toggle-size: 2.5rem; }
878
+ .mds-theme-toggle--lg { --mds-theme-toggle-size: 3rem; }
879
+
880
+ /* Monochromatic theme toggle icons via CSS pseudo-elements */
881
+ .mds-theme-toggle[data-theme="light"]::before {
882
+ content: '';
883
+ position: absolute;
884
+ left: 50%;
885
+ top: 50%;
886
+ transform: translate(-50%, -50%);
887
+ width: 20px;
888
+ height: 20px;
889
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' fill='%23000000'/%3E%3C/svg%3E");
890
+ background-size: contain;
891
+ background-repeat: no-repeat;
892
+ background-position: center;
893
+ }
894
+
895
+ .mds-theme-toggle[data-theme="dark"]::before {
896
+ content: '';
897
+ position: absolute;
898
+ left: 50%;
899
+ top: 50%;
900
+ transform: translate(-50%, -50%);
901
+ width: 20px;
902
+ height: 20px;
903
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='4' fill='%23ffffff'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
904
+ background-size: contain;
905
+ background-repeat: no-repeat;
906
+ background-position: center;
907
+ }
908
+
909
+ /* Light Theme Support */
910
+ [data-theme="light"] {
911
+ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.1);
912
+ --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.15);
913
+ --mds-dashboard-control-color: #1a1a1a;
914
+ --mds-dashboard-control-border: rgba(0, 0, 0, 0.1);
915
+ --mds-dashboard-control-border-disabled: rgba(0, 0, 0, 0.3);
916
+ --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
917
+ --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.15);
918
+ --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
919
+
920
+ /* Dropdown Options - Light Theme */
921
+ --mds-dashboard-control-option-bg: #ffffff;
922
+ --mds-dashboard-control-option-color: #1a1a1a;
923
+ --mds-dashboard-control-option-bg-hover: #f0f7ff;
924
+ --mds-dashboard-control-option-color-hover: #1a1a1a;
925
+
926
+ /* Login specific variables - Light Theme */
927
+ --mds-login-bg: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 50%, #dcdcdc 100%);
928
+ --mds-input-bg: rgba(255, 255, 255, 0.8);
929
+ --mds-input-focus-border: #666666;
930
+ --mds-input-focus-bg: rgba(255, 255, 255, 1);
931
+ --mds-input-focus-shadow: 0 4px 12px rgba(102, 102, 102, 0.15);
932
+ --mds-error-bg: rgba(150, 150, 150, 0.1);
933
+ --mds-error-border: rgba(150, 150, 150, 0.3);
934
+ }
935
+
936
+ /* Form Input Styles */
937
+ .mds-input {
938
+ position: relative;
939
+ display: block;
940
+ width: 100%;
941
+ padding: var(--mds-spacing-md) var(--mds-spacing-md);
942
+ font-family: var(--mds-typography-fontFamily-brand);
943
+ font-size: var(--mds-typography-fontSize-base);
944
+ font-weight: var(--mds-typography-fontWeight-normal);
945
+ line-height: var(--mds-typography-lineHeight-normal);
946
+ color: var(--mds-color-text-primary);
947
+ background-color: var(--mds-color-background-primary);
948
+ border: 2px solid var(--mds-color-border-medium);
949
+ border-radius: var(--mds-spacing-borderRadius-md);
950
+ outline: none;
951
+ transition: var(--mds-effects-transition-normal);
952
+ }
953
+
954
+ .mds-input:focus {
955
+ border-color: var(--mds-color-brand-primary);
956
+ box-shadow: 0 0 0 3px rgba(0, 111, 238, 0.1);
957
+ }
958
+
959
+ .mds-input:disabled {
960
+ opacity: var(--mds-effects-opacity-disabled);
961
+ cursor: not-allowed;
962
+ background-color: var(--mds-color-background-secondary);
963
+ }
964
+
965
+ .mds-input--error {
966
+ border-color: #dc2626;
967
+ background-color: #fef2f2;
968
+ }
969
+
970
+ .mds-input--error:focus {
971
+ border-color: #dc2626;
972
+ box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1);
973
+ }
974
+
975
+ /* Textarea specific styles */
976
+ .mds-textarea {
977
+ resize: vertical;
978
+ min-height: 80px;
979
+ }
980
+
981
+ /* Select specific styles */
982
+ .mds-select {
983
+ -webkit-appearance: none;
984
+ -moz-appearance: none;
985
+ appearance: none;
986
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
987
+ background-position: right var(--mds-spacing-md) center;
988
+ background-repeat: no-repeat;
989
+ background-size: 16px;
990
+ padding-right: calc(var(--mds-spacing-md) + 24px);
991
+ }
992
+
993
+ .mds-select:disabled {
994
+ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239CA3AF' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
995
+ }
996
+
997
+ /* Label styles */
998
+ .mds-label {
999
+ display: block;
1000
+ font-family: var(--mds-typography-fontFamily-brand);
1001
+ font-size: var(--mds-typography-fontSize-sm);
1002
+ font-weight: var(--mds-typography-fontWeight-medium);
1003
+ color: var(--mds-color-text-primary);
1004
+ margin-bottom: var(--mds-spacing-xs);
1005
+ }
1006
+
1007
+ .mds-label--required::after {
1008
+ content: " *";
1009
+ color: #dc2626;
1010
+ }
1011
+
1012
+ /* Field group */
1013
+ .mds-field {
1014
+ margin-bottom: var(--mds-spacing-lg);
1015
+ }
1016
+
1017
+ .mds-field-error {
1018
+ display: block;
1019
+ font-family: var(--mds-typography-fontFamily-brand);
1020
+ font-size: var(--mds-typography-fontSize-sm);
1021
+ color: #dc2626;
1022
+ margin-top: var(--mds-spacing-xs);
1023
+ }
1024
+
1025
+ .mds-field-help {
1026
+ display: block;
1027
+ font-family: var(--mds-typography-fontFamily-brand);
1028
+ font-size: var(--mds-typography-fontSize-sm);
1029
+ color: var(--mds-color-text-secondary);
1030
+ margin-top: var(--mds-spacing-xs);
1031
+ }
1032
+
1033
+ /* Dashboard Layout Utilities */
1034
+ .mds-dashboard-grid {
1035
+ display: grid;
1036
+ gap: var(--mds-spacing-xl);
1037
+ }
1038
+
1039
+ .mds-dashboard-stats-grid {
1040
+ display: grid;
1041
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
1042
+ gap: var(--mds-spacing-lg);
1043
+ }
1044
+
1045
+ .mds-dashboard-charts-grid {
1046
+ display: grid;
1047
+ grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
1048
+ gap: var(--mds-spacing-lg);
1049
+ }
1050
+
1051
+ /* Dashboard Content Sections */
1052
+ .mds-dashboard-section {
1053
+ display: flex;
1054
+ flex-direction: column;
1055
+ gap: var(--mds-spacing-xl);
1056
+ }
1057
+
1058
+ /* ========================================
1059
+ Layout Utility Classes - @back optimization
1060
+ ======================================== */
1061
+
1062
+ /* Flexbox utilities */
1063
+ .mds-flex {
1064
+ display: flex;
1065
+ }
1066
+
1067
+ .mds-flex-col {
1068
+ display: flex;
1069
+ flex-direction: column;
1070
+ }
1071
+
1072
+ .mds-flex-center {
1073
+ display: flex;
1074
+ align-items: center;
1075
+ justify-content: center;
1076
+ }
1077
+
1078
+ .mds-flex-between {
1079
+ display: flex;
1080
+ align-items: center;
1081
+ justify-content: space-between;
1082
+ }
1083
+
1084
+ .mds-flex-start {
1085
+ display: flex;
1086
+ align-items: flex-start;
1087
+ justify-content: flex-start;
1088
+ }
1089
+
1090
+ .mds-flex-end {
1091
+ display: flex;
1092
+ align-items: center;
1093
+ justify-content: flex-end;
1094
+ }
1095
+
1096
+ /* Spacing utilities */
1097
+ .mds-gap-xs { gap: var(--mds-spacing-xs); }
1098
+ .mds-gap-sm { gap: var(--mds-spacing-sm); }
1099
+ .mds-gap-md { gap: var(--mds-spacing-md); }
1100
+ .mds-gap-lg { gap: var(--mds-spacing-lg); }
1101
+ .mds-gap-xl { gap: var(--mds-spacing-xl); }
1102
+
1103
+ /* Padding utilities */
1104
+ .mds-p-xs { padding: var(--mds-spacing-xs); }
1105
+ .mds-p-sm { padding: var(--mds-spacing-sm); }
1106
+ .mds-p-md { padding: var(--mds-spacing-md); }
1107
+ .mds-p-lg { padding: var(--mds-spacing-lg); }
1108
+ .mds-p-xl { padding: var(--mds-spacing-xl); }
1109
+
1110
+ /* Margin utilities */
1111
+ .mds-m-xs { margin: var(--mds-spacing-xs); }
1112
+ .mds-m-sm { margin: var(--mds-spacing-sm); }
1113
+ .mds-m-md { margin: var(--mds-spacing-md); }
1114
+ .mds-m-lg { margin: var(--mds-spacing-lg); }
1115
+ .mds-m-xl { margin: var(--mds-spacing-xl); }
1116
+
1117
+ /* Margin bottom utilities */
1118
+ .mds-mb-xs { margin-bottom: var(--mds-spacing-xs); }
1119
+ .mds-mb-sm { margin-bottom: var(--mds-spacing-sm); }
1120
+ .mds-mb-md { margin-bottom: var(--mds-spacing-md); }
1121
+ .mds-mb-lg { margin-bottom: var(--mds-spacing-lg); }
1122
+ .mds-mb-xl { margin-bottom: var(--mds-spacing-xl); }
1123
+
1124
+ /* ========================================
1125
+ Dashboard Layout Classes - @back optimization
1126
+ ======================================== */
1127
+
1128
+ /* Dashboard container */
1129
+ .mds-dashboard-container {
1130
+ display: flex;
1131
+ min-height: 100vh;
1132
+ font-family: var(--mds-typography-fontFamily-brand);
1133
+ transition: all 0.3s ease;
1134
+ background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%);
1135
+ background-attachment: fixed;
1136
+ background-repeat: no-repeat;
1137
+ background-size: 100% 100%;
1138
+ color: #ffffff;
1139
+ }
1140
+
1141
+ /* Light theme dashboard container */
1142
+ html[data-theme="light"] .mds-dashboard-container {
1143
+ background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%);
1144
+ color: #1a1a1a;
1145
+ }
1146
+
1147
+ /* Dashboard main content */
1148
+ .mds-dashboard-main {
1149
+ flex: 1;
1150
+ margin-left: 260px;
1151
+ margin-top: 60px;
1152
+ display: flex;
1153
+ flex-direction: column;
1154
+ min-height: calc(100vh - 60px);
1155
+ }
1156
+
1157
+ /* Page header */
1158
+ .mds-page-header {
1159
+ padding: var(--mds-spacing-lg) var(--mds-spacing-xl) var(--mds-spacing-md) var(--mds-spacing-xl);
1160
+ backdrop-filter: blur(10px);
1161
+ -webkit-backdrop-filter: blur(10px);
1162
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
1163
+ }
1164
+
1165
+ /* Dark theme page header */
1166
+ html[data-theme="dark"] .mds-page-header {
1167
+ background-color: rgba(30, 41, 59, 0.4);
1168
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1169
+ }
1170
+
1171
+ /* Light theme page header */
1172
+ html[data-theme="light"] .mds-page-header {
1173
+ background-color: rgba(255, 255, 255, 0.7);
1174
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
1175
+ }
1176
+
1177
+ /* Page title */
1178
+ .mds-page-title {
1179
+ margin: 0 0 var(--mds-spacing-xs) 0;
1180
+ font-size: var(--mds-typography-fontSize-xl);
1181
+ font-weight: var(--mds-typography-fontWeight-semibold);
1182
+ color: var(--mds-colors-color-text-primary);
1183
+ }
1184
+
1185
+ /* Page description */
1186
+ .mds-page-description {
1187
+ margin: 0;
1188
+ font-size: var(--mds-typography-fontSize-sm);
1189
+ color: var(--mds-colors-color-text-secondary);
1190
+ line-height: var(--mds-typography-lineHeight-normal);
1191
+ }
1192
+
1193
+ /* Main content area */
1194
+ .mds-main-content {
1195
+ flex: 1;
1196
+ padding: var(--mds-spacing-xl);
1197
+ overflow-y: auto;
1198
+ position: relative;
1199
+ }
1200
+
1201
+ /* ========================================
1202
+ Navbar Classes - @back optimization
1203
+ ======================================== */
1204
+
1205
+ /* Fixed navbar */
1206
+ .mds-navbar {
1207
+ position: fixed;
1208
+ top: 0;
1209
+ left: 0;
1210
+ right: 0;
1211
+ height: 60px;
1212
+ z-index: 1000;
1213
+ backdrop-filter: blur(10px);
1214
+ -webkit-backdrop-filter: blur(10px);
1215
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
1216
+ transition: all 0.3s ease;
1217
+ font-family: var(--mds-typography-fontFamily-brand);
1218
+ }
1219
+
1220
+ /* Dark theme navbar */
1221
+ html[data-theme="dark"] .mds-navbar {
1222
+ background-color: rgba(30, 41, 59, 0.95);
1223
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
1224
+ }
1225
+
1226
+ /* Light theme navbar */
1227
+ html[data-theme="light"] .mds-navbar {
1228
+ background-color: rgba(255, 255, 255, 0.95);
1229
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
1230
+ }
1231
+
1232
+ /* Navbar content container */
1233
+ .mds-navbar-content {
1234
+ display: flex;
1235
+ align-items: center;
1236
+ justify-content: space-between;
1237
+ height: 100%;
1238
+ max-width: 100%;
1239
+ }
1240
+
1241
+ /* Navbar brand section */
1242
+ .mds-navbar-brand {
1243
+ display: flex;
1244
+ align-items: center;
1245
+ gap: var(--mds-spacing-md);
1246
+ }
1247
+
1248
+ /* Navbar actions section */
1249
+ .mds-navbar-actions {
1250
+ display: flex;
1251
+ align-items: center;
1252
+ gap: var(--mds-spacing-md);
1253
+ }
1254
+
1255
+ /* User info in navbar */
1256
+ .mds-navbar-user {
1257
+ font-size: var(--mds-typography-fontSize-sm);
1258
+ color: var(--mds-colors-color-text-secondary);
1259
+ margin-right: var(--mds-spacing-sm);
1260
+ }
1261
+
1262
+ /* Sidebar-width brand section */
1263
+ .mds-navbar-brand-section {
1264
+ width: 260px;
1265
+ display: flex;
1266
+ align-items: center;
1267
+ justify-content: center;
1268
+ }
1269
+
1270
+ /* Center user info section */
1271
+ .mds-navbar-center {
1272
+ flex: 1;
1273
+ display: flex;
1274
+ justify-content: center;
1275
+ }
1276
+
1277
+ /* User info badge */
1278
+ .mds-navbar-user-badge {
1279
+ display: flex;
1280
+ align-items: center;
1281
+ gap: var(--mds-spacing-sm);
1282
+ font-size: var(--mds-typography-fontSize-sm);
1283
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md);
1284
+ border-radius: 20px;
1285
+ border: 1px solid;
1286
+ font-weight: var(--mds-typography-fontWeight-medium);
1287
+ }
1288
+
1289
+ /* Dark theme user badge */
1290
+ html[data-theme="dark"] .mds-navbar-user-badge {
1291
+ color: #888;
1292
+ background-color: rgba(255, 255, 255, 0.05);
1293
+ border-color: rgba(255, 255, 255, 0.1);
1294
+ }
1295
+
1296
+ /* Light theme user badge */
1297
+ html[data-theme="light"] .mds-navbar-user-badge {
1298
+ color: #666;
1299
+ background-color: rgba(0, 0, 0, 0.03);
1300
+ border-color: rgba(0, 0, 0, 0.1);
1301
+ }
1302
+
1303
+ /* User badge elements */
1304
+ .mds-navbar-user-badge .user-name {
1305
+ font-weight: var(--mds-typography-fontWeight-medium);
1306
+ }
1307
+
1308
+ .mds-navbar-user-badge .user-separator {
1309
+ opacity: 0.7;
1310
+ }
1311
+
1312
+ .mds-navbar-user-badge .user-email {
1313
+ opacity: 0.8;
1314
+ }
1315
+
330
1316
  /* Dark mode support (future) */
331
1317
  @media (prefers-color-scheme: dark) {
332
1318
  /* Enhanced styles for dark mode when implemented */
333
- }
1319
+ }
1320
+
1321
+ /* ========================================
1322
+ DataTable Component Styles
1323
+ ======================================== */
1324
+
1325
+ /* DataTable Base Styles */
1326
+ .data-table {
1327
+ position: relative;
1328
+ border-radius: 24px;
1329
+ backdrop-filter: blur(24px);
1330
+ background-color: rgba(255, 255, 255, 0.1);
1331
+ border: 1px solid rgba(255, 255, 255, 0.3);
1332
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
1333
+ overflow: hidden;
1334
+ font-family: var(--mds-typography-fontFamily-brand);
1335
+ }
1336
+
1337
+ /* Loading Animation */
1338
+ .data-table-spinner {
1339
+ width: 32px;
1340
+ height: 32px;
1341
+ border: 2px solid transparent;
1342
+ border-top: 2px solid white;
1343
+ border-radius: 50%;
1344
+ animation: mds-spin 1s linear infinite;
1345
+ }
1346
+
1347
+ /* Responsive Breakpoints */
1348
+ @media (max-width: 768px) {
1349
+ .data-table[role="table"] {
1350
+ display: block !important;
1351
+ }
1352
+
1353
+ .data-table .table-header {
1354
+ display: none !important;
1355
+ }
1356
+
1357
+ .data-table .table-body {
1358
+ display: block !important;
1359
+ }
1360
+
1361
+ .data-table .table-row {
1362
+ display: block !important;
1363
+ border: 1px solid var(--mds-color-border-medium) !important;
1364
+ border-radius: 12px !important;
1365
+ margin-bottom: 16px !important;
1366
+ padding: 16px !important;
1367
+ background: rgba(255, 255, 255, 0.05) !important;
1368
+ }
1369
+
1370
+ .data-table .table-cell {
1371
+ display: flex !important;
1372
+ justify-content: space-between !important;
1373
+ align-items: center !important;
1374
+ padding: 8px 0 !important;
1375
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1) !important;
1376
+ }
1377
+
1378
+ .data-table .table-cell:last-child {
1379
+ border-bottom: none !important;
1380
+ justify-content: center !important;
1381
+ margin-top: 12px !important;
1382
+ }
1383
+
1384
+ .data-table .table-cell::before {
1385
+ content: attr(data-label) !important;
1386
+ font-weight: var(--mds-typography-fontWeight-medium) !important;
1387
+ color: var(--mds-color-text-secondary) !important;
1388
+ font-size: var(--mds-typography-fontSize-xs) !important;
1389
+ text-transform: uppercase !important;
1390
+ letter-spacing: 0.5px !important;
1391
+ min-width: 100px !important;
1392
+ }
1393
+
1394
+ .data-table .table-actions {
1395
+ flex-direction: column !important;
1396
+ gap: var(--mds-spacing-sm) !important;
1397
+ }
1398
+
1399
+ .data-table .table-actions button {
1400
+ width: 100% !important;
1401
+ justify-content: center !important;
1402
+ }
1403
+ }
1404
+
1405
+ /* Tablet Breakpoint */
1406
+ @media (max-width: 1024px) and (min-width: 769px) {
1407
+ .data-table .table-row {
1408
+ font-size: var(--mds-typography-fontSize-sm) !important;
1409
+ }
1410
+
1411
+ .data-table .table-cell {
1412
+ padding: var(--mds-spacing-sm) var(--mds-spacing-md) !important;
1413
+ }
1414
+
1415
+ .data-table .table-actions button {
1416
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
1417
+ font-size: var(--mds-typography-fontSize-xs) !important;
1418
+ }
1419
+ }
1420
+
1421
+ /* Utility Classes */
1422
+ .data-table-compact .table-cell {
1423
+ padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important;
1424
+ }
1425
+
1426
+ .data-table-audit .table-row {
1427
+ border-left: 3px solid transparent;
1428
+ }
1429
+
1430
+ .data-table-audit .table-row[data-action="CREATE"] {
1431
+ border-left-color: rgba(34, 197, 94, 0.5);
1432
+ }
1433
+
1434
+ .data-table-audit .table-row[data-action="UPDATE"] {
1435
+ border-left-color: rgba(59, 130, 246, 0.5);
1436
+ }
1437
+
1438
+ .data-table-audit .table-row[data-action="DELETE"] {
1439
+ border-left-color: rgba(239, 68, 68, 0.5);
1440
+ }
1441
+
1442
+ /* Scrollbar Styling */
1443
+ .data-table .table-body::-webkit-scrollbar {
1444
+ width: 8px;
1445
+ }
1446
+
1447
+ .data-table .table-body::-webkit-scrollbar-track {
1448
+ background: rgba(255, 255, 255, 0.05);
1449
+ border-radius: 4px;
1450
+ }
1451
+
1452
+ .data-table .table-body::-webkit-scrollbar-thumb {
1453
+ background: rgba(255, 255, 255, 0.2);
1454
+ border-radius: 4px;
1455
+ }
1456
+
1457
+ .data-table .table-body::-webkit-scrollbar-thumb:hover {
1458
+ background: rgba(255, 255, 255, 0.3);
1459
+ }
1460
+
1461
+ /* Badge and Chip Styles */
1462
+ .data-table-badge {
1463
+ display: inline-flex;
1464
+ align-items: center;
1465
+ padding: 4px 8px;
1466
+ border-radius: 16px;
1467
+ font-size: var(--mds-typography-fontSize-xs);
1468
+ font-weight: var(--mds-typography-fontWeight-medium);
1469
+ backdrop-filter: blur(8px);
1470
+ border: 1px solid rgba(255, 255, 255, 0.1);
1471
+ white-space: nowrap;
1472
+ }
1473
+
1474
+ .data-table-badge.primary {
1475
+ background-color: rgba(59, 130, 246, 0.2);
1476
+ border-color: rgba(59, 130, 246, 0.3);
1477
+ color: #3b82f6;
1478
+ }
1479
+
1480
+ .data-table-badge.success {
1481
+ background-color: rgba(34, 197, 94, 0.2);
1482
+ border-color: rgba(34, 197, 94, 0.3);
1483
+ color: #22c55e;
1484
+ }
1485
+
1486
+ .data-table-badge.warning {
1487
+ background-color: rgba(234, 179, 8, 0.2);
1488
+ border-color: rgba(234, 179, 8, 0.3);
1489
+ color: #eab308;
1490
+ }
1491
+
1492
+ .data-table-badge.danger {
1493
+ background-color: rgba(239, 68, 68, 0.2);
1494
+ border-color: rgba(239, 68, 68, 0.3);
1495
+ color: #ef4444;
1496
+ }
1497
+
1498
+ .data-table-badge.info {
1499
+ background-color: rgba(147, 51, 234, 0.2);
1500
+ border-color: rgba(147, 51, 234, 0.3);
1501
+ color: #9333ea;
1502
+ }
1503
+
1504
+ /* Code/Monospace Cell Styling */
1505
+ .data-table-code {
1506
+ font-family: 'Courier New', monospace;
1507
+ background-color: rgba(255, 255, 255, 0.1);
1508
+ padding: 4px 12px;
1509
+ border-radius: 8px;
1510
+ display: inline-block;
1511
+ font-size: var(--mds-typography-fontSize-sm);
1512
+ word-break: break-all;
1513
+ }