@umituz/web-dashboard 5.0.0 → 6.0.0

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 (35) hide show
  1. package/README.md +4 -3
  2. package/package.json +2 -12
  3. package/src/index.ts +0 -10
  4. package/src/styles/dashboard.css +93 -544
  5. package/src/domains/auth/components/AuthLayout.tsx +0 -99
  6. package/src/domains/auth/components/ForgotPasswordForm.tsx +0 -167
  7. package/src/domains/auth/components/LoginForm.tsx +0 -222
  8. package/src/domains/auth/components/RegisterForm.tsx +0 -281
  9. package/src/domains/auth/components/ResetPasswordForm.tsx +0 -173
  10. package/src/domains/auth/components/index.ts +0 -11
  11. package/src/domains/auth/components/shared/AuthErrorBanner.tsx +0 -25
  12. package/src/domains/auth/components/shared/EmailInput.tsx +0 -73
  13. package/src/domains/auth/components/shared/PasswordInput.tsx +0 -100
  14. package/src/domains/auth/components/shared/PasswordStrengthIndicator.tsx +0 -63
  15. package/src/domains/auth/components/shared/SocialLoginButtons.tsx +0 -44
  16. package/src/domains/auth/components/shared/SocialProviderIcons.tsx +0 -48
  17. package/src/domains/auth/components/shared/index.ts +0 -20
  18. package/src/domains/auth/hooks/index.ts +0 -8
  19. package/src/domains/auth/hooks/useAuth.ts +0 -230
  20. package/src/domains/auth/index.ts +0 -62
  21. package/src/domains/auth/types/auth.ts +0 -302
  22. package/src/domains/auth/types/index.ts +0 -25
  23. package/src/domains/auth/utils/auth.test.ts +0 -188
  24. package/src/domains/auth/utils/auth.ts +0 -221
  25. package/src/domains/auth/utils/i18nKeys.ts +0 -109
  26. package/src/domains/auth/utils/index.ts +0 -29
  27. package/src/domains/auth/utils/secureToken.ts +0 -33
  28. package/src/domains/auth/utils/validationKeys.ts +0 -23
  29. package/src/domains/session/DemoLogin.tsx +0 -42
  30. package/src/domains/session/OrgSwitcher.tsx +0 -102
  31. package/src/domains/session/SessionContext.tsx +0 -150
  32. package/src/domains/session/inMemoryAuthAdapter.ts +0 -53
  33. package/src/domains/session/index.ts +0 -18
  34. package/src/domains/session/types.ts +0 -47
  35. package/src/domains/session/utils/i18nKeys.ts +0 -12
@@ -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,168 +694,9 @@
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
- .udb-auth {
692
- display: flex;
693
- flex-direction: column;
694
- min-height: 100dvh;
695
- background: var(--color-background);
696
- }
697
- .udb-auth__header {
698
- display: flex;
699
- align-items: center;
700
- justify-content: space-between;
701
- gap: 12px;
702
- padding: 16px 24px;
703
- }
704
- .udb-auth__brand {
705
- display: flex;
706
- align-items: center;
707
- gap: 8px;
708
- }
709
- .udb-auth__brand-name {
710
- font-size: var(--udb-font-size-lg);
711
- font-weight: var(--font-weight-bold);
712
- letter-spacing: -0.02em;
713
- color: var(--color-foreground);
714
- }
715
- .udb-auth__home-link {
716
- font-size: var(--udb-font-size-md);
717
- color: var(--color-muted-foreground);
718
- text-decoration: none;
719
- }
720
- .udb-auth__home-link:hover {
721
- color: var(--color-foreground);
722
- text-decoration: underline;
723
- }
724
- .udb-auth__main {
725
- display: flex;
726
- flex: 1;
727
- align-items: center;
728
- justify-content: center;
729
- padding: 24px 16px;
730
- }
731
- .udb-auth__column {
732
- display: flex;
733
- flex-direction: column;
734
- width: 100%;
735
- max-width: 420px;
736
- }
737
- .udb-auth__card {
738
- background: var(--color-card);
739
- border: 1px solid var(--color-border);
740
- border-radius: var(--radius-xl);
741
- box-shadow: var(--shadow-lg);
742
- padding: 40px 32px;
743
- }
744
- .udb-auth__tagline {
745
- margin: 0 0 20px;
746
- text-align: center;
747
- font-size: var(--udb-font-size-xs);
748
- font-weight: var(--font-weight-bold);
749
- text-transform: uppercase;
750
- letter-spacing: 0.1em;
751
- color: var(--color-primary);
752
- }
753
- .udb-auth__social {
754
- margin-top: 20px;
755
- }
756
- .udb-auth__footer {
757
- padding: 16px 24px;
758
- }
759
- .udb-auth__footer-inner {
760
- display: flex;
761
- flex-direction: column;
762
- align-items: center;
763
- gap: 8px;
764
- text-align: center;
765
- font-size: var(--udb-font-size-xs);
766
- color: var(--color-muted-foreground);
767
- }
768
- .udb-auth__footer-inner > p {
769
- margin: 0;
770
- }
771
- .udb-auth__footer-links {
772
- display: flex;
773
- align-items: center;
774
- justify-content: center;
775
- flex-wrap: wrap;
776
- gap: 16px;
777
- }
778
- .udb-auth__footer-link {
779
- font-size: var(--udb-font-size-xs);
780
- color: var(--color-muted-foreground);
781
- text-decoration: none;
782
- }
783
- .udb-auth__footer-link:hover {
784
- color: var(--color-foreground);
785
- text-decoration: underline;
786
- }
787
- .udb-divider-row {
788
- display: flex;
789
- align-items: center;
790
- gap: 12px;
791
- margin: 20px 0;
792
- }
793
- .udb-divider-row::before,
794
- .udb-divider-row::after {
795
- content: "";
796
- flex: 1;
797
- height: 1px;
798
- background: var(--color-border);
799
- }
800
- .udb-divider-row__label {
801
- font-size: var(--udb-font-size-xs);
802
- font-weight: var(--font-weight-medium);
803
- text-transform: uppercase;
804
- letter-spacing: 0.06em;
805
- color: var(--color-muted-foreground);
806
- white-space: nowrap;
807
- }
808
- .udb-social-grid {
809
- display: grid;
810
- grid-template-columns: repeat(2, minmax(0, 1fr));
811
- gap: 12px;
812
- }
813
- .udb-social-grid__btn {
814
- width: 100%;
815
- }
816
- .udb-social-grid__icon {
817
- width: 16px;
818
- height: 16px;
819
- flex-shrink: 0;
820
- }
821
- .udb-social-btn {
822
- display: inline-flex;
823
- align-items: center;
824
- justify-content: center;
825
- gap: 8px;
826
- height: 40px;
827
- padding: 0 12px;
828
- border: 1px solid var(--udb-border-strong);
829
- border-radius: var(--radius-md);
830
- background: var(--color-card);
831
- color: var(--color-foreground);
832
- font-family: inherit;
833
- font-size: var(--udb-font-size-md);
834
- font-weight: var(--font-weight-medium);
835
- cursor: pointer;
836
- }
837
- .udb-social-btn:hover {
838
- background: var(--color-muted);
839
- }
840
- .udb-social-btn__icon {
841
- display: inline-flex;
842
- align-items: center;
843
- justify-content: center;
844
- flex-shrink: 0;
845
- }
846
- .udb-social-btn__icon svg {
847
- width: 16px;
848
- height: 16px;
849
- }
850
700
  @keyframes udb-spin {
851
701
  to {
852
702
  transform: rotate(360deg);
@@ -855,271 +705,6 @@
855
705
  .udb-spin {
856
706
  animation: udb-spin 1s linear infinite;
857
707
  }
858
- .udb-form {
859
- display: flex;
860
- flex-direction: column;
861
- gap: 16px;
862
- width: 100%;
863
- }
864
- .udb-form__header {
865
- display: flex;
866
- flex-direction: column;
867
- gap: 4px;
868
- text-align: center;
869
- }
870
- .udb-form__title {
871
- margin: 0;
872
- font-size: var(--udb-font-size-2xl);
873
- font-weight: var(--font-weight-bold);
874
- letter-spacing: -0.02em;
875
- line-height: 1.2;
876
- color: var(--color-foreground);
877
- }
878
- .udb-form__title--lg {
879
- font-size: var(--udb-font-size-3xl);
880
- }
881
- .udb-form__subtitle {
882
- margin: 0;
883
- font-size: var(--udb-font-size-md);
884
- color: var(--color-muted-foreground);
885
- }
886
- .udb-form__subtitle-strong {
887
- color: var(--color-foreground);
888
- font-weight: var(--font-weight-medium);
889
- }
890
- .udb-form__row {
891
- display: flex;
892
- align-items: center;
893
- justify-content: space-between;
894
- gap: 12px;
895
- font-size: var(--udb-font-size-md);
896
- }
897
- .udb-form__footer-text {
898
- margin: 0;
899
- text-align: center;
900
- font-size: var(--udb-font-size-md);
901
- color: var(--color-muted-foreground);
902
- }
903
- .udb-form__group {
904
- display: flex;
905
- flex-direction: column;
906
- gap: 12px;
907
- }
908
- .udb-field {
909
- display: flex;
910
- flex-direction: column;
911
- gap: 6px;
912
- }
913
- .udb-field__label {
914
- font-size: var(--udb-font-size-md);
915
- font-weight: var(--font-weight-medium);
916
- color: var(--color-foreground);
917
- }
918
- .udb-field__required {
919
- margin-left: 2px;
920
- color: var(--color-destructive);
921
- }
922
- .udb-field__error {
923
- margin: 0;
924
- font-size: var(--udb-font-size-sm);
925
- color: var(--color-destructive);
926
- }
927
- .udb-form-alert {
928
- display: flex;
929
- align-items: flex-start;
930
- gap: 8px;
931
- padding: 10px 12px;
932
- border-radius: var(--radius-md);
933
- background: var(--color-destructive-soft, color-mix(in srgb, var(--color-destructive, #dc2626) 10%, transparent));
934
- color: var(--color-destructive);
935
- font-size: var(--udb-font-size-md);
936
- }
937
- .udb-form-alert__icon {
938
- width: 16px;
939
- height: 16px;
940
- flex-shrink: 0;
941
- margin-top: 2px;
942
- }
943
- .udb-check-label {
944
- display: flex;
945
- align-items: center;
946
- gap: 8px;
947
- font-size: var(--udb-font-size-md);
948
- color: var(--color-muted-foreground);
949
- cursor: pointer;
950
- }
951
- .udb-check-label--multiline {
952
- align-items: flex-start;
953
- }
954
- .udb-check-label__text {
955
- flex: 1;
956
- line-height: 1.45;
957
- }
958
- .udb-link-btn {
959
- display: inline;
960
- border: none;
961
- padding: 0;
962
- background: transparent;
963
- font-family: inherit;
964
- font-size: var(--udb-font-size-md);
965
- color: var(--color-primary);
966
- cursor: pointer;
967
- }
968
- .udb-link-btn:hover {
969
- text-decoration: underline;
970
- }
971
- .udb-link-btn:disabled {
972
- pointer-events: none;
973
- opacity: 0.55;
974
- }
975
- .udb-link-btn--strong {
976
- font-weight: 600;
977
- }
978
- .udb-text-link {
979
- color: var(--color-primary);
980
- text-decoration: none;
981
- }
982
- .udb-text-link:hover {
983
- text-decoration: underline;
984
- }
985
- .udb-submit-btn {
986
- width: 100%;
987
- height: 44px;
988
- }
989
- .udb-submit-btn--pill {
990
- height: 48px;
991
- border-radius: 9999px;
992
- }
993
- .udb-btn__spinner {
994
- animation: udb-spin 1s linear infinite;
995
- }
996
- .udb-password-wrap {
997
- position: relative;
998
- width: 100%;
999
- }
1000
- .udb-input--with-toggle {
1001
- padding-right: 44px;
1002
- }
1003
- .udb-password-toggle {
1004
- position: absolute;
1005
- right: 2px;
1006
- top: 50%;
1007
- transform: translateY(-50%);
1008
- }
1009
- .udb-password-toggle__icon {
1010
- width: 16px;
1011
- height: 16px;
1012
- color: var(--color-muted-foreground);
1013
- }
1014
- .udb-input--error {
1015
- border-color: var(--color-destructive);
1016
- }
1017
- .udb-input--error:focus-visible {
1018
- border-color: var(--color-destructive);
1019
- box-shadow: 0 0 0 3px var(--color-destructive-soft, color-mix(in srgb, var(--color-destructive, #dc2626) 10%, transparent));
1020
- }
1021
- .udb-strength {
1022
- display: flex;
1023
- flex-direction: column;
1024
- gap: 6px;
1025
- margin-top: 4px;
1026
- }
1027
- .udb-strength__bars {
1028
- display: grid;
1029
- grid-template-columns: repeat(4, minmax(0, 1fr));
1030
- gap: 8px;
1031
- }
1032
- .udb-strength__bar {
1033
- height: 4px;
1034
- border-radius: 9999px;
1035
- background: var(--udb-border-strong);
1036
- transition: background-color 0.2s ease;
1037
- }
1038
- .udb-strength__bar--weak {
1039
- background: var(--color-destructive);
1040
- }
1041
- .udb-strength__bar--fair {
1042
- background: var(--color-warning);
1043
- }
1044
- .udb-strength__bar--good {
1045
- background: var(--color-primary);
1046
- }
1047
- .udb-strength__bar--strong {
1048
- background: var(--color-success);
1049
- }
1050
- .udb-strength__label {
1051
- margin: 0;
1052
- font-size: var(--udb-font-size-xs);
1053
- color: var(--color-muted-foreground);
1054
- }
1055
- .udb-strength__label--weak {
1056
- color: var(--color-destructive);
1057
- }
1058
- .udb-strength__label--fair {
1059
- color: var(--color-warning);
1060
- }
1061
- .udb-strength__label--good {
1062
- color: var(--color-primary);
1063
- }
1064
- .udb-strength__label--strong {
1065
- color: var(--color-success);
1066
- }
1067
- .udb-success-badge {
1068
- display: flex;
1069
- align-items: center;
1070
- justify-content: center;
1071
- width: 48px;
1072
- height: 48px;
1073
- margin: 0 auto 16px;
1074
- border-radius: 50%;
1075
- background: var(--color-success-soft, color-mix(in srgb, var(--color-success, #16a34a) 12%, transparent));
1076
- }
1077
- .udb-success-badge__icon {
1078
- width: 24px;
1079
- height: 24px;
1080
- color: var(--color-success);
1081
- }
1082
- .udb-steps-list {
1083
- display: flex;
1084
- flex-direction: column;
1085
- gap: 12px;
1086
- margin: 16px 0 0;
1087
- padding: 0;
1088
- list-style: none;
1089
- }
1090
- .udb-steps-list__item {
1091
- display: flex;
1092
- align-items: flex-start;
1093
- gap: 8px;
1094
- font-size: var(--udb-font-size-md);
1095
- color: var(--color-foreground);
1096
- }
1097
- .udb-steps-list__icon {
1098
- width: 16px;
1099
- height: 16px;
1100
- flex-shrink: 0;
1101
- margin-top: 2px;
1102
- color: var(--color-success);
1103
- }
1104
- .udb-back-link {
1105
- display: inline-flex;
1106
- align-items: center;
1107
- gap: 6px;
1108
- margin-top: 16px;
1109
- border: none;
1110
- padding: 0;
1111
- background: transparent;
1112
- font-family: inherit;
1113
- font-size: var(--udb-font-size-md);
1114
- color: var(--color-muted-foreground);
1115
- cursor: pointer;
1116
- }
1117
- .udb-back-link:hover {
1118
- color: var(--color-foreground);
1119
- }
1120
- .udb-back-link__icon {
1121
- width: 14px;
1122
- height: 14px;
1123
708
  }
1124
709
  .udb-settings {
1125
710
  display: flex;
@@ -1145,8 +730,8 @@
1145
730
  display: flex;
1146
731
  align-items: center;
1147
732
  justify-content: space-between;
1148
- gap: 8px;
1149
- padding: 16px;
733
+ gap: var(--udb-space-2);
734
+ padding: var(--udb-space-4);
1150
735
  border-bottom: 1px solid var(--color-border);
1151
736
  }
1152
737
  .udb-settings__sidebar-title {
@@ -1173,7 +758,7 @@
1173
758
  .udb-settings__nav {
1174
759
  flex: 1;
1175
760
  overflow-y: auto;
1176
- padding: 12px 8px;
761
+ padding: var(--udb-space-3) var(--udb-space-2);
1177
762
  }
1178
763
  .udb-settings__mobile {
1179
764
  position: fixed;
@@ -1207,15 +792,15 @@
1207
792
  display: flex;
1208
793
  align-items: center;
1209
794
  justify-content: space-between;
1210
- gap: 12px;
1211
- padding: 12px 16px;
795
+ gap: var(--udb-space-3);
796
+ padding: var(--udb-space-3) var(--udb-space-4);
1212
797
  border-bottom: 1px solid var(--color-border);
1213
798
  background: var(--color-card);
1214
799
  }
1215
800
  .udb-settings__mobile-lead {
1216
801
  display: flex;
1217
802
  align-items: center;
1218
- gap: 8px;
803
+ gap: var(--udb-space-2);
1219
804
  min-width: 0;
1220
805
  }
1221
806
  .udb-settings__mobile-title {
@@ -1230,18 +815,18 @@
1230
815
  .udb-settings__content {
1231
816
  flex: 1;
1232
817
  overflow-y: auto;
1233
- padding: 20px 16px;
818
+ padding: var(--udb-space-5) var(--udb-space-4);
1234
819
  }
1235
820
  .udb-settings__skeleton {
1236
821
  display: flex;
1237
822
  flex-direction: column;
1238
- gap: 16px;
823
+ gap: var(--udb-space-4);
1239
824
  max-width: 640px;
1240
825
  }
1241
826
  .udb-settings__skeleton-list {
1242
827
  display: flex;
1243
828
  flex-direction: column;
1244
- gap: 8px;
829
+ gap: var(--udb-space-2);
1245
830
  }
1246
831
  .udb-settings__skeleton-row {
1247
832
  height: 14px;
@@ -1257,17 +842,17 @@
1257
842
  display: none;
1258
843
  }
1259
844
  .udb-settings__content {
1260
- padding: 40px;
845
+ padding: var(--udb-space-8);
1261
846
  }
1262
847
  }
1263
848
  .udb-settings-nav {
1264
849
  display: flex;
1265
850
  flex-direction: column;
1266
- gap: 20px;
851
+ gap: var(--udb-space-5);
1267
852
  }
1268
853
  .udb-settings-nav__title {
1269
854
  margin: 0;
1270
- padding: 0 12px;
855
+ padding: 0 var(--udb-space-3);
1271
856
  font-size: 10px;
1272
857
  font-weight: var(--font-weight-bold);
1273
858
  text-transform: uppercase;
@@ -1283,8 +868,8 @@
1283
868
  display: flex;
1284
869
  width: 100%;
1285
870
  align-items: center;
1286
- gap: 12px;
1287
- padding: 8px 12px;
871
+ gap: var(--udb-space-3);
872
+ padding: var(--udb-space-2) var(--udb-space-3);
1288
873
  border: none;
1289
874
  border-radius: var(--radius-md);
1290
875
  background: transparent;
@@ -1320,8 +905,8 @@
1320
905
  text-overflow: ellipsis;
1321
906
  }
1322
907
  .udb-settings-nav__badge {
1323
- padding: 1px 8px;
1324
- border-radius: 9999px;
908
+ padding: 1px var(--udb-space-2);
909
+ border-radius: var(--udb-radius-pill);
1325
910
  background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
1326
911
  color: var(--color-primary);
1327
912
  font-size: 10px;
@@ -1336,7 +921,7 @@
1336
921
  .udb-analytics {
1337
922
  display: flex;
1338
923
  flex-direction: column;
1339
- gap: 24px;
924
+ gap: var(--udb-space-6);
1340
925
  width: 100%;
1341
926
  }
1342
927
  .udb-analytics__header {
@@ -1344,7 +929,7 @@
1344
929
  align-items: center;
1345
930
  justify-content: space-between;
1346
931
  flex-wrap: wrap;
1347
- gap: 12px;
932
+ gap: var(--udb-space-3);
1348
933
  }
1349
934
  .udb-analytics__heading {
1350
935
  min-width: 0;
@@ -1358,7 +943,7 @@
1358
943
  color: var(--color-foreground);
1359
944
  }
1360
945
  .udb-analytics__description {
1361
- margin: 4px 0 0;
946
+ margin: var(--udb-space-1) 0 0;
1362
947
  font-size: var(--udb-font-size-md);
1363
948
  color: var(--color-muted-foreground);
1364
949
  }
@@ -1366,7 +951,7 @@
1366
951
  display: flex;
1367
952
  align-items: center;
1368
953
  flex-wrap: wrap;
1369
- gap: 8px;
954
+ gap: var(--udb-space-2);
1370
955
  }
1371
956
  .udb-analytics__action-icon {
1372
957
  width: 16px;
@@ -1376,7 +961,7 @@
1376
961
  display: flex;
1377
962
  align-items: center;
1378
963
  justify-content: center;
1379
- padding: 40px 0;
964
+ padding: var(--udb-space-8) 0;
1380
965
  }
1381
966
  .udb-analytics__loading-spinner {
1382
967
  width: 48px;
@@ -1386,12 +971,12 @@
1386
971
  .udb-analytics__metrics {
1387
972
  display: grid;
1388
973
  grid-template-columns: 1fr;
1389
- gap: 16px;
974
+ gap: var(--udb-space-4);
1390
975
  }
1391
976
  .udb-analytics__charts {
1392
977
  display: grid;
1393
978
  grid-template-columns: 1fr;
1394
- gap: 24px;
979
+ gap: var(--udb-space-6);
1395
980
  }
1396
981
  @media (min-width: 640px) {
1397
982
  .udb-analytics__metrics {
@@ -1409,9 +994,9 @@
1409
994
  .udb-period-select {
1410
995
  display: flex;
1411
996
  align-items: center;
1412
- gap: 8px;
997
+ gap: var(--udb-space-2);
1413
998
  height: 36px;
1414
- padding: 0 12px;
999
+ padding: 0 var(--udb-space-3);
1415
1000
  border: 1px solid var(--udb-border-strong);
1416
1001
  border-radius: var(--radius-md);
1417
1002
  background: var(--color-card);
@@ -1436,7 +1021,7 @@
1436
1021
  display: flex;
1437
1022
  align-items: center;
1438
1023
  justify-content: center;
1439
- gap: 12px;
1024
+ gap: var(--udb-space-3);
1440
1025
  min-height: 192px;
1441
1026
  }
1442
1027
  .udb-analytics-card__status--error {
@@ -1457,7 +1042,7 @@
1457
1042
  font-size: var(--udb-font-size-md);
1458
1043
  }
1459
1044
  .udb-analytics-card__header {
1460
- margin-bottom: 24px;
1045
+ margin-bottom: var(--udb-space-6);
1461
1046
  }
1462
1047
  .udb-analytics-card__title {
1463
1048
  margin: 0;
@@ -1466,15 +1051,15 @@
1466
1051
  color: var(--color-foreground);
1467
1052
  }
1468
1053
  .udb-analytics-card__description {
1469
- margin: 4px 0 0;
1054
+ margin: var(--udb-space-1) 0 0;
1470
1055
  font-size: var(--udb-font-size-sm);
1471
1056
  color: var(--color-muted-foreground);
1472
1057
  }
1473
1058
  .udb-analytics-card__metrics {
1474
1059
  display: grid;
1475
1060
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1476
- gap: 16px;
1477
- margin-top: 16px;
1061
+ gap: var(--udb-space-4);
1062
+ margin-top: var(--udb-space-4);
1478
1063
  }
1479
1064
  .udb-chart {
1480
1065
  position: relative;
@@ -1486,7 +1071,7 @@
1486
1071
  justify-content: center;
1487
1072
  height: 100%;
1488
1073
  min-height: 192px;
1489
- padding: 24px;
1074
+ padding: var(--udb-space-6);
1490
1075
  text-align: center;
1491
1076
  font-size: var(--udb-font-size-md);
1492
1077
  color: var(--color-muted-foreground);
@@ -1509,13 +1094,13 @@
1509
1094
  align-items: center;
1510
1095
  justify-content: center;
1511
1096
  flex-wrap: wrap;
1512
- gap: 12px;
1513
- margin-top: 12px;
1097
+ gap: var(--udb-space-3);
1098
+ margin-top: var(--udb-space-3);
1514
1099
  }
1515
1100
  .udb-chart__chip {
1516
1101
  display: inline-flex;
1517
1102
  align-items: center;
1518
- gap: 8px;
1103
+ gap: var(--udb-space-2);
1519
1104
  font-size: var(--udb-font-size-sm);
1520
1105
  color: var(--color-muted-foreground);
1521
1106
  }
@@ -1530,8 +1115,8 @@
1530
1115
  flex-direction: column;
1531
1116
  align-items: center;
1532
1117
  justify-content: center;
1533
- gap: 12px;
1534
- padding: 40px 24px;
1118
+ gap: var(--udb-space-3);
1119
+ padding: var(--udb-space-8) var(--udb-space-6);
1535
1120
  text-align: center;
1536
1121
  color: var(--color-muted-foreground);
1537
1122
  }
@@ -1574,7 +1159,7 @@
1574
1159
  font-size: var(--udb-font-size-md);
1575
1160
  }
1576
1161
  .udb-table__th {
1577
- padding: 8px 12px;
1162
+ padding: var(--udb-space-2) var(--udb-space-3);
1578
1163
  border-bottom: 1px solid var(--udb-border-strong);
1579
1164
  text-align: left;
1580
1165
  font-size: var(--udb-font-size-xs);
@@ -1590,7 +1175,7 @@
1590
1175
  letter-spacing: 0;
1591
1176
  }
1592
1177
  .udb-table__td {
1593
- padding: 12px;
1178
+ padding: var(--udb-space-3);
1594
1179
  border-bottom: 1px solid var(--color-border);
1595
1180
  color: var(--color-foreground);
1596
1181
  }
@@ -1607,42 +1192,6 @@
1607
1192
  .udb-table__td--center {
1608
1193
  text-align: center;
1609
1194
  }
1610
- .udb-org {
1611
- display: flex;
1612
- flex-direction: column;
1613
- align-items: flex-start;
1614
- line-height: 1.2;
1615
- }
1616
- .udb-org__name {
1617
- font-size: var(--udb-font-size-md);
1618
- font-weight: var(--font-weight-medium);
1619
- color: var(--color-foreground);
1620
- }
1621
- .udb-org__meta {
1622
- font-size: 10px;
1623
- text-transform: capitalize;
1624
- color: var(--color-muted-foreground);
1625
- }
1626
- .udb-org-menu {
1627
- padding: 8px;
1628
- }
1629
- .udb-org-menu__label {
1630
- flex: 1;
1631
- min-width: 0;
1632
- overflow: hidden;
1633
- text-overflow: ellipsis;
1634
- white-space: nowrap;
1635
- }
1636
- .udb-org-menu__check {
1637
- width: 14px;
1638
- height: 14px;
1639
- color: var(--color-primary);
1640
- }
1641
- .udb-menu__item--active {
1642
- background: var(--color-primary-soft, color-mix(in srgb, var(--color-primary, #2563eb) 10%, transparent));
1643
- color: var(--color-primary);
1644
- font-weight: var(--font-weight-medium);
1645
- }
1646
1195
  .udb-matrix__cell {
1647
1196
  display: inline-flex;
1648
1197
  align-items: center;
@@ -1686,8 +1235,8 @@
1686
1235
  .udb-audit__item {
1687
1236
  display: flex;
1688
1237
  align-items: baseline;
1689
- gap: 16px;
1690
- padding: 12px 16px;
1238
+ gap: var(--udb-space-4);
1239
+ padding: var(--udb-space-3) var(--udb-space-4);
1691
1240
  border-bottom: 1px solid var(--color-border);
1692
1241
  font-size: var(--udb-font-size-md);
1693
1242
  }
@@ -1730,7 +1279,7 @@
1730
1279
  display: flex;
1731
1280
  align-items: flex-start;
1732
1281
  justify-content: space-between;
1733
- gap: 12px;
1282
+ gap: var(--udb-space-3);
1734
1283
  padding: 14px 18px 4px;
1735
1284
  flex-wrap: wrap;
1736
1285
  }