@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
@@ -14,12 +14,12 @@
14
14
 
15
15
  .ui-separator:not([data-labelled])[data-orientation="horizontal"] {
16
16
  width: 100%;
17
- height: var(--separator-rule-size);
17
+ height: var(--separator-rule-size, var(--stroke-hairline));
18
18
  background: hsl(var(--separator-rule-color, var(--border)));
19
19
  }
20
20
 
21
21
  .ui-separator:not([data-labelled])[data-orientation="vertical"] {
22
- width: var(--separator-rule-size);
22
+ width: var(--separator-rule-size, var(--stroke-hairline));
23
23
  height: 100%;
24
24
  background: hsl(var(--separator-rule-color, var(--border)));
25
25
  }
@@ -41,7 +41,7 @@
41
41
  }
42
42
 
43
43
  .ui-separator-rule {
44
- block-size: var(--separator-rule-size);
44
+ block-size: var(--separator-rule-size, var(--stroke-hairline));
45
45
  background: hsl(var(--separator-rule-color, var(--border)));
46
46
  }
47
47
 
@@ -62,7 +62,10 @@
62
62
 
63
63
  .ui-separator[data-tone="primary"] {
64
64
  --separator-rule-color: var(--separator-tone-primary-rule-color, var(--primary));
65
- --separator-label-color: var(--separator-tone-primary-label-color, var(--primary));
65
+ --separator-label-color: var(
66
+ --separator-tone-primary-label-color,
67
+ var(--text-brand, var(--primary))
68
+ );
66
69
  }
67
70
 
68
71
  .ui-separator[data-tone="success"] {
@@ -560,7 +563,7 @@
560
563
  }
561
564
 
562
565
  .ui-resizable-handle {
563
- width: var(--control-border-width);
566
+ width: var(--control-border-width, var(--stroke-hairline));
564
567
  background: hsl(var(--border));
565
568
  position: relative;
566
569
  flex-shrink: 0;
@@ -572,7 +575,7 @@
572
575
 
573
576
  .ui-resizable-handle[aria-orientation="vertical"] {
574
577
  width: auto;
575
- height: var(--control-border-width);
578
+ height: var(--control-border-width, var(--stroke-hairline));
576
579
  }
577
580
 
578
581
  .ui-resizable-handle:hover,
@@ -920,7 +923,7 @@
920
923
  gap: var(--space-inline-sm);
921
924
  padding-top: var(--space-stack-md);
922
925
  padding-inline-end: calc(var(--space-page-active-x) + var(--page-footer-content-slack));
923
- border-top: var(--page-footer-divider, 1px solid hsl(var(--border)));
926
+ border-top: var(--page-footer-divider, var(--stroke-hairline) solid hsl(var(--border)));
924
927
  }
925
928
 
926
929
  .ui-page-footer > * {
@@ -1018,19 +1021,31 @@
1018
1021
 
1019
1022
  .ui-empty-state[data-tone="success"] {
1020
1023
  --empty-state-icon-foreground: hsl(var(--success));
1021
- --empty-state-icon-tint: hsl(var(--success) / 0.12);
1024
+ --empty-state-icon-tint: var(
1025
+ --surface-success,
1026
+ hsl(var(--success) / var(--surface-success-alpha, 0.12))
1027
+ );
1022
1028
  }
1023
1029
  .ui-empty-state[data-tone="warning"] {
1024
1030
  --empty-state-icon-foreground: hsl(var(--warning));
1025
- --empty-state-icon-tint: hsl(var(--warning) / 0.12);
1031
+ --empty-state-icon-tint: var(
1032
+ --surface-warning,
1033
+ hsl(var(--warning) / var(--surface-warning-alpha, 0.12))
1034
+ );
1026
1035
  }
1027
1036
  .ui-empty-state[data-tone="destructive"] {
1028
1037
  --empty-state-icon-foreground: hsl(var(--destructive));
1029
- --empty-state-icon-tint: hsl(var(--destructive) / 0.12);
1038
+ --empty-state-icon-tint: var(
1039
+ --surface-destructive,
1040
+ hsl(var(--destructive) / var(--surface-destructive-alpha, 0.12))
1041
+ );
1030
1042
  }
1031
1043
  .ui-empty-state[data-tone="info"] {
1032
1044
  --empty-state-icon-foreground: hsl(var(--info));
1033
- --empty-state-icon-tint: hsl(var(--info) / 0.12);
1045
+ --empty-state-icon-tint: var(
1046
+ --surface-info,
1047
+ hsl(var(--info) / var(--surface-info-alpha, 0.12))
1048
+ );
1034
1049
  }
1035
1050
  }
1036
1051
 
@@ -1118,8 +1133,11 @@
1118
1133
  align-items: center;
1119
1134
  justify-content: center;
1120
1135
  padding-inline: var(--pagination-page-padding-x);
1121
- border-radius: var(--radius-sm);
1122
- border: 1px solid hsl(var(--border));
1136
+ border-radius: var(
1137
+ --radius-sm,
1138
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1139
+ );
1140
+ border: var(--stroke-hairline) solid hsl(var(--border));
1123
1141
  color: hsl(var(--foreground));
1124
1142
  text-decoration: none;
1125
1143
  }
@@ -1385,8 +1403,8 @@
1385
1403
  .ui-legal-document-toc-link {
1386
1404
  display: block;
1387
1405
  padding: var(--legal-document-toc-item-padding);
1388
- border-radius: var(--legal-document-toc-item-radius);
1389
- border-inline-start: var(--legal-document-toc-marker-width) solid transparent;
1406
+ border-radius: var(--legal-document-toc-item-radius, var(--radius));
1407
+ border-inline-start: var(--legal-document-toc-marker-width, var(--stroke-md)) solid transparent;
1390
1408
  font-size: var(--legal-document-toc-font-size);
1391
1409
  line-height: 1.6;
1392
1410
  color: hsl(var(--legal-document-toc-foreground, var(--muted-foreground)));
@@ -1655,7 +1673,10 @@
1655
1673
  display: list-item;
1656
1674
  }
1657
1675
  .ui-flex[data-surface] {
1658
- border-radius: var(--flex-surface-radius, var(--radius-md));
1676
+ border-radius: var(
1677
+ --flex-surface-radius,
1678
+ var(--radius-md, calc(var(--radius) / var(--radius-ratio)))
1679
+ );
1659
1680
  }
1660
1681
  .ui-flex[data-surface="muted"] {
1661
1682
  background: var(--flex-surface-background, hsl(var(--muted)));
@@ -1663,11 +1684,11 @@
1663
1684
  .ui-flex[data-surface="warning"] {
1664
1685
  background: var(
1665
1686
  --flex-surface-background,
1666
- hsl(var(--warning) / var(--flex-surface-warning-alpha))
1687
+ var(--surface-warning, hsl(var(--warning) / var(--flex-surface-warning-alpha)))
1667
1688
  );
1668
1689
  }
1669
1690
  .ui-flex[data-surface="popover"] {
1670
- background: var(--flex-surface-background, hsl(var(--popover)));
1691
+ background: var(--flex-surface-background, hsl(var(--popover) / var(--popover-alpha, 100%)));
1671
1692
  border: var(--stroke-hairline) solid hsl(var(--border));
1672
1693
  box-shadow: var(--shadow-sm);
1673
1694
  }
@@ -1847,7 +1868,7 @@
1847
1868
  min-inline-size: 0;
1848
1869
  align-items: center;
1849
1870
  gap: var(--actions-gap);
1850
- border-radius: var(--actions-radius);
1871
+ border-radius: var(--actions-radius, var(--radius));
1851
1872
  }
1852
1873
 
1853
1874
  .ui-actions[data-variant="filled"],
@@ -1871,7 +1892,7 @@
1871
1892
  }
1872
1893
 
1873
1894
  .ui-actions-feedback [data-pressed] {
1874
- color: hsl(var(--primary));
1895
+ color: hsl(var(--text-brand, var(--primary)));
1875
1896
  }
1876
1897
 
1877
1898
  @keyframes ui-actions-fade-in {
@@ -1925,8 +1946,8 @@
1925
1946
  max-inline-size: calc(100% - var(--draggable-panel-inset) - var(--draggable-panel-inset));
1926
1947
  block-size: var(--draggable-panel-block-size);
1927
1948
  max-block-size: var(--draggable-panel-max-block-size);
1928
- border: var(--draggable-panel-border-width) solid hsl(var(--border));
1929
- border-radius: var(--draggable-panel-radius);
1949
+ border: var(--draggable-panel-border-width, var(--stroke-hairline)) solid hsl(var(--border));
1950
+ border-radius: var(--draggable-panel-radius, var(--radius));
1930
1951
  background-color: hsl(var(--background));
1931
1952
  box-shadow: var(--draggable-panel-shadow);
1932
1953
  overflow: hidden;
@@ -1973,7 +1994,8 @@
1973
1994
  align-items: center;
1974
1995
  gap: var(--draggable-panel-bar-gap);
1975
1996
  padding: var(--draggable-panel-bar-padding);
1976
- border-block-end: var(--draggable-panel-border-width) solid hsl(var(--border));
1997
+ border-block-end: var(--draggable-panel-border-width, var(--stroke-hairline)) solid
1998
+ hsl(var(--border));
1977
1999
  background-color: hsl(var(--muted) / 0.4);
1978
2000
  }
1979
2001
 
@@ -1982,7 +2004,10 @@
1982
2004
  flex-shrink: 0;
1983
2005
  align-items: center;
1984
2006
  justify-content: center;
1985
- border-radius: var(--radius-sm);
2007
+ border-radius: var(
2008
+ --radius-sm,
2009
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2010
+ );
1986
2011
  color: hsl(var(--muted-foreground));
1987
2012
  cursor: grab;
1988
2013
  touch-action: none;
@@ -2023,7 +2048,10 @@
2023
2048
  flex-shrink: 0;
2024
2049
  align-items: center;
2025
2050
  justify-content: center;
2026
- border-radius: var(--radius-sm);
2051
+ border-radius: var(
2052
+ --radius-sm,
2053
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2054
+ );
2027
2055
  color: hsl(var(--muted-foreground));
2028
2056
  }
2029
2057
 
@@ -6,7 +6,7 @@
6
6
  flex: 0 0 auto;
7
7
  width: var(--logo-size-md);
8
8
  height: var(--logo-size-md);
9
- border-radius: var(--logo-radius);
9
+ border-radius: var(--logo-radius, var(--radius));
10
10
  background: hsl(var(--primary));
11
11
  color: hsl(var(--primary-foreground));
12
12
  font-weight: 700;
@@ -199,9 +199,9 @@
199
199
  .ui-logo-lockup .ui-logo-product-suffix::before {
200
200
  content: "";
201
201
  flex: 0 0 auto;
202
- inline-size: var(--logo-divider-width);
202
+ inline-size: var(--logo-divider-width, var(--stroke-hairline));
203
203
  block-size: var(--logo-divider-height);
204
- border-radius: var(--logo-divider-width);
204
+ border-radius: var(--logo-divider-width, var(--stroke-hairline));
205
205
  background: hsl(
206
206
  var(--logo-divider-color, var(--logo-godx-ink-color)) / var(--logo-divider-alpha)
207
207
  );
@@ -92,7 +92,7 @@
92
92
  color: hsl(var(--foreground));
93
93
  }
94
94
  .ui-activity[data-tone="primary"] .ui-activity-mark {
95
- color: hsl(var(--primary));
95
+ color: hsl(var(--text-brand, var(--primary)));
96
96
  }
97
97
  .ui-activity[data-tone="success"] .ui-activity-mark {
98
98
  color: hsl(var(--text-success));
@@ -208,7 +208,7 @@
208
208
  background: CanvasText;
209
209
  }
210
210
  .ui-activity-bar {
211
- border: 1px solid CanvasText;
211
+ border: var(--stroke-hairline) solid CanvasText;
212
212
  }
213
213
  }
214
214
  }
@@ -48,6 +48,10 @@
48
48
  scrollbar-width: thin;
49
49
  }
50
50
 
51
+ [data-slot="tabs-trigger"] {
52
+ border-width: var(--stroke-hairline);
53
+ }
54
+
51
55
  [data-slot="tabs-list"][data-variant="line"] [data-slot="tabs-trigger"]::after {
52
56
  content: "";
53
57
  position: absolute;
@@ -164,6 +168,20 @@
164
168
  }
165
169
  }
166
170
 
171
+ [data-slot="tabs-list"][data-variant="default"] {
172
+ background-color: var(
173
+ --tabs-list-background,
174
+ hsl(var(--muted) / var(--tabs-list-background-alpha, 100%))
175
+ );
176
+ }
177
+
178
+ [data-slot="tabs-trigger"][data-state="active"] {
179
+ background-color: var(
180
+ --tabs-trigger-active-background,
181
+ hsl(var(--background) / var(--tabs-trigger-active-background-alpha, 100%))
182
+ );
183
+ }
184
+
167
185
  .ui-tabs-bar {
168
186
  display: flex;
169
187
  min-inline-size: 0;
@@ -210,23 +228,27 @@
210
228
 
211
229
  [data-slot="tabs"][data-variant="card"] [data-slot="tabs-list"],
212
230
  [data-slot="tabs"][data-variant="editable-card"] [data-slot="tabs-list"] {
213
- box-shadow: inset 0 calc(-1 * var(--tabs-card-rail-border-width)) 0 hsl(var(--border));
231
+ box-shadow: inset 0 calc(-1 * var(--tabs-card-rail-border-width, var(--stroke-hairline))) 0
232
+ hsl(var(--border));
214
233
  }
215
234
 
216
235
  [data-slot="tabs"][data-variant="card"][data-placement="bottom"] [data-slot="tabs-list"],
217
236
  [data-slot="tabs"][data-variant="editable-card"][data-placement="bottom"]
218
237
  [data-slot="tabs-list"] {
219
- box-shadow: inset 0 var(--tabs-card-rail-border-width) 0 hsl(var(--border));
238
+ box-shadow: inset 0 var(--tabs-card-rail-border-width, var(--stroke-hairline)) 0
239
+ hsl(var(--border));
220
240
  }
221
241
 
222
242
  [data-slot="tabs"][data-variant="card"][data-placement="start"] [data-slot="tabs-list"],
223
243
  [data-slot="tabs"][data-variant="editable-card"][data-placement="start"] [data-slot="tabs-list"] {
224
- box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width)) 0 0 hsl(var(--border));
244
+ box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width, var(--stroke-hairline))) 0 0
245
+ hsl(var(--border));
225
246
  }
226
247
 
227
248
  [data-slot="tabs"][data-variant="card"][data-placement="end"] [data-slot="tabs-list"],
228
249
  [data-slot="tabs"][data-variant="editable-card"][data-placement="end"] [data-slot="tabs-list"] {
229
- box-shadow: inset var(--tabs-card-rail-border-width) 0 0 hsl(var(--border));
250
+ box-shadow: inset var(--tabs-card-rail-border-width, var(--stroke-hairline)) 0 0
251
+ hsl(var(--border));
230
252
  }
231
253
 
232
254
  [dir="rtl"]
@@ -235,14 +257,16 @@
235
257
  [dir="rtl"]
236
258
  [data-slot="tabs"][data-variant="editable-card"][data-placement="start"]
237
259
  [data-slot="tabs-list"] {
238
- box-shadow: inset var(--tabs-card-rail-border-width) 0 0 hsl(var(--border));
260
+ box-shadow: inset var(--tabs-card-rail-border-width, var(--stroke-hairline)) 0 0
261
+ hsl(var(--border));
239
262
  }
240
263
 
241
264
  [dir="rtl"] [data-slot="tabs"][data-variant="card"][data-placement="end"] [data-slot="tabs-list"],
242
265
  [dir="rtl"]
243
266
  [data-slot="tabs"][data-variant="editable-card"][data-placement="end"]
244
267
  [data-slot="tabs-list"] {
245
- box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width)) 0 0 hsl(var(--border));
268
+ box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width, var(--stroke-hairline))) 0 0
269
+ hsl(var(--border));
246
270
  }
247
271
 
248
272
  [data-slot="tabs"][data-bodied="true"] {
@@ -280,8 +304,10 @@
280
304
  [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-panel"],
281
305
  [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-content"] {
282
306
  border: var(--tabs-panel-border-width) solid hsl(var(--border));
283
- border-radius: var(--tabs-panel-radius);
284
- background: hsl(var(--tabs-panel-background, var(--background)));
307
+ border-radius: var(--tabs-panel-radius, var(--tabs-card-radius));
308
+ background: hsl(
309
+ var(--tabs-panel-background, var(--background)) / var(--tabs-panel-background-alpha, 100%)
310
+ );
285
311
  padding: var(--tabs-panel-space-inset);
286
312
  }
287
313
 
@@ -355,13 +381,16 @@
355
381
  }
356
382
 
357
383
  [data-slot="tabs-trigger"][data-state="active"] .ui-tabs-count {
358
- background: var(--tabs-count-active-background, hsl(var(--primary)));
384
+ background: var(
385
+ --tabs-count-active-background,
386
+ hsl(var(--primary) / var(--tabs-count-active-background-alpha, 100%))
387
+ );
359
388
  color: var(--tabs-count-active-color, hsl(var(--primary-foreground)));
360
389
  }
361
390
 
362
391
  @media (forced-colors: active) {
363
392
  [data-slot="tabs-trigger"][data-state="active"] .ui-tabs-count {
364
- outline: var(--tabs-count-forced-outline-width) solid currentColor;
393
+ outline: var(--tabs-count-forced-outline-width, var(--stroke-hairline)) solid currentColor;
365
394
  }
366
395
  }
367
396
 
@@ -372,7 +401,10 @@
372
401
  block-size: var(--tabs-tab-remove-size);
373
402
  align-items: center;
374
403
  justify-content: center;
375
- border-radius: var(--tabs-tab-remove-radius);
404
+ border-radius: var(
405
+ --tabs-tab-remove-radius,
406
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
407
+ );
376
408
  margin-inline-start: var(--tabs-tab-remove-space-inline-end);
377
409
  margin-inline-end: calc(-1 * var(--tabs-tab-remove-space-inline-end));
378
410
  color: hsl(var(--muted-foreground));
@@ -397,7 +429,7 @@
397
429
  block-size: var(--tabs-overflow-size);
398
430
  align-items: center;
399
431
  justify-content: center;
400
- border-radius: var(--tabs-overflow-radius);
432
+ border-radius: var(--tabs-overflow-radius, calc(var(--radius) / var(--radius-ratio)));
401
433
  color: hsl(var(--muted-foreground));
402
434
  }
403
435
 
@@ -418,9 +450,11 @@
418
450
  block-size: var(--tabs-add-size);
419
451
  align-items: center;
420
452
  justify-content: center;
421
- border: var(--tabs-card-rail-border-width) solid hsl(var(--border));
422
- border-radius: var(--tabs-add-radius);
423
- background: hsl(var(--tabs-card-background, var(--muted)));
453
+ border: var(--tabs-card-rail-border-width, var(--stroke-hairline)) solid hsl(var(--border));
454
+ border-radius: var(--tabs-add-radius, calc(var(--radius) / var(--radius-ratio)));
455
+ background: hsl(
456
+ var(--tabs-card-background, var(--muted)) / var(--tabs-card-background-alpha, 100%)
457
+ );
424
458
  color: hsl(var(--muted-foreground));
425
459
  }
426
460
 
@@ -491,7 +525,10 @@
491
525
  .ui-dropdown-menu-checkbox-item,
492
526
  .ui-dropdown-menu-radio-item,
493
527
  .ui-dropdown-menu-shortcut {
494
- border-radius: var(--menu-item-radius);
528
+ border-radius: var(
529
+ --menu-item-radius,
530
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
531
+ );
495
532
  padding-inline: var(--menu-item-space-inline);
496
533
  height: var(--menu-item-height);
497
534
  display: flex;
@@ -528,7 +565,10 @@
528
565
 
529
566
  .ui-dropdown-menu-item:hover,
530
567
  .ui-dropdown-menu-sub-trigger:hover {
531
- background: var(--menu-item-hover-background, hsl(var(--accent)));
568
+ background: var(
569
+ --menu-item-hover-background,
570
+ hsl(var(--accent) / var(--menu-item-hover-background-alpha, 100%))
571
+ );
532
572
  color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
533
573
  }
534
574
 
@@ -537,7 +577,10 @@
537
577
  .ui-dropdown-menu-checkbox-item[data-highlighted],
538
578
  .ui-dropdown-menu-radio-item[data-highlighted],
539
579
  .ui-dropdown-menu-sub-trigger[data-state="open"] {
540
- background: var(--menu-item-hover-background, hsl(var(--accent)));
580
+ background: var(
581
+ --menu-item-hover-background,
582
+ hsl(var(--accent) / var(--menu-item-hover-background-alpha, 100%))
583
+ );
541
584
  color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
542
585
  }
543
586
 
@@ -603,7 +646,10 @@
603
646
  min-width: 0;
604
647
  align-items: center;
605
648
  gap: var(--steps-inline-item-gap);
606
- border-radius: var(--radius-sm);
649
+ border-radius: var(
650
+ --radius-sm,
651
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
652
+ );
607
653
  outline: none;
608
654
  }
609
655
 
@@ -620,7 +666,7 @@
620
666
  }
621
667
 
622
668
  .ui-steps-inline-item[data-status="finish"] .ui-steps-inline-control {
623
- color: hsl(var(--primary));
669
+ color: hsl(var(--text-brand, var(--primary)));
624
670
  }
625
671
 
626
672
  .ui-steps-inline-item[data-status="process"] .ui-steps-inline-control {
@@ -649,11 +695,18 @@
649
695
 
650
696
  z-index: var(--overlay-z-index);
651
697
  min-width: var(--menu-content-min-width);
652
- border-radius: var(--radius-md);
653
- border: 1px solid hsl(var(--border));
654
- background: hsl(var(--popover));
698
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
699
+ border: var(--stroke-hairline) solid hsl(var(--border));
700
+
701
+ background: var(
702
+ --dropdown-content-background,
703
+ hsl(var(--popover) / var(--popover-alpha, 100%))
704
+ );
655
705
  color: hsl(var(--popover-foreground));
656
706
  padding: var(--menu-content-space-inset);
707
+
708
+ backdrop-filter: blur(var(--dropdown-content-backdrop-blur-size))
709
+ saturate(var(--surface-backdrop-saturate, 160%));
657
710
  box-shadow: var(--shadow-md), var(--shadow-glow);
658
711
  }
659
712
 
@@ -702,7 +755,10 @@
702
755
  display: inline-flex;
703
756
  align-items: center;
704
757
  gap: var(--breadcrumb-menu-trigger-gap);
705
- border-radius: var(--radius-sm);
758
+ border-radius: var(
759
+ --radius-sm,
760
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
761
+ );
706
762
  background: transparent;
707
763
  color: inherit;
708
764
  font: inherit;
@@ -715,7 +771,7 @@
715
771
  .ui-dropdown-menu-arrow {
716
772
  inline-size: var(--dropdown-arrow-width);
717
773
  block-size: var(--dropdown-arrow-height);
718
- fill: hsl(var(--dropdown-arrow-background, var(--popover)));
774
+ fill: hsl(var(--dropdown-arrow-background, var(--popover)) / var(--popover-alpha, 100%));
719
775
  }
720
776
 
721
777
  .ui-dropdown-menu-indicator-slot {
@@ -752,7 +808,7 @@
752
808
 
753
809
  .ui-dropdown-menu-radio-item[data-state="checked"] {
754
810
  background: hsl(var(--primary) / 0.1);
755
- color: hsl(var(--primary));
811
+ color: hsl(var(--text-brand, var(--primary)));
756
812
  font-weight: var(--font-weight-medium);
757
813
  }
758
814
 
@@ -790,7 +846,8 @@
790
846
  }
791
847
 
792
848
  .ui-steps-dot[data-status="process"] {
793
- box-shadow: 0 0 0 var(--steps-dot-process-ring-width) hsl(var(--primary) / 0.2);
849
+ box-shadow: 0 0 0 var(--steps-dot-process-ring-width, var(--stroke-xl))
850
+ hsl(var(--primary) / 0.2);
794
851
  }
795
852
 
796
853
  .ui-steps-dot[data-status="error"] {
@@ -803,7 +860,7 @@
803
860
 
804
861
  .ui-steps-marker {
805
862
  border-radius: var(--radius-pill);
806
- border: var(--steps-marker-border-width) solid transparent;
863
+ border: var(--steps-marker-border-width, var(--stroke-md)) solid transparent;
807
864
  font-size: var(--steps-marker-font-size);
808
865
  font-weight: var(--font-weight-medium);
809
866
  }
@@ -816,7 +873,7 @@
816
873
 
817
874
  .ui-steps-marker[data-status="process"] {
818
875
  border-color: hsl(var(--primary));
819
- color: hsl(var(--primary));
876
+ color: hsl(var(--text-brand, var(--primary)));
820
877
  }
821
878
 
822
879
  .ui-steps-marker[data-status="error"] {
@@ -957,7 +1014,7 @@
957
1014
  align-items: center;
958
1015
  justify-content: center;
959
1016
  border-radius: var(--radius-pill);
960
- padding: var(--steps-progress-ring-width);
1017
+ padding: var(--steps-progress-ring-width, var(--stroke-md));
961
1018
  background: conic-gradient(
962
1019
  hsl(var(--primary)) calc(var(--steps-progress-ratio, 0) * 360deg),
963
1020
  hsl(var(--steps-progress-track-color, var(--muted))) 0
@@ -978,7 +1035,7 @@
978
1035
  gap: var(--steps-nav-space-gap);
979
1036
  padding-inline: var(--steps-nav-space-inline);
980
1037
  padding-block: var(--steps-nav-space-block);
981
- border-radius: var(--steps-nav-radius);
1038
+ border-radius: var(--steps-nav-radius, calc(var(--radius) / var(--radius-ratio)));
982
1039
  background: hsl(var(--muted));
983
1040
  }
984
1041
 
@@ -1087,7 +1144,7 @@
1087
1144
  }
1088
1145
 
1089
1146
  .ui-conversations-row {
1090
- --button-radius: var(--conversations-item-radius);
1147
+ --button-radius: var(--conversations-item-radius, var(--radius));
1091
1148
 
1092
1149
  min-inline-size: 0;
1093
1150
  height: var(--conversations-item-height);
@@ -1099,7 +1156,10 @@
1099
1156
  }
1100
1157
 
1101
1158
  .ui-conversations-item[data-active="true"] .ui-conversations-row {
1102
- background: var(--conversations-item-active-background, hsl(var(--accent)));
1159
+ background: var(
1160
+ --conversations-item-active-background,
1161
+ hsl(var(--accent) / var(--conversations-item-active-background-alpha, 100%))
1162
+ );
1103
1163
  color: var(--conversations-item-active-color, hsl(var(--foreground)));
1104
1164
  font-weight: var(--conversations-item-active-font-weight);
1105
1165
  }
@@ -1194,7 +1254,7 @@
1194
1254
 
1195
1255
  .ui-conversations-separator[data-dashed="true"] {
1196
1256
  height: 0;
1197
- border-block-start: var(--separator-rule-size) dashed
1257
+ border-block-start: var(--separator-rule-size, var(--stroke-hairline)) dashed
1198
1258
  hsl(var(--separator-rule-color, var(--border)));
1199
1259
  background: transparent;
1200
1260
  }
@@ -1224,7 +1284,7 @@
1224
1284
  }
1225
1285
 
1226
1286
  .ui-anchor [data-slot="anchor-link"][data-active] {
1227
- color: hsl(var(--anchor-ink-color, var(--primary)));
1287
+ color: hsl(var(--anchor-ink-color, var(--text-link, var(--primary))));
1228
1288
  font-weight: var(--font-weight-medium);
1229
1289
  }
1230
1290
 
@@ -1326,7 +1386,10 @@
1326
1386
  min-block-size: var(--mega-menu-trigger-height);
1327
1387
  padding-inline: var(--mega-menu-trigger-padding-x);
1328
1388
  border: 0;
1329
- border-radius: var(--mega-menu-trigger-radius);
1389
+ border-radius: var(
1390
+ --mega-menu-trigger-radius,
1391
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1392
+ );
1330
1393
  background: var(--mega-menu-trigger-background);
1331
1394
  color: var(--mega-menu-trigger-foreground);
1332
1395
  font-size: var(--mega-menu-trigger-font-size);
@@ -1338,7 +1401,10 @@
1338
1401
  }
1339
1402
 
1340
1403
  .ui-mega-menu-trigger:hover {
1341
- background: var(--mega-menu-trigger-hover-background, hsl(var(--accent)));
1404
+ background: var(
1405
+ --mega-menu-trigger-hover-background,
1406
+ hsl(var(--accent) / var(--mega-menu-trigger-hover-background-alpha, 100%))
1407
+ );
1342
1408
  color: var(--mega-menu-trigger-hover-foreground, hsl(var(--accent-foreground)));
1343
1409
  }
1344
1410
 
@@ -1348,7 +1414,7 @@
1348
1414
  }
1349
1415
 
1350
1416
  .ui-mega-menu-trigger[aria-current="page"] {
1351
- color: var(--mega-menu-trigger-current-foreground, hsl(var(--primary)));
1417
+ color: var(--mega-menu-trigger-current-foreground, hsl(var(--text-brand, var(--primary))));
1352
1418
  font-weight: var(--font-weight-semibold);
1353
1419
  text-decoration: underline;
1354
1420
  text-underline-offset: var(--space-1);
@@ -1399,8 +1465,9 @@
1399
1465
  translate: var(--mega-menu-panel-translate-x, 0) var(--mega-menu-panel-translate-y, 0);
1400
1466
  max-block-size: var(--mega-menu-panel-max-height);
1401
1467
  overflow-y: auto;
1402
- border: var(--mega-menu-panel-border-width) solid var(--mega-menu-panel-border-color);
1403
- border-radius: var(--mega-menu-panel-radius);
1468
+ border: var(--mega-menu-panel-border-width, var(--stroke-hairline)) solid
1469
+ var(--mega-menu-panel-border-color);
1470
+ border-radius: var(--mega-menu-panel-radius, calc(var(--radius) / var(--radius-ratio)));
1404
1471
  background: var(--mega-menu-panel-background);
1405
1472
  color: var(--mega-menu-panel-foreground);
1406
1473
  box-shadow: var(--mega-menu-panel-shadow);
@@ -1489,7 +1556,10 @@
1489
1556
  min-block-size: var(--mega-menu-link-min-height);
1490
1557
  padding-block: var(--mega-menu-link-padding-y);
1491
1558
  padding-inline: var(--mega-menu-link-padding-x);
1492
- border-radius: var(--mega-menu-link-radius);
1559
+ border-radius: var(
1560
+ --mega-menu-link-radius,
1561
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1562
+ );
1493
1563
  color: var(--mega-menu-link-foreground);
1494
1564
  font-size: var(--mega-menu-link-font-size);
1495
1565
  line-height: var(--line-height-body);
@@ -1497,12 +1567,15 @@
1497
1567
  }
1498
1568
 
1499
1569
  .ui-mega-menu-link:hover {
1500
- background: var(--mega-menu-link-hover-background, hsl(var(--accent)));
1570
+ background: var(
1571
+ --mega-menu-link-hover-background,
1572
+ hsl(var(--accent) / var(--mega-menu-link-hover-background-alpha, 100%))
1573
+ );
1501
1574
  color: var(--mega-menu-link-hover-foreground, hsl(var(--accent-foreground)));
1502
1575
  }
1503
1576
 
1504
1577
  .ui-mega-menu-link[aria-current="page"] {
1505
- color: var(--mega-menu-link-current-foreground, hsl(var(--primary)));
1578
+ color: var(--mega-menu-link-current-foreground, hsl(var(--text-link, var(--primary))));
1506
1579
  font-weight: var(--font-weight-semibold);
1507
1580
  }
1508
1581
 
@@ -1537,7 +1610,7 @@
1537
1610
  .ui-mega-menu-panel-footer {
1538
1611
  margin-block-start: var(--mega-menu-panel-footer-gap);
1539
1612
  padding-block-start: var(--mega-menu-panel-footer-gap);
1540
- border-block-start: var(--mega-menu-panel-border-width) solid
1613
+ border-block-start: var(--mega-menu-panel-border-width, var(--stroke-hairline)) solid
1541
1614
  var(--mega-menu-panel-footer-border-color);
1542
1615
  }
1543
1616