@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
@@ -11,7 +11,7 @@
11
11
  border-radius: var(--radius-pill);
12
12
  background:
13
13
  linear-gradient(var(--avatar-tint), var(--avatar-tint)),
14
- var(--avatar-background, hsl(var(--muted)));
14
+ var(--avatar-background, hsl(var(--muted) / var(--avatar-background-alpha, 100%)));
15
15
  color: hsl(var(--muted-foreground));
16
16
  font-size: var(--avatar-font-size);
17
17
  font-weight: var(--font-weight-medium);
@@ -20,14 +20,14 @@
20
20
  .ui-avatar[data-shape="square"] {
21
21
  inline-size: var(--avatar-square-size);
22
22
  block-size: var(--avatar-square-size);
23
- border-radius: var(--avatar-square-radius);
23
+ border-radius: var(--avatar-square-radius, var(--radius));
24
24
  --avatar-background: var(--avatar-square-background, hsl(var(--primary)));
25
25
  color: var(--avatar-square-foreground, hsl(var(--primary-foreground)));
26
26
  }
27
27
 
28
28
  .ui-avatar[data-appearance="tinted"] {
29
29
  --avatar-background: var(--avatar-tinted-background, hsl(var(--primary) / 0.1));
30
- color: var(--avatar-tinted-foreground, hsl(var(--primary)));
30
+ color: var(--avatar-tinted-foreground, hsl(var(--text-brand, var(--primary))));
31
31
  }
32
32
 
33
33
  .ui-avatar[data-appearance="tinted"] svg {
@@ -78,7 +78,7 @@
78
78
  height: 100%;
79
79
  align-items: center;
80
80
  justify-content: center;
81
- background: var(--avatar-background, hsl(var(--muted)));
81
+ background: var(--avatar-background, hsl(var(--muted) / var(--avatar-background-alpha, 100%)));
82
82
  }
83
83
 
84
84
  .ui-avatar[data-presence] {
@@ -176,7 +176,10 @@
176
176
  height: var(--progress-meter-block-size);
177
177
  overflow: hidden;
178
178
  border-radius: var(--radius-pill);
179
- background: var(--progress-track-background, hsl(var(--secondary)));
179
+ background: var(
180
+ --progress-track-background,
181
+ hsl(var(--secondary) / var(--progress-track-background-alpha, 100%))
182
+ );
180
183
  }
181
184
 
182
185
  .ui-progress-bar {
@@ -207,7 +210,7 @@
207
210
  .ui-progress[data-breakdown] .ui-progress-track {
208
211
  display: flex;
209
212
  height: var(--progress-breakdown-block-size);
210
- border-radius: var(--progress-breakdown-radius);
213
+ border-radius: var(--progress-breakdown-radius, var(--radius));
211
214
  }
212
215
 
213
216
  .ui-progress[data-size="sm"] .ui-progress-track {
@@ -269,7 +272,10 @@
269
272
  }
270
273
 
271
274
  .ui-progress-ring-track {
272
- stroke: var(--progress-track-background, hsl(var(--secondary)));
275
+ stroke: var(
276
+ --progress-track-background,
277
+ hsl(var(--secondary) / var(--progress-track-background-alpha, 100%))
278
+ );
273
279
  }
274
280
 
275
281
  .ui-progress-ring-indicator {
@@ -446,7 +452,7 @@
446
452
  max-inline-size: 100%;
447
453
  block-size: var(--thumbnail-block-size);
448
454
  border: var(--thumbnail-border-width) solid hsl(var(--border));
449
- border-radius: var(--thumbnail-radius);
455
+ border-radius: var(--thumbnail-radius, var(--radius));
450
456
 
451
457
  background: hsl(var(--muted));
452
458
  object-fit: contain;
@@ -557,7 +563,7 @@
557
563
  }
558
564
 
559
565
  .ui-timeline-title[data-current="true"] {
560
- color: hsl(var(--primary));
566
+ color: hsl(var(--text-brand, var(--primary)));
561
567
  font-weight: var(--font-weight-semibold);
562
568
  }
563
569
 
@@ -595,7 +601,7 @@
595
601
  text-decoration: underline;
596
602
  }
597
603
  .ui-accordion-trigger:focus-visible {
598
- border-radius: var(--radius-sm);
604
+ border-radius: var(--radius-sm, calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio)));
599
605
  }
600
606
  .ui-accordion-trigger:disabled,
601
607
  .ui-accordion-trigger[data-disabled] {
@@ -624,9 +630,9 @@
624
630
  .ui-hover-card-content {
625
631
  z-index: 50;
626
632
  width: 16rem;
627
- border-radius: var(--radius-md);
633
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
628
634
  border: 1px solid hsl(var(--border));
629
- background: hsl(var(--popover));
635
+ background: hsl(var(--popover) / var(--popover-alpha, 100%));
630
636
  color: hsl(var(--popover-foreground));
631
637
  padding: var(--space-4);
632
638
  box-shadow: var(--shadow-md);
@@ -653,10 +659,18 @@
653
659
  padding-inline: var(--space-4);
654
660
  }
655
661
 
662
+ .ui-carousel:has(.ui-carousel-dots) {
663
+ --carousel-dots-block-size: calc(var(--space-4) + var(--touch-target-min));
664
+ }
665
+
656
666
  .ui-carousel-previous,
657
667
  .ui-carousel-next {
658
668
  position: absolute;
659
- top: 50%;
669
+
670
+ inset-block-start: var(
671
+ --carousel-arrow-inset-block-start,
672
+ calc(50% - var(--carousel-dots-block-size) / 2)
673
+ );
660
674
  z-index: 20;
661
675
  display: grid;
662
676
  width: 2rem;
@@ -685,8 +699,15 @@
685
699
  }
686
700
 
687
701
  .ui-carousel-arrow {
702
+ display: grid;
688
703
  width: var(--carousel-arrow-icon-size);
689
704
  height: var(--carousel-arrow-icon-size);
705
+ place-items: center;
706
+ }
707
+
708
+ .ui-carousel-arrow > * {
709
+ width: 100%;
710
+ height: 100%;
690
711
  }
691
712
 
692
713
  .ui-carousel-dots {
@@ -938,12 +959,51 @@
938
959
  inset-inline-start: 0;
939
960
 
940
961
  z-index: 20;
941
- background-color: inherit;
962
+ background-color: hsl(var(--card) / var(--card-alpha, 100%));
942
963
  border-inline-end: 1px solid hsl(var(--border));
943
964
  inline-size: var(--permission-matrix-label-width);
944
965
  min-inline-size: var(--permission-matrix-label-width);
945
966
  }
946
967
 
968
+ .ui-permission-matrix .ui-table-row[data-tone] > .ui-permission-matrix-pin {
969
+ background-image: linear-gradient(
970
+ var(
971
+ --table-row-tone-surface,
972
+ hsl(var(--table-row-tone-color) / var(--table-row-tone-wash-alpha))
973
+ ),
974
+ var(
975
+ --table-row-tone-surface,
976
+ hsl(var(--table-row-tone-color) / var(--table-row-tone-wash-alpha))
977
+ )
978
+ );
979
+ }
980
+
981
+ .ui-permission-matrix tbody tr:hover > .ui-permission-matrix-pin {
982
+ background-image: linear-gradient(
983
+ var(
984
+ --table-row-hover-background,
985
+ hsl(var(--accent) / var(--table-row-hover-background-alpha, 0.7))
986
+ ),
987
+ var(
988
+ --table-row-hover-background,
989
+ hsl(var(--accent) / var(--table-row-hover-background-alpha, 0.7))
990
+ )
991
+ );
992
+ }
993
+
994
+ .ui-permission-matrix tbody tr[data-state="selected"] > .ui-permission-matrix-pin {
995
+ background-image: linear-gradient(
996
+ var(
997
+ --table-row-selected-background,
998
+ hsl(var(--primary) / var(--table-row-selected-background-alpha, 0.06))
999
+ ),
1000
+ var(
1001
+ --table-row-selected-background,
1002
+ hsl(var(--primary) / var(--table-row-selected-background-alpha, 0.06))
1003
+ )
1004
+ );
1005
+ }
1006
+
947
1007
  .ui-permission-matrix-role {
948
1008
  display: inline-flex;
949
1009
  align-items: center;
@@ -1016,7 +1076,7 @@
1016
1076
  :is(.ui-code-block, .ui-prose pre) {
1017
1077
  margin: 0;
1018
1078
  overflow: auto;
1019
- border-radius: var(--code-block-radius);
1079
+ border-radius: var(--code-block-radius, calc(var(--radius) / var(--radius-ratio)));
1020
1080
  background: hsl(var(--muted));
1021
1081
  padding: var(--code-block-space-inset);
1022
1082
  color: var(--code-block-foreground, hsl(var(--foreground)));
@@ -1062,7 +1122,7 @@
1062
1122
 
1063
1123
  .ui-code-block [data-code-token="keyword"],
1064
1124
  .ui-prose pre [data-code-token="keyword"] {
1065
- color: var(--code-block-token-keyword-color, hsl(var(--primary)));
1125
+ color: var(--code-block-token-keyword-color, hsl(var(--text-brand, var(--primary))));
1066
1126
  }
1067
1127
 
1068
1128
  .ui-code-block [data-code-token="string"],
@@ -1217,11 +1277,14 @@
1217
1277
  font-size: var(--prose-code-font-size);
1218
1278
  background: hsl(var(--muted));
1219
1279
  padding-inline: var(--prose-code-space-inline);
1220
- border-radius: var(--prose-code-radius);
1280
+ border-radius: var(
1281
+ --prose-code-radius,
1282
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1283
+ );
1221
1284
  }
1222
1285
 
1223
1286
  .ui-prose a {
1224
- color: hsl(var(--prose-link-color, var(--primary)));
1287
+ color: hsl(var(--prose-link-color, var(--text-link, var(--primary))));
1225
1288
  text-decoration-line: var(--prose-link-decoration-line);
1226
1289
  }
1227
1290
 
@@ -1245,7 +1308,7 @@
1245
1308
  .ui-prose img {
1246
1309
  max-inline-size: 100%;
1247
1310
  block-size: auto;
1248
- border-radius: var(--prose-image-radius);
1311
+ border-radius: var(--prose-image-radius, calc(var(--radius) / var(--radius-ratio)));
1249
1312
  }
1250
1313
 
1251
1314
  .ui-prose[data-image-size="original"] img {
@@ -1360,7 +1423,10 @@
1360
1423
  padding: var(--timeline-grid-event-space-inset);
1361
1424
  border-inline-start: var(--timeline-grid-event-border-width) solid
1362
1425
  var(--timeline-grid-event-color, hsl(var(--primary)));
1363
- border-radius: var(--timeline-grid-event-radius);
1426
+ border-radius: var(
1427
+ --timeline-grid-event-radius,
1428
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1429
+ );
1364
1430
 
1365
1431
  background-color: color-mix(
1366
1432
  in srgb,
@@ -1451,7 +1517,7 @@
1451
1517
  .ui-range-timeline {
1452
1518
  overflow: auto;
1453
1519
  border: 1px solid hsl(var(--range-timeline-border-color));
1454
- border-radius: var(--radius-md);
1520
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1455
1521
  }
1456
1522
  .ui-range-timeline-canvas {
1457
1523
  min-inline-size: calc(
@@ -1472,7 +1538,7 @@
1472
1538
  position: sticky;
1473
1539
  inset-inline-start: 0;
1474
1540
  z-index: 1;
1475
- background: hsl(var(--card));
1541
+ background: hsl(var(--card) / var(--card-alpha, 100%));
1476
1542
  padding: var(--space-2);
1477
1543
  border-inline-end: 1px solid hsl(var(--range-timeline-border-color));
1478
1544
  }
@@ -1563,7 +1629,10 @@
1563
1629
  inset-block-start: 50%;
1564
1630
  transform: translateY(-50%);
1565
1631
  block-size: var(--range-timeline-bar-height);
1566
- border-radius: var(--radius-sm);
1632
+ border-radius: var(
1633
+ --radius-sm,
1634
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1635
+ );
1567
1636
  background: hsl(var(--primary));
1568
1637
  color: hsl(var(--primary-foreground));
1569
1638
  }
@@ -1648,7 +1717,7 @@
1648
1717
  gap: 0;
1649
1718
  border-inline-end: var(--descriptions-border-width) solid hsl(var(--border));
1650
1719
  border-block-end: var(--descriptions-border-width) solid hsl(var(--border));
1651
- border-radius: var(--descriptions-border-radius);
1720
+ border-radius: var(--descriptions-border-radius, calc(var(--radius) / var(--radius-ratio)));
1652
1721
  overflow: hidden;
1653
1722
  }
1654
1723
 
@@ -1771,7 +1840,10 @@
1771
1840
  }
1772
1841
  .ui-text[data-chip] {
1773
1842
  background: hsl(var(--muted));
1774
- border-radius: var(--prose-code-radius);
1843
+ border-radius: var(
1844
+ --prose-code-radius,
1845
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
1846
+ );
1775
1847
  padding-inline: var(--prose-code-space-inline);
1776
1848
  font-size: var(--prose-code-font-size);
1777
1849
  }
@@ -1816,7 +1888,7 @@
1816
1888
 
1817
1889
  .ui-chat-bubble-body {
1818
1890
  min-inline-size: 0;
1819
- border-radius: var(--chat-bubble-radius);
1891
+ border-radius: var(--chat-bubble-radius, var(--radius));
1820
1892
  padding-block: var(--chat-bubble-padding-block);
1821
1893
  padding-inline: var(--chat-bubble-padding-inline);
1822
1894
  background: var(--chat-bubble-background, hsl(var(--muted)));
@@ -1860,23 +1932,32 @@
1860
1932
 
1861
1933
  .ui-chat-bubble[data-tone="info"] .ui-chat-bubble-body {
1862
1934
  border: var(--stroke-hairline) solid hsl(var(--info) / var(--chat-bubble-tone-border-alpha));
1863
- background: hsl(var(--info) / var(--chat-bubble-tone-background-alpha));
1935
+ background: var(--surface-info, hsl(var(--info) / var(--chat-bubble-tone-background-alpha)));
1864
1936
  }
1865
1937
 
1866
1938
  .ui-chat-bubble[data-tone="success"] .ui-chat-bubble-body {
1867
1939
  border: var(--stroke-hairline) solid hsl(var(--success) / var(--chat-bubble-tone-border-alpha));
1868
- background: hsl(var(--success) / var(--chat-bubble-tone-background-alpha));
1940
+ background: var(
1941
+ --surface-success,
1942
+ hsl(var(--success) / var(--chat-bubble-tone-background-alpha))
1943
+ );
1869
1944
  }
1870
1945
 
1871
1946
  .ui-chat-bubble[data-tone="warning"] .ui-chat-bubble-body {
1872
1947
  border: var(--stroke-hairline) solid hsl(var(--warning) / var(--chat-bubble-tone-border-alpha));
1873
- background: hsl(var(--warning) / var(--chat-bubble-tone-background-alpha));
1948
+ background: var(
1949
+ --surface-warning,
1950
+ hsl(var(--warning) / var(--chat-bubble-tone-background-alpha))
1951
+ );
1874
1952
  }
1875
1953
 
1876
1954
  .ui-chat-bubble[data-tone="destructive"] .ui-chat-bubble-body {
1877
1955
  border: var(--stroke-hairline) solid
1878
1956
  hsl(var(--destructive) / var(--chat-bubble-tone-border-alpha));
1879
- background: hsl(var(--destructive) / var(--chat-bubble-tone-background-alpha));
1957
+ background: var(
1958
+ --surface-destructive,
1959
+ hsl(var(--destructive) / var(--chat-bubble-tone-background-alpha))
1960
+ );
1880
1961
  }
1881
1962
 
1882
1963
  .ui-chat-bubble-caret {
@@ -1951,7 +2032,10 @@
1951
2032
  gap: var(--tree-node-gap);
1952
2033
 
1953
2034
  min-block-size: var(--tree-node-height, var(--control-height));
1954
- border-radius: var(--tree-node-radius);
2035
+ border-radius: var(
2036
+ --tree-node-radius,
2037
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
2038
+ );
1955
2039
  padding-inline: var(--tree-node-padding-inline);
1956
2040
 
1957
2041
  padding-inline-start: calc(
@@ -1961,11 +2045,17 @@
1961
2045
  }
1962
2046
 
1963
2047
  .ui-tree-node:hover {
1964
- background: var(--tree-node-hover-background, hsl(var(--accent)));
2048
+ background: var(
2049
+ --tree-node-hover-background,
2050
+ hsl(var(--accent) / var(--tree-node-hover-background-alpha, 100%))
2051
+ );
1965
2052
  }
1966
2053
 
1967
2054
  .ui-tree-node[data-selected="true"] {
1968
- background: var(--tree-node-selected-background, hsl(var(--accent)));
2055
+ background: var(
2056
+ --tree-node-selected-background,
2057
+ hsl(var(--accent) / var(--tree-node-selected-background-alpha, 100%))
2058
+ );
1969
2059
  color: var(--tree-node-selected-foreground, hsl(var(--accent-foreground)));
1970
2060
  font-weight: var(--font-weight-medium);
1971
2061
  }
@@ -2086,7 +2176,10 @@
2086
2176
  }
2087
2177
 
2088
2178
  .ui-tree[data-variant="directory"] .ui-tree-node[data-selected="true"] {
2089
- background: var(--tree-node-selected-background, hsl(var(--primary) / 0.12));
2179
+ background: var(
2180
+ --tree-node-selected-background,
2181
+ hsl(var(--primary) / var(--tree-node-selected-background-alpha, 0.12))
2182
+ );
2090
2183
  }
2091
2184
  }
2092
2185
 
@@ -2097,7 +2190,7 @@
2097
2190
  min-inline-size: 0;
2098
2191
  align-items: flex-start;
2099
2192
  gap: var(--welcome-gap);
2100
- border-radius: var(--welcome-radius);
2193
+ border-radius: var(--welcome-radius, var(--radius));
2101
2194
  }
2102
2195
 
2103
2196
  .ui-welcome[data-variant="filled"] {
@@ -2292,7 +2385,7 @@
2292
2385
  padding-block: var(--thought-chain-item-padding-block);
2293
2386
  padding-inline: var(--thought-chain-item-padding-inline);
2294
2387
  border: 0;
2295
- border-radius: var(--thought-chain-item-radius);
2388
+ border-radius: var(--thought-chain-item-radius, var(--radius));
2296
2389
  background: transparent;
2297
2390
  color: inherit;
2298
2391
  font: inherit;
@@ -50,7 +50,7 @@
50
50
  padding-block: var(--space-3);
51
51
  padding-inline: var(--space-4);
52
52
  border: var(--stroke-hairline) solid transparent;
53
- border-radius: var(--attachments-card-radius);
53
+ border-radius: var(--attachments-card-radius, var(--radius));
54
54
  background-color: hsl(var(--muted));
55
55
  overflow: hidden;
56
56
  }
@@ -66,7 +66,7 @@
66
66
  }
67
67
 
68
68
  .ui-attachments-card-preview {
69
- border-radius: var(--radius-md);
69
+ border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
70
70
  object-fit: cover;
71
71
  }
72
72
 
@@ -146,7 +146,7 @@
146
146
  inline-size: var(--attachments-card-block-size);
147
147
  block-size: var(--attachments-card-block-size);
148
148
  border: var(--stroke-hairline) dashed hsl(var(--border));
149
- border-radius: var(--attachments-card-radius);
149
+ border-radius: var(--attachments-card-radius, var(--radius));
150
150
  background-color: transparent;
151
151
  color: hsl(var(--muted-foreground));
152
152
  cursor: pointer;
@@ -157,7 +157,7 @@
157
157
 
158
158
  .ui-attachments-upload-btn:hover:not(:disabled) {
159
159
  border-color: hsl(var(--primary));
160
- color: hsl(var(--primary));
160
+ color: hsl(var(--text-brand, var(--primary)));
161
161
  }
162
162
 
163
163
  .ui-attachments-upload-btn:disabled {
@@ -178,7 +178,7 @@
178
178
  gap: var(--attachments-placeholder-gap);
179
179
  padding: var(--attachments-placeholder-space-inset);
180
180
  border: var(--stroke-md) dashed hsl(var(--border));
181
- border-radius: var(--attachments-placeholder-radius);
181
+ border-radius: var(--attachments-placeholder-radius, var(--radius));
182
182
  background-color: hsl(var(--muted) / 0.4);
183
183
  text-align: center;
184
184
  cursor: pointer;
@@ -228,7 +228,7 @@
228
228
  inset: 0;
229
229
  z-index: 1;
230
230
  border: var(--stroke-md) dashed hsl(var(--primary));
231
- border-radius: var(--attachments-placeholder-radius);
231
+ border-radius: var(--attachments-placeholder-radius, var(--radius));
232
232
  background: var(
233
233
  --attachments-drop-overlay-background,
234
234
  color-mix(in srgb, hsl(var(--background)) 85%, transparent)
@@ -247,76 +247,6 @@
247
247
  position: fixed;
248
248
  }
249
249
 
250
- .ui-combobox-content {
251
- min-width: 14rem;
252
- width: min(22rem, 90vw);
253
- padding: 0;
254
- border: 1px solid hsl(var(--border));
255
- background: hsl(var(--popover));
256
- color: hsl(var(--popover-foreground));
257
- }
258
-
259
- .ui-combobox-command {
260
- width: 100%;
261
- display: flex;
262
- min-height: 0;
263
- flex-direction: column;
264
- }
265
-
266
- .ui-combobox-search {
267
- border: none;
268
- border-radius: 0;
269
- width: 100%;
270
- }
271
-
272
- .ui-combobox-list {
273
- min-height: 0;
274
- flex: 1;
275
- overflow-y: auto;
276
- padding: var(--space-1);
277
- }
278
-
279
- .ui-combobox-item {
280
- position: relative;
281
- width: 100%;
282
- user-select: none;
283
- display: flex;
284
- align-items: center;
285
- border-radius: var(--radius-sm);
286
- padding-inline: var(--space-2);
287
- padding-block: var(--space-2);
288
- font-size: var(--font-size-base);
289
- outline: none;
290
- }
291
-
292
- .ui-combobox-item[data-selected="true"] {
293
- background: hsl(var(--accent));
294
- color: hsl(var(--accent-foreground));
295
- }
296
-
297
- .ui-combobox-item:hover,
298
- .ui-combobox-item[data-state="active"] {
299
- background: hsl(var(--accent));
300
- color: hsl(var(--accent-foreground));
301
- }
302
-
303
- .ui-combobox-empty {
304
- display: block;
305
- padding: var(--space-3);
306
- text-align: center;
307
- color: hsl(var(--muted-foreground));
308
- }
309
-
310
- .ui-combobox-caret {
311
- width: 0.9rem;
312
- height: 0.9rem;
313
- border-bottom: 1px solid currentColor;
314
- border-inline-end: 1px solid currentColor;
315
- transform: rotate(45deg);
316
- margin-inline-start: auto;
317
- opacity: 0.7;
318
- }
319
-
320
250
  .ui-password-strength {
321
251
  display: grid;
322
252
  gap: var(--space-1);
@@ -330,7 +260,10 @@
330
260
 
331
261
  .ui-password-strength-segment {
332
262
  height: 0.5rem;
333
- border-radius: var(--radius-sm);
263
+ border-radius: var(
264
+ --radius-sm,
265
+ calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
266
+ );
334
267
  background: hsl(var(--muted));
335
268
  }
336
269
 
@@ -394,7 +327,7 @@
394
327
  .ui-upload-dropzone {
395
328
  cursor: pointer;
396
329
  padding: var(--upload-dropzone-space-inset);
397
- border-radius: var(--upload-dropzone-radius);
330
+ border-radius: var(--upload-dropzone-radius, var(--radius));
398
331
  border: var(--upload-dropzone-border-width) dashed hsl(var(--border));
399
332
  text-align: center;
400
333
  transition: border-color 150ms ease;
@@ -464,7 +397,7 @@
464
397
  inline-size: var(--upload-tile-size);
465
398
  block-size: var(--upload-tile-size);
466
399
  overflow: hidden;
467
- border-radius: var(--upload-tile-radius);
400
+ border-radius: var(--upload-tile-radius, calc(var(--radius) / var(--radius-ratio)));
468
401
  border: 1px solid hsl(var(--border));
469
402
  background-color: hsl(var(--muted));
470
403
  }
@@ -476,7 +409,7 @@
476
409
  justify-content: center;
477
410
  inline-size: var(--upload-tile-size);
478
411
  block-size: var(--upload-tile-size);
479
- border-radius: var(--upload-tile-radius);
412
+ border-radius: var(--upload-tile-radius, calc(var(--radius) / var(--radius-ratio)));
480
413
  border: 1px dashed hsl(var(--border));
481
414
  color: hsl(var(--muted-foreground));
482
415
  transition:
@@ -486,7 +419,7 @@
486
419
 
487
420
  .ui-upload-tile-add:hover {
488
421
  border-color: hsl(var(--primary));
489
- color: hsl(var(--primary));
422
+ color: hsl(var(--text-brand, var(--primary)));
490
423
  }
491
424
 
492
425
  .ui-upload-tile-add-icon {
@@ -549,7 +482,7 @@
549
482
  .ui-upload-picture-frame {
550
483
  position: relative;
551
484
  overflow: hidden;
552
- border-radius: var(--upload-picture-radius);
485
+ border-radius: var(--upload-picture-radius, calc(var(--radius) / var(--radius-ratio)));
553
486
  border: 1px solid hsl(var(--border));
554
487
  }
555
488
 
@@ -569,7 +502,7 @@
569
502
  inset-inline-start: var(--upload-picture-badge-offset);
570
503
  padding-inline: var(--upload-picture-badge-space-inline);
571
504
  padding-block: var(--upload-picture-badge-space-block);
572
- border-radius: var(--upload-picture-badge-radius);
505
+ border-radius: var(--upload-picture-badge-radius, calc(var(--radius) / var(--radius-ratio)));
573
506
  background-color: hsl(var(--warning));
574
507
  color: hsl(var(--warning-foreground));
575
508
  font-size: var(--upload-picture-badge-font-size);
@@ -582,7 +515,7 @@
582
515
  justify-content: center;
583
516
  inline-size: 100%;
584
517
  block-size: var(--upload-picture-empty-height);
585
- border-radius: var(--upload-picture-radius);
518
+ border-radius: var(--upload-picture-radius, calc(var(--radius) / var(--radius-ratio)));
586
519
  border: 1px dashed hsl(var(--border));
587
520
  color: hsl(var(--muted-foreground));
588
521
  }
@@ -668,9 +601,12 @@
668
601
  gap: var(--upload-draft-space-gap);
669
602
  padding-inline: var(--upload-draft-space-inline);
670
603
  padding-block: var(--upload-draft-space-block);
671
- border-radius: var(--upload-draft-radius);
604
+ border-radius: var(--upload-draft-radius, calc(var(--radius) / var(--radius-ratio)));
672
605
  border: 1px dashed hsl(var(--destructive) / 0.4);
673
- background-color: hsl(var(--destructive) / 0.05);
606
+ background-color: var(
607
+ --surface-destructive,
608
+ hsl(var(--destructive) / var(--surface-destructive-alpha, 0.05))
609
+ );
674
610
  font-size: var(--upload-draft-font-size);
675
611
  }
676
612
 
@@ -696,7 +632,7 @@
696
632
  gap: var(--upload-row-space-gap);
697
633
  padding-inline: var(--upload-row-space-inline);
698
634
  padding-block: var(--upload-row-space-block);
699
- border-radius: var(--upload-row-radius);
635
+ border-radius: var(--upload-row-radius, calc(var(--radius) / var(--radius-ratio)));
700
636
  border: 1px solid hsl(var(--border));
701
637
  font-size: var(--upload-row-font-size);
702
638
  }