@umituz/web-dashboard 5.0.0 → 5.0.1

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/README.md CHANGED
@@ -50,8 +50,8 @@ resets: import the package stylesheet **after** your base layer.
50
50
  reads its variables, so theming has exactly one path: set the DS variables.
51
51
  Vanilla-CSS hosts define `--app-*` slots via the design system's `bridge.css`;
52
52
  Tailwind hosts override `--color-*` from their own `@theme`. Dashboard-only
53
- knobs (`--udb-font-size-*`, `--udb-sidebar-*`, `--udb-header-height`,
54
- `--udb-border-strong`) can be overridden anywhere in the cascade.
53
+ knobs (`--udb-font-size-*`, `--udb-space-*`, `--udb-sidebar-*`,
54
+ `--udb-header-height`, `--udb-border-strong`, `--udb-radius-pill`) can be overridden anywhere in the cascade.
55
55
 
56
56
  ## Entry points
57
57
 
@@ -211,7 +211,8 @@ npm run test:watch
211
211
  `--u-color-surface-muted` → `--color-muted`, `--u-color-danger` →
212
212
  `--color-destructive`) and dashboard knobs to their `--udb-*` names
213
213
  (`--u-font-size-*` → `--udb-font-size-*`, `--u-color-border-strong` →
214
- `--udb-border-strong`, `--u-sidebar-*` → `--udb-sidebar-*`).
214
+ `--udb-border-strong`, `--u-sidebar-*` → `--udb-sidebar-*`, `--u-space-*` →
215
+ `--udb-space-*`).
215
216
  4. Dark mode: replace `data-udb-theme="dark"` with the design-system
216
217
  convention (`[data-theme="dark"]` / `.dark` + dark DS variable values).
217
218
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/web-dashboard",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Installable app skeleton for the fleet — layouts, auth, analytics (dependency-free SVG charts), calendar, i18n via @umituz/web-localization, permissions/session/module registry; udb-* stylesheet on design-system tokens",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -9,6 +9,15 @@
9
9
  --udb-font-size-2xl: 24px;
10
10
  --udb-font-size-3xl: 30px;
11
11
  --udb-font-size-4xl: 36px;
12
+ --udb-space-1: 4px;
13
+ --udb-space-2: 8px;
14
+ --udb-space-3: 12px;
15
+ --udb-space-4: 16px;
16
+ --udb-space-5: 20px;
17
+ --udb-space-6: 24px;
18
+ --udb-space-7: 32px;
19
+ --udb-space-8: 40px;
20
+ --udb-radius-pill: 9999px;
12
21
  --udb-border-strong: #cbd5e1;
13
22
  --udb-sidebar-width: 240px;
14
23
  --udb-sidebar-width-collapsed: 64px;
@@ -49,7 +58,7 @@
49
58
  .udb-stack {
50
59
  display: flex;
51
60
  flex-direction: column;
52
- gap: 20px;
61
+ gap: var(--udb-space-5);
53
62
  }
54
63
  .udb-row {
55
64
  display: flex;
@@ -57,14 +66,14 @@
57
66
  }
58
67
  .udb-grid {
59
68
  display: grid;
60
- gap: 20px;
69
+ gap: var(--udb-space-5);
61
70
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
62
71
  }
63
72
  .udb-card--sm {
64
- padding: 16px;
73
+ padding: var(--udb-space-4);
65
74
  }
66
75
  .udb-card--lg {
67
- padding: 40px;
76
+ padding: var(--udb-space-8);
68
77
  }
69
78
  .udb-layout {
70
79
  display: flex;
@@ -114,14 +123,14 @@
114
123
  .udb-layout__content {
115
124
  flex: 1;
116
125
  overflow-y: auto;
117
- padding: 16px;
126
+ padding: var(--udb-space-4);
118
127
  }
119
128
  @media (min-width: 768px) {
120
129
  .udb-layout__sidebar {
121
130
  display: flex;
122
131
  }
123
132
  .udb-layout__content {
124
- padding: 32px;
133
+ padding: var(--udb-space-7);
125
134
  }
126
135
  }
127
136
  .udb-page-skeleton {
@@ -130,7 +139,7 @@
130
139
  max-width: 1280px;
131
140
  display: flex;
132
141
  flex-direction: column;
133
- gap: 24px;
142
+ gap: var(--udb-space-6);
134
143
  }
135
144
  .udb-skeleton--title {
136
145
  height: 32px;
@@ -139,7 +148,7 @@
139
148
  }
140
149
  .udb-skeleton-grid {
141
150
  display: grid;
142
- gap: 16px;
151
+ gap: var(--udb-space-4);
143
152
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
144
153
  }
145
154
  .udb-skeleton--card {
@@ -161,9 +170,9 @@
161
170
  display: flex;
162
171
  height: var(--udb-header-height);
163
172
  align-items: center;
164
- gap: 12px;
173
+ gap: var(--udb-space-3);
165
174
  border-bottom: 1px solid var(--udb-sidebar-border);
166
- padding: 0 16px;
175
+ padding: 0 var(--udb-space-4);
167
176
  }
168
177
  .udb-brand-logo {
169
178
  flex-shrink: 0;
@@ -181,8 +190,8 @@
181
190
  color: var(--udb-sidebar-text);
182
191
  }
183
192
  .udb-sidebar__brand-tagline {
184
- margin-top: 8px;
185
- margin-left: 4px;
193
+ margin-top: var(--udb-space-2);
194
+ margin-left: var(--udb-space-1);
186
195
  font-size: var(--udb-font-size-xs);
187
196
  font-weight: var(--font-weight-bold);
188
197
  text-transform: lowercase;
@@ -192,14 +201,14 @@
192
201
  user-select: none;
193
202
  }
194
203
  .udb-sidebar__create {
195
- padding: 16px 12px;
204
+ padding: var(--udb-space-4) var(--udb-space-3);
196
205
  border-bottom: 1px solid var(--udb-sidebar-border);
197
206
  }
198
207
  .udb-sidebar__create-btn {
199
208
  width: 100%;
200
209
  height: 44px;
201
210
  justify-content: flex-start;
202
- padding: 0 16px;
211
+ padding: 0 var(--udb-space-4);
203
212
  border-radius: var(--radius-lg);
204
213
  box-shadow: var(--shadow-md);
205
214
  }
@@ -222,25 +231,25 @@
222
231
  .udb-sidebar__nav {
223
232
  flex: 1;
224
233
  overflow-y: auto;
225
- padding: 12px 8px;
234
+ padding: var(--udb-space-3) var(--udb-space-2);
226
235
  }
227
236
  .udb-sidebar__groups {
228
237
  display: flex;
229
238
  flex-direction: column;
230
- gap: 24px;
239
+ gap: var(--udb-space-6);
231
240
  }
232
241
  .udb-sidebar__group {
233
242
  display: flex;
234
243
  flex-direction: column;
235
- gap: 4px;
244
+ gap: var(--udb-space-1);
236
245
  }
237
246
  .udb-sidebar__group-toggle {
238
247
  display: flex;
239
248
  width: 100%;
240
249
  align-items: center;
241
250
  justify-content: space-between;
242
- margin-bottom: 4px;
243
- padding: 8px 12px;
251
+ margin-bottom: var(--udb-space-1);
252
+ padding: var(--udb-space-2) var(--udb-space-3);
244
253
  border: none;
245
254
  border-radius: var(--radius-md);
246
255
  background: transparent;
@@ -269,8 +278,8 @@
269
278
  .udb-sidebar__item {
270
279
  display: flex;
271
280
  align-items: center;
272
- gap: 12px;
273
- padding: 10px 12px;
281
+ gap: var(--udb-space-3);
282
+ padding: 10px var(--udb-space-3);
274
283
  border-radius: var(--radius-md);
275
284
  font-size: var(--udb-font-size-md);
276
285
  font-weight: var(--font-weight-medium);
@@ -306,7 +315,7 @@
306
315
  }
307
316
  .udb-sidebar__footer {
308
317
  border-top: 1px solid var(--udb-sidebar-border);
309
- padding: 12px;
318
+ padding: var(--udb-space-3);
310
319
  display: flex;
311
320
  align-items: center;
312
321
  justify-content: space-between;
@@ -315,7 +324,7 @@
315
324
  justify-content: center;
316
325
  }
317
326
  .udb-sidebar__footer-label {
318
- padding: 0 8px;
327
+ padding: 0 var(--udb-space-2);
319
328
  font-size: 10px;
320
329
  font-weight: var(--font-weight-bold);
321
330
  text-transform: uppercase;
@@ -335,16 +344,16 @@
335
344
  align-items: center;
336
345
  justify-content: space-between;
337
346
  flex-shrink: 0;
338
- gap: 12px;
347
+ gap: var(--udb-space-3);
339
348
  border-bottom: 1px solid var(--color-border);
340
349
  background: var(--color-card);
341
- padding: 0 16px;
350
+ padding: 0 var(--udb-space-4);
342
351
  z-index: 30;
343
352
  }
344
353
  .udb-header__lead {
345
354
  display: flex;
346
355
  align-items: center;
347
- gap: 12px;
356
+ gap: var(--udb-space-3);
348
357
  min-width: 0;
349
358
  }
350
359
  .udb-header__title {
@@ -373,7 +382,7 @@
373
382
  .udb-header__actions {
374
383
  display: flex;
375
384
  align-items: center;
376
- gap: 8px;
385
+ gap: var(--udb-space-2);
377
386
  }
378
387
  .udb-header__icon-btn {
379
388
  height: 36px;
@@ -430,7 +439,7 @@
430
439
  .udb-header__divider {
431
440
  width: 1px;
432
441
  height: 24px;
433
- margin: 0 4px;
442
+ margin: 0 var(--udb-space-1);
434
443
  background: var(--color-border);
435
444
  }
436
445
  .udb-overlay {
@@ -465,7 +474,7 @@
465
474
  display: flex;
466
475
  align-items: center;
467
476
  justify-content: space-between;
468
- padding: 12px 16px;
477
+ padding: var(--udb-space-3) var(--udb-space-4);
469
478
  border-bottom: 1px solid var(--color-border);
470
479
  background: var(--color-muted);
471
480
  }
@@ -495,7 +504,7 @@
495
504
  width: 100%;
496
505
  align-items: center;
497
506
  gap: 10px;
498
- padding: 8px 12px;
507
+ padding: var(--udb-space-2) var(--udb-space-3);
499
508
  border: none;
500
509
  border-radius: var(--radius-md);
501
510
  background: transparent;
@@ -534,8 +543,8 @@
534
543
  .udb-notif__item {
535
544
  display: flex;
536
545
  align-items: flex-start;
537
- gap: 12px;
538
- padding: 12px 16px;
546
+ gap: var(--udb-space-3);
547
+ padding: var(--udb-space-3) var(--udb-space-4);
539
548
  border-bottom: 1px solid var(--color-border);
540
549
  }
541
550
  .udb-notif__item:last-child {
@@ -560,8 +569,8 @@
560
569
  .udb-notif__meta {
561
570
  display: flex;
562
571
  align-items: center;
563
- gap: 4px;
564
- margin: 4px 0 0;
572
+ gap: var(--udb-space-1);
573
+ margin: var(--udb-space-1) 0 0;
565
574
  font-size: 10px;
566
575
  color: var(--color-muted-foreground);
567
576
  }
@@ -590,7 +599,7 @@
590
599
  height: 12px;
591
600
  }
592
601
  .udb-notif__empty {
593
- padding: 40px 16px;
602
+ padding: var(--udb-space-8) var(--udb-space-4);
594
603
  text-align: center;
595
604
  }
596
605
  .udb-notif__empty-icon {
@@ -599,7 +608,7 @@
599
608
  height: 40px;
600
609
  align-items: center;
601
610
  justify-content: center;
602
- margin: 0 auto 12px;
611
+ margin: 0 auto var(--udb-space-3);
603
612
  border-radius: 50%;
604
613
  background: var(--color-muted);
605
614
  }
@@ -617,10 +626,10 @@
617
626
  .udb-profile-btn {
618
627
  display: flex;
619
628
  align-items: center;
620
- gap: 8px;
621
- padding: 4px;
629
+ gap: var(--udb-space-2);
630
+ padding: var(--udb-space-1);
622
631
  border: none;
623
- border-radius: 9999px;
632
+ border-radius: var(--udb-radius-pill);
624
633
  background: transparent;
625
634
  cursor: pointer;
626
635
  }
@@ -658,12 +667,12 @@
658
667
  }
659
668
  .udb-profile-menu {
660
669
  width: 224px;
661
- padding: 8px;
670
+ padding: var(--udb-space-2);
662
671
  }
663
672
  .udb-profile-menu__id {
664
- padding: 8px 12px;
673
+ padding: var(--udb-space-2) var(--udb-space-3);
665
674
  border-bottom: 1px solid var(--color-border);
666
- margin-bottom: 4px;
675
+ margin-bottom: var(--udb-space-1);
667
676
  }
668
677
  .udb-profile-menu__name {
669
678
  margin: 0;
@@ -685,7 +694,7 @@
685
694
  }
686
695
  .udb-profile-menu__separator {
687
696
  height: 1px;
688
- margin: 8px 0;
697
+ margin: var(--udb-space-2) 0;
689
698
  background: var(--color-border);
690
699
  }
691
700
  .udb-auth {
@@ -698,13 +707,13 @@
698
707
  display: flex;
699
708
  align-items: center;
700
709
  justify-content: space-between;
701
- gap: 12px;
702
- padding: 16px 24px;
710
+ gap: var(--udb-space-3);
711
+ padding: var(--udb-space-4) var(--udb-space-6);
703
712
  }
704
713
  .udb-auth__brand {
705
714
  display: flex;
706
715
  align-items: center;
707
- gap: 8px;
716
+ gap: var(--udb-space-2);
708
717
  }
709
718
  .udb-auth__brand-name {
710
719
  font-size: var(--udb-font-size-lg);
@@ -726,7 +735,7 @@
726
735
  flex: 1;
727
736
  align-items: center;
728
737
  justify-content: center;
729
- padding: 24px 16px;
738
+ padding: var(--udb-space-6) var(--udb-space-4);
730
739
  }
731
740
  .udb-auth__column {
732
741
  display: flex;
@@ -739,10 +748,10 @@
739
748
  border: 1px solid var(--color-border);
740
749
  border-radius: var(--radius-xl);
741
750
  box-shadow: var(--shadow-lg);
742
- padding: 40px 32px;
751
+ padding: var(--udb-space-8) var(--udb-space-7);
743
752
  }
744
753
  .udb-auth__tagline {
745
- margin: 0 0 20px;
754
+ margin: 0 0 var(--udb-space-5);
746
755
  text-align: center;
747
756
  font-size: var(--udb-font-size-xs);
748
757
  font-weight: var(--font-weight-bold);
@@ -751,16 +760,16 @@
751
760
  color: var(--color-primary);
752
761
  }
753
762
  .udb-auth__social {
754
- margin-top: 20px;
763
+ margin-top: var(--udb-space-5);
755
764
  }
756
765
  .udb-auth__footer {
757
- padding: 16px 24px;
766
+ padding: var(--udb-space-4) var(--udb-space-6);
758
767
  }
759
768
  .udb-auth__footer-inner {
760
769
  display: flex;
761
770
  flex-direction: column;
762
771
  align-items: center;
763
- gap: 8px;
772
+ gap: var(--udb-space-2);
764
773
  text-align: center;
765
774
  font-size: var(--udb-font-size-xs);
766
775
  color: var(--color-muted-foreground);
@@ -773,7 +782,7 @@
773
782
  align-items: center;
774
783
  justify-content: center;
775
784
  flex-wrap: wrap;
776
- gap: 16px;
785
+ gap: var(--udb-space-4);
777
786
  }
778
787
  .udb-auth__footer-link {
779
788
  font-size: var(--udb-font-size-xs);
@@ -787,8 +796,8 @@
787
796
  .udb-divider-row {
788
797
  display: flex;
789
798
  align-items: center;
790
- gap: 12px;
791
- margin: 20px 0;
799
+ gap: var(--udb-space-3);
800
+ margin: var(--udb-space-5) 0;
792
801
  }
793
802
  .udb-divider-row::before,
794
803
  .udb-divider-row::after {
@@ -808,7 +817,7 @@
808
817
  .udb-social-grid {
809
818
  display: grid;
810
819
  grid-template-columns: repeat(2, minmax(0, 1fr));
811
- gap: 12px;
820
+ gap: var(--udb-space-3);
812
821
  }
813
822
  .udb-social-grid__btn {
814
823
  width: 100%;
@@ -822,9 +831,9 @@
822
831
  display: inline-flex;
823
832
  align-items: center;
824
833
  justify-content: center;
825
- gap: 8px;
834
+ gap: var(--udb-space-2);
826
835
  height: 40px;
827
- padding: 0 12px;
836
+ padding: 0 var(--udb-space-3);
828
837
  border: 1px solid var(--udb-border-strong);
829
838
  border-radius: var(--radius-md);
830
839
  background: var(--color-card);
@@ -858,13 +867,13 @@
858
867
  .udb-form {
859
868
  display: flex;
860
869
  flex-direction: column;
861
- gap: 16px;
870
+ gap: var(--udb-space-4);
862
871
  width: 100%;
863
872
  }
864
873
  .udb-form__header {
865
874
  display: flex;
866
875
  flex-direction: column;
867
- gap: 4px;
876
+ gap: var(--udb-space-1);
868
877
  text-align: center;
869
878
  }
870
879
  .udb-form__title {
@@ -891,7 +900,7 @@
891
900
  display: flex;
892
901
  align-items: center;
893
902
  justify-content: space-between;
894
- gap: 12px;
903
+ gap: var(--udb-space-3);
895
904
  font-size: var(--udb-font-size-md);
896
905
  }
897
906
  .udb-form__footer-text {
@@ -903,7 +912,7 @@
903
912
  .udb-form__group {
904
913
  display: flex;
905
914
  flex-direction: column;
906
- gap: 12px;
915
+ gap: var(--udb-space-3);
907
916
  }
908
917
  .udb-field {
909
918
  display: flex;
@@ -927,8 +936,8 @@
927
936
  .udb-form-alert {
928
937
  display: flex;
929
938
  align-items: flex-start;
930
- gap: 8px;
931
- padding: 10px 12px;
939
+ gap: var(--udb-space-2);
940
+ padding: 10px var(--udb-space-3);
932
941
  border-radius: var(--radius-md);
933
942
  background: var(--color-destructive-soft, color-mix(in srgb, var(--color-destructive, #dc2626) 10%, transparent));
934
943
  color: var(--color-destructive);
@@ -943,7 +952,7 @@
943
952
  .udb-check-label {
944
953
  display: flex;
945
954
  align-items: center;
946
- gap: 8px;
955
+ gap: var(--udb-space-2);
947
956
  font-size: var(--udb-font-size-md);
948
957
  color: var(--color-muted-foreground);
949
958
  cursor: pointer;
@@ -988,7 +997,7 @@
988
997
  }
989
998
  .udb-submit-btn--pill {
990
999
  height: 48px;
991
- border-radius: 9999px;
1000
+ border-radius: var(--udb-radius-pill);
992
1001
  }
993
1002
  .udb-btn__spinner {
994
1003
  animation: udb-spin 1s linear infinite;
@@ -1022,16 +1031,16 @@
1022
1031
  display: flex;
1023
1032
  flex-direction: column;
1024
1033
  gap: 6px;
1025
- margin-top: 4px;
1034
+ margin-top: var(--udb-space-1);
1026
1035
  }
1027
1036
  .udb-strength__bars {
1028
1037
  display: grid;
1029
1038
  grid-template-columns: repeat(4, minmax(0, 1fr));
1030
- gap: 8px;
1039
+ gap: var(--udb-space-2);
1031
1040
  }
1032
1041
  .udb-strength__bar {
1033
1042
  height: 4px;
1034
- border-radius: 9999px;
1043
+ border-radius: var(--udb-radius-pill);
1035
1044
  background: var(--udb-border-strong);
1036
1045
  transition: background-color 0.2s ease;
1037
1046
  }
@@ -1070,7 +1079,7 @@
1070
1079
  justify-content: center;
1071
1080
  width: 48px;
1072
1081
  height: 48px;
1073
- margin: 0 auto 16px;
1082
+ margin: 0 auto var(--udb-space-4);
1074
1083
  border-radius: 50%;
1075
1084
  background: var(--color-success-soft, color-mix(in srgb, var(--color-success, #16a34a) 12%, transparent));
1076
1085
  }
@@ -1082,15 +1091,15 @@
1082
1091
  .udb-steps-list {
1083
1092
  display: flex;
1084
1093
  flex-direction: column;
1085
- gap: 12px;
1086
- margin: 16px 0 0;
1094
+ gap: var(--udb-space-3);
1095
+ margin: var(--udb-space-4) 0 0;
1087
1096
  padding: 0;
1088
1097
  list-style: none;
1089
1098
  }
1090
1099
  .udb-steps-list__item {
1091
1100
  display: flex;
1092
1101
  align-items: flex-start;
1093
- gap: 8px;
1102
+ gap: var(--udb-space-2);
1094
1103
  font-size: var(--udb-font-size-md);
1095
1104
  color: var(--color-foreground);
1096
1105
  }
@@ -1105,7 +1114,7 @@
1105
1114
  display: inline-flex;
1106
1115
  align-items: center;
1107
1116
  gap: 6px;
1108
- margin-top: 16px;
1117
+ margin-top: var(--udb-space-4);
1109
1118
  border: none;
1110
1119
  padding: 0;
1111
1120
  background: transparent;
@@ -1145,8 +1154,8 @@
1145
1154
  display: flex;
1146
1155
  align-items: center;
1147
1156
  justify-content: space-between;
1148
- gap: 8px;
1149
- padding: 16px;
1157
+ gap: var(--udb-space-2);
1158
+ padding: var(--udb-space-4);
1150
1159
  border-bottom: 1px solid var(--color-border);
1151
1160
  }
1152
1161
  .udb-settings__sidebar-title {
@@ -1173,7 +1182,7 @@
1173
1182
  .udb-settings__nav {
1174
1183
  flex: 1;
1175
1184
  overflow-y: auto;
1176
- padding: 12px 8px;
1185
+ padding: var(--udb-space-3) var(--udb-space-2);
1177
1186
  }
1178
1187
  .udb-settings__mobile {
1179
1188
  position: fixed;
@@ -1207,15 +1216,15 @@
1207
1216
  display: flex;
1208
1217
  align-items: center;
1209
1218
  justify-content: space-between;
1210
- gap: 12px;
1211
- padding: 12px 16px;
1219
+ gap: var(--udb-space-3);
1220
+ padding: var(--udb-space-3) var(--udb-space-4);
1212
1221
  border-bottom: 1px solid var(--color-border);
1213
1222
  background: var(--color-card);
1214
1223
  }
1215
1224
  .udb-settings__mobile-lead {
1216
1225
  display: flex;
1217
1226
  align-items: center;
1218
- gap: 8px;
1227
+ gap: var(--udb-space-2);
1219
1228
  min-width: 0;
1220
1229
  }
1221
1230
  .udb-settings__mobile-title {
@@ -1230,18 +1239,18 @@
1230
1239
  .udb-settings__content {
1231
1240
  flex: 1;
1232
1241
  overflow-y: auto;
1233
- padding: 20px 16px;
1242
+ padding: var(--udb-space-5) var(--udb-space-4);
1234
1243
  }
1235
1244
  .udb-settings__skeleton {
1236
1245
  display: flex;
1237
1246
  flex-direction: column;
1238
- gap: 16px;
1247
+ gap: var(--udb-space-4);
1239
1248
  max-width: 640px;
1240
1249
  }
1241
1250
  .udb-settings__skeleton-list {
1242
1251
  display: flex;
1243
1252
  flex-direction: column;
1244
- gap: 8px;
1253
+ gap: var(--udb-space-2);
1245
1254
  }
1246
1255
  .udb-settings__skeleton-row {
1247
1256
  height: 14px;
@@ -1257,17 +1266,17 @@
1257
1266
  display: none;
1258
1267
  }
1259
1268
  .udb-settings__content {
1260
- padding: 40px;
1269
+ padding: var(--udb-space-8);
1261
1270
  }
1262
1271
  }
1263
1272
  .udb-settings-nav {
1264
1273
  display: flex;
1265
1274
  flex-direction: column;
1266
- gap: 20px;
1275
+ gap: var(--udb-space-5);
1267
1276
  }
1268
1277
  .udb-settings-nav__title {
1269
1278
  margin: 0;
1270
- padding: 0 12px;
1279
+ padding: 0 var(--udb-space-3);
1271
1280
  font-size: 10px;
1272
1281
  font-weight: var(--font-weight-bold);
1273
1282
  text-transform: uppercase;
@@ -1283,8 +1292,8 @@
1283
1292
  display: flex;
1284
1293
  width: 100%;
1285
1294
  align-items: center;
1286
- gap: 12px;
1287
- padding: 8px 12px;
1295
+ gap: var(--udb-space-3);
1296
+ padding: var(--udb-space-2) var(--udb-space-3);
1288
1297
  border: none;
1289
1298
  border-radius: var(--radius-md);
1290
1299
  background: transparent;
@@ -1320,8 +1329,8 @@
1320
1329
  text-overflow: ellipsis;
1321
1330
  }
1322
1331
  .udb-settings-nav__badge {
1323
- padding: 1px 8px;
1324
- border-radius: 9999px;
1332
+ padding: 1px var(--udb-space-2);
1333
+ border-radius: var(--udb-radius-pill);
1325
1334
  background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
1326
1335
  color: var(--color-primary);
1327
1336
  font-size: 10px;
@@ -1336,7 +1345,7 @@
1336
1345
  .udb-analytics {
1337
1346
  display: flex;
1338
1347
  flex-direction: column;
1339
- gap: 24px;
1348
+ gap: var(--udb-space-6);
1340
1349
  width: 100%;
1341
1350
  }
1342
1351
  .udb-analytics__header {
@@ -1344,7 +1353,7 @@
1344
1353
  align-items: center;
1345
1354
  justify-content: space-between;
1346
1355
  flex-wrap: wrap;
1347
- gap: 12px;
1356
+ gap: var(--udb-space-3);
1348
1357
  }
1349
1358
  .udb-analytics__heading {
1350
1359
  min-width: 0;
@@ -1358,7 +1367,7 @@
1358
1367
  color: var(--color-foreground);
1359
1368
  }
1360
1369
  .udb-analytics__description {
1361
- margin: 4px 0 0;
1370
+ margin: var(--udb-space-1) 0 0;
1362
1371
  font-size: var(--udb-font-size-md);
1363
1372
  color: var(--color-muted-foreground);
1364
1373
  }
@@ -1366,7 +1375,7 @@
1366
1375
  display: flex;
1367
1376
  align-items: center;
1368
1377
  flex-wrap: wrap;
1369
- gap: 8px;
1378
+ gap: var(--udb-space-2);
1370
1379
  }
1371
1380
  .udb-analytics__action-icon {
1372
1381
  width: 16px;
@@ -1376,7 +1385,7 @@
1376
1385
  display: flex;
1377
1386
  align-items: center;
1378
1387
  justify-content: center;
1379
- padding: 40px 0;
1388
+ padding: var(--udb-space-8) 0;
1380
1389
  }
1381
1390
  .udb-analytics__loading-spinner {
1382
1391
  width: 48px;
@@ -1386,12 +1395,12 @@
1386
1395
  .udb-analytics__metrics {
1387
1396
  display: grid;
1388
1397
  grid-template-columns: 1fr;
1389
- gap: 16px;
1398
+ gap: var(--udb-space-4);
1390
1399
  }
1391
1400
  .udb-analytics__charts {
1392
1401
  display: grid;
1393
1402
  grid-template-columns: 1fr;
1394
- gap: 24px;
1403
+ gap: var(--udb-space-6);
1395
1404
  }
1396
1405
  @media (min-width: 640px) {
1397
1406
  .udb-analytics__metrics {
@@ -1409,9 +1418,9 @@
1409
1418
  .udb-period-select {
1410
1419
  display: flex;
1411
1420
  align-items: center;
1412
- gap: 8px;
1421
+ gap: var(--udb-space-2);
1413
1422
  height: 36px;
1414
- padding: 0 12px;
1423
+ padding: 0 var(--udb-space-3);
1415
1424
  border: 1px solid var(--udb-border-strong);
1416
1425
  border-radius: var(--radius-md);
1417
1426
  background: var(--color-card);
@@ -1436,7 +1445,7 @@
1436
1445
  display: flex;
1437
1446
  align-items: center;
1438
1447
  justify-content: center;
1439
- gap: 12px;
1448
+ gap: var(--udb-space-3);
1440
1449
  min-height: 192px;
1441
1450
  }
1442
1451
  .udb-analytics-card__status--error {
@@ -1457,7 +1466,7 @@
1457
1466
  font-size: var(--udb-font-size-md);
1458
1467
  }
1459
1468
  .udb-analytics-card__header {
1460
- margin-bottom: 24px;
1469
+ margin-bottom: var(--udb-space-6);
1461
1470
  }
1462
1471
  .udb-analytics-card__title {
1463
1472
  margin: 0;
@@ -1466,15 +1475,15 @@
1466
1475
  color: var(--color-foreground);
1467
1476
  }
1468
1477
  .udb-analytics-card__description {
1469
- margin: 4px 0 0;
1478
+ margin: var(--udb-space-1) 0 0;
1470
1479
  font-size: var(--udb-font-size-sm);
1471
1480
  color: var(--color-muted-foreground);
1472
1481
  }
1473
1482
  .udb-analytics-card__metrics {
1474
1483
  display: grid;
1475
1484
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1476
- gap: 16px;
1477
- margin-top: 16px;
1485
+ gap: var(--udb-space-4);
1486
+ margin-top: var(--udb-space-4);
1478
1487
  }
1479
1488
  .udb-chart {
1480
1489
  position: relative;
@@ -1486,7 +1495,7 @@
1486
1495
  justify-content: center;
1487
1496
  height: 100%;
1488
1497
  min-height: 192px;
1489
- padding: 24px;
1498
+ padding: var(--udb-space-6);
1490
1499
  text-align: center;
1491
1500
  font-size: var(--udb-font-size-md);
1492
1501
  color: var(--color-muted-foreground);
@@ -1509,13 +1518,13 @@
1509
1518
  align-items: center;
1510
1519
  justify-content: center;
1511
1520
  flex-wrap: wrap;
1512
- gap: 12px;
1513
- margin-top: 12px;
1521
+ gap: var(--udb-space-3);
1522
+ margin-top: var(--udb-space-3);
1514
1523
  }
1515
1524
  .udb-chart__chip {
1516
1525
  display: inline-flex;
1517
1526
  align-items: center;
1518
- gap: 8px;
1527
+ gap: var(--udb-space-2);
1519
1528
  font-size: var(--udb-font-size-sm);
1520
1529
  color: var(--color-muted-foreground);
1521
1530
  }
@@ -1530,8 +1539,8 @@
1530
1539
  flex-direction: column;
1531
1540
  align-items: center;
1532
1541
  justify-content: center;
1533
- gap: 12px;
1534
- padding: 40px 24px;
1542
+ gap: var(--udb-space-3);
1543
+ padding: var(--udb-space-8) var(--udb-space-6);
1535
1544
  text-align: center;
1536
1545
  color: var(--color-muted-foreground);
1537
1546
  }
@@ -1574,7 +1583,7 @@
1574
1583
  font-size: var(--udb-font-size-md);
1575
1584
  }
1576
1585
  .udb-table__th {
1577
- padding: 8px 12px;
1586
+ padding: var(--udb-space-2) var(--udb-space-3);
1578
1587
  border-bottom: 1px solid var(--udb-border-strong);
1579
1588
  text-align: left;
1580
1589
  font-size: var(--udb-font-size-xs);
@@ -1590,7 +1599,7 @@
1590
1599
  letter-spacing: 0;
1591
1600
  }
1592
1601
  .udb-table__td {
1593
- padding: 12px;
1602
+ padding: var(--udb-space-3);
1594
1603
  border-bottom: 1px solid var(--color-border);
1595
1604
  color: var(--color-foreground);
1596
1605
  }
@@ -1624,7 +1633,7 @@
1624
1633
  color: var(--color-muted-foreground);
1625
1634
  }
1626
1635
  .udb-org-menu {
1627
- padding: 8px;
1636
+ padding: var(--udb-space-2);
1628
1637
  }
1629
1638
  .udb-org-menu__label {
1630
1639
  flex: 1;
@@ -1686,8 +1695,8 @@
1686
1695
  .udb-audit__item {
1687
1696
  display: flex;
1688
1697
  align-items: baseline;
1689
- gap: 16px;
1690
- padding: 12px 16px;
1698
+ gap: var(--udb-space-4);
1699
+ padding: var(--udb-space-3) var(--udb-space-4);
1691
1700
  border-bottom: 1px solid var(--color-border);
1692
1701
  font-size: var(--udb-font-size-md);
1693
1702
  }
@@ -1730,7 +1739,7 @@
1730
1739
  display: flex;
1731
1740
  align-items: flex-start;
1732
1741
  justify-content: space-between;
1733
- gap: 12px;
1742
+ gap: var(--udb-space-3);
1734
1743
  padding: 14px 18px 4px;
1735
1744
  flex-wrap: wrap;
1736
1745
  }