@godxjp/ui 28.12.0 → 29.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 (178) hide show
  1. package/agent/START-HERE.md +29 -10
  2. package/agent/components/Anchor.json +6 -1
  3. package/agent/components/AppLauncher.json +10 -0
  4. package/agent/components/AppShell.json +1 -1
  5. package/agent/components/AreaChart.json +19 -1
  6. package/agent/components/Attachments.json +26 -1
  7. package/agent/components/BarChart.json +11 -1
  8. package/agent/components/BranchScopePicker.json +10 -0
  9. package/agent/components/Cascader.json +6 -1
  10. package/agent/components/Checkbox.json +6 -0
  11. package/agent/components/CompactBarTrend.json +1 -1
  12. package/agent/components/CredentialReveal.json +21 -0
  13. package/agent/components/DataState.json +1 -1
  14. package/agent/components/DataTable.json +4 -4
  15. package/agent/components/FormField.json +1 -1
  16. package/agent/components/InfiniteQueryState.json +1 -1
  17. package/agent/components/Input.json +1 -1
  18. package/agent/components/InputOTP.json +35 -0
  19. package/agent/components/LineChart.json +20 -2
  20. package/agent/components/ListRow.json +1 -1
  21. package/agent/components/Masonry.json +1 -1
  22. package/agent/components/MasterDetail.json +1 -1
  23. package/agent/components/PasswordStrength.json +1 -1
  24. package/agent/components/PermissionMatrix.json +6 -1
  25. package/agent/components/SearchInput.json +5 -0
  26. package/agent/components/Select.json +1 -0
  27. package/agent/components/ServiceRolePanel.json +5 -0
  28. package/agent/components/Sidebar.json +1 -1
  29. package/agent/components/Switch.json +6 -0
  30. package/agent/components/Table.json +8 -3
  31. package/agent/components/Tabs.json +10 -0
  32. package/agent/components/ThemeScope.json +49 -0
  33. package/agent/components/TimeRangePicker.json +5 -0
  34. package/agent/components/Topbar.json +1 -0
  35. package/agent/components/TopbarItem.json +2 -1
  36. package/agent/components/Transfer.json +6 -1
  37. package/agent/components/TreeSelect.json +1 -1
  38. package/agent/components/Upload.json +5 -0
  39. package/agent/components/UploadCropDialog.json +1 -1
  40. package/agent/components/formatDate.json +1 -1
  41. package/agent/components-index.json +5 -0
  42. package/agent/components.json +297 -31
  43. package/agent/index.json +19 -9
  44. package/agent/llms.txt +10 -10
  45. package/agent/patterns/tenant-brand-color.json +28 -0
  46. package/agent/patterns-index.json +27 -0
  47. package/agent/patterns.json +28 -0
  48. package/agent/rules.json +15 -0
  49. package/agent/tokens.json +4965 -970
  50. package/dist/app/index.d.ts +3 -0
  51. package/dist/app/index.js +3 -0
  52. package/dist/app/tenant-theme.d.ts +80 -0
  53. package/dist/app/tenant-theme.js +154 -0
  54. package/dist/app/theme-axes.d.ts +14 -1
  55. package/dist/app/theme-axes.js +24 -31
  56. package/dist/components/charts/chart-cartesian.d.ts +5 -1
  57. package/dist/components/charts/chart-cartesian.js +15 -8
  58. package/dist/components/data-display/badge.d.ts +1 -1
  59. package/dist/components/data-display/badge.js +20 -2
  60. package/dist/components/data-display/carousel.js +4 -4
  61. package/dist/components/data-display/data-table.js +13 -2
  62. package/dist/components/data-display/permission-matrix.js +1 -1
  63. package/dist/components/data-display/table.d.ts +11 -2
  64. package/dist/components/data-display/table.js +18 -2
  65. package/dist/components/data-entry/control-appearance.d.ts +12 -6
  66. package/dist/components/data-entry/control-appearance.js +1 -1
  67. package/dist/components/data-entry/select.js +4 -3
  68. package/dist/components/feedback/dialog.js +6 -3
  69. package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
  70. package/dist/components/feedback/overlay-header-tone.js +4 -4
  71. package/dist/components/feedback/sheet.d.ts +1 -1
  72. package/dist/components/feedback/sheet.js +6 -9
  73. package/dist/components/feedback/sonner.js +16 -3
  74. package/dist/components/general/button.js +22 -5
  75. package/dist/components/layout/affix.js +15 -1
  76. package/dist/components/layout/sidebar.js +7 -1
  77. package/dist/components/navigation/anchor.d.ts +1 -1
  78. package/dist/components/navigation/anchor.js +5 -4
  79. package/dist/components/navigation/app-setting-picker.js +1 -1
  80. package/dist/components/navigation/pagination.js +1 -1
  81. package/dist/components/navigation/tabs.js +15 -2
  82. package/dist/components/query/infinite-query-state.d.ts +22 -6
  83. package/dist/contracts/measurement.json +1 -1
  84. package/dist/i18n/messages/en.json +0 -697
  85. package/dist/i18n/messages/ja.json +0 -691
  86. package/dist/i18n/messages/vi.json +0 -691
  87. package/dist/lib/control-styles.d.ts +31 -11
  88. package/dist/lib/control-styles.js +6 -6
  89. package/dist/lib/overlay-portal.d.ts +20 -0
  90. package/dist/lib/overlay-portal.js +93 -0
  91. package/dist/props/components/app.prop.d.ts +12 -0
  92. package/dist/props/components/charts.prop.d.ts +30 -0
  93. package/dist/props/components/index.d.ts +1 -1
  94. package/dist/props/components/navigation.prop.d.ts +21 -2
  95. package/dist/props/components/query.prop.d.ts +36 -2
  96. package/dist/props/registry.d.ts +46 -1
  97. package/dist/props/registry.js +38 -3
  98. package/dist/styles/alert-layout.css +34 -14
  99. package/dist/styles/badge-layout.css +10 -6
  100. package/dist/styles/base.css +14 -5
  101. package/dist/styles/card-layout.css +19 -8
  102. package/dist/styles/chart-layout.css +22 -3
  103. package/dist/styles/control.css +165 -59
  104. package/dist/styles/data-display-layout.css +129 -36
  105. package/dist/styles/data-entry-layout.css +23 -87
  106. package/dist/styles/dialog-layout.css +49 -19
  107. package/dist/styles/float-button-layout.css +5 -5
  108. package/dist/styles/focus-ring.css +9 -5
  109. package/dist/styles/layout.css +42 -15
  110. package/dist/styles/logo-layout.css +1 -1
  111. package/dist/styles/motion.css +1 -1
  112. package/dist/styles/navigation-layout.css +90 -29
  113. package/dist/styles/shell-layout.css +63 -40
  114. package/dist/styles/table-layout.css +56 -17
  115. package/dist/styles/text-layout.css +13 -4
  116. package/dist/styles/toggle.css +8 -2
  117. package/dist/tokens/components/actions.css +1 -1
  118. package/dist/tokens/components/attachments.css +4 -4
  119. package/dist/tokens/components/badge.css +4 -4
  120. package/dist/tokens/components/callout.css +1 -1
  121. package/dist/tokens/components/card.css +9 -4
  122. package/dist/tokens/components/chart.css +10 -1
  123. package/dist/tokens/components/chat-bubble.css +1 -1
  124. package/dist/tokens/components/control.css +28 -10
  125. package/dist/tokens/components/conversations.css +2 -1
  126. package/dist/tokens/components/data-display.css +12 -7
  127. package/dist/tokens/components/descriptions.css +1 -1
  128. package/dist/tokens/components/draggable-panel.css +1 -1
  129. package/dist/tokens/components/feedback.css +28 -8
  130. package/dist/tokens/components/float-button.css +1 -1
  131. package/dist/tokens/components/legal-document.css +1 -1
  132. package/dist/tokens/components/logo.css +1 -1
  133. package/dist/tokens/components/mega-menu.css +5 -3
  134. package/dist/tokens/components/navigation.css +21 -7
  135. package/dist/tokens/components/segmented.css +8 -3
  136. package/dist/tokens/components/shell.css +19 -5
  137. package/dist/tokens/components/table.css +9 -1
  138. package/dist/tokens/components/thought-chain.css +1 -1
  139. package/dist/tokens/components/toggle.css +2 -0
  140. package/dist/tokens/components/tree.css +3 -1
  141. package/dist/tokens/components/upload.css +6 -6
  142. package/dist/tokens/components/welcome.css +1 -1
  143. package/dist/tokens/foundation.css +28 -1
  144. package/docs/COMPOSITION-VS-COMPONENT.md +31 -0
  145. package/docs/CUSTOMER-THEMING.md +637 -1
  146. package/docs/DESIGN-AUTHORITY.md +13 -0
  147. package/docs/FRAME-COVERAGE-REPORT.md +3 -2
  148. package/docs/GLASSMORPHISM-STANDARD.md +196 -0
  149. package/docs/THEME-API-COVERAGE.md +538 -0
  150. package/docs/TOKEN-RESOLUTION.md +195 -0
  151. package/docs/TOKENS.md +63 -24
  152. package/docs/asset-modules.d.ts +7 -0
  153. package/docs/data-display/charts.tsx +80 -0
  154. package/docs/data-display/data-table/index.tsx +30 -0
  155. package/docs/data-display/popover.tsx +1 -1
  156. package/docs/data-display/table.tsx +52 -0
  157. package/docs/feedback/sheet.tsx +10 -10
  158. package/docs/foundation/density.tsx +4 -4
  159. package/docs/i18n/messages/en.json +1201 -0
  160. package/docs/i18n/messages/ja.json +1195 -0
  161. package/docs/i18n/messages/vi.json +1195 -0
  162. package/docs/layout/account-chip.tsx +2 -2
  163. package/docs/layout/responsive-grid.tsx +1 -1
  164. package/docs/navigation/toolbar.tsx +20 -12
  165. package/docs/providers/theme-scope.tsx +186 -0
  166. package/docs/showcase/caimono-price-comparison.tsx +911 -0
  167. package/docs/showcase/case4-login.tsx +2 -2
  168. package/docs/showcase/marketing-page.tsx +3 -2
  169. package/docs/showcase/permission-matrix.tsx +13 -5
  170. package/docs/showcase/table-pagination.tsx +2 -1
  171. package/docs/showcase/tenant-brand-color.tsx +338 -0
  172. package/docs/showcase/theme-customization.tsx +2 -1
  173. package/docs/showcase/theme-lab.tsx +2125 -0
  174. package/docs/themes/flat.css +462 -0
  175. package/docs/themes/glassmorphism.css +958 -0
  176. package/docs/themes/index.ts +200 -0
  177. package/package.json +4 -3
  178. package/scripts/explain-token.mjs +382 -0
@@ -20,6 +20,9 @@
20
20
  --dialog-overlay-background,
21
21
  color-mix(in srgb, var(--overlay-background) var(--dialog-overlay-alpha), transparent)
22
22
  );
23
+
24
+ backdrop-filter: blur(var(--dialog-overlay-backdrop-blur-size))
25
+ saturate(var(--surface-backdrop-saturate, 160%));
23
26
  }
24
27
 
25
28
  [data-slot="sheet-overlay"] {
@@ -27,6 +30,9 @@
27
30
  --sheet-overlay-background,
28
31
  color-mix(in srgb, var(--overlay-background) var(--sheet-overlay-alpha), transparent)
29
32
  );
33
+
34
+ backdrop-filter: blur(var(--sheet-overlay-backdrop-blur-size))
35
+ saturate(var(--surface-backdrop-saturate, 160%));
30
36
  }
31
37
 
32
38
  .ui-dialog-overlay {
@@ -46,7 +52,10 @@
46
52
  transform: translate(-50%, -50%);
47
53
  gap: var(--dialog-space-gap);
48
54
  border: 1px solid hsl(var(--border));
49
- background-color: hsl(var(--background));
55
+
56
+ background-color: var(--dialog-surface-background, hsl(var(--background)));
57
+
58
+ color: hsl(var(--foreground));
50
59
  padding: var(--dialog-space-inset);
51
60
 
52
61
  overflow: hidden;
@@ -55,7 +64,7 @@
55
64
 
56
65
  @media (min-width: 640px) {
57
66
  [data-slot="dialog-content"] {
58
- border-radius: var(--radius-lg);
67
+ border-radius: var(--radius-lg, var(--radius));
59
68
  }
60
69
  }
61
70
 
@@ -138,15 +147,18 @@
138
147
  border-top: 1px solid hsl(var(--border));
139
148
  }
140
149
 
141
- [data-slot="dialog-close"] {
150
+ .ui-dialog-close {
142
151
  position: absolute;
152
+ inset-block-start: var(--dialog-close-space-offset);
143
153
  inset-inline-end: var(--dialog-close-space-offset);
144
- top: var(--dialog-close-space-offset);
145
- border-radius: var(--radius-sm);
154
+ border-radius: var(
155
+ --radius-sm,
156
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
157
+ );
146
158
  opacity: var(--dialog-close-rest-alpha);
147
159
  }
148
160
 
149
- :is([data-slot="dialog-close"], [data-slot="sheet-close"])::after {
161
+ :is(.ui-dialog-close, .ui-sheet-close)::after {
150
162
  content: "";
151
163
  position: absolute;
152
164
  inset-block-start: 50%;
@@ -158,7 +170,7 @@
158
170
  block-size: 100%;
159
171
  }
160
172
 
161
- [data-slot="dialog-close"]:hover {
173
+ .ui-dialog-close:hover {
162
174
  opacity: 1;
163
175
  }
164
176
 
@@ -210,7 +222,7 @@
210
222
 
211
223
  .ui-two-factor-setup-notice {
212
224
  border: 1px dashed hsl(var(--border));
213
- border-radius: var(--radius-md);
225
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
214
226
  padding: var(--space-2) var(--space-3);
215
227
  }
216
228
 
@@ -220,7 +232,7 @@
220
232
  gap: var(--space-2);
221
233
  padding: var(--space-3);
222
234
  border: 1px solid hsl(var(--border));
223
- border-radius: var(--radius-md);
235
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
224
236
  background: hsl(var(--muted) / 0.4);
225
237
  }
226
238
 
@@ -281,12 +293,16 @@
281
293
  max-width: var(--tooltip-max-width);
282
294
  padding-inline: var(--tooltip-space-inline);
283
295
  padding-block: var(--tooltip-space-block);
284
- border-radius: var(--tooltip-radius);
285
- border: 1px solid var(--tooltip-border-color, hsl(var(--border)));
286
- background-color: var(--tooltip-background, hsl(var(--popover)));
296
+ border-radius: var(--tooltip-radius, var(--radius));
297
+ border: 1px solid
298
+ var(--tooltip-border-color, hsl(var(--border) / var(--tooltip-border-color-alpha, 100%)));
299
+ background-color: var(--tooltip-background, hsl(var(--popover) / var(--popover-alpha, 100%)));
287
300
  color: var(--tooltip-foreground, hsl(var(--popover-foreground)));
288
301
  font-size: var(--tooltip-font-size);
289
- box-shadow: var(--tooltip-shadow);
302
+ backdrop-filter: blur(var(--tooltip-backdrop-blur-size))
303
+ saturate(var(--surface-backdrop-saturate, 160%));
304
+
305
+ box-shadow: var(--tooltip-shadow, var(--shadow-md));
290
306
  outline: none;
291
307
  }
292
308
 
@@ -295,11 +311,20 @@
295
311
 
296
312
  width: var(--popover-surface-inline-size, var(--popover-width));
297
313
  padding: var(--popover-space-inset);
298
- border-radius: var(--popover-radius);
299
- border: 1px solid var(--popover-surface-border-color, hsl(var(--border)));
300
- background-color: var(--popover-surface-background, hsl(var(--popover)));
314
+ border-radius: var(--popover-radius, var(--radius));
315
+ border: 1px solid
316
+ var(
317
+ --popover-surface-border-color,
318
+ hsl(var(--border) / var(--popover-surface-border-color-alpha, 100%))
319
+ );
320
+ background-color: var(
321
+ --popover-surface-background,
322
+ hsl(var(--popover) / var(--popover-alpha, 100%))
323
+ );
301
324
  color: var(--popover-surface-foreground, hsl(var(--popover-foreground)));
302
- box-shadow: var(--popover-shadow);
325
+ backdrop-filter: blur(var(--popover-backdrop-blur-size))
326
+ saturate(var(--surface-backdrop-saturate, 160%));
327
+ box-shadow: var(--popover-shadow, var(--shadow-md));
303
328
  outline: none;
304
329
  }
305
330
 
@@ -369,7 +394,10 @@
369
394
  position: absolute;
370
395
  inset-block-start: var(--sheet-close-offset);
371
396
  inset-inline-end: var(--sheet-close-offset);
372
- border-radius: var(--radius-sm);
397
+ border-radius: var(
398
+ --radius-sm,
399
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
400
+ );
373
401
  opacity: var(--sheet-close-rest-alpha);
374
402
  transition: opacity 150ms ease;
375
403
  }
@@ -393,7 +421,9 @@
393
421
  }
394
422
 
395
423
  .ui-sheet-panel {
396
- box-shadow: var(--sheet-shadow);
424
+
425
+ background-color: var(--sheet-surface-background, hsl(var(--background)));
426
+ box-shadow: var(--sheet-shadow, var(--shadow-lg));
397
427
  }
398
428
 
399
429
  .ui-sheet-panel[data-side="top"] {
@@ -85,7 +85,7 @@
85
85
  display: flex;
86
86
  flex-direction: column;
87
87
  gap: var(--float-button-group-gap);
88
- border-radius: var(--float-button-group-radius);
88
+ border-radius: var(--float-button-group-radius, var(--radius));
89
89
  }
90
90
 
91
91
  .ui-float-button-group:not([data-individual]) .ui-float-button-list {
@@ -99,13 +99,13 @@
99
99
  }
100
100
 
101
101
  .ui-float-button-group:not([data-individual]) .ui-float-button-list > :first-child {
102
- border-start-start-radius: var(--float-button-group-radius);
103
- border-start-end-radius: var(--float-button-group-radius);
102
+ border-start-start-radius: var(--float-button-group-radius, var(--radius));
103
+ border-start-end-radius: var(--float-button-group-radius, var(--radius));
104
104
  }
105
105
 
106
106
  .ui-float-button-group:not([data-individual]) .ui-float-button-list > :last-child {
107
- border-end-start-radius: var(--float-button-group-radius);
108
- border-end-end-radius: var(--float-button-group-radius);
107
+ border-end-start-radius: var(--float-button-group-radius, var(--radius));
108
+ border-end-end-radius: var(--float-button-group-radius, var(--radius));
109
109
  }
110
110
 
111
111
  .ui-float-button-group[data-menu-mode] .ui-float-button-list {
@@ -55,11 +55,13 @@
55
55
  .ui-control-composite-field[data-state="open"],
56
56
  .ui-otp-slot[data-active="true"],
57
57
  .ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
58
- outline: var(--focus-ring-width) solid
59
- hsl(
60
- var(--focus-outline-color, var(--focus-ring-color, var(--ring))) /
61
- var(--focus-ring-opacity, 1)
62
- );
58
+
59
+ outline-width: var(--focus-ring-width-component, var(--focus-ring-width));
60
+ outline-style: solid;
61
+ outline-color: hsl(
62
+ var(--focus-outline-color, var(--focus-ring-color, var(--ring))) /
63
+ var(--focus-ring-opacity, 1)
64
+ );
63
65
  outline-offset: var(--focus-ring-offset);
64
66
 
65
67
  transition:
@@ -164,6 +166,7 @@
164
166
 
165
167
  .ui-toggle {
166
168
  --focus-ring-weight: var(--toggle-focus-ring-width);
169
+ --focus-ring-width-component: calc(var(--focus-ring-weight) * var(--focus-outline));
167
170
  --focus-ring-opacity: var(--toggle-focus-ring-alpha);
168
171
  }
169
172
 
@@ -198,6 +201,7 @@
198
201
  .ui-app-setting-picker-inline
199
202
  ) {
200
203
  --focus-ring-weight: var(--control-focus-ring-width);
204
+ --focus-ring-width-component: calc(var(--focus-ring-weight) * var(--focus-outline));
201
205
  }
202
206
 
203
207
  .ui-command-input:focus-visible {
@@ -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"] {
@@ -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,7 +1133,10 @@
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);
1136
+ border-radius: var(
1137
+ --radius-sm,
1138
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1139
+ );
1122
1140
  border: 1px solid hsl(var(--border));
1123
1141
  color: hsl(var(--foreground));
1124
1142
  text-decoration: none;
@@ -1385,7 +1403,7 @@
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);
1406
+ border-radius: var(--legal-document-toc-item-radius, var(--radius));
1389
1407
  border-inline-start: var(--legal-document-toc-marker-width) solid transparent;
1390
1408
  font-size: var(--legal-document-toc-font-size);
1391
1409
  line-height: 1.6;
@@ -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 {
@@ -1926,7 +1947,7 @@
1926
1947
  block-size: var(--draggable-panel-block-size);
1927
1948
  max-block-size: var(--draggable-panel-max-block-size);
1928
1949
  border: var(--draggable-panel-border-width) solid hsl(var(--border));
1929
- border-radius: var(--draggable-panel-radius);
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;
@@ -1982,7 +2003,10 @@
1982
2003
  flex-shrink: 0;
1983
2004
  align-items: center;
1984
2005
  justify-content: center;
1985
- border-radius: var(--radius-sm);
2006
+ border-radius: var(
2007
+ --radius-sm,
2008
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2009
+ );
1986
2010
  color: hsl(var(--muted-foreground));
1987
2011
  cursor: grab;
1988
2012
  touch-action: none;
@@ -2023,7 +2047,10 @@
2023
2047
  flex-shrink: 0;
2024
2048
  align-items: center;
2025
2049
  justify-content: center;
2026
- border-radius: var(--radius-sm);
2050
+ border-radius: var(
2051
+ --radius-sm,
2052
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2053
+ );
2027
2054
  color: hsl(var(--muted-foreground));
2028
2055
  }
2029
2056
 
@@ -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;
@@ -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));
@@ -164,6 +164,20 @@
164
164
  }
165
165
  }
166
166
 
167
+ [data-slot="tabs-list"][data-variant="default"] {
168
+ background-color: var(
169
+ --tabs-list-background,
170
+ hsl(var(--muted) / var(--tabs-list-background-alpha, 100%))
171
+ );
172
+ }
173
+
174
+ [data-slot="tabs-trigger"][data-state="active"] {
175
+ background-color: var(
176
+ --tabs-trigger-active-background,
177
+ hsl(var(--background) / var(--tabs-trigger-active-background-alpha, 100%))
178
+ );
179
+ }
180
+
167
181
  .ui-tabs-bar {
168
182
  display: flex;
169
183
  min-inline-size: 0;
@@ -280,8 +294,10 @@
280
294
  [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-panel"],
281
295
  [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-content"] {
282
296
  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)));
297
+ border-radius: var(--tabs-panel-radius, var(--tabs-card-radius));
298
+ background: hsl(
299
+ var(--tabs-panel-background, var(--background)) / var(--tabs-panel-background-alpha, 100%)
300
+ );
285
301
  padding: var(--tabs-panel-space-inset);
286
302
  }
287
303
 
@@ -355,7 +371,10 @@
355
371
  }
356
372
 
357
373
  [data-slot="tabs-trigger"][data-state="active"] .ui-tabs-count {
358
- background: var(--tabs-count-active-background, hsl(var(--primary)));
374
+ background: var(
375
+ --tabs-count-active-background,
376
+ hsl(var(--primary) / var(--tabs-count-active-background-alpha, 100%))
377
+ );
359
378
  color: var(--tabs-count-active-color, hsl(var(--primary-foreground)));
360
379
  }
361
380
 
@@ -372,7 +391,10 @@
372
391
  block-size: var(--tabs-tab-remove-size);
373
392
  align-items: center;
374
393
  justify-content: center;
375
- border-radius: var(--tabs-tab-remove-radius);
394
+ border-radius: var(
395
+ --tabs-tab-remove-radius,
396
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
397
+ );
376
398
  margin-inline-start: var(--tabs-tab-remove-space-inline-end);
377
399
  margin-inline-end: calc(-1 * var(--tabs-tab-remove-space-inline-end));
378
400
  color: hsl(var(--muted-foreground));
@@ -397,7 +419,7 @@
397
419
  block-size: var(--tabs-overflow-size);
398
420
  align-items: center;
399
421
  justify-content: center;
400
- border-radius: var(--tabs-overflow-radius);
422
+ border-radius: var(--tabs-overflow-radius, calc(var(--radius) / var(--radius-ratio)));
401
423
  color: hsl(var(--muted-foreground));
402
424
  }
403
425
 
@@ -419,8 +441,10 @@
419
441
  align-items: center;
420
442
  justify-content: center;
421
443
  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)));
444
+ border-radius: var(--tabs-add-radius, calc(var(--radius) / var(--radius-ratio)));
445
+ background: hsl(
446
+ var(--tabs-card-background, var(--muted)) / var(--tabs-card-background-alpha, 100%)
447
+ );
424
448
  color: hsl(var(--muted-foreground));
425
449
  }
426
450
 
@@ -491,7 +515,10 @@
491
515
  .ui-dropdown-menu-checkbox-item,
492
516
  .ui-dropdown-menu-radio-item,
493
517
  .ui-dropdown-menu-shortcut {
494
- border-radius: var(--menu-item-radius);
518
+ border-radius: var(
519
+ --menu-item-radius,
520
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
521
+ );
495
522
  padding-inline: var(--menu-item-space-inline);
496
523
  height: var(--menu-item-height);
497
524
  display: flex;
@@ -528,7 +555,10 @@
528
555
 
529
556
  .ui-dropdown-menu-item:hover,
530
557
  .ui-dropdown-menu-sub-trigger:hover {
531
- background: var(--menu-item-hover-background, hsl(var(--accent)));
558
+ background: var(
559
+ --menu-item-hover-background,
560
+ hsl(var(--accent) / var(--menu-item-hover-background-alpha, 100%))
561
+ );
532
562
  color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
533
563
  }
534
564
 
@@ -537,7 +567,10 @@
537
567
  .ui-dropdown-menu-checkbox-item[data-highlighted],
538
568
  .ui-dropdown-menu-radio-item[data-highlighted],
539
569
  .ui-dropdown-menu-sub-trigger[data-state="open"] {
540
- background: var(--menu-item-hover-background, hsl(var(--accent)));
570
+ background: var(
571
+ --menu-item-hover-background,
572
+ hsl(var(--accent) / var(--menu-item-hover-background-alpha, 100%))
573
+ );
541
574
  color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
542
575
  }
543
576
 
@@ -603,7 +636,10 @@
603
636
  min-width: 0;
604
637
  align-items: center;
605
638
  gap: var(--steps-inline-item-gap);
606
- border-radius: var(--radius-sm);
639
+ border-radius: var(
640
+ --radius-sm,
641
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
642
+ );
607
643
  outline: none;
608
644
  }
609
645
 
@@ -620,7 +656,7 @@
620
656
  }
621
657
 
622
658
  .ui-steps-inline-item[data-status="finish"] .ui-steps-inline-control {
623
- color: hsl(var(--primary));
659
+ color: hsl(var(--text-brand, var(--primary)));
624
660
  }
625
661
 
626
662
  .ui-steps-inline-item[data-status="process"] .ui-steps-inline-control {
@@ -649,11 +685,18 @@
649
685
 
650
686
  z-index: var(--overlay-z-index);
651
687
  min-width: var(--menu-content-min-width);
652
- border-radius: var(--radius-md);
688
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
653
689
  border: 1px solid hsl(var(--border));
654
- background: hsl(var(--popover));
690
+
691
+ background: var(
692
+ --dropdown-content-background,
693
+ hsl(var(--popover) / var(--popover-alpha, 100%))
694
+ );
655
695
  color: hsl(var(--popover-foreground));
656
696
  padding: var(--menu-content-space-inset);
697
+
698
+ backdrop-filter: blur(var(--dropdown-content-backdrop-blur-size))
699
+ saturate(var(--surface-backdrop-saturate, 160%));
657
700
  box-shadow: var(--shadow-md), var(--shadow-glow);
658
701
  }
659
702
 
@@ -702,7 +745,10 @@
702
745
  display: inline-flex;
703
746
  align-items: center;
704
747
  gap: var(--breadcrumb-menu-trigger-gap);
705
- border-radius: var(--radius-sm);
748
+ border-radius: var(
749
+ --radius-sm,
750
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
751
+ );
706
752
  background: transparent;
707
753
  color: inherit;
708
754
  font: inherit;
@@ -715,7 +761,7 @@
715
761
  .ui-dropdown-menu-arrow {
716
762
  inline-size: var(--dropdown-arrow-width);
717
763
  block-size: var(--dropdown-arrow-height);
718
- fill: hsl(var(--dropdown-arrow-background, var(--popover)));
764
+ fill: hsl(var(--dropdown-arrow-background, var(--popover)) / var(--popover-alpha, 100%));
719
765
  }
720
766
 
721
767
  .ui-dropdown-menu-indicator-slot {
@@ -752,7 +798,7 @@
752
798
 
753
799
  .ui-dropdown-menu-radio-item[data-state="checked"] {
754
800
  background: hsl(var(--primary) / 0.1);
755
- color: hsl(var(--primary));
801
+ color: hsl(var(--text-brand, var(--primary)));
756
802
  font-weight: var(--font-weight-medium);
757
803
  }
758
804
 
@@ -816,7 +862,7 @@
816
862
 
817
863
  .ui-steps-marker[data-status="process"] {
818
864
  border-color: hsl(var(--primary));
819
- color: hsl(var(--primary));
865
+ color: hsl(var(--text-brand, var(--primary)));
820
866
  }
821
867
 
822
868
  .ui-steps-marker[data-status="error"] {
@@ -978,7 +1024,7 @@
978
1024
  gap: var(--steps-nav-space-gap);
979
1025
  padding-inline: var(--steps-nav-space-inline);
980
1026
  padding-block: var(--steps-nav-space-block);
981
- border-radius: var(--steps-nav-radius);
1027
+ border-radius: var(--steps-nav-radius, calc(var(--radius) / var(--radius-ratio)));
982
1028
  background: hsl(var(--muted));
983
1029
  }
984
1030
 
@@ -1087,7 +1133,7 @@
1087
1133
  }
1088
1134
 
1089
1135
  .ui-conversations-row {
1090
- --button-radius: var(--conversations-item-radius);
1136
+ --button-radius: var(--conversations-item-radius, var(--radius));
1091
1137
 
1092
1138
  min-inline-size: 0;
1093
1139
  height: var(--conversations-item-height);
@@ -1099,7 +1145,10 @@
1099
1145
  }
1100
1146
 
1101
1147
  .ui-conversations-item[data-active="true"] .ui-conversations-row {
1102
- background: var(--conversations-item-active-background, hsl(var(--accent)));
1148
+ background: var(
1149
+ --conversations-item-active-background,
1150
+ hsl(var(--accent) / var(--conversations-item-active-background-alpha, 100%))
1151
+ );
1103
1152
  color: var(--conversations-item-active-color, hsl(var(--foreground)));
1104
1153
  font-weight: var(--conversations-item-active-font-weight);
1105
1154
  }
@@ -1224,7 +1273,7 @@
1224
1273
  }
1225
1274
 
1226
1275
  .ui-anchor [data-slot="anchor-link"][data-active] {
1227
- color: hsl(var(--anchor-ink-color, var(--primary)));
1276
+ color: hsl(var(--anchor-ink-color, var(--text-link, var(--primary))));
1228
1277
  font-weight: var(--font-weight-medium);
1229
1278
  }
1230
1279
 
@@ -1326,7 +1375,10 @@
1326
1375
  min-block-size: var(--mega-menu-trigger-height);
1327
1376
  padding-inline: var(--mega-menu-trigger-padding-x);
1328
1377
  border: 0;
1329
- border-radius: var(--mega-menu-trigger-radius);
1378
+ border-radius: var(
1379
+ --mega-menu-trigger-radius,
1380
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1381
+ );
1330
1382
  background: var(--mega-menu-trigger-background);
1331
1383
  color: var(--mega-menu-trigger-foreground);
1332
1384
  font-size: var(--mega-menu-trigger-font-size);
@@ -1338,7 +1390,10 @@
1338
1390
  }
1339
1391
 
1340
1392
  .ui-mega-menu-trigger:hover {
1341
- background: var(--mega-menu-trigger-hover-background, hsl(var(--accent)));
1393
+ background: var(
1394
+ --mega-menu-trigger-hover-background,
1395
+ hsl(var(--accent) / var(--mega-menu-trigger-hover-background-alpha, 100%))
1396
+ );
1342
1397
  color: var(--mega-menu-trigger-hover-foreground, hsl(var(--accent-foreground)));
1343
1398
  }
1344
1399
 
@@ -1348,7 +1403,7 @@
1348
1403
  }
1349
1404
 
1350
1405
  .ui-mega-menu-trigger[aria-current="page"] {
1351
- color: var(--mega-menu-trigger-current-foreground, hsl(var(--primary)));
1406
+ color: var(--mega-menu-trigger-current-foreground, hsl(var(--text-brand, var(--primary))));
1352
1407
  font-weight: var(--font-weight-semibold);
1353
1408
  text-decoration: underline;
1354
1409
  text-underline-offset: var(--space-1);
@@ -1400,7 +1455,7 @@
1400
1455
  max-block-size: var(--mega-menu-panel-max-height);
1401
1456
  overflow-y: auto;
1402
1457
  border: var(--mega-menu-panel-border-width) solid var(--mega-menu-panel-border-color);
1403
- border-radius: var(--mega-menu-panel-radius);
1458
+ border-radius: var(--mega-menu-panel-radius, calc(var(--radius) / var(--radius-ratio)));
1404
1459
  background: var(--mega-menu-panel-background);
1405
1460
  color: var(--mega-menu-panel-foreground);
1406
1461
  box-shadow: var(--mega-menu-panel-shadow);
@@ -1489,7 +1544,10 @@
1489
1544
  min-block-size: var(--mega-menu-link-min-height);
1490
1545
  padding-block: var(--mega-menu-link-padding-y);
1491
1546
  padding-inline: var(--mega-menu-link-padding-x);
1492
- border-radius: var(--mega-menu-link-radius);
1547
+ border-radius: var(
1548
+ --mega-menu-link-radius,
1549
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1550
+ );
1493
1551
  color: var(--mega-menu-link-foreground);
1494
1552
  font-size: var(--mega-menu-link-font-size);
1495
1553
  line-height: var(--line-height-body);
@@ -1497,12 +1555,15 @@
1497
1555
  }
1498
1556
 
1499
1557
  .ui-mega-menu-link:hover {
1500
- background: var(--mega-menu-link-hover-background, hsl(var(--accent)));
1558
+ background: var(
1559
+ --mega-menu-link-hover-background,
1560
+ hsl(var(--accent) / var(--mega-menu-link-hover-background-alpha, 100%))
1561
+ );
1501
1562
  color: var(--mega-menu-link-hover-foreground, hsl(var(--accent-foreground)));
1502
1563
  }
1503
1564
 
1504
1565
  .ui-mega-menu-link[aria-current="page"] {
1505
- color: var(--mega-menu-link-current-foreground, hsl(var(--primary)));
1566
+ color: var(--mega-menu-link-current-foreground, hsl(var(--text-link, var(--primary))));
1506
1567
  font-weight: var(--font-weight-semibold);
1507
1568
  }
1508
1569