@godxjp/ui 28.13.0 → 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/agent/START-HERE.md +29 -10
  2. package/agent/components/Anchor.json +6 -1
  3. package/agent/components/AppShell.json +1 -1
  4. package/agent/components/AreaChart.json +19 -1
  5. package/agent/components/BarChart.json +11 -1
  6. package/agent/components/Cascader.json +1 -1
  7. package/agent/components/CompactBarTrend.json +1 -1
  8. package/agent/components/DataState.json +1 -1
  9. package/agent/components/DataTable.json +4 -4
  10. package/agent/components/FormField.json +1 -1
  11. package/agent/components/InfiniteQueryState.json +1 -1
  12. package/agent/components/Input.json +1 -1
  13. package/agent/components/LineChart.json +20 -2
  14. package/agent/components/ListRow.json +1 -1
  15. package/agent/components/Masonry.json +1 -1
  16. package/agent/components/MasterDetail.json +1 -1
  17. package/agent/components/PasswordStrength.json +1 -1
  18. package/agent/components/PermissionMatrix.json +1 -1
  19. package/agent/components/Select.json +1 -0
  20. package/agent/components/Sidebar.json +1 -1
  21. package/agent/components/Table.json +8 -3
  22. package/agent/components/ThemeScope.json +49 -0
  23. package/agent/components/Topbar.json +1 -0
  24. package/agent/components/TopbarItem.json +2 -1
  25. package/agent/components/Transfer.json +1 -1
  26. package/agent/components/TreeSelect.json +1 -1
  27. package/agent/components/UploadCropDialog.json +1 -1
  28. package/agent/components/formatDate.json +1 -1
  29. package/agent/components-index.json +5 -0
  30. package/agent/components.json +138 -30
  31. package/agent/index.json +19 -9
  32. package/agent/llms.txt +10 -10
  33. package/agent/patterns/tenant-brand-color.json +28 -0
  34. package/agent/patterns-index.json +27 -0
  35. package/agent/patterns.json +28 -0
  36. package/agent/rules.json +15 -0
  37. package/agent/tokens.json +5055 -1060
  38. package/dist/app/index.d.ts +3 -0
  39. package/dist/app/index.js +3 -0
  40. package/dist/app/tenant-theme.d.ts +80 -0
  41. package/dist/app/tenant-theme.js +154 -0
  42. package/dist/app/theme-axes.d.ts +14 -1
  43. package/dist/app/theme-axes.js +24 -31
  44. package/dist/components/charts/chart-cartesian.d.ts +5 -1
  45. package/dist/components/charts/chart-cartesian.js +15 -8
  46. package/dist/components/data-display/badge.d.ts +1 -1
  47. package/dist/components/data-display/badge.js +21 -3
  48. package/dist/components/data-display/carousel.js +4 -4
  49. package/dist/components/data-display/data-table.js +13 -2
  50. package/dist/components/data-display/permission-matrix.js +1 -1
  51. package/dist/components/data-display/table.d.ts +11 -2
  52. package/dist/components/data-display/table.js +19 -3
  53. package/dist/components/data-entry/control-appearance.d.ts +12 -6
  54. package/dist/components/data-entry/control-appearance.js +1 -1
  55. package/dist/components/data-entry/select.js +4 -3
  56. package/dist/components/feedback/dialog.js +6 -3
  57. package/dist/components/feedback/overlay-header-tone.d.ts +7 -0
  58. package/dist/components/feedback/overlay-header-tone.js +4 -4
  59. package/dist/components/feedback/sheet.d.ts +1 -1
  60. package/dist/components/feedback/sheet.js +6 -9
  61. package/dist/components/feedback/sonner.js +16 -3
  62. package/dist/components/general/button.js +22 -5
  63. package/dist/components/layout/affix.js +15 -1
  64. package/dist/components/layout/sidebar.js +7 -1
  65. package/dist/components/navigation/anchor.d.ts +1 -1
  66. package/dist/components/navigation/anchor.js +5 -4
  67. package/dist/components/navigation/app-setting-picker.js +1 -1
  68. package/dist/components/navigation/pagination.js +1 -1
  69. package/dist/components/navigation/tabs.js +15 -2
  70. package/dist/components/query/infinite-query-state.d.ts +22 -6
  71. package/dist/contracts/measurement.json +1 -1
  72. package/dist/lib/control-styles.d.ts +31 -11
  73. package/dist/lib/control-styles.js +6 -6
  74. package/dist/lib/overlay-portal.d.ts +20 -0
  75. package/dist/lib/overlay-portal.js +93 -0
  76. package/dist/props/components/app.prop.d.ts +12 -0
  77. package/dist/props/components/charts.prop.d.ts +30 -0
  78. package/dist/props/components/index.d.ts +1 -1
  79. package/dist/props/components/navigation.prop.d.ts +21 -2
  80. package/dist/props/components/query.prop.d.ts +36 -2
  81. package/dist/props/registry.d.ts +46 -1
  82. package/dist/props/registry.js +38 -3
  83. package/dist/styles/alert-layout.css +39 -19
  84. package/dist/styles/badge-layout.css +11 -7
  85. package/dist/styles/base.css +14 -5
  86. package/dist/styles/card-layout.css +29 -16
  87. package/dist/styles/chart-layout.css +27 -5
  88. package/dist/styles/control.css +225 -103
  89. package/dist/styles/data-display-layout.css +178 -76
  90. package/dist/styles/data-entry-layout.css +35 -99
  91. package/dist/styles/dialog-layout.css +58 -28
  92. package/dist/styles/float-button-layout.css +5 -5
  93. package/dist/styles/focus-ring.css +11 -7
  94. package/dist/styles/layout.css +53 -25
  95. package/dist/styles/logo-layout.css +3 -3
  96. package/dist/styles/motion.css +2 -2
  97. package/dist/styles/navigation-layout.css +117 -44
  98. package/dist/styles/shell-layout.css +90 -124
  99. package/dist/styles/table-layout.css +66 -24
  100. package/dist/styles/text-layout.css +13 -4
  101. package/dist/styles/toggle.css +9 -3
  102. package/dist/tokens/components/actions.css +1 -1
  103. package/dist/tokens/components/attachments.css +4 -4
  104. package/dist/tokens/components/badge.css +4 -4
  105. package/dist/tokens/components/banner.css +1 -1
  106. package/dist/tokens/components/callout.css +1 -1
  107. package/dist/tokens/components/card.css +13 -8
  108. package/dist/tokens/components/chart.css +11 -2
  109. package/dist/tokens/components/chat-bubble.css +2 -2
  110. package/dist/tokens/components/control.css +41 -22
  111. package/dist/tokens/components/conversations.css +2 -1
  112. package/dist/tokens/components/data-display.css +23 -18
  113. package/dist/tokens/components/data-entry.css +1 -1
  114. package/dist/tokens/components/descriptions.css +2 -2
  115. package/dist/tokens/components/draggable-panel.css +2 -2
  116. package/dist/tokens/components/feedback.css +29 -9
  117. package/dist/tokens/components/float-button.css +1 -1
  118. package/dist/tokens/components/legal-document.css +2 -2
  119. package/dist/tokens/components/logo.css +2 -2
  120. package/dist/tokens/components/mega-menu.css +6 -4
  121. package/dist/tokens/components/navigation.css +27 -13
  122. package/dist/tokens/components/segmented.css +11 -6
  123. package/dist/tokens/components/separator.css +1 -1
  124. package/dist/tokens/components/shell.css +24 -10
  125. package/dist/tokens/components/table.css +13 -5
  126. package/dist/tokens/components/thought-chain.css +2 -2
  127. package/dist/tokens/components/toggle.css +3 -1
  128. package/dist/tokens/components/tree.css +3 -1
  129. package/dist/tokens/components/upload.css +8 -8
  130. package/dist/tokens/components/welcome.css +1 -1
  131. package/dist/tokens/foundation.css +30 -3
  132. package/docs/COMPOSITION-VS-COMPONENT.md +31 -0
  133. package/docs/CUSTOMER-THEMING.md +637 -1
  134. package/docs/FRAME-COVERAGE-REPORT.md +3 -2
  135. package/docs/GLASSMORPHISM-STANDARD.md +196 -0
  136. package/docs/THEME-API-COVERAGE.md +538 -0
  137. package/docs/TOKEN-RESOLUTION.md +195 -0
  138. package/docs/TOKENS.md +63 -24
  139. package/docs/asset-modules.d.ts +7 -0
  140. package/docs/data-display/charts.tsx +80 -0
  141. package/docs/data-display/data-table/index.tsx +30 -0
  142. package/docs/data-display/popover.tsx +1 -1
  143. package/docs/data-display/table.tsx +52 -0
  144. package/docs/feedback/sheet.tsx +10 -10
  145. package/docs/foundation/density.tsx +4 -4
  146. package/docs/i18n/messages/en.json +506 -0
  147. package/docs/i18n/messages/ja.json +506 -0
  148. package/docs/i18n/messages/vi.json +506 -0
  149. package/docs/layout/account-chip.tsx +2 -2
  150. package/docs/layout/responsive-grid.tsx +1 -1
  151. package/docs/navigation/toolbar.tsx +20 -12
  152. package/docs/providers/theme-scope.tsx +186 -0
  153. package/docs/showcase/caimono-price-comparison.tsx +911 -0
  154. package/docs/showcase/case4-login.tsx +2 -2
  155. package/docs/showcase/permission-matrix.tsx +13 -5
  156. package/docs/showcase/table-pagination.tsx +2 -1
  157. package/docs/showcase/tenant-brand-color.tsx +338 -0
  158. package/docs/showcase/theme-lab.tsx +2125 -0
  159. package/docs/themes/flat.css +462 -0
  160. package/docs/themes/glassmorphism.css +958 -0
  161. package/docs/themes/index.ts +219 -0
  162. package/docs/themes/neubrutalism.css +475 -0
  163. package/package.json +4 -3
  164. package/scripts/explain-token.mjs +382 -0
@@ -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,8 +327,8 @@
394
327
  .ui-upload-dropzone {
395
328
  cursor: pointer;
396
329
  padding: var(--upload-dropzone-space-inset);
397
- border-radius: var(--upload-dropzone-radius);
398
- border: var(--upload-dropzone-border-width) dashed hsl(var(--border));
330
+ border-radius: var(--upload-dropzone-radius, var(--radius));
331
+ border: var(--upload-dropzone-border-width, var(--stroke-md)) dashed hsl(var(--border));
399
332
  text-align: center;
400
333
  transition: border-color 150ms ease;
401
334
  }
@@ -464,8 +397,8 @@
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);
468
- border: 1px solid hsl(var(--border));
400
+ border-radius: var(--upload-tile-radius, calc(var(--radius) / var(--radius-ratio)));
401
+ border: var(--stroke-hairline) solid hsl(var(--border));
469
402
  background-color: hsl(var(--muted));
470
403
  }
471
404
 
@@ -476,8 +409,8 @@
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);
480
- border: 1px dashed hsl(var(--border));
412
+ border-radius: var(--upload-tile-radius, calc(var(--radius) / var(--radius-ratio)));
413
+ border: var(--stroke-hairline) dashed hsl(var(--border));
481
414
  color: hsl(var(--muted-foreground));
482
415
  transition:
483
416
  border-color 150ms ease,
@@ -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,8 +482,8 @@
549
482
  .ui-upload-picture-frame {
550
483
  position: relative;
551
484
  overflow: hidden;
552
- border-radius: var(--upload-picture-radius);
553
- border: 1px solid hsl(var(--border));
485
+ border-radius: var(--upload-picture-radius, calc(var(--radius) / var(--radius-ratio)));
486
+ border: var(--stroke-hairline) solid hsl(var(--border));
554
487
  }
555
488
 
556
489
  .ui-upload-picture-img {
@@ -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,8 +515,8 @@
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);
586
- border: 1px dashed hsl(var(--border));
518
+ border-radius: var(--upload-picture-radius, calc(var(--radius) / var(--radius-ratio)));
519
+ border: var(--stroke-hairline) dashed hsl(var(--border));
587
520
  color: hsl(var(--muted-foreground));
588
521
  }
589
522
 
@@ -607,7 +540,7 @@
607
540
  block-size: var(--upload-avatar-size);
608
541
  overflow: hidden;
609
542
  border-radius: var(--radius-pill);
610
- border: var(--upload-avatar-border-width) solid hsl(var(--border));
543
+ border: var(--upload-avatar-border-width, var(--stroke-md)) solid hsl(var(--border));
611
544
  background-color: hsl(var(--muted));
612
545
  }
613
546
 
@@ -651,7 +584,7 @@
651
584
  inset-inline-end: calc(var(--upload-remove-offset) * -1);
652
585
  padding: var(--upload-remove-space-inset);
653
586
  border-radius: var(--radius-pill);
654
- border: 1px solid hsl(var(--border));
587
+ border: var(--stroke-hairline) solid hsl(var(--border));
655
588
  background-color: hsl(var(--background));
656
589
  box-shadow: var(--shadow-sm);
657
590
  }
@@ -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);
672
- border: 1px dashed hsl(var(--destructive) / 0.4);
673
- background-color: hsl(var(--destructive) / 0.05);
604
+ border-radius: var(--upload-draft-radius, calc(var(--radius) / var(--radius-ratio)));
605
+ border: var(--stroke-hairline) dashed hsl(var(--destructive) / 0.4);
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,8 +632,8 @@
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);
700
- border: 1px solid hsl(var(--border));
635
+ border-radius: var(--upload-row-radius, calc(var(--radius) / var(--radius-ratio)));
636
+ border: var(--stroke-hairline) solid hsl(var(--border));
701
637
  font-size: var(--upload-row-font-size);
702
638
  }
703
639
 
@@ -756,7 +692,7 @@
756
692
  flex-direction: column;
757
693
  gap: var(--branch-scope-picker-subset-gap);
758
694
  padding-inline-start: var(--branch-scope-picker-subset-padding-inline);
759
- border-inline-start-width: var(--branch-scope-picker-subset-border-width);
695
+ border-inline-start-width: var(--branch-scope-picker-subset-border-width, var(--stroke-md));
760
696
  }
761
697
 
762
698
  .ui-branch-scope-picker-list {
@@ -771,7 +707,7 @@
771
707
  inline-size: 100%;
772
708
  padding-block: var(--chat-composer-padding-block);
773
709
  padding-inline: var(--chat-composer-padding-inline);
774
- border-width: var(--control-border-width);
710
+ border-width: var(--control-border-width, var(--stroke-hairline));
775
711
  border-style: solid;
776
712
  border-radius: var(--chat-composer-radius, var(--control-radius));
777
713
  }
@@ -785,7 +721,7 @@
785
721
  padding-block-end: var(--chat-composer-gap);
786
722
  border-block-end: var(
787
723
  --chat-composer-header-border,
788
- var(--control-border-width) solid hsl(var(--border))
724
+ var(--control-border-width, var(--stroke-hairline)) solid hsl(var(--border))
789
725
  );
790
726
  }
791
727
 
@@ -8,11 +8,11 @@
8
8
  }
9
9
 
10
10
  [data-slot="sheet-content"]:has([data-slot="sheet-body"]) [data-slot="sheet-header"] {
11
- border-bottom: 1px solid hsl(var(--border));
11
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
12
12
  }
13
13
 
14
14
  [data-slot="sheet-content"]:has([data-slot="sheet-body"]) [data-slot="sheet-footer"] {
15
- border-top: 1px solid hsl(var(--border));
15
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
16
16
  }
17
17
 
18
18
  .ui-dialog-overlay {
@@ -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 {
@@ -45,8 +51,11 @@
45
51
  max-width: none;
46
52
  transform: translate(-50%, -50%);
47
53
  gap: var(--dialog-space-gap);
48
- border: 1px solid hsl(var(--border));
49
- background-color: hsl(var(--background));
54
+ border: var(--stroke-hairline) solid hsl(var(--border));
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
 
@@ -128,25 +137,28 @@
128
137
  margin-inline: calc(-1 * var(--dialog-space-x));
129
138
  margin-block-start: calc(-1 * var(--dialog-space-y));
130
139
  padding: var(--dialog-space-y) var(--dialog-space-x);
131
- border-bottom: 1px solid hsl(var(--border));
140
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
132
141
  }
133
142
 
134
143
  [data-slot="dialog-content"]:has([data-slot="dialog-body"]) [data-slot="dialog-footer"] {
135
144
  margin-inline: calc(-1 * var(--dialog-space-x));
136
145
  margin-block-end: calc(-1 * var(--dialog-space-y));
137
146
  padding: var(--dialog-space-y) var(--dialog-space-x);
138
- border-top: 1px solid hsl(var(--border));
147
+ border-top: var(--stroke-hairline) 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
 
@@ -209,8 +221,8 @@
209
221
  }
210
222
 
211
223
  .ui-two-factor-setup-notice {
212
- border: 1px dashed hsl(var(--border));
213
- border-radius: var(--radius-md);
224
+ border: var(--stroke-hairline) dashed hsl(var(--border));
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
 
@@ -219,8 +231,8 @@
219
231
  grid-template-columns: repeat(2, minmax(0, 1fr));
220
232
  gap: var(--space-2);
221
233
  padding: var(--space-3);
222
- border: 1px solid hsl(var(--border));
223
- border-radius: var(--radius-md);
234
+ border: var(--stroke-hairline) solid hsl(var(--border));
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: var(--stroke-hairline) 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: var(--stroke-hairline) 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,17 +421,19 @@
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"] {
400
430
  inset-block-start: 0;
401
- border-block-end: 1px solid hsl(var(--border));
431
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
402
432
  }
403
433
 
404
434
  .ui-sheet-panel[data-side="bottom"] {
405
435
  inset-block-end: 0;
406
- border-block-start: 1px solid hsl(var(--border));
436
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
407
437
  }
408
438
 
409
439
  .ui-sheet-body-space {
@@ -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:
@@ -163,7 +165,8 @@
163
165
  }
164
166
 
165
167
  .ui-toggle {
166
- --focus-ring-weight: var(--toggle-focus-ring-width);
168
+ --focus-ring-weight: var(--toggle-focus-ring-width, var(--stroke-lg));
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
 
@@ -197,7 +200,8 @@
197
200
  .ui-app-setting-picker-icon,
198
201
  .ui-app-setting-picker-inline
199
202
  ) {
200
- --focus-ring-weight: var(--control-focus-ring-width);
203
+ --focus-ring-weight: var(--control-focus-ring-width, var(--stroke-hairline));
204
+ --focus-ring-width-component: calc(var(--focus-ring-weight) * var(--focus-outline));
201
205
  }
202
206
 
203
207
  .ui-command-input:focus-visible {