@godxjp/ui 28.13.0 → 30.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 (164) hide show
  1. package/agent/START-HERE.md +29 -10
  2. package/agent/components/Anchor.json +6 -1
  3. package/agent/components/AppShell.json +1 -1
  4. package/agent/components/AreaChart.json +19 -1
  5. package/agent/components/BarChart.json +11 -1
  6. package/agent/components/Cascader.json +1 -1
  7. package/agent/components/CompactBarTrend.json +1 -1
  8. package/agent/components/DataState.json +1 -1
  9. package/agent/components/DataTable.json +4 -4
  10. package/agent/components/FormField.json +1 -1
  11. package/agent/components/InfiniteQueryState.json +1 -1
  12. package/agent/components/Input.json +1 -1
  13. package/agent/components/LineChart.json +20 -2
  14. package/agent/components/ListRow.json +1 -1
  15. package/agent/components/Masonry.json +1 -1
  16. package/agent/components/MasterDetail.json +1 -1
  17. package/agent/components/PasswordStrength.json +1 -1
  18. package/agent/components/PermissionMatrix.json +1 -1
  19. package/agent/components/Select.json +1 -0
  20. package/agent/components/Sidebar.json +1 -1
  21. package/agent/components/Table.json +8 -3
  22. package/agent/components/ThemeScope.json +49 -0
  23. package/agent/components/Topbar.json +1 -0
  24. package/agent/components/TopbarItem.json +2 -1
  25. package/agent/components/Transfer.json +1 -1
  26. package/agent/components/TreeSelect.json +1 -1
  27. package/agent/components/UploadCropDialog.json +1 -1
  28. package/agent/components/formatDate.json +1 -1
  29. package/agent/components-index.json +5 -0
  30. package/agent/components.json +138 -30
  31. package/agent/index.json +19 -9
  32. package/agent/llms.txt +10 -10
  33. package/agent/patterns/tenant-brand-color.json +28 -0
  34. package/agent/patterns-index.json +27 -0
  35. package/agent/patterns.json +28 -0
  36. package/agent/rules.json +15 -0
  37. package/agent/tokens.json +5055 -1060
  38. package/dist/app/index.d.ts +3 -0
  39. package/dist/app/index.js +3 -0
  40. package/dist/app/tenant-theme.d.ts +80 -0
  41. package/dist/app/tenant-theme.js +154 -0
  42. package/dist/app/theme-axes.d.ts +14 -1
  43. package/dist/app/theme-axes.js +24 -31
  44. package/dist/components/charts/chart-cartesian.d.ts +5 -1
  45. package/dist/components/charts/chart-cartesian.js +15 -8
  46. package/dist/components/data-display/badge.d.ts +1 -1
  47. package/dist/components/data-display/badge.js +21 -3
  48. package/dist/components/data-display/carousel.js +4 -4
  49. package/dist/components/data-display/data-table.js +13 -2
  50. package/dist/components/data-display/permission-matrix.js +1 -1
  51. package/dist/components/data-display/table.d.ts +11 -2
  52. package/dist/components/data-display/table.js +19 -3
  53. package/dist/components/data-entry/control-appearance.d.ts +12 -6
  54. package/dist/components/data-entry/control-appearance.js +1 -1
  55. package/dist/components/data-entry/select.js +4 -3
  56. package/dist/components/feedback/dialog.js +6 -3
  57. package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
  58. package/dist/components/feedback/overlay-header-tone.js +4 -4
  59. package/dist/components/feedback/sheet.d.ts +1 -1
  60. package/dist/components/feedback/sheet.js +6 -9
  61. package/dist/components/feedback/sonner.js +16 -3
  62. package/dist/components/general/button.js +22 -5
  63. package/dist/components/layout/affix.js +15 -1
  64. package/dist/components/layout/sidebar.js +7 -1
  65. package/dist/components/navigation/anchor.d.ts +1 -1
  66. package/dist/components/navigation/anchor.js +5 -4
  67. package/dist/components/navigation/app-setting-picker.js +1 -1
  68. package/dist/components/navigation/pagination.js +1 -1
  69. package/dist/components/navigation/tabs.js +15 -2
  70. package/dist/components/query/infinite-query-state.d.ts +22 -6
  71. package/dist/contracts/measurement.json +1 -1
  72. package/dist/lib/control-styles.d.ts +31 -11
  73. package/dist/lib/control-styles.js +6 -6
  74. package/dist/lib/overlay-portal.d.ts +20 -0
  75. package/dist/lib/overlay-portal.js +93 -0
  76. package/dist/props/components/app.prop.d.ts +12 -0
  77. package/dist/props/components/charts.prop.d.ts +30 -0
  78. package/dist/props/components/index.d.ts +1 -1
  79. package/dist/props/components/navigation.prop.d.ts +21 -2
  80. package/dist/props/components/query.prop.d.ts +36 -2
  81. package/dist/props/registry.d.ts +46 -1
  82. package/dist/props/registry.js +38 -3
  83. package/dist/styles/alert-layout.css +39 -19
  84. package/dist/styles/badge-layout.css +11 -7
  85. package/dist/styles/base.css +14 -5
  86. package/dist/styles/card-layout.css +29 -16
  87. package/dist/styles/chart-layout.css +27 -5
  88. package/dist/styles/control.css +225 -103
  89. package/dist/styles/data-display-layout.css +178 -76
  90. package/dist/styles/data-entry-layout.css +35 -99
  91. package/dist/styles/dialog-layout.css +58 -28
  92. package/dist/styles/float-button-layout.css +5 -5
  93. package/dist/styles/focus-ring.css +11 -7
  94. package/dist/styles/layout.css +53 -25
  95. package/dist/styles/logo-layout.css +3 -3
  96. package/dist/styles/motion.css +2 -2
  97. package/dist/styles/navigation-layout.css +117 -44
  98. package/dist/styles/shell-layout.css +90 -124
  99. package/dist/styles/table-layout.css +66 -24
  100. package/dist/styles/text-layout.css +13 -4
  101. package/dist/styles/toggle.css +9 -3
  102. package/dist/tokens/components/actions.css +1 -1
  103. package/dist/tokens/components/attachments.css +4 -4
  104. package/dist/tokens/components/badge.css +4 -4
  105. package/dist/tokens/components/banner.css +1 -1
  106. package/dist/tokens/components/callout.css +1 -1
  107. package/dist/tokens/components/card.css +13 -8
  108. package/dist/tokens/components/chart.css +11 -2
  109. package/dist/tokens/components/chat-bubble.css +2 -2
  110. package/dist/tokens/components/control.css +41 -22
  111. package/dist/tokens/components/conversations.css +2 -1
  112. package/dist/tokens/components/data-display.css +23 -18
  113. package/dist/tokens/components/data-entry.css +1 -1
  114. package/dist/tokens/components/descriptions.css +2 -2
  115. package/dist/tokens/components/draggable-panel.css +2 -2
  116. package/dist/tokens/components/feedback.css +29 -9
  117. package/dist/tokens/components/float-button.css +1 -1
  118. package/dist/tokens/components/legal-document.css +2 -2
  119. package/dist/tokens/components/logo.css +2 -2
  120. package/dist/tokens/components/mega-menu.css +6 -4
  121. package/dist/tokens/components/navigation.css +27 -13
  122. package/dist/tokens/components/segmented.css +11 -6
  123. package/dist/tokens/components/separator.css +1 -1
  124. package/dist/tokens/components/shell.css +24 -10
  125. package/dist/tokens/components/table.css +13 -5
  126. package/dist/tokens/components/thought-chain.css +2 -2
  127. package/dist/tokens/components/toggle.css +3 -1
  128. package/dist/tokens/components/tree.css +3 -1
  129. package/dist/tokens/components/upload.css +8 -8
  130. package/dist/tokens/components/welcome.css +1 -1
  131. package/dist/tokens/foundation.css +30 -3
  132. package/docs/COMPOSITION-VS-COMPONENT.md +31 -0
  133. package/docs/CUSTOMER-THEMING.md +637 -1
  134. package/docs/FRAME-COVERAGE-REPORT.md +3 -2
  135. package/docs/GLASSMORPHISM-STANDARD.md +196 -0
  136. package/docs/THEME-API-COVERAGE.md +538 -0
  137. package/docs/TOKEN-RESOLUTION.md +195 -0
  138. package/docs/TOKENS.md +63 -24
  139. package/docs/asset-modules.d.ts +7 -0
  140. package/docs/data-display/charts.tsx +80 -0
  141. package/docs/data-display/data-table/index.tsx +30 -0
  142. package/docs/data-display/popover.tsx +1 -1
  143. package/docs/data-display/table.tsx +52 -0
  144. package/docs/feedback/sheet.tsx +10 -10
  145. package/docs/foundation/density.tsx +4 -4
  146. package/docs/i18n/messages/en.json +506 -0
  147. package/docs/i18n/messages/ja.json +506 -0
  148. package/docs/i18n/messages/vi.json +506 -0
  149. package/docs/layout/account-chip.tsx +2 -2
  150. package/docs/layout/responsive-grid.tsx +1 -1
  151. package/docs/navigation/toolbar.tsx +20 -12
  152. package/docs/providers/theme-scope.tsx +186 -0
  153. package/docs/showcase/caimono-price-comparison.tsx +911 -0
  154. package/docs/showcase/case4-login.tsx +2 -2
  155. package/docs/showcase/permission-matrix.tsx +13 -5
  156. package/docs/showcase/table-pagination.tsx +2 -1
  157. package/docs/showcase/tenant-brand-color.tsx +338 -0
  158. package/docs/showcase/theme-lab.tsx +2125 -0
  159. package/docs/themes/flat.css +462 -0
  160. package/docs/themes/glassmorphism.css +958 -0
  161. package/docs/themes/index.ts +219 -0
  162. package/docs/themes/neubrutalism.css +475 -0
  163. package/package.json +4 -3
  164. package/scripts/explain-token.mjs +382 -0
@@ -150,10 +150,17 @@
150
150
 
151
151
  overflow: clip;
152
152
  overflow-clip-margin: var(--focus-ring-clip-margin);
153
- border-inline-end: 1px solid hsl(var(--border));
154
- background: hsl(var(--card));
153
+ border-inline-end: var(--stroke-hairline) solid hsl(var(--border));
154
+
155
+ background: var(
156
+ --sidebar-surface-background,
157
+ hsl(var(--card) / var(--sidebar-surface-background-alpha, var(--card-alpha, 100%)))
158
+ );
155
159
 
156
160
  background-image: var(--sidebar-gradient);
161
+
162
+ backdrop-filter: blur(var(--sidebar-backdrop-blur-size))
163
+ saturate(var(--surface-backdrop-saturate, 160%));
157
164
  color: hsl(var(--foreground));
158
165
  }
159
166
 
@@ -167,8 +174,8 @@
167
174
  align-items: center;
168
175
  overflow: clip;
169
176
  overflow-clip-margin: var(--focus-ring-clip-margin);
170
- border-inline-end: 1px solid hsl(var(--border));
171
- background: hsl(var(--muted));
177
+ border-inline-end: var(--stroke-hairline) solid hsl(var(--border));
178
+ background: var(--app-shell-nav-rail-background, hsl(var(--muted)));
172
179
  color: hsl(var(--foreground));
173
180
  padding-block: var(--app-shell-nav-rail-inset);
174
181
  }
@@ -197,7 +204,7 @@
197
204
  }
198
205
 
199
206
  .app-nav-rail[data-edge="end"] {
200
- border-inline-start: 1px solid hsl(var(--border));
207
+ border-inline-start: var(--stroke-hairline) solid hsl(var(--border));
201
208
  border-inline-end: 0;
202
209
  }
203
210
 
@@ -215,11 +222,11 @@
215
222
  }
216
223
 
217
224
  .app-nav-rail[data-edge="top"] {
218
- border-block-end: 1px solid hsl(var(--border));
225
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
219
226
  }
220
227
 
221
228
  .app-nav-rail[data-edge="bottom"] {
222
- border-block-start: 1px solid hsl(var(--border));
229
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
223
230
  }
224
231
 
225
232
  .app-root:not([data-topbar-span="full"]):is(
@@ -251,10 +258,14 @@
251
258
  align-items: center;
252
259
  gap: var(--app-shell-bar-gap);
253
260
  padding-inline: var(--app-shell-bar-inset);
254
- border-bottom: 1px solid hsl(var(--border));
255
- background: hsl(var(--card));
261
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
262
+
263
+ background: var(--app-shell-bar-background, hsl(var(--card) / var(--card-alpha, 100%)));
256
264
 
257
265
  background-image: var(--topbar-gradient);
266
+
267
+ backdrop-filter: blur(var(--app-shell-bar-backdrop-blur-size))
268
+ saturate(var(--surface-backdrop-saturate, 160%));
258
269
  }
259
270
 
260
271
  .app-main {
@@ -279,7 +290,7 @@
279
290
 
280
291
  .app-footer {
281
292
  grid-area: footer;
282
- border-top: 1px solid hsl(var(--border));
293
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
283
294
  background: hsl(var(--background));
284
295
  }
285
296
 
@@ -481,9 +492,12 @@
481
492
  height: var(--auth-requester-icon-size);
482
493
  align-items: center;
483
494
  justify-content: center;
484
- border-radius: var(--radius-sm);
495
+ border-radius: var(
496
+ --radius-sm,
497
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
498
+ );
485
499
  background: hsl(var(--accent));
486
- color: hsl(var(--primary));
500
+ color: hsl(var(--text-brand, var(--primary)));
487
501
  }
488
502
 
489
503
  .ui-auth-requester-icon > svg {
@@ -498,7 +512,7 @@
498
512
  align-items: center;
499
513
  gap: var(--auth-account-summary-gap);
500
514
  padding: var(--auth-account-summary-padding);
501
- border-radius: var(--radius-md);
515
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
502
516
  background: hsl(var(--muted));
503
517
  }
504
518
 
@@ -596,7 +610,7 @@
596
610
  --separator-label-line-height: var(--auth-shell-divider-label-line-height);
597
611
  --separator-label-font-weight: var(--font-weight-normal);
598
612
  --separator-rule-color: var(--auth-shell-divider-rule-color);
599
- --separator-label-color: var(--auth-shell-divider-label-color);
613
+ --separator-label-color: var(--auth-shell-divider-label-color, var(--muted-foreground));
600
614
  }
601
615
 
602
616
  @media (max-width: 30rem) {
@@ -644,8 +658,8 @@
644
658
  align-items: center;
645
659
  gap: var(--space-3);
646
660
  padding-inline: var(--centered-shell-bar-padding-x);
647
- border-bottom: 1px solid hsl(var(--border));
648
- background: hsl(var(--card));
661
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
662
+ background: hsl(var(--card) / var(--card-alpha, 100%));
649
663
 
650
664
  background-image: var(--topbar-gradient);
651
665
  }
@@ -685,7 +699,7 @@
685
699
 
686
700
  .ui-centered-shell-footer {
687
701
  padding: var(--centered-shell-footer-padding);
688
- border-top: 1px solid hsl(var(--border));
702
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
689
703
  text-align: center;
690
704
  color: hsl(var(--muted-foreground));
691
705
  }
@@ -709,7 +723,7 @@
709
723
  block-size: var(--app-shell-bar-height);
710
724
  min-inline-size: 0;
711
725
  align-items: center;
712
- border-block-end: 1px solid hsl(var(--border));
726
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
713
727
  padding-inline: var(--space-3);
714
728
  }
715
729
 
@@ -820,7 +834,7 @@
820
834
  min-height: 0;
821
835
  flex: 0 0 auto;
822
836
  flex-direction: column;
823
- border-inline-end: 1px solid hsl(var(--border));
837
+ border-inline-end: var(--stroke-hairline) solid hsl(var(--border));
824
838
  inline-size: var(--app-shell-nav-rail-width);
825
839
  overflow-y: auto;
826
840
  overscroll-behavior: contain;
@@ -841,7 +855,7 @@
841
855
  }
842
856
 
843
857
  .app-breadcrumb {
844
- border-bottom: 1px solid hsl(var(--border));
858
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
845
859
 
846
860
  padding: var(--space-2) var(--space-page-active-x);
847
861
  color: hsl(var(--muted-foreground));
@@ -1143,7 +1157,7 @@
1143
1157
  }
1144
1158
 
1145
1159
  .ui-org-switcher-meta {
1146
- color: hsl(var(--org-switcher-meta-foreground));
1160
+ color: hsl(var(--org-switcher-meta-foreground, var(--muted-foreground)));
1147
1161
  font-size: var(--sidebar-user-role-font-size);
1148
1162
  }
1149
1163
 
@@ -1185,8 +1199,8 @@
1185
1199
 
1186
1200
  --org-switcher-list-offset: var(--org-switcher-sheet-inset);
1187
1201
  max-height: var(--org-switcher-sheet-max-height);
1188
- border-start-start-radius: var(--radius-lg);
1189
- border-start-end-radius: var(--radius-lg);
1202
+ border-start-start-radius: var(--radius-lg, var(--radius));
1203
+ border-start-end-radius: var(--radius-lg, var(--radius));
1190
1204
  }
1191
1205
 
1192
1206
  .ui-org-switcher-command {
@@ -1197,7 +1211,7 @@
1197
1211
 
1198
1212
  .ui-org-switcher-command .ui-command-input-wrapper {
1199
1213
 
1200
- border: 1px solid hsl(var(--input));
1214
+ border: var(--stroke-hairline) solid hsl(var(--input) / var(--input-alpha, 100%));
1201
1215
  border-radius: var(--control-radius);
1202
1216
 
1203
1217
  margin-block: var(--org-switcher-search-space-block);
@@ -1256,8 +1270,8 @@
1256
1270
 
1257
1271
  .ui-app-launcher-sheet {
1258
1272
  max-height: var(--app-launcher-sheet-max-height);
1259
- border-start-start-radius: var(--radius-lg);
1260
- border-start-end-radius: var(--radius-lg);
1273
+ border-start-start-radius: var(--radius-lg, var(--radius));
1274
+ border-start-end-radius: var(--radius-lg, var(--radius));
1261
1275
  }
1262
1276
 
1263
1277
  [data-slot="dialog-overlay"].ui-app-launcher-launchpad-overlay {
@@ -1342,20 +1356,20 @@
1342
1356
  justify-content: flex-start;
1343
1357
  gap: var(--app-launcher-launchpad-tile-gap);
1344
1358
  padding: var(--app-launcher-launchpad-tile-padding);
1345
- border-radius: var(--app-launcher-launchpad-tile-radius);
1359
+ border-radius: var(--app-launcher-launchpad-tile-radius, var(--radius));
1346
1360
  }
1347
1361
 
1348
1362
  .ui-app-launcher-launchpad .ui-app-launcher-tile:hover,
1349
1363
  .ui-app-launcher-launchpad .ui-app-launcher-tile[aria-current="page"] {
1350
1364
  background: var(--app-launcher-launchpad-tile-hover-background);
1351
- color: hsl(var(--app-launcher-tile-color));
1365
+ color: hsl(var(--app-launcher-tile-color, var(--foreground)));
1352
1366
  }
1353
1367
 
1354
1368
  .ui-app-launcher-launchpad .ui-app-launcher-mark {
1355
1369
  width: var(--app-launcher-launchpad-mark-size);
1356
1370
  height: var(--app-launcher-launchpad-mark-size);
1357
- border: 1px solid var(--app-launcher-launchpad-mark-border-color);
1358
- border-radius: var(--app-launcher-launchpad-mark-radius);
1371
+ border: var(--stroke-hairline) solid var(--app-launcher-launchpad-mark-border-color);
1372
+ border-radius: var(--app-launcher-launchpad-mark-radius, var(--radius));
1359
1373
  background: var(--app-launcher-launchpad-mark-background);
1360
1374
  box-shadow: var(--app-launcher-launchpad-mark-shadow);
1361
1375
  color: hsl(var(--foreground));
@@ -1431,8 +1445,8 @@
1431
1445
  justify-content: center;
1432
1446
  gap: var(--app-launcher-tile-gap);
1433
1447
  padding: var(--app-launcher-tile-padding);
1434
- border-radius: var(--app-launcher-tile-radius);
1435
- color: hsl(var(--app-launcher-tile-color));
1448
+ border-radius: var(--app-launcher-tile-radius, var(--radius));
1449
+ color: hsl(var(--app-launcher-tile-color, var(--foreground)));
1436
1450
  text-align: center;
1437
1451
  text-decoration: none;
1438
1452
  transition:
@@ -1441,7 +1455,10 @@
1441
1455
  }
1442
1456
 
1443
1457
  .ui-app-launcher-tile:hover {
1444
- background: hsl(var(--app-launcher-tile-hover-background, var(--accent)));
1458
+ background: hsl(
1459
+ var(--app-launcher-tile-hover-background, var(--accent)) /
1460
+ var(--app-launcher-tile-hover-background-alpha, 100%)
1461
+ );
1445
1462
  color: hsl(var(--app-launcher-tile-hover-color, var(--accent-foreground)));
1446
1463
  }
1447
1464
 
@@ -1456,7 +1473,7 @@
1456
1473
  flex: 0 0 auto;
1457
1474
  place-items: center;
1458
1475
  overflow: hidden;
1459
- border-radius: var(--app-launcher-mark-radius);
1476
+ border-radius: var(--app-launcher-mark-radius, var(--radius));
1460
1477
  background: hsl(var(--app-launcher-mark-background));
1461
1478
  color: hsl(var(--app-launcher-mark-foreground));
1462
1479
  font-size: var(--app-launcher-mark-font-size);
@@ -1482,7 +1499,7 @@
1482
1499
 
1483
1500
  .ui-app-launcher-group-label {
1484
1501
  padding-inline: var(--app-launcher-tile-padding);
1485
- color: hsl(var(--app-launcher-group-label-color));
1502
+ color: hsl(var(--app-launcher-group-label-color, var(--muted-foreground)));
1486
1503
  font-size: var(--app-launcher-group-label-font-size);
1487
1504
  font-weight: var(--font-weight-medium);
1488
1505
  }
@@ -1516,7 +1533,7 @@
1516
1533
  gap: var(--space-2);
1517
1534
  padding-inline: var(--space-4);
1518
1535
  border: 0;
1519
- border-bottom: 1px solid hsl(var(--border));
1536
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
1520
1537
  background: transparent;
1521
1538
  color: inherit;
1522
1539
  font-family: inherit;
@@ -1544,7 +1561,8 @@
1544
1561
  flex: 0 0 auto;
1545
1562
  place-items: center;
1546
1563
  border-radius: var(--radius);
1547
- color: white;
1564
+
1565
+ color: var(--sidebar-logo-mark-color, white);
1548
1566
  font-size: var(--sidebar-logo-mark-font-size);
1549
1567
  font-weight: 700;
1550
1568
  }
@@ -1637,7 +1655,7 @@
1637
1655
  gap: var(--sidebar-nav-item-gap);
1638
1656
  padding-inline: var(--sidebar-nav-item-padding-x);
1639
1657
  border: 0;
1640
- border-radius: var(--sidebar-nav-item-radius);
1658
+ border-radius: var(--sidebar-nav-item-radius, calc(var(--radius) - 1px));
1641
1659
  background: transparent;
1642
1660
 
1643
1661
  color: var(--sidebar-nav-item-foreground, hsl(var(--muted-foreground)));
@@ -1664,7 +1682,12 @@
1664
1682
  );
1665
1683
  color: var(
1666
1684
  --sidebar-item-active-foreground,
1667
- hsl(var(--primary-active, from hsl(var(--primary)) var(--primary-active-channels)))
1685
+ hsl(
1686
+ var(
1687
+ --text-primary,
1688
+ var(--primary-active, from hsl(var(--primary)) var(--primary-active-channels))
1689
+ )
1690
+ )
1668
1691
  );
1669
1692
  font-weight: var(--font-weight-medium);
1670
1693
  }
@@ -1734,7 +1757,7 @@
1734
1757
 
1735
1758
  .sb-footer {
1736
1759
  margin-top: auto;
1737
- border-top: 1px solid hsl(var(--border));
1760
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
1738
1761
  padding: var(--space-2);
1739
1762
  }
1740
1763
 
@@ -1757,7 +1780,7 @@
1757
1780
  gap: 2px;
1758
1781
  margin: 2px 0 var(--space-1) calc(var(--space-2) + 0.6875rem);
1759
1782
  padding-inline-start: var(--space-3);
1760
- border-inline-start: 1px solid hsl(var(--border));
1783
+ border-inline-start: var(--stroke-hairline) solid hsl(var(--border));
1761
1784
  }
1762
1785
 
1763
1786
  .sb-nav-item--sub {
@@ -1786,7 +1809,12 @@
1786
1809
  background: transparent;
1787
1810
  color: var(
1788
1811
  --sidebar-item-active-foreground,
1789
- hsl(var(--primary-active, from hsl(var(--primary)) var(--primary-active-channels)))
1812
+ hsl(
1813
+ var(
1814
+ --text-primary,
1815
+ var(--primary-active, from hsl(var(--primary)) var(--primary-active-channels))
1816
+ )
1817
+ )
1790
1818
  );
1791
1819
  font-weight: var(--font-weight-medium);
1792
1820
  }
@@ -1888,7 +1916,7 @@
1888
1916
  width: 0.5625rem;
1889
1917
  height: 0.5625rem;
1890
1918
  border-radius: var(--radius-pill);
1891
- border: 1.5px solid hsl(var(--card));
1919
+ border: var(--stroke-sm) solid hsl(var(--card) / var(--card-alpha, 100%));
1892
1920
  background: hsl(var(--success));
1893
1921
  }
1894
1922
 
@@ -2031,6 +2059,10 @@
2031
2059
  justify-content: center;
2032
2060
  }
2033
2061
 
2062
+ :is(.ui-topbar-start, .ui-topbar-center, .ui-topbar-end) > *:has(.ui-topbar-item) {
2063
+ align-self: stretch;
2064
+ }
2065
+
2034
2066
  .ui-topbar-end {
2035
2067
  max-width: 100%;
2036
2068
  flex: 0 1 auto;
@@ -2064,7 +2096,7 @@
2064
2096
  border: 0;
2065
2097
  border-radius: var(--topbar-item-radius);
2066
2098
  background: transparent;
2067
- color: hsl(var(--topbar-item-color));
2099
+ color: hsl(var(--topbar-item-color, var(--muted-foreground)));
2068
2100
  cursor: pointer;
2069
2101
 
2070
2102
  font: inherit;
@@ -2076,7 +2108,10 @@
2076
2108
  }
2077
2109
 
2078
2110
  .ui-topbar-item:hover {
2079
- background: hsl(var(--topbar-item-hover-background, var(--accent)));
2111
+ background: hsl(
2112
+ var(--topbar-item-hover-background, var(--accent)) /
2113
+ var(--topbar-item-hover-background-alpha, 100%)
2114
+ );
2080
2115
  color: hsl(var(--topbar-item-hover-color, var(--accent-foreground)));
2081
2116
  }
2082
2117
 
@@ -2148,74 +2183,6 @@
2148
2183
  }
2149
2184
  }
2150
2185
 
2151
- .tb-chip {
2152
- display: inline-flex;
2153
- max-width: 15rem;
2154
- min-width: 0;
2155
- height: var(--control-height-sm);
2156
- align-items: center;
2157
- gap: var(--space-1);
2158
- padding-inline: var(--space-2);
2159
- border: 1px solid transparent;
2160
- border-radius: var(--radius);
2161
- background: transparent;
2162
- color: hsl(var(--foreground));
2163
- cursor: pointer;
2164
- font: inherit;
2165
- font-size: var(--font-size-base);
2166
- }
2167
-
2168
- .tb-chip:hover,
2169
- .tb-chip[data-open="true"] {
2170
- border-color: hsl(var(--border));
2171
- background: hsl(var(--accent));
2172
- }
2173
-
2174
- .tb-chip-empty {
2175
- border-color: hsl(var(--border));
2176
- border-style: dashed;
2177
- color: hsl(var(--muted-foreground));
2178
- }
2179
-
2180
- .tb-chip-static,
2181
- .tb-chip-static:hover {
2182
- border-color: transparent;
2183
- background: transparent;
2184
- cursor: default;
2185
- }
2186
-
2187
- .tb-chip-icon {
2188
- display: grid;
2189
- width: var(--topbar-chip-icon-size);
2190
- height: var(--topbar-chip-icon-size);
2191
- flex: 0 0 auto;
2192
- place-items: center;
2193
- border-radius: calc(var(--radius) - 2px);
2194
- color: white;
2195
- font-size: var(--topbar-chip-icon-font-size);
2196
- font-weight: 700;
2197
- }
2198
-
2199
- .tb-chip-label {
2200
- min-width: 0;
2201
- overflow: hidden;
2202
- font-weight: 500;
2203
-
2204
- line-height: 1.5;
2205
- text-overflow: ellipsis;
2206
- white-space: nowrap;
2207
- }
2208
-
2209
- .tb-chip-caret,
2210
- .tb-chip-sep {
2211
- color: hsl(var(--muted-foreground));
2212
- }
2213
-
2214
- .tb-chip-caret svg {
2215
- width: var(--topbar-caret-icon-size);
2216
- height: var(--topbar-caret-icon-size);
2217
- }
2218
-
2219
2186
  .tb-search {
2220
2187
  display: flex;
2221
2188
 
@@ -2228,7 +2195,7 @@
2228
2195
  align-items: center;
2229
2196
  gap: var(--space-2);
2230
2197
  padding-inline: var(--space-2);
2231
- border: 1px solid hsl(var(--input));
2198
+ border: var(--stroke-hairline) solid hsl(var(--input) / var(--input-alpha, 100%));
2232
2199
  border-radius: var(--radius);
2233
2200
  background: hsl(var(--background));
2234
2201
  color: hsl(var(--muted-foreground));
@@ -2252,8 +2219,8 @@
2252
2219
  align-items: center;
2253
2220
  margin-inline-start: auto;
2254
2221
  padding: 1px 5px;
2255
- border: 1px solid hsl(var(--border));
2256
- border-bottom-width: 2px;
2222
+ border: var(--stroke-hairline) solid hsl(var(--border));
2223
+ border-bottom-width: var(--stroke-md);
2257
2224
  border-radius: 4px;
2258
2225
  background: hsl(var(--secondary));
2259
2226
  color: hsl(var(--muted-foreground));
@@ -2304,7 +2271,6 @@
2304
2271
  padding-inline: var(--topbar-item-padding-inline-compact);
2305
2272
  }
2306
2273
 
2307
- .tb-chip-sep,
2308
2274
  .tb-search .kbd,
2309
2275
 
2310
2276
  .tb-search .tb-search-label {
@@ -2451,7 +2417,7 @@
2451
2417
  gap: var(--mobile-shell-region-gap);
2452
2418
  padding-block-start: var(--mobile-shell-safe-inset-block-start);
2453
2419
  padding-inline: var(--mobile-shell-padding-inline);
2454
- background: hsl(var(--card));
2420
+ background: hsl(var(--card) / var(--card-alpha, 100%));
2455
2421
  }
2456
2422
 
2457
2423
  .ui-mobile-shell-header {
@@ -2465,8 +2431,8 @@
2465
2431
  align-items: center;
2466
2432
  gap: var(--mobile-shell-region-gap);
2467
2433
  padding-inline: var(--mobile-shell-padding-inline);
2468
- border-block-end: 1px solid hsl(var(--border));
2469
- background: hsl(var(--card));
2434
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
2435
+ background: hsl(var(--card) / var(--card-alpha, 100%));
2470
2436
  background-image: var(--topbar-gradient);
2471
2437
  }
2472
2438
 
@@ -2508,8 +2474,8 @@
2508
2474
  gap: var(--mobile-shell-region-gap);
2509
2475
  padding-block: var(--mobile-shell-actions-padding-block);
2510
2476
  padding-inline: var(--mobile-shell-padding-inline);
2511
- border-block-start: 1px solid hsl(var(--border));
2512
- background: hsl(var(--card));
2477
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
2478
+ background: hsl(var(--card) / var(--card-alpha, 100%));
2513
2479
  }
2514
2480
 
2515
2481
  .ui-mobile-shell-tabbar {
@@ -2521,8 +2487,8 @@
2521
2487
  flex: 0 0 auto;
2522
2488
  padding-block-end: var(--mobile-shell-safe-inset-block-end);
2523
2489
  padding-inline: var(--mobile-shell-safe-inset-inline);
2524
- border-block-start: 1px solid hsl(var(--border));
2525
- background: hsl(var(--card));
2490
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
2491
+ background: hsl(var(--card) / var(--card-alpha, 100%));
2526
2492
  }
2527
2493
 
2528
2494
  .ui-mobile-shell-tabbar > * {