@godxjp/ui 20.1.0 → 20.2.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 (54) hide show
  1. package/dist/app/app-provider.js +37 -21
  2. package/dist/app/index.d.ts +2 -0
  3. package/dist/app/index.js +2 -0
  4. package/dist/app/storage.d.ts +17 -0
  5. package/dist/app/storage.js +28 -0
  6. package/dist/components/data-display/popover.d.ts +7 -1
  7. package/dist/components/data-display/popover.js +4 -0
  8. package/dist/components/data-display/service-launcher-card.js +4 -2
  9. package/dist/components/data-display/table.d.ts +60 -0
  10. package/dist/components/data-display/table.js +8 -0
  11. package/dist/components/data-entry/calendar.d.ts +1 -1
  12. package/dist/components/data-entry/calendar.js +11 -2
  13. package/dist/components/feedback/dialog.js +3 -0
  14. package/dist/components/feedback/sheet.js +3 -0
  15. package/dist/components/feedback/tooltip.js +3 -0
  16. package/dist/components/general/button.d.ts +1 -0
  17. package/dist/components/general/button.js +2 -0
  18. package/dist/components/layout/app-launcher.d.ts +1 -1
  19. package/dist/components/layout/app-launcher.js +43 -10
  20. package/dist/components/layout/app-shell.d.ts +1 -1
  21. package/dist/components/layout/app-shell.js +14 -7
  22. package/dist/components/layout/auth-shell.d.ts +1 -1
  23. package/dist/components/layout/auth-shell.js +2 -0
  24. package/dist/components/layout/sidebar.js +2 -1
  25. package/dist/components/navigation/dropdown-menu.js +5 -0
  26. package/dist/components/ui/hover-card.js +3 -0
  27. package/dist/i18n/index.d.ts +1 -1
  28. package/dist/i18n/index.js +3 -1
  29. package/dist/i18n/messages/en.json +3 -1
  30. package/dist/i18n/messages/ja.json +3 -1
  31. package/dist/i18n/messages/vi.json +3 -1
  32. package/dist/i18n/translate.d.ts +19 -0
  33. package/dist/i18n/translate.js +24 -0
  34. package/dist/lib/overlay-portal.d.ts +18 -0
  35. package/dist/lib/overlay-portal.js +17 -0
  36. package/dist/props/components/app.prop.d.ts +13 -2
  37. package/dist/props/components/general.prop.d.ts +13 -0
  38. package/dist/props/components/layout.prop.d.ts +95 -5
  39. package/dist/styles/card-layout.css +10 -1
  40. package/dist/styles/chart-layout.css +2 -1
  41. package/dist/styles/control.css +5 -0
  42. package/dist/styles/data-display-layout.css +7 -1
  43. package/dist/styles/navigation-layout.css +3 -1
  44. package/dist/styles/shell-layout.css +465 -20
  45. package/dist/tokens/components/control.css +2 -1
  46. package/dist/tokens/components/shell.css +50 -3
  47. package/dist/tokens/foundation.css +2 -0
  48. package/docs/data-display/list-row.tsx +6 -6
  49. package/docs/layout/app-launcher.tsx +44 -0
  50. package/docs/layout/app-shell-arrangements.tsx +5 -5
  51. package/docs/showcase/settings-security-mfa.tsx +3 -3
  52. package/package.json +7 -4
  53. package/scripts/_agent-setup.mjs +57 -7
  54. package/scripts/visual-audit.mjs +45 -7
@@ -27,7 +27,7 @@
27
27
  "sidebar footer";
28
28
  }
29
29
 
30
- .app-root[data-nav-rail] {
30
+ .app-root[data-nav-rail][data-nav-rail-position="start"] {
31
31
  grid-template-areas:
32
32
  "navrail sidebar topbar"
33
33
  "navrail sidebar main"
@@ -38,18 +38,94 @@
38
38
  minmax(0, 1fr);
39
39
  }
40
40
 
41
- .app-root[data-nav-rail][data-collapsed="true"] {
41
+ .app-root[data-nav-rail][data-nav-rail-position="start"][data-topbar-span="full"] {
42
+ grid-template-areas:
43
+ "topbar topbar topbar"
44
+ "navrail sidebar main"
45
+ "navrail sidebar footer";
46
+ }
47
+
48
+ .app-root[data-nav-rail][data-nav-rail-position="end"] {
49
+ grid-template-areas:
50
+ "sidebar topbar navrail"
51
+ "sidebar main navrail"
52
+ "sidebar footer navrail";
53
+ grid-template-columns:
54
+ var(--app-shell-sidebar-width)
55
+ minmax(0, 1fr)
56
+ var(--app-shell-nav-rail-width);
57
+ }
58
+
59
+ .app-root[data-nav-rail][data-nav-rail-position="end"][data-topbar-span="full"] {
60
+ grid-template-areas:
61
+ "topbar topbar topbar"
62
+ "sidebar main navrail"
63
+ "sidebar footer navrail";
64
+ }
65
+
66
+ .app-root[data-nav-rail][data-nav-rail-position="top"] {
67
+ grid-template-areas:
68
+ "navrail navrail"
69
+ "sidebar topbar"
70
+ "sidebar main"
71
+ "sidebar footer";
72
+ grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
73
+ grid-template-rows:
74
+ var(--app-shell-nav-rail-height)
75
+ var(--app-shell-bar-height)
76
+ minmax(0, 1fr)
77
+ auto;
78
+ }
79
+
80
+ .app-root[data-nav-rail][data-nav-rail-position="top"][data-topbar-span="full"] {
81
+ grid-template-areas:
82
+ "navrail navrail"
83
+ "topbar topbar"
84
+ "sidebar main"
85
+ "sidebar footer";
86
+ }
87
+
88
+ .app-root[data-nav-rail][data-nav-rail-position="bottom"] {
89
+ grid-template-areas:
90
+ "sidebar topbar"
91
+ "sidebar main"
92
+ "sidebar footer"
93
+ "navrail navrail";
94
+ grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
95
+ grid-template-rows:
96
+ var(--app-shell-bar-height)
97
+ minmax(0, 1fr)
98
+ auto
99
+ var(--app-shell-nav-rail-height);
100
+ }
101
+
102
+ .app-root[data-nav-rail][data-nav-rail-position="bottom"][data-topbar-span="full"] {
103
+ grid-template-areas:
104
+ "topbar topbar"
105
+ "sidebar main"
106
+ "sidebar footer"
107
+ "navrail navrail";
108
+ }
109
+
110
+ .app-root[data-nav-rail][data-nav-rail-position="start"][data-collapsed="true"] {
42
111
  grid-template-columns:
43
112
  var(--app-shell-nav-rail-width)
44
113
  var(--app-shell-sidebar-collapsed-width)
45
114
  minmax(0, 1fr);
46
115
  }
47
116
 
48
- .app-root[data-nav-rail][data-topbar-span="full"] {
49
- grid-template-areas:
50
- "topbar topbar topbar"
51
- "navrail sidebar main"
52
- "navrail sidebar footer";
117
+ .app-root[data-nav-rail][data-nav-rail-position="end"][data-collapsed="true"] {
118
+ grid-template-columns:
119
+ var(--app-shell-sidebar-collapsed-width)
120
+ minmax(0, 1fr)
121
+ var(--app-shell-nav-rail-width);
122
+ }
123
+
124
+ .app-root[data-nav-rail]:is(
125
+ [data-nav-rail-position="top"],
126
+ [data-nav-rail-position="bottom"]
127
+ )[data-collapsed="true"] {
128
+ grid-template-columns: var(--app-shell-sidebar-collapsed-width) minmax(0, 1fr);
53
129
  }
54
130
 
55
131
  .app-root[data-topbar="none"] {
@@ -91,6 +167,75 @@
91
167
  border-inline-end: 1px solid hsl(var(--border));
92
168
  background: hsl(var(--muted));
93
169
  color: hsl(var(--foreground));
170
+ padding-block: var(--app-shell-nav-rail-inset);
171
+ }
172
+
173
+ .app-nav-rail > .app-nav-rail-end,
174
+ .app-mobile-nav-rail > .app-nav-rail-end {
175
+ display: flex;
176
+ flex: 0 0 auto;
177
+ flex-direction: column;
178
+ align-items: center;
179
+ gap: var(--space-1);
180
+ margin-block-start: auto;
181
+ }
182
+
183
+ .app-nav-rail[data-orientation="horizontal"] > .app-nav-rail-end {
184
+ flex-direction: row;
185
+ margin-block-start: 0;
186
+ margin-inline-start: auto;
187
+ }
188
+
189
+ .app-nav-rail,
190
+ .app-mobile-nav-rail {
191
+ --org-switcher-trigger-height: var(--app-shell-nav-rail-item-size);
192
+
193
+ --control-height-sm: var(--app-shell-nav-rail-item-size);
194
+ }
195
+
196
+ .app-nav-rail[data-edge="end"] {
197
+ border-inline-start: 1px solid hsl(var(--border));
198
+ border-inline-end: 0;
199
+ }
200
+
201
+ .app-nav-rail[data-orientation="horizontal"] {
202
+ flex-direction: row;
203
+ width: 100%;
204
+ height: auto;
205
+ border-inline-end: 0;
206
+ padding-block: 0;
207
+ padding-inline: var(--app-shell-nav-rail-inset);
208
+ }
209
+
210
+ .app-nav-rail[data-orientation="horizontal"] > .ui-org-switcher {
211
+ inline-size: auto;
212
+ }
213
+
214
+ .app-nav-rail[data-edge="top"] {
215
+ border-block-end: 1px solid hsl(var(--border));
216
+ }
217
+
218
+ .app-nav-rail[data-edge="bottom"] {
219
+ border-block-start: 1px solid hsl(var(--border));
220
+ }
221
+
222
+ .app-root:not([data-topbar-span="full"]):is(
223
+ [data-nav-rail-position="start"],
224
+ [data-nav-rail-position="end"]
225
+ )
226
+ > .app-nav-rail {
227
+ padding-block-start: 0;
228
+ }
229
+
230
+ .app-root:not([data-topbar-span="full"]):is(
231
+ [data-nav-rail-position="start"],
232
+ [data-nav-rail-position="end"]
233
+ )
234
+ > .app-nav-rail
235
+ > :first-child {
236
+ min-block-size: var(--app-shell-bar-height);
237
+
238
+ align-items: center;
94
239
  }
95
240
 
96
241
  .app-topbar {
@@ -275,11 +420,37 @@
275
420
  --auth-shell-card-stack-gap: var(--auth-shell-registration-card-stack-gap);
276
421
  }
277
422
 
423
+ .ui-auth-shell[data-preset="registration"] .ui-auth-shell-card {
424
+ margin-block: auto;
425
+ }
426
+
278
427
  .ui-auth-shell[data-preset="registration"] .ui-auth-shell-card > .ui-auth-identity {
279
428
  block-size: var(--auth-shell-registration-identity-slot-block-size);
280
429
  justify-content: flex-end;
281
430
  }
282
431
 
432
+ .ui-auth-shell[data-align="center"] {
433
+ --auth-shell-main-align: center;
434
+ }
435
+
436
+ .ui-auth-shell[data-align="anchored"] {
437
+ --auth-shell-main-align: flex-start;
438
+ }
439
+
440
+ .ui-auth-shell[data-preset="login"][data-align="center"] {
441
+ --auth-shell-login-flow-offset-block: var(--auth-shell-login-main-padding-block-end);
442
+ --auth-shell-login-flow-offset-block-mobile: var(--auth-shell-login-main-padding-block-end);
443
+ }
444
+
445
+ .ui-auth-shell[data-preset="registration"][data-align="center"] {
446
+ --auth-shell-registration-main-padding-block-start: var(
447
+ --auth-shell-registration-main-padding-block-end
448
+ );
449
+ --auth-shell-registration-main-padding-block-start-mobile: var(
450
+ --auth-shell-registration-main-padding-block-end-mobile
451
+ );
452
+ }
453
+
283
454
  .ui-auth-identity {
284
455
  display: flex;
285
456
  flex-direction: column;
@@ -372,6 +543,12 @@
372
543
  gap: var(--auth-footer-content-gap);
373
544
  }
374
545
 
546
+ .ui-auth-legal-footer :is(a, button) {
547
+ display: inline-flex;
548
+ align-items: center;
549
+ min-block-size: var(--auth-footer-target-min-size);
550
+ }
551
+
375
552
  .ui-auth-stack {
376
553
  display: flex;
377
554
  flex-direction: column;
@@ -639,13 +816,44 @@
639
816
  font-size: var(--font-size-base);
640
817
  }
641
818
 
642
- .app-root:where([data-sidebar="none"])[data-nav-rail] {
819
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="start"] {
643
820
  grid-template-columns: var(--app-shell-nav-rail-width) minmax(0, 1fr);
644
821
  grid-template-areas: "navrail topbar" "navrail main" "navrail footer";
645
822
  }
646
- .app-root:where([data-sidebar="none"])[data-nav-rail][data-topbar-span="full"] {
823
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="start"][data-topbar-span="full"] {
647
824
  grid-template-areas: "topbar topbar" "navrail main" "navrail footer";
648
825
  }
826
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="end"] {
827
+ grid-template-columns: minmax(0, 1fr) var(--app-shell-nav-rail-width);
828
+ grid-template-areas: "topbar navrail" "main navrail" "footer navrail";
829
+ }
830
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="end"][data-topbar-span="full"] {
831
+ grid-template-areas: "topbar topbar" "main navrail" "footer navrail";
832
+ }
833
+
834
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="top"] {
835
+ grid-template-columns: minmax(0, 1fr);
836
+ grid-template-areas: "navrail" "topbar" "main" "footer";
837
+ grid-template-rows:
838
+ var(--app-shell-nav-rail-height)
839
+ var(--app-shell-bar-height)
840
+ minmax(0, 1fr)
841
+ auto;
842
+ }
843
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="top"][data-topbar-span="full"] {
844
+ grid-template-areas: "navrail" "topbar" "main" "footer";
845
+ }
846
+ .app-root:where([data-sidebar="none"])[data-nav-rail]:is(
847
+ [data-nav-rail-position="bottom"]
848
+ ) {
849
+ grid-template-columns: minmax(0, 1fr);
850
+ grid-template-areas: "topbar" "main" "footer" "navrail";
851
+ grid-template-rows:
852
+ var(--app-shell-bar-height)
853
+ minmax(0, 1fr)
854
+ auto
855
+ var(--app-shell-nav-rail-height);
856
+ }
649
857
 
650
858
  @media (width <= 56.25rem) {
651
859
  .app-root,
@@ -665,6 +873,13 @@
665
873
  display: none;
666
874
  }
667
875
 
876
+ .app-root[data-nav-rail]:is(
877
+ [data-nav-rail-position="top"],
878
+ [data-nav-rail-position="bottom"]
879
+ ) {
880
+ grid-template-rows: var(--app-shell-bar-height) minmax(0, 1fr) auto;
881
+ }
882
+
668
883
  .app-root[data-topbar="none"] > .app-topbar {
669
884
  display: flex;
670
885
  }
@@ -696,7 +911,7 @@
696
911
  "sidebar footer";
697
912
  }
698
913
 
699
- .app-root[data-responsive-navigation="docked"][data-nav-rail] {
914
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="start"] {
700
915
  grid-template-areas:
701
916
  "navrail sidebar topbar"
702
917
  "navrail sidebar main"
@@ -707,20 +922,96 @@
707
922
  minmax(0, 1fr);
708
923
  }
709
924
 
710
- .app-root[data-responsive-navigation="docked"][data-nav-rail][data-collapsed="true"] {
925
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="start"][data-collapsed="true"] {
711
926
  grid-template-columns:
712
927
  var(--app-shell-nav-rail-width)
713
928
  var(--app-shell-sidebar-collapsed-width)
714
929
  minmax(0, 1fr);
715
930
  }
716
931
 
717
- .app-root[data-responsive-navigation="docked"][data-nav-rail][data-topbar-span="full"] {
932
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="start"][data-topbar-span="full"] {
718
933
  grid-template-areas:
719
934
  "topbar topbar topbar"
720
935
  "navrail sidebar main"
721
936
  "navrail sidebar footer";
722
937
  }
723
938
 
939
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="end"] {
940
+ grid-template-areas:
941
+ "sidebar topbar navrail"
942
+ "sidebar main navrail"
943
+ "sidebar footer navrail";
944
+ grid-template-columns:
945
+ var(--app-shell-sidebar-width)
946
+ minmax(0, 1fr)
947
+ var(--app-shell-nav-rail-width);
948
+ }
949
+
950
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="end"][data-collapsed="true"] {
951
+ grid-template-columns:
952
+ var(--app-shell-sidebar-collapsed-width)
953
+ minmax(0, 1fr)
954
+ var(--app-shell-nav-rail-width);
955
+ }
956
+
957
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="end"][data-topbar-span="full"] {
958
+ grid-template-areas:
959
+ "topbar topbar topbar"
960
+ "sidebar main navrail"
961
+ "sidebar footer navrail";
962
+ }
963
+
964
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="top"] {
965
+ grid-template-areas:
966
+ "navrail navrail"
967
+ "sidebar topbar"
968
+ "sidebar main"
969
+ "sidebar footer";
970
+ grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
971
+ grid-template-rows:
972
+ var(--app-shell-nav-rail-height)
973
+ var(--app-shell-bar-height)
974
+ minmax(0, 1fr)
975
+ auto;
976
+ }
977
+
978
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="top"][data-topbar-span="full"] {
979
+ grid-template-areas:
980
+ "navrail navrail"
981
+ "topbar topbar"
982
+ "sidebar main"
983
+ "sidebar footer";
984
+ }
985
+
986
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="bottom"] {
987
+ grid-template-areas:
988
+ "sidebar topbar"
989
+ "sidebar main"
990
+ "sidebar footer"
991
+ "navrail navrail";
992
+ grid-template-columns: var(--app-shell-sidebar-width) minmax(0, 1fr);
993
+ grid-template-rows:
994
+ var(--app-shell-bar-height)
995
+ minmax(0, 1fr)
996
+ auto
997
+ var(--app-shell-nav-rail-height);
998
+ }
999
+
1000
+ .app-root[data-responsive-navigation="docked"][data-nav-rail]:is(
1001
+ [data-nav-rail-position="top"],
1002
+ [data-nav-rail-position="bottom"]
1003
+ )[data-collapsed="true"] {
1004
+ grid-template-columns: var(--app-shell-sidebar-collapsed-width) minmax(0, 1fr);
1005
+ }
1006
+
1007
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="bottom"][data-topbar-span="full"] {
1008
+ grid-template-areas:
1009
+ "topbar topbar"
1010
+ "sidebar main"
1011
+ "sidebar footer"
1012
+ "navrail navrail";
1013
+ }
1014
+
724
1015
  .app-root[data-responsive-navigation="docked"] > .app-sidebar,
725
1016
  .app-root[data-responsive-navigation="docked"] > .app-nav-rail {
726
1017
  display: flex;
@@ -800,10 +1091,10 @@
800
1091
  }
801
1092
 
802
1093
  .ui-org-switcher-name,
1094
+
803
1095
  .ui-org-switcher-meta {
804
1096
  overflow: hidden;
805
-
806
- line-height: var(--line-height-tight);
1097
+ line-height: var(--line-height-normal);
807
1098
  text-overflow: ellipsis;
808
1099
  white-space: nowrap;
809
1100
  }
@@ -919,6 +1210,144 @@
919
1210
  border-start-end-radius: var(--radius-lg);
920
1211
  }
921
1212
 
1213
+ [data-slot="dialog-overlay"].ui-app-launcher-launchpad-overlay {
1214
+
1215
+ container: app-launcher-launchpad / inline-size;
1216
+
1217
+ background-color: var(
1218
+ --app-launcher-launchpad-backdrop-background,
1219
+ color-mix(
1220
+ in srgb,
1221
+ var(--overlay-background) var(--app-launcher-launchpad-backdrop-alpha),
1222
+ transparent
1223
+ )
1224
+ );
1225
+ backdrop-filter: blur(var(--app-launcher-launchpad-backdrop-blur-size));
1226
+
1227
+ display: grid;
1228
+ place-items: center;
1229
+ }
1230
+
1231
+ [data-slot="dialog-content"].ui-app-launcher-launchpad {
1232
+ position: relative;
1233
+ inset: auto;
1234
+ display: grid;
1235
+ width: auto;
1236
+ max-width: min(
1237
+ var(--app-launcher-launchpad-panel-max-width),
1238
+ calc(100vw - 2 * var(--app-launcher-launchpad-space-inset))
1239
+ );
1240
+ max-height: calc(100dvh - 2 * var(--app-launcher-launchpad-space-inset));
1241
+ justify-items: center;
1242
+ transform: none;
1243
+ border: 0;
1244
+ border-radius: 0;
1245
+ background: none;
1246
+ padding: var(--app-launcher-launchpad-space-inset);
1247
+ overflow: auto;
1248
+ box-shadow: none;
1249
+ }
1250
+
1251
+ .ui-app-launcher-launchpad .ui-app-launcher-panel {
1252
+ --app-launcher-columns: 3;
1253
+
1254
+ max-height: none;
1255
+ gap: var(--app-launcher-launchpad-panel-gap);
1256
+ overflow: visible;
1257
+ }
1258
+
1259
+ @container app-launcher-launchpad (min-width: 40rem) {
1260
+ .ui-app-launcher-launchpad .ui-app-launcher-panel {
1261
+ --app-launcher-columns: 4;
1262
+ }
1263
+ }
1264
+
1265
+ @container app-launcher-launchpad (min-width: 48rem) {
1266
+ .ui-app-launcher-launchpad .ui-app-launcher-panel {
1267
+ --app-launcher-columns: 5;
1268
+ }
1269
+ }
1270
+
1271
+ @container app-launcher-launchpad (min-width: 64rem) {
1272
+ .ui-app-launcher-launchpad .ui-app-launcher-panel {
1273
+ --app-launcher-columns: 6;
1274
+ }
1275
+ }
1276
+
1277
+ .ui-app-launcher-launchpad .ui-app-launcher-grid {
1278
+ grid-template-columns: repeat(
1279
+ auto-fit,
1280
+ var(--app-launcher-launchpad-tile-inline-size)
1281
+ );
1282
+ max-width: calc(
1283
+ var(--app-launcher-columns) *
1284
+ (
1285
+ var(--app-launcher-launchpad-tile-inline-size) +
1286
+ var(--app-launcher-launchpad-grid-gap)
1287
+ ) - var(--app-launcher-launchpad-grid-gap)
1288
+ );
1289
+ justify-content: center;
1290
+ justify-self: center;
1291
+ gap: var(--app-launcher-launchpad-grid-gap);
1292
+ }
1293
+
1294
+ .ui-app-launcher-launchpad .ui-app-launcher-tile {
1295
+ justify-content: flex-start;
1296
+ gap: var(--app-launcher-launchpad-tile-gap);
1297
+ padding: var(--app-launcher-launchpad-tile-padding);
1298
+ border-radius: var(--app-launcher-launchpad-tile-radius);
1299
+ }
1300
+
1301
+ .ui-app-launcher-launchpad .ui-app-launcher-tile:hover,
1302
+ .ui-app-launcher-launchpad .ui-app-launcher-tile[aria-current="page"] {
1303
+ background: var(--app-launcher-launchpad-tile-hover-background);
1304
+ color: hsl(var(--app-launcher-tile-color));
1305
+ }
1306
+
1307
+ .ui-app-launcher-launchpad .ui-app-launcher-mark {
1308
+ width: var(--app-launcher-launchpad-mark-size);
1309
+ height: var(--app-launcher-launchpad-mark-size);
1310
+ border: 1px solid var(--app-launcher-launchpad-mark-border-color);
1311
+ border-radius: var(--app-launcher-launchpad-mark-radius);
1312
+ background: var(--app-launcher-launchpad-mark-background);
1313
+ box-shadow: var(--app-launcher-launchpad-mark-shadow);
1314
+ color: hsl(var(--foreground));
1315
+ font-size: var(--app-launcher-launchpad-mark-font-size);
1316
+ backdrop-filter: blur(var(--app-launcher-launchpad-backdrop-blur-size));
1317
+ }
1318
+
1319
+ .ui-app-launcher-launchpad .ui-app-launcher-group {
1320
+ justify-items: center;
1321
+ }
1322
+
1323
+ .ui-app-launcher-launchpad .ui-app-launcher-group-label {
1324
+ text-align: center;
1325
+ }
1326
+
1327
+ .ui-app-launcher-launchpad .ui-app-launcher-name {
1328
+ font-size: var(--app-launcher-launchpad-name-font-size);
1329
+ }
1330
+
1331
+ .ui-app-launcher-launchpad [data-slot="dialog-header"] {
1332
+ align-items: center;
1333
+ }
1334
+
1335
+ .ui-app-launcher-launchpad [data-slot="dialog-close"] {
1336
+ position: fixed;
1337
+
1338
+ padding: var(--app-launcher-launchpad-close-space-padding);
1339
+ inset-block-start: var(--app-launcher-launchpad-space-inset);
1340
+ inset-inline-end: var(--app-launcher-launchpad-space-inset);
1341
+ }
1342
+
1343
+ .ui-app-launcher-launchpad [data-slot="dialog-title"] {
1344
+ color: hsl(var(--foreground));
1345
+ font-size: var(--app-launcher-launchpad-title-font-size);
1346
+ font-weight: var(--font-weight-medium);
1347
+ letter-spacing: var(--app-launcher-launchpad-title-letter-spacing);
1348
+ text-transform: uppercase;
1349
+ }
1350
+
922
1351
  .ui-app-launcher-panel {
923
1352
 
924
1353
  --app-launcher-columns: 3;
@@ -1082,7 +1511,8 @@
1082
1511
  overflow: hidden;
1083
1512
  font-size: var(--font-size-base);
1084
1513
  font-weight: 700;
1085
- line-height: 1.2;
1514
+
1515
+ line-height: var(--line-height-normal);
1086
1516
  text-overflow: ellipsis;
1087
1517
  white-space: nowrap;
1088
1518
  }
@@ -1097,7 +1527,8 @@
1097
1527
  font-size: var(--sidebar-product-tenant-font-size);
1098
1528
  font-weight: 700;
1099
1529
  letter-spacing: 0.08em;
1100
- line-height: 1.2;
1530
+
1531
+ line-height: var(--line-height-normal);
1101
1532
  text-overflow: ellipsis;
1102
1533
  text-transform: uppercase;
1103
1534
  white-space: nowrap;
@@ -1391,7 +1822,8 @@
1391
1822
  overflow: hidden;
1392
1823
  font-size: var(--sidebar-user-name-font-size);
1393
1824
  font-weight: 500;
1394
- line-height: 1.3;
1825
+
1826
+ line-height: var(--line-height-normal);
1395
1827
  text-overflow: ellipsis;
1396
1828
  white-space: nowrap;
1397
1829
  }
@@ -1400,7 +1832,8 @@
1400
1832
  overflow: hidden;
1401
1833
  color: hsl(var(--muted-foreground));
1402
1834
  font-size: var(--sidebar-user-role-font-size);
1403
- line-height: 1.3;
1835
+
1836
+ line-height: var(--line-height-normal);
1404
1837
  text-overflow: ellipsis;
1405
1838
  white-space: nowrap;
1406
1839
  }
@@ -1496,7 +1929,7 @@
1496
1929
  flex: 0 1 auto;
1497
1930
  }
1498
1931
 
1499
- .ui-topbar-start > :last-child {
1932
+ .ui-topbar-start > :last-child:not(:is(button, a, [role="button"], .ui-button)) {
1500
1933
  max-width: 100%;
1501
1934
  min-width: 0;
1502
1935
  flex: 0 1 auto;
@@ -1674,6 +2107,9 @@
1674
2107
  display: flex;
1675
2108
 
1676
2109
  width: 100%;
2110
+
2111
+ flex: 0 1 var(--topbar-search-width);
2112
+ min-inline-size: 0;
1677
2113
  max-width: var(--topbar-search-max-width);
1678
2114
  height: var(--control-height-sm);
1679
2115
  align-items: center;
@@ -1694,6 +2130,10 @@
1694
2130
  height: var(--topbar-icon-size);
1695
2131
  }
1696
2132
 
2133
+ .tb-search .kbd {
2134
+ margin-inline-start: auto;
2135
+ }
2136
+
1697
2137
  .kbd {
1698
2138
  display: inline-flex;
1699
2139
  align-items: center;
@@ -1747,12 +2187,17 @@
1747
2187
 
1748
2188
  @media (max-width: 768px) {
1749
2189
  .tb-chip-sep,
1750
- .tb-search .kbd {
2190
+ .tb-search .kbd,
2191
+
2192
+ .tb-search .tb-search-label {
1751
2193
  display: none;
1752
2194
  }
1753
2195
 
1754
2196
  .tb-search {
1755
2197
  width: auto;
2198
+
2199
+ flex: 0 0 auto;
2200
+ min-inline-size: var(--control-height);
1756
2201
  min-width: var(--control-height);
1757
2202
  }
1758
2203
 
@@ -345,7 +345,8 @@
345
345
  --button-count-secondary-color: initial;
346
346
 
347
347
  --control-label-font-size: var(--font-size-sm);
348
- --control-label-line-height: 1;
348
+
349
+ --control-label-line-height: var(--line-height-normal);
349
350
 
350
351
  --control-label-space-gap: 0.5rem;
351
352