@godxjp/ui 20.0.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 (273) hide show
  1. package/README.md +8 -2
  2. package/dist/app/app-provider.js +37 -21
  3. package/dist/app/index.d.ts +2 -0
  4. package/dist/app/index.js +2 -0
  5. package/dist/app/storage.d.ts +17 -0
  6. package/dist/app/storage.js +28 -0
  7. package/dist/app/theme-axes.d.ts +2 -0
  8. package/dist/app/theme-axes.js +45 -0
  9. package/dist/components/charts/chart-cartesian.d.ts +2 -1
  10. package/dist/components/charts/chart-cartesian.js +52 -3
  11. package/dist/components/charts/chart-category-axis.d.ts +55 -0
  12. package/dist/components/charts/chart-category-axis.js +93 -0
  13. package/dist/components/charts/chart-frame.d.ts +10 -1
  14. package/dist/components/charts/chart-frame.js +19 -3
  15. package/dist/components/charts/compact-bar-trend.d.ts +1 -1
  16. package/dist/components/charts/compact-bar-trend.js +2 -0
  17. package/dist/components/charts/pie-chart.d.ts +1 -1
  18. package/dist/components/charts/pie-chart.js +12 -1
  19. package/dist/components/charts/recharts-peer.d.ts +49 -0
  20. package/dist/components/charts/recharts-peer.js +45 -0
  21. package/dist/components/data-display/card.d.ts +12 -1
  22. package/dist/components/data-display/card.js +22 -4
  23. package/dist/components/data-display/code-block.js +6 -2
  24. package/dist/components/data-display/data-table.d.ts +39 -4
  25. package/dist/components/data-display/data-table.js +802 -270
  26. package/dist/components/data-display/descriptions.d.ts +27 -6
  27. package/dist/components/data-display/descriptions.js +58 -17
  28. package/dist/components/data-display/index.d.ts +2 -0
  29. package/dist/components/data-display/index.js +2 -0
  30. package/dist/components/data-display/list-row.d.ts +10 -1
  31. package/dist/components/data-display/list-row.js +7 -1
  32. package/dist/components/data-display/popover.d.ts +9 -3
  33. package/dist/components/data-display/popover.js +65 -11
  34. package/dist/components/data-display/range-timeline.d.ts +38 -0
  35. package/dist/components/data-display/range-timeline.js +161 -0
  36. package/dist/components/data-display/scroll-area.js +13 -2
  37. package/dist/components/data-display/service-launcher-card.js +14 -12
  38. package/dist/components/data-display/table.d.ts +71 -3
  39. package/dist/components/data-display/table.js +56 -18
  40. package/dist/components/data-display/tree-list.js +4 -9
  41. package/dist/components/data-entry/calendar.d.ts +2 -2
  42. package/dist/components/data-entry/calendar.js +23 -3
  43. package/dist/components/data-entry/cascader.d.ts +1 -1
  44. package/dist/components/data-entry/cascader.js +188 -24
  45. package/dist/components/data-entry/color-picker.d.ts +1 -1
  46. package/dist/components/data-entry/color-picker.js +17 -5
  47. package/dist/components/data-entry/control-appearance.d.ts +64 -0
  48. package/dist/components/data-entry/control-appearance.js +39 -0
  49. package/dist/components/data-entry/control-surface.d.ts +61 -0
  50. package/dist/components/data-entry/control-surface.js +39 -0
  51. package/dist/components/data-entry/date-picker.d.ts +1 -1
  52. package/dist/components/data-entry/date-picker.js +344 -113
  53. package/dist/components/data-entry/date-range-picker.d.ts +1 -1
  54. package/dist/components/data-entry/date-range-picker.js +278 -140
  55. package/dist/components/data-entry/form-field.d.ts +1 -1
  56. package/dist/components/data-entry/form-field.js +39 -4
  57. package/dist/components/data-entry/form.d.ts +4 -0
  58. package/dist/components/data-entry/form.js +4 -2
  59. package/dist/components/data-entry/index.d.ts +7 -3
  60. package/dist/components/data-entry/index.js +10 -1
  61. package/dist/components/data-entry/input-otp.d.ts +1 -1
  62. package/dist/components/data-entry/input.d.ts +12 -34
  63. package/dist/components/data-entry/input.js +92 -24
  64. package/dist/components/data-entry/month-picker.d.ts +1 -1
  65. package/dist/components/data-entry/month-picker.js +47 -10
  66. package/dist/components/data-entry/month-range-picker.d.ts +1 -1
  67. package/dist/components/data-entry/month-range-picker.js +51 -11
  68. package/dist/components/data-entry/number-input.d.ts +7 -0
  69. package/dist/components/data-entry/number-input.js +147 -98
  70. package/dist/components/data-entry/password-input.d.ts +1 -1
  71. package/dist/components/data-entry/radio.d.ts +1 -1
  72. package/dist/components/data-entry/radio.js +61 -13
  73. package/dist/components/data-entry/search-input.d.ts +1 -1
  74. package/dist/components/data-entry/search-input.js +16 -2
  75. package/dist/components/data-entry/search-select.d.ts +2 -2
  76. package/dist/components/data-entry/search-select.js +209 -78
  77. package/dist/components/data-entry/select.d.ts +22 -4
  78. package/dist/components/data-entry/select.js +215 -163
  79. package/dist/components/data-entry/slider.d.ts +9 -1
  80. package/dist/components/data-entry/slider.js +87 -9
  81. package/dist/components/data-entry/switch.d.ts +3 -0
  82. package/dist/components/data-entry/switch.js +29 -3
  83. package/dist/components/data-entry/textarea.d.ts +14 -56
  84. package/dist/components/data-entry/textarea.js +80 -33
  85. package/dist/components/data-entry/time-picker.d.ts +2 -2
  86. package/dist/components/data-entry/time-picker.js +333 -109
  87. package/dist/components/data-entry/time-range-picker.d.ts +5 -0
  88. package/dist/components/data-entry/time-range-picker.js +89 -0
  89. package/dist/components/data-entry/transfer.d.ts +1 -1
  90. package/dist/components/data-entry/transfer.js +86 -28
  91. package/dist/components/data-entry/tree-select.d.ts +1 -1
  92. package/dist/components/data-entry/tree-select.js +201 -113
  93. package/dist/components/data-entry/tree-utils.js +7 -14
  94. package/dist/components/data-entry/upload-files.d.ts +2 -0
  95. package/dist/components/data-entry/upload-files.js +31 -0
  96. package/dist/components/data-entry/upload-request.d.ts +4 -0
  97. package/dist/components/data-entry/upload-request.js +53 -0
  98. package/dist/components/data-entry/upload-types.d.ts +28 -0
  99. package/dist/components/data-entry/upload-types.js +2 -0
  100. package/dist/components/data-entry/upload.d.ts +2 -2
  101. package/dist/components/data-entry/upload.js +475 -115
  102. package/dist/components/feedback/dialog.js +19 -19
  103. package/dist/components/feedback/sheet.js +3 -0
  104. package/dist/components/feedback/tooltip.js +3 -0
  105. package/dist/components/general/button.d.ts +2 -1
  106. package/dist/components/general/button.js +7 -1
  107. package/dist/components/general/index.d.ts +1 -0
  108. package/dist/components/general/index.js +2 -0
  109. package/dist/components/general/typography.d.ts +3 -0
  110. package/dist/components/general/typography.js +15 -1
  111. package/dist/components/general/visually-hidden.d.ts +3 -0
  112. package/dist/components/general/visually-hidden.js +9 -0
  113. package/dist/components/layout/app-launcher.d.ts +34 -0
  114. package/dist/components/layout/app-launcher.js +261 -0
  115. package/dist/components/layout/app-shell.d.ts +3 -1
  116. package/dist/components/layout/app-shell.js +34 -14
  117. package/dist/components/layout/auth-shell.d.ts +1 -1
  118. package/dist/components/layout/auth-shell.js +2 -0
  119. package/dist/components/layout/breadcrumb.d.ts +14 -2
  120. package/dist/components/layout/breadcrumb.js +46 -4
  121. package/dist/components/layout/flex.d.ts +1 -1
  122. package/dist/components/layout/flex.js +23 -2
  123. package/dist/components/layout/index.d.ts +3 -0
  124. package/dist/components/layout/index.js +5 -1
  125. package/dist/components/layout/org-switcher.js +20 -1
  126. package/dist/components/layout/page-container.d.ts +1 -1
  127. package/dist/components/layout/page-container.js +5 -3
  128. package/dist/components/layout/responsive-grid.d.ts +16 -2
  129. package/dist/components/layout/responsive-grid.js +29 -2
  130. package/dist/components/layout/sidebar.js +2 -1
  131. package/dist/components/layout/topbar-item.d.ts +3 -0
  132. package/dist/components/layout/topbar-item.js +18 -3
  133. package/dist/components/layout/topbar.d.ts +1 -1
  134. package/dist/components/layout/topbar.js +27 -6
  135. package/dist/components/navigation/dropdown-menu.d.ts +30 -2
  136. package/dist/components/navigation/dropdown-menu.js +73 -11
  137. package/dist/components/navigation/pagination.d.ts +2 -2
  138. package/dist/components/navigation/pagination.js +155 -83
  139. package/dist/components/navigation/steps.d.ts +2 -2
  140. package/dist/components/navigation/steps.js +29 -4
  141. package/dist/components/navigation/tabs.d.ts +5 -33
  142. package/dist/components/navigation/tabs.js +232 -64
  143. package/dist/components/ui/hover-card.js +3 -0
  144. package/dist/components/ui/input-otp.d.ts +26 -28
  145. package/dist/components/ui/input-otp.js +50 -7
  146. package/dist/components/ui/password-input.d.ts +36 -2
  147. package/dist/components/ui/password-input.js +27 -7
  148. package/dist/components/ui/rating.d.ts +25 -0
  149. package/dist/components/ui/rating.js +67 -27
  150. package/dist/components/ui/segmented.d.ts +9 -0
  151. package/dist/components/ui/segmented.js +17 -2
  152. package/dist/components/ui/separator.d.ts +4 -0
  153. package/dist/components/ui/separator.js +13 -0
  154. package/dist/components/ui/tag-input.d.ts +45 -0
  155. package/dist/components/ui/tag-input.js +109 -27
  156. package/dist/form/form-context.d.ts +29 -0
  157. package/dist/form/form-context.js +44 -4
  158. package/dist/form/form-field-array.d.ts +22 -0
  159. package/dist/form/form-field-array.js +50 -0
  160. package/dist/form/form-field-control.d.ts +2 -1
  161. package/dist/form/form-field-control.js +116 -40
  162. package/dist/form/form-root.d.ts +2 -1
  163. package/dist/form/form-root.js +142 -23
  164. package/dist/form/index.d.ts +3 -1
  165. package/dist/form/index.js +12 -1
  166. package/dist/i18n/index.d.ts +1 -1
  167. package/dist/i18n/index.js +3 -1
  168. package/dist/i18n/messages/en.json +59 -6
  169. package/dist/i18n/messages/ja.json +59 -6
  170. package/dist/i18n/messages/vi.json +59 -6
  171. package/dist/i18n/translate.d.ts +19 -0
  172. package/dist/i18n/translate.js +24 -0
  173. package/dist/inertia/index.d.ts +20 -0
  174. package/dist/inertia/index.js +60 -1
  175. package/dist/lib/control-styles.d.ts +25 -3
  176. package/dist/lib/control-styles.js +9 -3
  177. package/dist/lib/datetime/picker-format.d.ts +8 -0
  178. package/dist/lib/datetime/picker-format.js +54 -0
  179. package/dist/lib/overlay-portal.d.ts +18 -0
  180. package/dist/lib/overlay-portal.js +17 -0
  181. package/dist/props/components/app.prop.d.ts +13 -2
  182. package/dist/props/components/charts.prop.d.ts +21 -0
  183. package/dist/props/components/data-display.prop.d.ts +55 -4
  184. package/dist/props/components/data-entry.prop.d.ts +687 -43
  185. package/dist/props/components/form.prop.d.ts +142 -4
  186. package/dist/props/components/general.prop.d.ts +30 -1
  187. package/dist/props/components/index.d.ts +2 -2
  188. package/dist/props/components/layout.prop.d.ts +255 -8
  189. package/dist/props/components/navigation.prop.d.ts +113 -3
  190. package/dist/props/registry.d.ts +376 -10
  191. package/dist/props/registry.js +493 -9
  192. package/dist/props/vocabulary/data.prop.d.ts +179 -1
  193. package/dist/props/vocabulary/index.d.ts +4 -4
  194. package/dist/props/vocabulary/interaction.prop.d.ts +51 -2
  195. package/dist/props/vocabulary/navigation.prop.d.ts +40 -0
  196. package/dist/props/vocabulary/shared.prop.d.ts +33 -0
  197. package/dist/styles/badge-layout.css +2 -1
  198. package/dist/styles/card-layout.css +36 -5
  199. package/dist/styles/chart-layout.css +17 -1
  200. package/dist/styles/control.css +520 -14
  201. package/dist/styles/data-display-layout.css +248 -7
  202. package/dist/styles/data-entry-layout.css +13 -0
  203. package/dist/styles/layout.css +221 -4
  204. package/dist/styles/navigation-layout.css +230 -1
  205. package/dist/styles/shell-layout.css +690 -21
  206. package/dist/styles/table-layout.css +95 -6
  207. package/dist/styles/text-layout.css +5 -0
  208. package/dist/tokens/base.css +1 -0
  209. package/dist/tokens/components/badge.css +1 -0
  210. package/dist/tokens/components/chart.css +6 -0
  211. package/dist/tokens/components/control.css +81 -3
  212. package/dist/tokens/components/data-display.css +9 -0
  213. package/dist/tokens/components/descriptions.css +11 -0
  214. package/dist/tokens/components/flex.css +8 -0
  215. package/dist/tokens/components/navigation.css +55 -0
  216. package/dist/tokens/components/shell.css +100 -5
  217. package/dist/tokens/components/table.css +14 -0
  218. package/dist/tokens/foundation.css +2 -0
  219. package/dist/tokens/semantic/layout.css +9 -0
  220. package/docs/CONSUMER-RULES.md +13 -0
  221. package/docs/DESIGN-AUTHORITY.md +43 -6
  222. package/docs/DEVELOPMENT.md +4 -3
  223. package/docs/FORMS.md +151 -6
  224. package/docs/FRAME-COVERAGE-REPORT.md +29 -16
  225. package/docs/README.md +1 -1
  226. package/docs/STANDARDS-vocabulary-tokens.md +1 -1
  227. package/docs/TESTING.md +15 -6
  228. package/docs/charts/cjk-category-axis.tsx +81 -0
  229. package/docs/data-display/card/index.tsx +22 -0
  230. package/docs/data-display/data-table/examples/antd-parity.tsx +257 -0
  231. package/docs/data-display/data-table/index.tsx +23 -0
  232. package/docs/data-display/descriptions.tsx +41 -0
  233. package/docs/data-display/list-row.tsx +6 -6
  234. package/docs/data-display/scroll-area.tsx +31 -25
  235. package/docs/data-display/table.tsx +104 -45
  236. package/docs/data-display/timeline.tsx +41 -0
  237. package/docs/data-entry/date-picker.tsx +85 -0
  238. package/docs/data-entry/date-range-picker.tsx +26 -0
  239. package/docs/data-entry/form-dynamic-fields.tsx +199 -0
  240. package/docs/data-entry/form.tsx +74 -4
  241. package/docs/data-entry/input-otp.tsx +24 -0
  242. package/docs/data-entry/input.tsx +46 -1
  243. package/docs/data-entry/month-range-picker.tsx +1 -1
  244. package/docs/data-entry/select.tsx +27 -0
  245. package/docs/data-entry/switch.tsx +41 -0
  246. package/docs/data-entry/textarea.tsx +38 -0
  247. package/docs/data-entry/time-picker.tsx +85 -1
  248. package/docs/data-entry/time-range-picker.tsx +55 -0
  249. package/docs/data-entry/transfer.tsx +17 -0
  250. package/docs/data-entry/upload.tsx +56 -12
  251. package/docs/feedback/tooltip.tsx +1 -1
  252. package/docs/general/activity.tsx +2 -2
  253. package/docs/general/button/index.tsx +14 -1
  254. package/docs/general/typography.tsx +14 -1
  255. package/docs/layout/app-launcher.tsx +195 -0
  256. package/docs/layout/app-shell-arrangements.tsx +5 -5
  257. package/docs/layout/app-shell.tsx +11 -0
  258. package/docs/layout/flex.tsx +50 -0
  259. package/docs/layout/responsive-grid.tsx +21 -1
  260. package/docs/layout/topbar.tsx +5 -9
  261. package/docs/navigation/app-setting-picker.tsx +11 -0
  262. package/docs/navigation/breadcrumb.tsx +48 -0
  263. package/docs/navigation/dropdown-menu.tsx +21 -0
  264. package/docs/navigation/pagination.tsx +52 -0
  265. package/docs/navigation/steps.tsx +37 -0
  266. package/docs/navigation/tabs.tsx +97 -1
  267. package/docs/query/button-refetch.tsx +1 -0
  268. package/docs/showcase/settings-security-mfa.tsx +3 -3
  269. package/package.json +24 -4
  270. package/scripts/_agent-setup.mjs +76 -9
  271. package/scripts/init-guinea-pig.mjs +26 -4
  272. package/scripts/ui-audit.mjs +243 -30
  273. 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 {
@@ -120,7 +265,7 @@
120
265
  background-image: var(--gradient-glow);
121
266
 
122
267
  contain: paint;
123
- background-color: var(--app-shell-main-background);
268
+ background-color: var(--app-shell-main-background, var(--surface-recessed));
124
269
  }
125
270
 
126
271
  .app-main:focus-visible {
@@ -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;
@@ -544,6 +721,12 @@
544
721
  gap: var(--space-3);
545
722
  }
546
723
 
724
+ .app-topbar-logo,
725
+ .app-topbar-logo > a {
726
+ display: flex;
727
+ align-items: center;
728
+ }
729
+
547
730
  .app-topbar-custom {
548
731
  display: flex;
549
732
  min-width: 0;
@@ -633,6 +816,45 @@
633
816
  font-size: var(--font-size-base);
634
817
  }
635
818
 
819
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="start"] {
820
+ grid-template-columns: var(--app-shell-nav-rail-width) minmax(0, 1fr);
821
+ grid-template-areas: "navrail topbar" "navrail main" "navrail footer";
822
+ }
823
+ .app-root:where([data-sidebar="none"])[data-nav-rail][data-nav-rail-position="start"][data-topbar-span="full"] {
824
+ grid-template-areas: "topbar topbar" "navrail main" "navrail footer";
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
+ }
857
+
636
858
  @media (width <= 56.25rem) {
637
859
  .app-root,
638
860
  .app-root[data-collapsed="true"],
@@ -651,6 +873,13 @@
651
873
  display: none;
652
874
  }
653
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
+
654
883
  .app-root[data-topbar="none"] > .app-topbar {
655
884
  display: flex;
656
885
  }
@@ -682,7 +911,7 @@
682
911
  "sidebar footer";
683
912
  }
684
913
 
685
- .app-root[data-responsive-navigation="docked"][data-nav-rail] {
914
+ .app-root[data-responsive-navigation="docked"][data-nav-rail][data-nav-rail-position="start"] {
686
915
  grid-template-areas:
687
916
  "navrail sidebar topbar"
688
917
  "navrail sidebar main"
@@ -693,25 +922,109 @@
693
922
  minmax(0, 1fr);
694
923
  }
695
924
 
696
- .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"] {
697
926
  grid-template-columns:
698
927
  var(--app-shell-nav-rail-width)
699
928
  var(--app-shell-sidebar-collapsed-width)
700
929
  minmax(0, 1fr);
701
930
  }
702
931
 
703
- .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"] {
704
933
  grid-template-areas:
705
934
  "topbar topbar topbar"
706
935
  "navrail sidebar main"
707
936
  "navrail sidebar footer";
708
937
  }
709
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
+
710
1015
  .app-root[data-responsive-navigation="docked"] > .app-sidebar,
711
1016
  .app-root[data-responsive-navigation="docked"] > .app-nav-rail {
712
1017
  display: flex;
713
1018
  }
714
1019
 
1020
+ .app-root[data-sidebar="none"][data-nav-rail][data-responsive-navigation="docked"] {
1021
+ grid-template-columns: var(--app-shell-nav-rail-width) minmax(0, 1fr);
1022
+ grid-template-areas: "navrail topbar" "navrail main" "navrail footer";
1023
+ }
1024
+ .app-root[data-sidebar="none"][data-nav-rail][data-responsive-navigation="docked"][data-topbar-span="full"] {
1025
+ grid-template-areas: "topbar topbar" "navrail main" "navrail footer";
1026
+ }
1027
+
715
1028
  .app-root[data-responsive-navigation="docked"] .app-mobile-nav-trigger {
716
1029
  display: none;
717
1030
  }
@@ -778,9 +1091,10 @@
778
1091
  }
779
1092
 
780
1093
  .ui-org-switcher-name,
1094
+
781
1095
  .ui-org-switcher-meta {
782
1096
  overflow: hidden;
783
- line-height: 1.25;
1097
+ line-height: var(--line-height-normal);
784
1098
  text-overflow: ellipsis;
785
1099
  white-space: nowrap;
786
1100
  }
@@ -798,8 +1112,8 @@
798
1112
  .ui-org-switcher-chevron,
799
1113
  .ui-org-switcher-check,
800
1114
  .ui-org-switcher-spinner {
801
- width: 1rem;
802
- height: 1rem;
1115
+ width: var(--icon-size-md);
1116
+ height: var(--icon-size-md);
803
1117
  flex: 0 0 auto;
804
1118
  }
805
1119
 
@@ -820,7 +1134,17 @@
820
1134
  --popover-space-inset: 0;
821
1135
  }
822
1136
 
823
- .ui-org-switcher-sheet {
1137
+ [data-slot="dialog-content"].ui-org-switcher-dialog {
1138
+
1139
+ --dialog-space-inset: var(--dialog-space-y) var(--org-switcher-sheet-inset);
1140
+ --org-switcher-list-offset: var(--org-switcher-sheet-inset);
1141
+ max-inline-size: var(--org-switcher-dialog-width);
1142
+ }
1143
+
1144
+ [data-slot="sheet-content"].ui-org-switcher-sheet {
1145
+ --sheet-pad-x: var(--org-switcher-sheet-inset);
1146
+
1147
+ --org-switcher-list-offset: var(--org-switcher-sheet-inset);
824
1148
  max-height: var(--org-switcher-sheet-max-height);
825
1149
  border-start-start-radius: var(--radius-lg);
826
1150
  border-start-end-radius: var(--radius-lg);
@@ -828,6 +1152,31 @@
828
1152
 
829
1153
  .ui-org-switcher-command {
830
1154
  width: 100%;
1155
+ padding-inline: calc(var(--org-switcher-list-inset) - var(--org-switcher-list-offset));
1156
+ }
1157
+
1158
+ .ui-org-switcher-command .ui-command-group {
1159
+ padding: 0;
1160
+ }
1161
+
1162
+ .ui-org-switcher-command .ui-command-input-wrapper {
1163
+
1164
+ border: 1px solid hsl(var(--input));
1165
+ border-radius: var(--control-radius);
1166
+
1167
+ margin-block: var(--org-switcher-search-space-block);
1168
+ margin-inline: 0;
1169
+ background: hsl(var(--background));
1170
+ }
1171
+
1172
+ .ui-org-switcher-command .ui-command-item {
1173
+ border-radius: 0;
1174
+ margin-inline: 0;
1175
+ padding-inline: var(--command-input-padding-x);
1176
+ }
1177
+
1178
+ .ui-org-switcher-command .ui-command-item + .ui-command-item {
1179
+ border-block-start: 1px solid hsl(var(--border));
831
1180
  }
832
1181
 
833
1182
  .ui-org-switcher-state {
@@ -846,6 +1195,268 @@
846
1195
  animation: spin 1s linear infinite;
847
1196
  }
848
1197
 
1198
+ .ui-app-launcher-popover {
1199
+
1200
+ --popover-surface-inline-size: min(
1201
+ var(--app-launcher-panel-width),
1202
+ calc(100vw - var(--space-4))
1203
+ );
1204
+ --popover-space-inset: var(--space-2);
1205
+ }
1206
+
1207
+ .ui-app-launcher-sheet {
1208
+ max-height: var(--app-launcher-sheet-max-height);
1209
+ border-start-start-radius: var(--radius-lg);
1210
+ border-start-end-radius: var(--radius-lg);
1211
+ }
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
+
1351
+ .ui-app-launcher-panel {
1352
+
1353
+ --app-launcher-columns: 3;
1354
+
1355
+ display: grid;
1356
+ max-height: var(--app-launcher-panel-max-height);
1357
+ gap: var(--app-launcher-panel-gap);
1358
+ overflow-y: auto;
1359
+ }
1360
+
1361
+ .ui-app-launcher-grid {
1362
+ display: grid;
1363
+
1364
+ grid-template-columns: repeat(var(--app-launcher-columns), minmax(0, 1fr));
1365
+ margin: 0;
1366
+ padding: 0;
1367
+ gap: var(--app-launcher-grid-gap);
1368
+ list-style: none;
1369
+ }
1370
+
1371
+ .ui-app-launcher-cell {
1372
+ display: flex;
1373
+ }
1374
+
1375
+ .ui-app-launcher-tile {
1376
+ display: flex;
1377
+ min-width: 0;
1378
+ min-height: var(--app-launcher-tile-min-height);
1379
+ flex: 1;
1380
+ flex-direction: column;
1381
+ align-items: center;
1382
+ justify-content: center;
1383
+ gap: var(--app-launcher-tile-gap);
1384
+ padding: var(--app-launcher-tile-padding);
1385
+ border-radius: var(--app-launcher-tile-radius);
1386
+ color: hsl(var(--app-launcher-tile-color));
1387
+ text-align: center;
1388
+ text-decoration: none;
1389
+ transition:
1390
+ background-color var(--duration-fast),
1391
+ color var(--duration-fast);
1392
+ }
1393
+
1394
+ .ui-app-launcher-tile:hover {
1395
+ background: hsl(var(--app-launcher-tile-hover-background));
1396
+ color: hsl(var(--app-launcher-tile-hover-color));
1397
+ }
1398
+
1399
+ .ui-app-launcher-tile[aria-current="page"] {
1400
+ background: var(--app-launcher-tile-current-background, hsl(var(--secondary)));
1401
+ }
1402
+
1403
+ .ui-app-launcher-mark {
1404
+ display: grid;
1405
+ width: var(--app-launcher-mark-size);
1406
+ height: var(--app-launcher-mark-size);
1407
+ flex: 0 0 auto;
1408
+ place-items: center;
1409
+ overflow: hidden;
1410
+ border-radius: var(--app-launcher-mark-radius);
1411
+ background: hsl(var(--app-launcher-mark-background));
1412
+ color: hsl(var(--app-launcher-mark-foreground));
1413
+ font-size: var(--app-launcher-mark-font-size);
1414
+ font-weight: var(--font-weight-semibold);
1415
+ }
1416
+
1417
+ .ui-app-launcher-mark > * {
1418
+ width: 100%;
1419
+ height: 100%;
1420
+ }
1421
+
1422
+ .ui-app-launcher-name {
1423
+ max-width: 100%;
1424
+ font-size: var(--app-launcher-name-font-size);
1425
+ line-height: var(--line-height-tight);
1426
+ overflow-wrap: anywhere;
1427
+ }
1428
+
1429
+ .ui-app-launcher-group {
1430
+ display: grid;
1431
+ gap: var(--app-launcher-grid-gap);
1432
+ }
1433
+
1434
+ .ui-app-launcher-group-label {
1435
+ padding-inline: var(--app-launcher-tile-padding);
1436
+ color: hsl(var(--app-launcher-group-label-color));
1437
+ font-size: var(--app-launcher-group-label-font-size);
1438
+ font-weight: var(--font-weight-medium);
1439
+ }
1440
+
1441
+ .ui-app-launcher-state {
1442
+ display: flex;
1443
+ min-height: var(--app-launcher-state-min-height);
1444
+ flex-direction: column;
1445
+ align-items: center;
1446
+ justify-content: center;
1447
+ gap: var(--space-3);
1448
+ padding: var(--space-5);
1449
+ color: hsl(var(--muted-foreground));
1450
+ text-align: center;
1451
+ }
1452
+
1453
+ .ui-app-launcher-spinner {
1454
+ width: var(--icon-size-md);
1455
+ height: var(--icon-size-md);
1456
+ flex: 0 0 auto;
1457
+ animation: spin 1s linear infinite;
1458
+ }
1459
+
849
1460
  .sb-product,
850
1461
  .sb-brand {
851
1462
  display: flex;
@@ -900,7 +1511,8 @@
900
1511
  overflow: hidden;
901
1512
  font-size: var(--font-size-base);
902
1513
  font-weight: 700;
903
- line-height: 1.2;
1514
+
1515
+ line-height: var(--line-height-normal);
904
1516
  text-overflow: ellipsis;
905
1517
  white-space: nowrap;
906
1518
  }
@@ -915,7 +1527,8 @@
915
1527
  font-size: var(--sidebar-product-tenant-font-size);
916
1528
  font-weight: 700;
917
1529
  letter-spacing: 0.08em;
918
- line-height: 1.2;
1530
+
1531
+ line-height: var(--line-height-normal);
919
1532
  text-overflow: ellipsis;
920
1533
  text-transform: uppercase;
921
1534
  white-space: nowrap;
@@ -1209,7 +1822,8 @@
1209
1822
  overflow: hidden;
1210
1823
  font-size: var(--sidebar-user-name-font-size);
1211
1824
  font-weight: 500;
1212
- line-height: 1.3;
1825
+
1826
+ line-height: var(--line-height-normal);
1213
1827
  text-overflow: ellipsis;
1214
1828
  white-space: nowrap;
1215
1829
  }
@@ -1218,7 +1832,8 @@
1218
1832
  overflow: hidden;
1219
1833
  color: hsl(var(--muted-foreground));
1220
1834
  font-size: var(--sidebar-user-role-font-size);
1221
- line-height: 1.3;
1835
+
1836
+ line-height: var(--line-height-normal);
1222
1837
  text-overflow: ellipsis;
1223
1838
  white-space: nowrap;
1224
1839
  }
@@ -1314,7 +1929,7 @@
1314
1929
  flex: 0 1 auto;
1315
1930
  }
1316
1931
 
1317
- .ui-topbar-start > :last-child {
1932
+ .ui-topbar-start > :last-child:not(:is(button, a, [role="button"], .ui-button)) {
1318
1933
  max-width: 100%;
1319
1934
  min-width: 0;
1320
1935
  flex: 0 1 auto;
@@ -1374,6 +1989,40 @@
1374
1989
  cursor: not-allowed;
1375
1990
  }
1376
1991
 
1992
+ .ui-topbar-item:has(> [data-slot="topbar-item-badge"]) {
1993
+ position: relative;
1994
+ }
1995
+
1996
+ .ui-topbar-item-badge {
1997
+ position: absolute;
1998
+
1999
+ inset-block-start: calc(
2000
+ 50% - var(--topbar-icon-size) / 2 - var(--topbar-item-badge-offset-block)
2001
+ );
2002
+ inset-inline-end: calc(
2003
+ 50% - var(--topbar-icon-size) / 2 - var(--topbar-item-badge-offset-inline)
2004
+ );
2005
+ display: inline-flex;
2006
+ min-inline-size: var(--topbar-item-badge-size);
2007
+ block-size: var(--topbar-item-badge-size);
2008
+ align-items: center;
2009
+ justify-content: center;
2010
+ padding-inline: var(--topbar-item-badge-padding-inline);
2011
+ border-radius: var(--radius-pill);
2012
+ background: var(--topbar-item-badge-background, hsl(var(--secondary)));
2013
+ color: var(--topbar-item-badge-foreground, hsl(var(--muted-foreground)));
2014
+ font-size: var(--topbar-item-badge-font-size);
2015
+ font-weight: var(--font-weight-medium);
2016
+ line-height: 1;
2017
+
2018
+ pointer-events: none;
2019
+ }
2020
+
2021
+ .ui-topbar-item-badge[data-tone="destructive"] {
2022
+ background: var(--topbar-item-badge-destructive-background, hsl(var(--destructive)));
2023
+ color: var(--topbar-item-badge-destructive-foreground, hsl(var(--destructive-foreground)));
2024
+ }
2025
+
1377
2026
  .ui-topbar-item > svg {
1378
2027
  width: var(--topbar-icon-size);
1379
2028
  height: var(--topbar-icon-size);
@@ -1458,6 +2107,9 @@
1458
2107
  display: flex;
1459
2108
 
1460
2109
  width: 100%;
2110
+
2111
+ flex: 0 1 var(--topbar-search-width);
2112
+ min-inline-size: 0;
1461
2113
  max-width: var(--topbar-search-max-width);
1462
2114
  height: var(--control-height-sm);
1463
2115
  align-items: center;
@@ -1478,6 +2130,10 @@
1478
2130
  height: var(--topbar-icon-size);
1479
2131
  }
1480
2132
 
2133
+ .tb-search .kbd {
2134
+ margin-inline-start: auto;
2135
+ }
2136
+
1481
2137
  .kbd {
1482
2138
  display: inline-flex;
1483
2139
  align-items: center;
@@ -1531,12 +2187,17 @@
1531
2187
 
1532
2188
  @media (max-width: 768px) {
1533
2189
  .tb-chip-sep,
1534
- .tb-search .kbd {
2190
+ .tb-search .kbd,
2191
+
2192
+ .tb-search .tb-search-label {
1535
2193
  display: none;
1536
2194
  }
1537
2195
 
1538
2196
  .tb-search {
1539
2197
  width: auto;
2198
+
2199
+ flex: 0 0 auto;
2200
+ min-inline-size: var(--control-height);
1540
2201
  min-width: var(--control-height);
1541
2202
  }
1542
2203
 
@@ -1793,3 +2454,11 @@
1793
2454
  }
1794
2455
  }
1795
2456
  }
2457
+
2458
+ @layer components {
2459
+
2460
+ .app-root[data-sidebar="none"]:not([data-nav-rail]) {
2461
+ grid-template-columns: minmax(0, 1fr);
2462
+ grid-template-areas: "topbar" "main" "footer";
2463
+ }
2464
+ }