@godxjp/ui 28.13.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 (159) 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 +4965 -970
  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 +20 -2
  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 +18 -2
  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/lib/control-styles.d.ts +31 -11
  72. package/dist/lib/control-styles.js +6 -6
  73. package/dist/lib/overlay-portal.d.ts +20 -0
  74. package/dist/lib/overlay-portal.js +93 -0
  75. package/dist/props/components/app.prop.d.ts +12 -0
  76. package/dist/props/components/charts.prop.d.ts +30 -0
  77. package/dist/props/components/index.d.ts +1 -1
  78. package/dist/props/components/navigation.prop.d.ts +21 -2
  79. package/dist/props/components/query.prop.d.ts +36 -2
  80. package/dist/props/registry.d.ts +46 -1
  81. package/dist/props/registry.js +38 -3
  82. package/dist/styles/alert-layout.css +34 -14
  83. package/dist/styles/badge-layout.css +10 -6
  84. package/dist/styles/base.css +14 -5
  85. package/dist/styles/card-layout.css +19 -8
  86. package/dist/styles/chart-layout.css +22 -3
  87. package/dist/styles/control.css +165 -59
  88. package/dist/styles/data-display-layout.css +129 -36
  89. package/dist/styles/data-entry-layout.css +23 -87
  90. package/dist/styles/dialog-layout.css +49 -19
  91. package/dist/styles/float-button-layout.css +5 -5
  92. package/dist/styles/focus-ring.css +9 -5
  93. package/dist/styles/layout.css +42 -15
  94. package/dist/styles/logo-layout.css +1 -1
  95. package/dist/styles/motion.css +1 -1
  96. package/dist/styles/navigation-layout.css +90 -29
  97. package/dist/styles/shell-layout.css +63 -40
  98. package/dist/styles/table-layout.css +56 -17
  99. package/dist/styles/text-layout.css +13 -4
  100. package/dist/styles/toggle.css +8 -2
  101. package/dist/tokens/components/actions.css +1 -1
  102. package/dist/tokens/components/attachments.css +4 -4
  103. package/dist/tokens/components/badge.css +4 -4
  104. package/dist/tokens/components/callout.css +1 -1
  105. package/dist/tokens/components/card.css +9 -4
  106. package/dist/tokens/components/chart.css +10 -1
  107. package/dist/tokens/components/chat-bubble.css +1 -1
  108. package/dist/tokens/components/control.css +28 -10
  109. package/dist/tokens/components/conversations.css +2 -1
  110. package/dist/tokens/components/data-display.css +12 -7
  111. package/dist/tokens/components/descriptions.css +1 -1
  112. package/dist/tokens/components/draggable-panel.css +1 -1
  113. package/dist/tokens/components/feedback.css +28 -8
  114. package/dist/tokens/components/float-button.css +1 -1
  115. package/dist/tokens/components/legal-document.css +1 -1
  116. package/dist/tokens/components/logo.css +1 -1
  117. package/dist/tokens/components/mega-menu.css +5 -3
  118. package/dist/tokens/components/navigation.css +21 -7
  119. package/dist/tokens/components/segmented.css +8 -3
  120. package/dist/tokens/components/shell.css +19 -5
  121. package/dist/tokens/components/table.css +9 -1
  122. package/dist/tokens/components/thought-chain.css +1 -1
  123. package/dist/tokens/components/toggle.css +2 -0
  124. package/dist/tokens/components/tree.css +3 -1
  125. package/dist/tokens/components/upload.css +6 -6
  126. package/dist/tokens/components/welcome.css +1 -1
  127. package/dist/tokens/foundation.css +28 -1
  128. package/docs/COMPOSITION-VS-COMPONENT.md +31 -0
  129. package/docs/CUSTOMER-THEMING.md +637 -1
  130. package/docs/FRAME-COVERAGE-REPORT.md +3 -2
  131. package/docs/GLASSMORPHISM-STANDARD.md +196 -0
  132. package/docs/THEME-API-COVERAGE.md +538 -0
  133. package/docs/TOKEN-RESOLUTION.md +195 -0
  134. package/docs/TOKENS.md +63 -24
  135. package/docs/asset-modules.d.ts +7 -0
  136. package/docs/data-display/charts.tsx +80 -0
  137. package/docs/data-display/data-table/index.tsx +30 -0
  138. package/docs/data-display/popover.tsx +1 -1
  139. package/docs/data-display/table.tsx +52 -0
  140. package/docs/feedback/sheet.tsx +10 -10
  141. package/docs/foundation/density.tsx +4 -4
  142. package/docs/i18n/messages/en.json +502 -0
  143. package/docs/i18n/messages/ja.json +502 -0
  144. package/docs/i18n/messages/vi.json +502 -0
  145. package/docs/layout/account-chip.tsx +2 -2
  146. package/docs/layout/responsive-grid.tsx +1 -1
  147. package/docs/navigation/toolbar.tsx +20 -12
  148. package/docs/providers/theme-scope.tsx +186 -0
  149. package/docs/showcase/caimono-price-comparison.tsx +911 -0
  150. package/docs/showcase/case4-login.tsx +2 -2
  151. package/docs/showcase/permission-matrix.tsx +13 -5
  152. package/docs/showcase/table-pagination.tsx +2 -1
  153. package/docs/showcase/tenant-brand-color.tsx +338 -0
  154. package/docs/showcase/theme-lab.tsx +2125 -0
  155. package/docs/themes/flat.css +462 -0
  156. package/docs/themes/glassmorphism.css +958 -0
  157. package/docs/themes/index.ts +200 -0
  158. package/package.json +4 -3
  159. package/scripts/explain-token.mjs +382 -0
@@ -6,7 +6,7 @@
6
6
  align-items: center;
7
7
  justify-content: center;
8
8
  gap: var(--space-inline-xs);
9
- border-radius: var(--radius-md);
9
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
10
10
  color: hsl(var(--foreground));
11
11
  font-size: var(--font-size-base);
12
12
  font-weight: var(--font-weight-medium);
@@ -60,7 +60,10 @@
60
60
  }
61
61
 
62
62
  .ui-toggle-soft:hover {
63
- background: var(--toggle-soft-hover-background, hsl(var(--secondary-hover)));
63
+ background: var(
64
+ --toggle-soft-hover-background,
65
+ hsl(var(--secondary-hover) / var(--secondary-hover-alpha, 100%))
66
+ );
64
67
  color: var(--toggle-soft-color, hsl(var(--secondary-foreground)));
65
68
  }
66
69
 
@@ -124,8 +127,13 @@
124
127
  flex-shrink: 0;
125
128
  }
126
129
 
130
+ .ui-button {
131
+ backdrop-filter: blur(var(--button-backdrop-blur-size))
132
+ saturate(var(--surface-backdrop-saturate, 160%));
133
+ }
134
+
127
135
  .ui-button--default {
128
- background: hsl(var(--primary));
136
+ background: var(--button-default-background, hsl(var(--primary)));
129
137
  color: hsl(var(--primary-foreground));
130
138
 
131
139
  box-shadow: var(--shadow-sm), var(--shadow-glow);
@@ -136,7 +144,7 @@
136
144
  }
137
145
 
138
146
  .ui-button--destructive {
139
- background: hsl(var(--destructive));
147
+ background: var(--button-destructive-background, hsl(var(--destructive)));
140
148
  color: hsl(var(--destructive-foreground));
141
149
  box-shadow: var(--shadow-sm);
142
150
  }
@@ -149,9 +157,20 @@
149
157
  background: hsl(var(--destructive-active));
150
158
  }
151
159
 
160
+ .ui-button--dashed {
161
+ background: var(
162
+ --button-outline-background,
163
+ hsl(var(--background) / var(--button-outline-background-alpha, 100%))
164
+ );
165
+ }
166
+
152
167
  .ui-button--outline {
153
- border: 1px solid hsl(var(--input));
154
- background: hsl(var(--background));
168
+ border: 1px solid
169
+ var(--button-outline-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
170
+ background: var(
171
+ --button-outline-background,
172
+ hsl(var(--background) / var(--button-outline-background-alpha, 100%))
173
+ );
155
174
  color: hsl(var(--foreground));
156
175
 
157
176
  box-shadow: var(--shadow-sm);
@@ -168,7 +187,10 @@
168
187
  }
169
188
 
170
189
  .ui-button--secondary {
171
- background: hsl(var(--secondary));
190
+ background: var(
191
+ --button-secondary-background,
192
+ hsl(var(--secondary) / var(--button-secondary-background-alpha, 100%))
193
+ );
172
194
  color: hsl(var(--secondary-foreground));
173
195
  }
174
196
 
@@ -177,7 +199,7 @@
177
199
  }
178
200
 
179
201
  .ui-button--link {
180
- color: hsl(var(--primary));
202
+ color: var(--button-link-foreground, hsl(var(--text-link, var(--primary))));
181
203
  text-underline-offset: 4px;
182
204
  }
183
205
 
@@ -232,7 +254,10 @@
232
254
  [data-slot="badge"] {
233
255
  --badge-space-y: 0;
234
256
  --badge-line-height: var(--line-height-tight);
235
- --badge-radius: var(--radius-sm);
257
+ --badge-radius: var(
258
+ --radius-sm,
259
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
260
+ );
236
261
  }
237
262
 
238
263
  .ui-button--lg {
@@ -467,7 +492,7 @@
467
492
  height: var(--checkbox-size);
468
493
  flex-shrink: 0;
469
494
  border: var(--checkbox-border-width) solid hsl(var(--primary));
470
- color: hsl(var(--primary));
495
+ color: hsl(var(--text-brand, var(--primary)));
471
496
  background: transparent;
472
497
  }
473
498
 
@@ -555,7 +580,7 @@
555
580
  }
556
581
 
557
582
  .ui-switch[data-state="unchecked"] {
558
- background: var(--switch-unchecked-background, hsl(var(--input)));
583
+ background: var(--switch-unchecked-background, hsl(var(--input) / var(--input-alpha, 100%)));
559
584
  }
560
585
 
561
586
  .ui-switch-thumb {
@@ -685,7 +710,7 @@
685
710
  .ui-color-picker-preview {
686
711
  width: 100%;
687
712
  height: 100%;
688
- border: 1px solid hsl(var(--input));
713
+ border: 1px solid hsl(var(--input) / var(--input-alpha, 100%));
689
714
  border-radius: var(--control-radius);
690
715
  box-shadow: var(--shadow-sm);
691
716
  }
@@ -722,7 +747,7 @@
722
747
  overflow: clip;
723
748
  overflow-clip-margin: var(--focus-ring-clip-margin);
724
749
  border-radius: var(--control-radius);
725
- background: hsl(var(--popover));
750
+ background: hsl(var(--popover) / var(--popover-alpha, 100%));
726
751
  color: hsl(var(--popover-foreground));
727
752
  }
728
753
 
@@ -847,7 +872,7 @@
847
872
  transform: translateX(-50%);
848
873
  gap: 0;
849
874
  padding: 0;
850
- background: hsl(var(--popover));
875
+ background: hsl(var(--popover) / var(--popover-alpha, 100%));
851
876
  }
852
877
 
853
878
  .ui-command-palette-trigger {
@@ -1037,17 +1062,17 @@
1037
1062
  }
1038
1063
  .ui-otp-group .ui-otp-slot:first-child {
1039
1064
  border-inline-start-width: var(--control-border-width);
1040
- border-start-start-radius: var(--radius-md);
1041
- border-end-start-radius: var(--radius-md);
1065
+ border-start-start-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1066
+ border-end-start-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1042
1067
  }
1043
1068
  .ui-otp-group .ui-otp-slot:last-child {
1044
- border-start-end-radius: var(--radius-md);
1045
- border-end-end-radius: var(--radius-md);
1069
+ border-start-end-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1070
+ border-end-end-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1046
1071
  }
1047
1072
  .ui-otp-group[data-appearance="grouped"] {
1048
1073
  overflow: hidden;
1049
1074
  border: var(--control-border-width) solid hsl(var(--border));
1050
- border-radius: var(--radius-md);
1075
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1051
1076
  background: hsl(var(--background));
1052
1077
  }
1053
1078
  .ui-otp-group[data-appearance="grouped"] .ui-otp-slot {
@@ -1147,20 +1172,28 @@
1147
1172
  fill: currentColor;
1148
1173
  }
1149
1174
  .ui-rating-star:focus-visible {
1150
- border-radius: var(--radius-sm);
1175
+ border-radius: var(
1176
+ --radius-sm,
1177
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1178
+ );
1151
1179
  }
1152
1180
 
1153
1181
  .ui-segmented {
1154
1182
 
1155
1183
  --segmented-item-height: calc(var(--control-height) - var(--segmented-track-padding) * 2);
1156
1184
  display: inline-flex;
1185
+
1186
+ inline-size: fit-content;
1157
1187
  max-width: 100%;
1158
1188
 
1159
1189
  flex-wrap: wrap;
1160
1190
  align-items: stretch;
1161
1191
  padding: var(--segmented-track-padding);
1162
- border-radius: var(--segmented-track-radius);
1163
- background: hsl(var(--segmented-track-background, var(--muted)));
1192
+ border-radius: var(--segmented-track-radius, var(--radius));
1193
+ background: hsl(
1194
+ var(--segmented-track-background, var(--muted)) /
1195
+ var(--segmented-track-background-alpha, 100%)
1196
+ );
1164
1197
  color: hsl(var(--segmented-item-color));
1165
1198
  font-size: var(--font-size-base);
1166
1199
  }
@@ -1176,7 +1209,7 @@
1176
1209
  gap: var(--segmented-item-gap);
1177
1210
  padding-inline: var(--segmented-item-padding-inline);
1178
1211
  border: 0;
1179
- border-radius: var(--segmented-item-radius);
1212
+ border-radius: var(--segmented-item-radius, calc(var(--radius) / var(--radius-ratio)));
1180
1213
  background: transparent;
1181
1214
  color: inherit;
1182
1215
  cursor: pointer;
@@ -1188,19 +1221,28 @@
1188
1221
  }
1189
1222
 
1190
1223
  .ui-segmented-item:not([data-state="checked"]):not([data-disabled]):hover {
1191
- background: hsl(var(--segmented-item-hover-background, var(--accent)));
1224
+ background: hsl(
1225
+ var(--segmented-item-hover-background, var(--accent)) /
1226
+ var(--segmented-item-hover-background-alpha, 100%)
1227
+ );
1192
1228
  color: hsl(var(--segmented-item-hover-color));
1193
1229
  }
1194
1230
  .ui-segmented-item:not([data-state="checked"]):not([data-disabled]):active {
1195
- background: hsl(var(--segmented-item-active-background));
1231
+ background: hsl(
1232
+ var(--segmented-item-active-background) / var(--segmented-item-active-background-alpha, 100%)
1233
+ );
1196
1234
  }
1197
1235
 
1198
1236
  .ui-segmented-item[data-state="checked"] {
1199
- background: hsl(var(--segmented-item-selected-background, var(--background)));
1237
+ background: hsl(
1238
+ var(--segmented-item-selected-background, var(--background)) /
1239
+ var(--segmented-item-selected-background-alpha, 100%)
1240
+ );
1200
1241
 
1201
1242
  box-shadow:
1202
- var(--segmented-item-selected-shadow),
1203
- inset 0 0 0 1px hsl(var(--segmented-item-selected-border-color, var(--input)));
1243
+ var(--segmented-item-selected-shadow, var(--shadow-md)),
1244
+ inset 0 0 0 1px
1245
+ hsl(var(--segmented-item-selected-border-color, var(--input)) / var(--input-alpha, 100%));
1204
1246
  color: hsl(var(--segmented-item-selected-color));
1205
1247
 
1206
1248
  font-weight: var(--segmented-item-selected-font-weight);
@@ -1252,9 +1294,13 @@
1252
1294
  min-height: var(--control-height);
1253
1295
  padding: var(--space-1) var(--control-padding-x);
1254
1296
 
1255
- border: var(--control-border-width) solid var(--control-surface-border-color, hsl(var(--input)));
1297
+ border: var(--control-border-width) solid
1298
+ var(--control-surface-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
1256
1299
  border-radius: var(--control-radius);
1257
- background: var(--control-surface-background, hsl(var(--background)));
1300
+ background: var(
1301
+ --control-surface-background,
1302
+ hsl(var(--background) / var(--control-surface-background-alpha, 100%))
1303
+ );
1258
1304
  box-shadow: var(--control-shadow);
1259
1305
  }
1260
1306
  .ui-tag-input-disabled {
@@ -1277,7 +1323,10 @@
1277
1323
  gap: var(--space-1);
1278
1324
  font-size: var(--tag-input-chip-font-size);
1279
1325
  padding: 0.0625rem var(--space-2);
1280
- border-radius: var(--radius-sm);
1326
+ border-radius: var(
1327
+ --radius-sm,
1328
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1329
+ );
1281
1330
  background: hsl(var(--secondary));
1282
1331
  color: hsl(var(--secondary-foreground));
1283
1332
  }
@@ -1374,8 +1423,11 @@
1374
1423
  }
1375
1424
 
1376
1425
  .ui-control-surface {
1377
- border-color: var(--control-surface-border-color, hsl(var(--input)));
1378
- background: var(--control-surface-background, hsl(var(--background)));
1426
+ border-color: var(--control-surface-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
1427
+ background: var(
1428
+ --control-surface-background,
1429
+ hsl(var(--background) / var(--control-surface-background-alpha, 100%))
1430
+ );
1379
1431
  }
1380
1432
 
1381
1433
  .ui-control-surface[data-variant="filled"] {
@@ -1510,7 +1562,10 @@
1510
1562
  block-size: var(--control-affix-action-size);
1511
1563
  align-items: center;
1512
1564
  justify-content: center;
1513
- border-radius: var(--control-affix-action-radius);
1565
+ border-radius: var(
1566
+ --control-affix-action-radius,
1567
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1568
+ );
1514
1569
  opacity: var(--control-affix-rest-alpha);
1515
1570
  }
1516
1571
 
@@ -1623,7 +1678,10 @@
1623
1678
  max-inline-size: 100%;
1624
1679
  align-items: center;
1625
1680
  overflow: hidden;
1626
- border-radius: var(--radius-sm);
1681
+ border-radius: var(
1682
+ --radius-sm,
1683
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1684
+ );
1627
1685
  background: hsl(var(--secondary));
1628
1686
  padding: 0.0625rem var(--space-2);
1629
1687
  color: hsl(var(--secondary-foreground));
@@ -1753,7 +1811,10 @@
1753
1811
  display: flex;
1754
1812
  inline-size: 100%;
1755
1813
  align-items: center;
1756
- border-radius: var(--cascader-result-radius);
1814
+ border-radius: var(
1815
+ --cascader-result-radius,
1816
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1817
+ );
1757
1818
  padding-inline: var(--cascader-result-space-inline);
1758
1819
  padding-block: var(--cascader-result-space-block);
1759
1820
  font-size: var(--cascader-option-font-size);
@@ -1806,10 +1867,14 @@
1806
1867
  var(--trigger-width, var(--menu-content-min-width))
1807
1868
  );
1808
1869
  overflow: hidden;
1809
- border-radius: var(--radius-md);
1870
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1810
1871
  border: 1px solid hsl(var(--border));
1811
- background: hsl(var(--popover));
1872
+
1873
+ background: var(--select-content-background, hsl(var(--popover) / var(--popover-alpha, 100%)));
1812
1874
  color: hsl(var(--popover-foreground));
1875
+
1876
+ backdrop-filter: blur(var(--select-content-backdrop-blur-size))
1877
+ saturate(var(--surface-backdrop-saturate, 160%));
1813
1878
  box-shadow: var(--shadow-md);
1814
1879
  }
1815
1880
 
@@ -1840,7 +1905,10 @@
1840
1905
 
1841
1906
  .ui-select-item,
1842
1907
  .ui-select-label {
1843
- border-radius: var(--menu-item-radius);
1908
+ border-radius: var(
1909
+ --menu-item-radius,
1910
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1911
+ );
1844
1912
  padding-inline: var(--menu-item-space-inline);
1845
1913
  height: var(--menu-item-height);
1846
1914
  display: flex;
@@ -1851,7 +1919,10 @@
1851
1919
 
1852
1920
  .ui-select-item,
1853
1921
  .ui-select-label {
1854
- border-radius: var(--menu-item-radius);
1922
+ border-radius: var(
1923
+ --menu-item-radius,
1924
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1925
+ );
1855
1926
  padding-inline: var(--menu-item-space-inline);
1856
1927
  height: var(--menu-item-height);
1857
1928
  display: flex;
@@ -1968,7 +2039,7 @@
1968
2039
  inline-size: 100%;
1969
2040
  align-items: center;
1970
2041
  justify-content: center;
1971
- border-radius: var(--time-picker-option-radius);
2042
+ border-radius: var(--time-picker-option-radius, calc(var(--radius) / var(--radius-ratio)));
1972
2043
  padding-block: var(--time-picker-option-space-block);
1973
2044
  font-size: var(--time-picker-option-font-size);
1974
2045
  font-variant-numeric: tabular-nums;
@@ -2042,7 +2113,10 @@
2042
2113
  block-size: var(--control-inline-affix-size);
2043
2114
  align-items: center;
2044
2115
  justify-content: center;
2045
- border-radius: var(--control-affix-action-radius);
2116
+ border-radius: var(
2117
+ --control-affix-action-radius,
2118
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2119
+ );
2046
2120
  color: hsl(var(--muted-foreground));
2047
2121
  opacity: var(--control-inline-affix-rest-alpha);
2048
2122
  transition: opacity 150ms ease;
@@ -2174,7 +2248,10 @@
2174
2248
  .ui-tree-select-row {
2175
2249
  display: flex;
2176
2250
  align-items: center;
2177
- border-radius: var(--tree-select-row-radius);
2251
+ border-radius: var(
2252
+ --tree-select-row-radius,
2253
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2254
+ );
2178
2255
  padding-block: var(--tree-select-row-space-block);
2179
2256
  padding-inline-end: var(--tree-select-row-space-inline-end);
2180
2257
  padding-inline-start: calc(
@@ -2207,7 +2284,10 @@
2207
2284
  align-items: center;
2208
2285
  justify-content: center;
2209
2286
  margin-inline-end: var(--tree-select-toggle-space-inline-end);
2210
- border-radius: var(--tree-select-row-radius);
2287
+ border-radius: var(
2288
+ --tree-select-row-radius,
2289
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2290
+ );
2211
2291
  }
2212
2292
 
2213
2293
  .ui-tree-select-toggle[data-leaf] {
@@ -2243,7 +2323,10 @@
2243
2323
  block-size: var(--control-affix-action-size);
2244
2324
  align-items: center;
2245
2325
  justify-content: center;
2246
- border-radius: var(--control-affix-action-radius);
2326
+ border-radius: var(
2327
+ --control-affix-action-radius,
2328
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2329
+ );
2247
2330
  opacity: var(--control-affix-rest-alpha);
2248
2331
  }
2249
2332
 
@@ -2427,7 +2510,7 @@
2427
2510
 
2428
2511
  .ui-calendar-weekday {
2429
2512
  inline-size: var(--control-height);
2430
- border-radius: var(--calendar-weekday-radius);
2513
+ border-radius: var(--calendar-weekday-radius, calc(var(--radius) / var(--radius-ratio)));
2431
2514
  font-size: var(--calendar-weekday-font-size);
2432
2515
  font-weight: var(--font-weight-normal);
2433
2516
  color: hsl(var(--muted-foreground));
@@ -2458,7 +2541,7 @@
2458
2541
  block-size: var(--control-height);
2459
2542
  padding: 0;
2460
2543
  font-weight: var(--font-weight-normal);
2461
- border-radius: var(--calendar-day-radius);
2544
+ border-radius: var(--calendar-day-radius, calc(var(--radius) / var(--radius-ratio)));
2462
2545
  }
2463
2546
 
2464
2547
  .ui-calendar .ui-calendar-day-button[aria-selected] {
@@ -2505,7 +2588,7 @@
2505
2588
  box-shadow: inset 0 0 0 1px hsl(var(--primary));
2506
2589
  color: hsl(var(--text-primary, from hsl(var(--primary)) var(--text-primary-channels)));
2507
2590
  font-weight: var(--font-weight-medium);
2508
- border-radius: var(--calendar-day-radius);
2591
+ border-radius: var(--calendar-day-radius, calc(var(--radius) / var(--radius-ratio)));
2509
2592
  }
2510
2593
 
2511
2594
  .ui-calendar .ui-calendar-day.day-outside:not(:has(button)) {
@@ -2515,7 +2598,7 @@
2515
2598
  .ui-calendar .ui-calendar-day.day-selected:not(:has(button)) {
2516
2599
  background-color: hsl(var(--primary));
2517
2600
  color: hsl(var(--primary-foreground));
2518
- border-radius: var(--calendar-day-radius);
2601
+ border-radius: var(--calendar-day-radius, calc(var(--radius) / var(--radius-ratio)));
2519
2602
  }
2520
2603
 
2521
2604
  .ui-calendar-day-disabled {
@@ -2555,7 +2638,7 @@
2555
2638
  min-block-size: var(--transfer-pane-min-height);
2556
2639
  flex: 1 1 0%;
2557
2640
  flex-direction: column;
2558
- border-radius: var(--transfer-pane-radius);
2641
+ border-radius: var(--transfer-pane-radius, calc(var(--radius) / var(--radius-ratio)));
2559
2642
  border: 1px solid hsl(var(--border));
2560
2643
  background: hsl(var(--background));
2561
2644
  }
@@ -2604,7 +2687,10 @@
2604
2687
  cursor: pointer;
2605
2688
  align-items: flex-start;
2606
2689
  gap: var(--transfer-row-space-gap);
2607
- border-radius: var(--transfer-row-radius);
2690
+ border-radius: var(
2691
+ --transfer-row-radius,
2692
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2693
+ );
2608
2694
  padding-inline: var(--transfer-row-space-inline);
2609
2695
  padding-block: var(--transfer-row-space-block);
2610
2696
  font-size: var(--transfer-row-font-size);
@@ -2645,7 +2731,7 @@
2645
2731
  align-items: center;
2646
2732
  gap: var(--control-composite-field-space-gap);
2647
2733
  border-radius: var(--control-radius);
2648
- border-color: hsl(var(--input));
2734
+ border-color: hsl(var(--input) / var(--input-alpha, 100%));
2649
2735
  background: hsl(var(--background));
2650
2736
  outline: none;
2651
2737
  transition:
@@ -2821,13 +2907,24 @@
2821
2907
 
2822
2908
  @layer components {
2823
2909
 
2910
+ .ui-control-outlined-surface {
2911
+ border-color: var(--control-surface-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
2912
+ background-color: var(
2913
+ --control-surface-background,
2914
+ hsl(var(--background) / var(--control-surface-background-alpha, 100%))
2915
+ );
2916
+ }
2917
+
2824
2918
  .ui-control--filled {
2825
2919
  border-color: transparent;
2826
2920
  background-color: hsl(var(--control-variant-filled-background));
2827
2921
  }
2828
2922
 
2829
2923
  .ui-control--filled:hover:not(:disabled):not([readonly]):not([data-disabled]) {
2830
- background-color: hsl(var(--control-variant-filled-hover-background, var(--accent)));
2924
+ background-color: hsl(
2925
+ var(--control-variant-filled-hover-background, var(--accent)) /
2926
+ var(--control-variant-filled-hover-background-alpha, 100%)
2927
+ );
2831
2928
  }
2832
2929
 
2833
2930
  .ui-control--borderless {
@@ -2890,7 +2987,7 @@
2890
2987
  font-size: var(--control-font-size);
2891
2988
  color: hsl(var(--input-addon-color));
2892
2989
  background-color: hsl(var(--input-addon-background));
2893
- border: var(--control-border-width) solid hsl(var(--input));
2990
+ border: var(--control-border-width) solid hsl(var(--input) / var(--input-alpha, 100%));
2894
2991
  white-space: nowrap;
2895
2992
  }
2896
2993
 
@@ -2945,7 +3042,7 @@
2945
3042
  .ui-switch-spinner {
2946
3043
  inline-size: var(--switch-spinner-size);
2947
3044
  block-size: var(--switch-spinner-size);
2948
- color: hsl(var(--primary));
3045
+ color: hsl(var(--text-brand, var(--primary)));
2949
3046
  animation: spin 1s linear infinite;
2950
3047
  }
2951
3048
 
@@ -2961,7 +3058,10 @@
2961
3058
  }
2962
3059
 
2963
3060
  .ui-switch:has(.ui-switch-content)[data-state="unchecked"] {
2964
- background: var(--switch-unchecked-background, hsl(var(--muted-foreground)));
3061
+ background: var(
3062
+ --switch-unchecked-background,
3063
+ hsl(var(--muted-foreground) / var(--switch-unchecked-background-alpha, 100%))
3064
+ );
2965
3065
  }
2966
3066
 
2967
3067
  .ui-switch[data-state="unchecked"] .ui-switch-content {
@@ -3105,7 +3205,10 @@
3105
3205
 
3106
3206
  .ui-slider-tooltip-content {
3107
3207
  padding-inline: var(--slider-tooltip-padding-inline);
3108
- border-radius: var(--slider-tooltip-radius);
3208
+ border-radius: var(
3209
+ --slider-tooltip-radius,
3210
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
3211
+ );
3109
3212
  background: hsl(var(--slider-tooltip-background));
3110
3213
  color: hsl(var(--slider-tooltip-color));
3111
3214
  font-size: var(--slider-tooltip-font-size);
@@ -3172,8 +3275,11 @@
3172
3275
  }
3173
3276
 
3174
3277
  .ui-radio-button[data-state="checked"] {
3175
- color: hsl(var(--choice-button-selected-color, var(--primary)));
3176
- border-color: hsl(var(--choice-button-selected-border-color, var(--primary)));
3278
+ color: hsl(var(--choice-button-selected-color, var(--text-brand, var(--primary))));
3279
+ border-color: hsl(
3280
+ var(--choice-button-selected-border-color, var(--primary)) /
3281
+ var(--choice-button-selected-border-color-alpha, 100%)
3282
+ );
3177
3283
  }
3178
3284
 
3179
3285
  .ui-radio-button-bar[data-button-style="solid"] .ui-radio-button[data-state="checked"] {