@threadlabs/looma 0.33.0 → 0.34.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 (207) hide show
  1. package/README.md +15 -0
  2. package/bin/looma-docs.mjs +3 -0
  3. package/components/shared/overlay.js +8 -2
  4. package/components/shared/surface-material.js +21 -0
  5. package/components/ui-button/ui-button.html +63 -47
  6. package/components/ui-card/ui-card.html +44 -2
  7. package/components/ui-curve-editor/curve.js +10 -0
  8. package/components/ui-curve-editor/ui-curve-editor.html +181 -0
  9. package/components/ui-curve-editor/ui-curve-editor.js +51 -0
  10. package/components/ui-dialog/ui-dialog.html +62 -1
  11. package/components/ui-dialog/ui-dialog.js +9 -1
  12. package/components/ui-icon-button/ui-icon-button.html +75 -23
  13. package/components/ui-menu/ui-menu.html +60 -0
  14. package/components/ui-menu/ui-menu.js +1 -1
  15. package/components/ui-number-input/arithmetic.js +47 -0
  16. package/components/ui-number-input/ui-number-input.html +62 -0
  17. package/components/ui-number-input/ui-number-input.js +44 -0
  18. package/components/ui-popover/ui-popover.html +64 -1
  19. package/components/ui-popover/ui-popover.js +1 -1
  20. package/components/ui-slider/ui-slider.html +84 -0
  21. package/components/ui-slider/ui-slider.js +29 -0
  22. package/components/ui-tabs/ui-tabs.html +6 -1
  23. package/components/ui-text/ui-text.html +31 -6
  24. package/components/ui-tooltip/ui-tooltip.html +60 -0
  25. package/components/ui-tooltip/ui-tooltip.js +1 -1
  26. package/dist/index.js +46 -43
  27. package/docs/README.md +146 -0
  28. package/docs/card.html +77 -0
  29. package/docs/card.js +47 -0
  30. package/docs/catalog-view.js +18 -0
  31. package/docs/catalog-view.mjs +11 -0
  32. package/docs/catalog.json +23984 -0
  33. package/docs/catalog.mjs +131 -0
  34. package/docs/cli.mjs +26 -0
  35. package/docs/commands.mjs +94 -0
  36. package/docs/customizer-render.mjs +66 -0
  37. package/docs/customizer.js +181 -0
  38. package/docs/documentation.css +16 -0
  39. package/docs/examples/ui-action-bar/examples/01-form-footer.behavior.js +7 -0
  40. package/docs/examples/ui-button/examples/08-loading.behavior.js +21 -0
  41. package/docs/examples/ui-checkbox/examples/02-checked-indeterminate-and-disabled.behavior.js +30 -0
  42. package/docs/examples/ui-combobox/examples/06-selected-values.behavior.js +11 -0
  43. package/docs/examples/ui-search-shell/examples/02-label-dismissible-status-and-footer.behavior.js +34 -0
  44. package/docs/examples/ui-toast/examples/01-authored.behavior.js +15 -0
  45. package/docs/examples/ui-toast/examples/02-danger.behavior.js +2 -0
  46. package/docs/examples/ui-tree/examples/03-max-depth-2-and-hover-expand-delay-300.behavior.js +30 -0
  47. package/docs/examples/ui-tree/examples/06-move-without-dragging.behavior.js +2 -0
  48. package/docs/examples/ui-tree/examples/07-multiple-selection.behavior.js +16 -0
  49. package/docs/examples/ui-tree-item/examples/02-container.behavior.js +1 -0
  50. package/docs/index.d.ts +56 -0
  51. package/docs/index.mjs +4 -0
  52. package/docs/local-server.mjs +68 -0
  53. package/docs/preview.js +22 -0
  54. package/docs/reference.html +1 -0
  55. package/docs/reference.js +36 -0
  56. package/docs/render.mjs +93 -0
  57. package/docs/site.mjs +239 -0
  58. package/docs/store.mjs +92 -0
  59. package/docs/theme-session.mjs +51 -0
  60. package/docs/theme.mjs +219 -0
  61. package/docs/value-editors.mjs +33 -0
  62. package/docs/workspace.mjs +32 -0
  63. package/package.json +28 -4
  64. package/styles/ui-button.css +45 -45
  65. package/styles/ui-card.css +47 -0
  66. package/styles/ui-curve-editor.css +109 -0
  67. package/styles/ui-dialog.css +132 -0
  68. package/styles/ui-icon-button.css +63 -20
  69. package/styles/ui-menu.css +72 -0
  70. package/styles/ui-number-input.css +34 -0
  71. package/styles/ui-popover.css +74 -0
  72. package/styles/ui-slider.css +53 -0
  73. package/styles/ui-tabs.css +6 -1
  74. package/styles/ui-text.css +23 -1
  75. package/styles/ui-tooltip.css +72 -0
  76. package/theme-system.css +26 -10
  77. package/tokens.css +8 -2
  78. package/vanilla/UiButton.d.ts +1 -0
  79. package/vanilla/UiButton.js +195 -130
  80. package/vanilla/UiCard.d.ts +1 -1
  81. package/vanilla/UiCard.js +1 -1
  82. package/vanilla/UiCurveEditor.d.ts +28 -0
  83. package/vanilla/UiCurveEditor.js +134 -0
  84. package/vanilla/UiIconButton.d.ts +2 -1
  85. package/vanilla/UiIconButton.js +58 -31
  86. package/vanilla/UiNumberInput.d.ts +33 -0
  87. package/vanilla/UiNumberInput.js +79 -0
  88. package/vanilla/UiSlider.d.ts +33 -0
  89. package/vanilla/UiSlider.js +125 -0
  90. package/vanilla/UiText.d.ts +2 -2
  91. package/vanilla/UiText.js +45 -11
  92. package/vanilla/index.js +3 -0
  93. package/vue/UiButton.d.ts +6 -0
  94. package/vue/UiButton.vue +155 -56
  95. package/vue/UiCard.d.ts +2 -2
  96. package/vue/UiCard.vue +55 -5
  97. package/vue/UiCurveEditor.d.ts +53 -0
  98. package/vue/UiCurveEditor.js +2 -0
  99. package/vue/UiCurveEditor.vue +427 -0
  100. package/vue/UiDialog.vue +177 -1
  101. package/vue/UiIconButton.d.ts +8 -2
  102. package/vue/UiIconButton.vue +164 -34
  103. package/vue/UiMenu.vue +89 -0
  104. package/vue/UiNumberInput.d.ts +83 -0
  105. package/vue/UiNumberInput.js +2 -0
  106. package/vue/UiNumberInput.vue +370 -0
  107. package/vue/UiPopover.vue +92 -1
  108. package/vue/UiSlider.d.ts +83 -0
  109. package/vue/UiSlider.js +2 -0
  110. package/vue/UiSlider.vue +412 -0
  111. package/vue/UiTabs.vue +6 -1
  112. package/vue/UiText.d.ts +7 -5
  113. package/vue/UiText.vue +104 -22
  114. package/vue/UiTooltip.vue +89 -0
  115. package/vue/chunks/UiActionBar.js +1 -1
  116. package/vue/chunks/UiAffordanceScope.js +2 -2
  117. package/vue/chunks/UiAvatar.js +2 -2
  118. package/vue/chunks/UiAvatarGroup.js +2 -2
  119. package/vue/chunks/UiBadge.js +2 -2
  120. package/vue/chunks/UiBreadcrumbItem.js +2 -2
  121. package/vue/chunks/UiBreadcrumbs.js +2 -2
  122. package/vue/chunks/UiButton.js +94 -11
  123. package/vue/chunks/UiCallout.js +2 -2
  124. package/vue/chunks/UiCard.js +6 -5
  125. package/vue/chunks/UiCheckbox.js +2 -2
  126. package/vue/chunks/UiCluster.js +2 -2
  127. package/vue/chunks/UiColorPicker.js +2 -2
  128. package/vue/chunks/UiCombobox.js +2 -2
  129. package/vue/chunks/UiContainer.js +2 -2
  130. package/vue/chunks/UiContextMenu.js +2 -2
  131. package/vue/chunks/UiCover.js +2 -2
  132. package/vue/chunks/UiCurveEditor.js +413 -0
  133. package/vue/chunks/UiDescriptionItem.js +2 -2
  134. package/vue/chunks/UiDescriptionList.js +2 -2
  135. package/vue/chunks/UiDialog.js +4 -4
  136. package/vue/chunks/UiDisclosure.js +2 -2
  137. package/vue/chunks/UiEditable.js +2 -2
  138. package/vue/chunks/UiEditorBlockActions.js +2 -2
  139. package/vue/chunks/UiEditorChipEditor.js +2 -2
  140. package/vue/chunks/UiEditorCodeLanguage.js +2 -2
  141. package/vue/chunks/UiEditorFootnoteEditor.js +2 -2
  142. package/vue/chunks/UiEditorImageToolbar.js +3 -3
  143. package/vue/chunks/UiEditorInsertTableGrid.js +2 -2
  144. package/vue/chunks/UiEditorLinkCard.js +3 -3
  145. package/vue/chunks/UiEditorLinkForm.js +3 -3
  146. package/vue/chunks/UiEditorMentionMenu.js +2 -2
  147. package/vue/chunks/UiEditorMentionMenuItem.js +2 -2
  148. package/vue/chunks/UiEditorSlashMenu.js +2 -2
  149. package/vue/chunks/UiEditorSlashMenuGroup.js +2 -2
  150. package/vue/chunks/UiEditorSlashMenuItem.js +2 -2
  151. package/vue/chunks/UiEditorSurface.js +2 -2
  152. package/vue/chunks/UiEditorTableContextMenu.js +2 -2
  153. package/vue/chunks/UiEditorTableOverlay.js +2 -2
  154. package/vue/chunks/UiEditorTableToolbar.js +2 -2
  155. package/vue/chunks/UiEditorToolbar.js +2 -2
  156. package/vue/chunks/UiFloatingActionButton.js +2 -2
  157. package/vue/chunks/UiFormField.js +2 -2
  158. package/vue/chunks/UiGrid.js +2 -2
  159. package/vue/chunks/UiIcon.js +2 -2
  160. package/vue/chunks/UiIconButton.js +77 -11
  161. package/vue/chunks/UiImage.js +2 -2
  162. package/vue/chunks/UiInput.js +2 -2
  163. package/vue/chunks/UiInputGroup.js +2 -2
  164. package/vue/chunks/UiList.js +2 -2
  165. package/vue/chunks/UiListItem.js +2 -2
  166. package/vue/chunks/UiListbox.js +2 -2
  167. package/vue/chunks/UiMenu.js +3 -3
  168. package/vue/chunks/UiMenuGroup.js +2 -2
  169. package/vue/chunks/UiMenuItem.js +2 -2
  170. package/vue/chunks/UiMeter.js +2 -2
  171. package/vue/chunks/UiNavItem.js +2 -2
  172. package/vue/chunks/UiNumberInput.js +390 -0
  173. package/vue/chunks/UiPageHeader.js +2 -2
  174. package/vue/chunks/UiPopover.js +4 -4
  175. package/vue/chunks/UiRadio.js +2 -2
  176. package/vue/chunks/UiRadioGroup.js +2 -2
  177. package/vue/chunks/UiReel.js +2 -2
  178. package/vue/chunks/UiScrollArea.js +2 -2
  179. package/vue/chunks/UiSearchResultRow.js +2 -2
  180. package/vue/chunks/UiSearchShell.js +2 -2
  181. package/vue/chunks/UiSection.js +2 -2
  182. package/vue/chunks/UiSelect.js +2 -2
  183. package/vue/chunks/UiSeparator.js +2 -2
  184. package/vue/chunks/UiSidebar.js +2 -2
  185. package/vue/chunks/UiSlider.js +396 -0
  186. package/vue/chunks/UiSpinner.js +2 -2
  187. package/vue/chunks/UiStack.js +2 -2
  188. package/vue/chunks/UiStatusMessage.js +2 -2
  189. package/vue/chunks/UiSwatch.js +2 -2
  190. package/vue/chunks/UiSwitch.js +2 -2
  191. package/vue/chunks/UiSwitcher.js +2 -2
  192. package/vue/chunks/UiTable.js +2 -2
  193. package/vue/chunks/UiTabs.js +3 -3
  194. package/vue/chunks/UiText.js +53 -12
  195. package/vue/chunks/UiTextarea.js +2 -2
  196. package/vue/chunks/UiToast.js +2 -2
  197. package/vue/chunks/UiToastRegion.js +2 -2
  198. package/vue/chunks/UiTooltip.js +3 -3
  199. package/vue/chunks/UiTopBar.js +1 -1
  200. package/vue/chunks/UiTree.js +2 -2
  201. package/vue/chunks/UiTreeItem.js +2 -2
  202. package/vue/chunks/_plugin-vue_export-helper.js +68 -2
  203. package/vue/chunks/props.js +24 -1
  204. package/vue/components.css +2215 -1203
  205. package/vue/editor/index.js +623 -211
  206. package/vue/index.d.ts +3 -0
  207. package/vue/index.js +5 -2
@@ -38,6 +38,7 @@
38
38
  }
39
39
 
40
40
  :scope:where([data-component~="ui-dialog"]) {
41
+ --_ui-material-scale: 1;
41
42
  /* Hooks do not inherit, so the parts below read them from the root. */
42
43
  --_ui-dialog-duration: var(--ui-dialog-duration);
43
44
 
@@ -70,6 +71,65 @@
70
71
  overlay var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete;
71
72
  }
72
73
 
74
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
75
+ transparency, saturation and edge light belong to the surrounding decorative material. */
76
+ :scope:where([data-component~="ui-dialog"]) {
77
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
78
+ --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
79
+ --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
80
+ --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 1) * 8px);
81
+ --_ui-material-content-color: var(--ui-dialog-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
82
+ --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
83
+ background:
84
+ linear-gradient(var(--_ui-material-content-color), var(--_ui-material-content-color)) padding-box,
85
+ linear-gradient(var(--_ui-material-rim-color), var(--_ui-material-rim-color)) border-box,
86
+ var(--_ui-material-content-color) padding-box;
87
+ border-width: calc(var(--ui-border-width) + var(--_ui-material-rim));
88
+ border-color: var(
89
+ --ui-dialog-border,
90
+ color-mix(in oklab, var(--ui-overlay-border, var(--ui-border-strong)) calc((1 - var(--_ui-material-active)) * 100%), transparent)
91
+ );
92
+ box-shadow: var(
93
+ --ui-dialog-shadow,
94
+ var(
95
+ --ui-overlay-shadow,
96
+ 0 calc(var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 8px) calc(
97
+ var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 24px
98
+ ) color-mix(in oklab, var(--ui-text-primary) 15%, transparent),
99
+ inset 0 0 0 calc(var(--_ui-material-active) * var(--ui-border-width)) var(--ui-material-edge, var(--ui-border-strong)),
100
+ var(--ui-elevation-dialog, var(--ui-shadow-xl))
101
+ )
102
+ );
103
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px))
104
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
105
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px))
106
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
107
+ }
108
+
109
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
110
+ :scope:where([data-component~="ui-dialog"]) {
111
+ background: var(--_ui-material-content-color);
112
+ }
113
+ }
114
+
115
+ @media (prefers-reduced-transparency: reduce) {
116
+ :scope:where([data-component~="ui-dialog"]) {
117
+ background: var(--_ui-material-content-color);
118
+ backdrop-filter: none;
119
+ -webkit-backdrop-filter: none;
120
+ }
121
+ }
122
+
123
+ @media (forced-colors: active) {
124
+ :scope:where([data-component~="ui-dialog"]) {
125
+ background: Canvas;
126
+ border-color: CanvasText;
127
+ box-shadow: none;
128
+ backdrop-filter: none;
129
+ -webkit-backdrop-filter: none;
130
+ }
131
+ }
132
+
73
133
  :scope:where([data-component~="ui-dialog"])[open] {
74
134
  display: flex !important;
75
135
  visibility: visible;
@@ -241,6 +301,18 @@
241
301
  @scope ([data-component~="ui-dialog"]) to ([data-component]) {
242
302
  /* This component's hooks style the element they are set on, and never a nested one. */
243
303
 
304
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
305
+ transparency, saturation and edge light belong to the surrounding decorative material. */
306
+
307
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
308
+ }
309
+
310
+ @media (prefers-reduced-transparency: reduce) {
311
+ }
312
+
313
+ @media (forced-colors: active) {
314
+ }
315
+
244
316
  /* Own the layout wrapper; nested component roots are outside these scoped rules. */
245
317
 
246
318
  /* Alerts have no close target to add height above the title. */
@@ -285,6 +357,7 @@
285
357
  }
286
358
 
287
359
  :where([data-component~="ui-dialog"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
360
+ --_ui-material-scale: 1;
288
361
  /* Hooks do not inherit, so the parts below read them from the root. */
289
362
  --_ui-dialog-duration: var(--ui-dialog-duration);
290
363
 
@@ -317,6 +390,65 @@
317
390
  overlay var(--ui-dialog-duration, var(--ui-motion-base)) var(--ui-motion-ease) allow-discrete;
318
391
  }
319
392
 
393
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
394
+ transparency, saturation and edge light belong to the surrounding decorative material. */
395
+ :where([data-component~="ui-dialog"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
396
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
397
+ --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
398
+ --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
399
+ --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 1) * 8px);
400
+ --_ui-material-content-color: var(--ui-dialog-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
401
+ --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
402
+ background:
403
+ linear-gradient(var(--_ui-material-content-color), var(--_ui-material-content-color)) padding-box,
404
+ linear-gradient(var(--_ui-material-rim-color), var(--_ui-material-rim-color)) border-box,
405
+ var(--_ui-material-content-color) padding-box;
406
+ border-width: calc(var(--ui-border-width) + var(--_ui-material-rim));
407
+ border-color: var(
408
+ --ui-dialog-border,
409
+ color-mix(in oklab, var(--ui-overlay-border, var(--ui-border-strong)) calc((1 - var(--_ui-material-active)) * 100%), transparent)
410
+ );
411
+ box-shadow: var(
412
+ --ui-dialog-shadow,
413
+ var(
414
+ --ui-overlay-shadow,
415
+ 0 calc(var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 8px) calc(
416
+ var(--_ui-material-separation) * var(--_ui-material-scale, 1) * 24px
417
+ ) color-mix(in oklab, var(--ui-text-primary) 15%, transparent),
418
+ inset 0 0 0 calc(var(--_ui-material-active) * var(--ui-border-width)) var(--ui-material-edge, var(--ui-border-strong)),
419
+ var(--ui-elevation-dialog, var(--ui-shadow-xl))
420
+ )
421
+ );
422
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px))
423
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
424
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 18px))
425
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 1) * 0.18));
426
+ }
427
+
428
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
429
+ :where([data-component~="ui-dialog"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
430
+ background: var(--_ui-material-content-color);
431
+ }
432
+ }
433
+
434
+ @media (prefers-reduced-transparency: reduce) {
435
+ :where([data-component~="ui-dialog"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
436
+ background: var(--_ui-material-content-color);
437
+ backdrop-filter: none;
438
+ -webkit-backdrop-filter: none;
439
+ }
440
+ }
441
+
442
+ @media (forced-colors: active) {
443
+ :where([data-component~="ui-dialog"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
444
+ background: Canvas;
445
+ border-color: CanvasText;
446
+ box-shadow: none;
447
+ backdrop-filter: none;
448
+ -webkit-backdrop-filter: none;
449
+ }
450
+ }
451
+
320
452
  :where([data-component~="ui-dialog"])[open]:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-dialog"]))) {
321
453
  display: flex !important;
322
454
  visibility: visible;
@@ -108,7 +108,7 @@
108
108
  --_ui-action-start: -1px;
109
109
  }
110
110
 
111
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=accent"] {
111
+ :scope:where([data-component~="ui-icon-button"])[data-tone="accent"] {
112
112
  --_icon-button-border: var(--ui-accent-solid);
113
113
  --_icon-button-hover-border: var(--ui-accent-hover);
114
114
  --_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
@@ -116,8 +116,52 @@
116
116
  color: var(--_icon-button-text);
117
117
  }
118
118
 
119
+ :scope:where([data-component~="ui-icon-button"])[data-tone="danger"] {
120
+ --_icon-button-border: var(--ui-danger);
121
+ --_icon-button-hover-border: var(--ui-danger-hover);
122
+ --_icon-button-text: var(--ui-danger-subtle-text);
123
+ --_icon-button-outline-surface: color-mix(in srgb, var(--ui-danger) 5%, var(--ui-surface-default));
124
+ --_icon-button-solid-surface: var(--ui-danger);
125
+ --_icon-button-solid-hover-surface: var(--ui-danger-hover);
126
+ --_icon-button-solid-text: var(--ui-danger-on-strong);
127
+ color: var(--_icon-button-text);
128
+ }
129
+
130
+ :scope:where([data-component~="ui-icon-button"])[data-tone="success"] {
131
+ --_icon-button-border: var(--ui-success);
132
+ --_icon-button-hover-border: var(--ui-success-hover);
133
+ --_icon-button-text: var(--ui-success-subtle-text);
134
+ --_icon-button-outline-surface: color-mix(in srgb, var(--ui-success) 5%, var(--ui-surface-default));
135
+ --_icon-button-solid-surface: var(--ui-success);
136
+ --_icon-button-solid-hover-surface: var(--ui-success-hover);
137
+ --_icon-button-solid-text: var(--ui-success-on-strong);
138
+ color: var(--_icon-button-text);
139
+ }
140
+
141
+ :scope:where([data-component~="ui-icon-button"])[data-tone="warning"] {
142
+ --_icon-button-border: var(--ui-warning);
143
+ --_icon-button-hover-border: var(--ui-warning-hover);
144
+ --_icon-button-text: var(--ui-warning-subtle-text);
145
+ --_icon-button-outline-surface: color-mix(in srgb, var(--ui-warning) 5%, var(--ui-surface-default));
146
+ --_icon-button-solid-surface: var(--ui-warning);
147
+ --_icon-button-solid-hover-surface: var(--ui-warning-hover);
148
+ --_icon-button-solid-text: var(--ui-warning-on-strong);
149
+ color: var(--_icon-button-text);
150
+ }
151
+
152
+ :scope:where([data-component~="ui-icon-button"])[data-tone="info"] {
153
+ --_icon-button-border: var(--ui-info);
154
+ --_icon-button-hover-border: var(--ui-info-hover);
155
+ --_icon-button-text: var(--ui-info-subtle-text);
156
+ --_icon-button-outline-surface: color-mix(in srgb, var(--ui-info) 5%, var(--ui-surface-default));
157
+ --_icon-button-solid-surface: var(--ui-info);
158
+ --_icon-button-solid-hover-surface: var(--ui-info-hover);
159
+ --_icon-button-solid-text: var(--ui-info-on-strong);
160
+ color: var(--_icon-button-text);
161
+ }
162
+
119
163
  /* Omitted tone retains the existing accent solid; explicit neutral is additive. */
120
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=neutral"] {
164
+ :scope:where([data-component~="ui-icon-button"])[data-tone="neutral"] {
121
165
  --_icon-button-solid-surface: var(--ui-text-primary);
122
166
  --_icon-button-solid-hover-surface: var(--ui-text-primary);
123
167
  --_icon-button-solid-text: var(--ui-surface-default);
@@ -162,13 +206,13 @@
162
206
  }
163
207
 
164
208
  @media (hover: hover) and (pointer: fine) {
165
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
209
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
166
210
  border-color: transparent;
167
211
  background-color: transparent;
168
212
  box-shadow: none;
169
213
  }
170
214
 
171
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)
215
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)
172
216
  .content {
173
217
  opacity: 0;
174
218
  transform: scale(0.65);
@@ -176,7 +220,7 @@
176
220
  }
177
221
  }
178
222
 
179
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
223
+ :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="revealed"], :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
180
224
  opacity: 0;
181
225
  }
182
226
 
@@ -285,7 +329,7 @@
285
329
  border-radius: var(--ui-radius-round);
286
330
  }
287
331
 
288
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"] {
332
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"] {
289
333
  border-color: var(--ui-icon-button-border, var(--_icon-button-border, var(--ui-control-border, var(--ui-border-strong))));
290
334
  background-color: var(--ui-icon-button-outline-surface, var(--_icon-button-outline-surface, var(--ui-surface-default)));
291
335
  background-image: none;
@@ -293,7 +337,7 @@
293
337
  box-shadow: var(--ui-action-shadow, var(--_ui-action-shadow));
294
338
  }
295
339
 
296
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"] {
340
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"] {
297
341
  background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
298
342
  background-image: none;
299
343
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
@@ -306,27 +350,26 @@
306
350
  color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
307
351
  }
308
352
 
309
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:hover:enabled:not([aria-disabled="true"]) {
353
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"]:hover:enabled:not([aria-disabled="true"]) {
310
354
  border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
311
355
  }
312
356
 
313
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:hover:enabled:not([aria-disabled="true"]) {
357
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
314
358
  background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
315
359
  }
316
360
 
317
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=accent"]:hover:enabled:not([aria-disabled="true"]),
318
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=neutral"]:hover:enabled:not([aria-disabled="true"]) {
361
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]) {
319
362
  color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
320
363
  }
321
364
 
322
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
365
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="ghost"][aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
323
366
  background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 16%, transparent));
324
367
  color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
325
368
  box-shadow: var(--ui-pressed);
326
369
  }
327
370
 
328
371
  /* Native toggle state persists after pointer release, including during loading. */
329
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
372
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"][aria-pressed="true"]:enabled {
330
373
  background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 12%, var(--ui-surface-default)));
331
374
  background-image: none;
332
375
  box-shadow: var(--ui-pressed);
@@ -361,35 +404,35 @@
361
404
  box-shadow: var(--ui-focus-halo);
362
405
  }
363
406
 
364
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:focus-visible {
407
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"]:focus-visible {
365
408
  box-shadow:
366
409
  var(--ui-action-shadow, var(--_ui-action-shadow)),
367
410
  var(--ui-focus-halo);
368
411
  }
369
412
 
370
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:focus-visible {
413
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]:focus-visible {
371
414
  box-shadow:
372
415
  var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
373
416
  var(--ui-focus-halo);
374
417
  }
375
418
 
376
- :scope:where([data-component~="ui-icon-button"]):is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"]) {
419
+ :scope:where([data-component~="ui-icon-button"]):is(:scope:where([data-component~="ui-icon-button"])[data-appearance="outline"], :scope:where([data-component~="ui-icon-button"])[data-appearance="solid"]):active:enabled:not([aria-disabled="true"]) {
377
420
  background-image: none;
378
421
  box-shadow: var(--ui-pressed);
379
422
  }
380
423
 
381
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
424
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"][aria-pressed="true"]:enabled:focus-visible {
382
425
  box-shadow:
383
426
  var(--ui-pressed),
384
427
  var(--ui-focus-halo);
385
428
  }
386
429
 
387
430
  @media (forced-colors: active) {
388
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
431
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"][aria-pressed="true"]:enabled {
389
432
  outline: var(--ui-focus-width) solid Highlight;
390
433
  outline-offset: calc(-2 * var(--ui-focus-width));
391
434
  }
392
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
435
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="outline"][aria-pressed="true"]:enabled:focus-visible {
393
436
  outline-offset: var(--ui-focus-width);
394
437
  }
395
438
  }
@@ -406,7 +449,7 @@
406
449
  background-image: none;
407
450
  }
408
451
 
409
- :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"]:disabled {
452
+ :scope:where([data-component~="ui-icon-button"])[data-appearance="ghost"]:disabled {
410
453
  border-color: transparent;
411
454
  }
412
455
 
@@ -58,6 +58,7 @@
58
58
  }
59
59
 
60
60
  :scope:where([data-component~="ui-menu"]) {
61
+ --_ui-material-scale: 0.28;
61
62
  --_ui-menu-surface: var(--ui-menu-surface);
62
63
  --_ui-menu-border: var(--ui-menu-border);
63
64
  --_ui-menu-radius: var(--ui-menu-radius);
@@ -99,6 +100,65 @@
99
100
  overflow: auto;
100
101
  }
101
102
 
103
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
104
+ transparency, saturation and edge light belong to the surrounding decorative material. */
105
+ :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
106
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
107
+ --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
108
+ --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
109
+ --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 0.28) * 8px);
110
+ --_ui-material-content-color: var(--_ui-menu-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
111
+ --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
112
+ background:
113
+ linear-gradient(var(--_ui-material-content-color), var(--_ui-material-content-color)) padding-box,
114
+ linear-gradient(var(--_ui-material-rim-color), var(--_ui-material-rim-color)) border-box,
115
+ var(--_ui-material-content-color) padding-box;
116
+ border-width: calc(var(--ui-border-width) + var(--_ui-material-rim));
117
+ border-color: var(
118
+ --_ui-menu-border,
119
+ color-mix(in oklab, var(--ui-overlay-border, var(--ui-border-strong)) calc((1 - var(--_ui-material-active)) * 100%), transparent)
120
+ );
121
+ box-shadow: var(
122
+ --_ui-menu-shadow,
123
+ var(
124
+ --ui-overlay-shadow,
125
+ 0 calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 8px) calc(
126
+ var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 24px
127
+ ) color-mix(in oklab, var(--ui-text-primary) 15%, transparent),
128
+ inset 0 0 0 calc(var(--_ui-material-active) * var(--ui-border-width)) var(--ui-material-edge, var(--ui-border-strong)),
129
+ var(--ui-elevation-overlay, var(--ui-shadow-lg))
130
+ )
131
+ );
132
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
133
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
134
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px))
135
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
136
+ }
137
+
138
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
139
+ :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
140
+ background: var(--_ui-material-content-color);
141
+ }
142
+ }
143
+
144
+ @media (prefers-reduced-transparency: reduce) {
145
+ :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
146
+ background: var(--_ui-material-content-color);
147
+ backdrop-filter: none;
148
+ -webkit-backdrop-filter: none;
149
+ }
150
+ }
151
+
152
+ @media (forced-colors: active) {
153
+ :scope:where([data-component~="ui-menu"]):not([inline]) .surface {
154
+ background: Canvas;
155
+ border-color: CanvasText;
156
+ box-shadow: none;
157
+ backdrop-filter: none;
158
+ -webkit-backdrop-filter: none;
159
+ }
160
+ }
161
+
102
162
  .surface hr {
103
163
  align-self: stretch;
104
164
  block-size: 0;
@@ -156,6 +216,18 @@
156
216
 
157
217
  /* Small follows its trigger down: an item's own hooks still win. */
158
218
 
219
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
220
+ transparency, saturation and edge light belong to the surrounding decorative material. */
221
+
222
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
223
+ }
224
+
225
+ @media (prefers-reduced-transparency: reduce) {
226
+ }
227
+
228
+ @media (forced-colors: active) {
229
+ }
230
+
159
231
  @starting-style {
160
232
  }
161
233
 
@@ -0,0 +1,34 @@
1
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
2
+ @supports (-moz-appearance: none) {
3
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
4
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
5
+ }
6
+ @supports (-moz-appearance: none) {
7
+ [data-component~="ui-number-input"] { --html-next-scope-owner: "ui-number-input" !important; }
8
+ }
9
+ @scope ([data-component~="ui-number-input"]) to ([data-component], [data-slotted]) {
10
+ :scope:where([data-component~="ui-number-input"]) {
11
+ display: flex !important;
12
+ align-items: center !important;
13
+ gap: var(--ui-space-1) !important;
14
+ margin: 0 !important;
15
+ padding: 0 !important;
16
+ min-inline-size: 0;
17
+ }
18
+ :scope:where([data-component~="ui-number-input"])[hidden] {
19
+ display: none !important;
20
+ }
21
+ }
22
+ @scope ([data-slotted~="ui-number-input"]:not([data-component])) to ([data-component], [data-slotted]) {
23
+ :where([data-component~="ui-number-input"]):where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-number-input"]))) {
24
+ display: flex !important;
25
+ align-items: center !important;
26
+ gap: var(--ui-space-1) !important;
27
+ margin: 0 !important;
28
+ padding: 0 !important;
29
+ min-inline-size: 0;
30
+ }
31
+ :where([data-component~="ui-number-input"])[hidden]:where(:scope, :not([data-component], [data-slotted]:not([data-slotted~="ui-number-input"]))) {
32
+ display: none !important;
33
+ }
34
+ }
@@ -38,6 +38,7 @@
38
38
  }
39
39
 
40
40
  :scope:where([data-component~="ui-popover"]) {
41
+ --_ui-material-scale: 0.55;
41
42
  --_ui-popover-surface: var(--ui-popover-surface);
42
43
  --_ui-popover-border: var(--ui-popover-border);
43
44
  --_ui-popover-radius: var(--ui-popover-radius);
@@ -70,6 +71,65 @@
70
71
  box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
71
72
  }
72
73
 
74
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
75
+ transparency, saturation and edge light belong to the surrounding decorative material. */
76
+ .surface {
77
+ --_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
78
+ --_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
79
+ --_ui-material-active: clamp(0, calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000), 1);
80
+ --_ui-material-rim: calc((var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25) * var(--_ui-material-scale, 0.55) * 8px);
81
+ --_ui-material-content-color: var(--_ui-popover-surface, var(--ui-material-content, var(--ui-overlay-surface, var(--ui-surface-elevated))));
82
+ --_ui-material-rim-color: color-mix(in srgb, var(--ui-material-glass, var(--ui-surface-elevated)) calc(var(--_ui-material-active) * 100%), transparent);
83
+ background:
84
+ linear-gradient(var(--_ui-material-content-color), var(--_ui-material-content-color)) padding-box,
85
+ linear-gradient(var(--_ui-material-rim-color), var(--_ui-material-rim-color)) border-box,
86
+ var(--_ui-material-content-color) padding-box;
87
+ border-width: calc(var(--ui-border-width) + var(--_ui-material-rim));
88
+ border-color: var(
89
+ --_ui-popover-border,
90
+ color-mix(in oklab, var(--ui-overlay-border, var(--ui-border-strong)) calc((1 - var(--_ui-material-active)) * 100%), transparent)
91
+ );
92
+ box-shadow: var(
93
+ --_ui-popover-shadow,
94
+ var(
95
+ --ui-overlay-shadow,
96
+ 0 calc(var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 8px) calc(
97
+ var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 24px
98
+ ) color-mix(in oklab, var(--ui-text-primary) 15%, transparent),
99
+ inset 0 0 0 calc(var(--_ui-material-active) * var(--ui-border-width)) var(--ui-material-edge, var(--ui-border-strong)),
100
+ var(--ui-elevation-overlay, var(--ui-shadow-lg))
101
+ )
102
+ );
103
+ backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
104
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
105
+ -webkit-backdrop-filter: blur(calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px))
106
+ saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
107
+ }
108
+
109
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
110
+ .surface {
111
+ background: var(--_ui-material-content-color);
112
+ }
113
+ }
114
+
115
+ @media (prefers-reduced-transparency: reduce) {
116
+ .surface {
117
+ background: var(--_ui-material-content-color);
118
+ backdrop-filter: none;
119
+ -webkit-backdrop-filter: none;
120
+ }
121
+ }
122
+
123
+ @media (forced-colors: active) {
124
+ .surface {
125
+ background: Canvas;
126
+ border-color: CanvasText;
127
+ box-shadow: none;
128
+ backdrop-filter: none;
129
+ -webkit-backdrop-filter: none;
130
+ }
131
+ }
132
+
73
133
  /* A toolbar or card can supply its own surface, including an unclipped shadow. */
74
134
  :scope:where([data-component~="ui-popover"])[data-ui-popover-state~="bare"] .surface {
75
135
  overflow: visible;
@@ -77,6 +137,8 @@
77
137
  border: 0;
78
138
  background: transparent;
79
139
  box-shadow: none;
140
+ backdrop-filter: none;
141
+ -webkit-backdrop-filter: none;
80
142
  }
81
143
 
82
144
  :scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
@@ -134,6 +196,18 @@
134
196
  @scope ([data-component~="ui-popover"]) to ([data-component]) {
135
197
  /* This component's hooks style the element they are set on, and never a nested one. */
136
198
 
199
+ /* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
200
+ transparency, saturation and edge light belong to the surrounding decorative material. */
201
+
202
+ @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
203
+ }
204
+
205
+ @media (prefers-reduced-transparency: reduce) {
206
+ }
207
+
208
+ @media (forced-colors: active) {
209
+ }
210
+
137
211
  /* A toolbar or card can supply its own surface, including an unclipped shadow. */
138
212
 
139
213
  @starting-style {
@@ -0,0 +1,53 @@
1
+ /* Generated by HTML Next 1.0.0-alpha.69. Do not edit. */
2
+ @supports (-moz-appearance: none) {
3
+ :where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
4
+ :where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
5
+ }
6
+ @supports (-moz-appearance: none) {
7
+ [data-component~="ui-slider"] { --html-next-scope-owner: "ui-slider" !important; }
8
+ }
9
+ @scope ([data-component~="ui-slider"]) to ([data-component], [data-slotted]) {
10
+ :scope:where([data-component~="ui-slider"]) {
11
+ display: grid !important;
12
+ grid-template-columns: minmax(4rem, 1fr) minmax(8rem, 1fr) !important;
13
+ align-items: center !important;
14
+ gap: var(--ui-space-2) !important;
15
+ margin: 0 !important;
16
+ padding: 0 !important;
17
+ min-inline-size: 0;
18
+ }
19
+ input {
20
+ inline-size: 100%;
21
+ min-inline-size: 0;
22
+ min-block-size: var(--ui-control-size-md);
23
+ margin: 0 !important;
24
+ accent-color: var(--ui-accent-solid);
25
+ cursor: pointer;
26
+ }
27
+ :scope:where([data-component~="ui-slider"])[data-ui-slider-state~="size=sm"] input {
28
+ min-block-size: var(--ui-control-size-sm);
29
+ }
30
+ :scope:where([data-component~="ui-slider"])[data-ui-slider-state~="size=lg"] input {
31
+ min-block-size: var(--ui-control-size-lg);
32
+ }
33
+ input:focus-visible {
34
+ outline: var(--ui-focus-width) solid var(--ui-control-focus, var(--ui-accent-solid));
35
+ outline-offset: var(--ui-space-1);
36
+ border-radius: var(--ui-radius-sm);
37
+ }
38
+ input:disabled {
39
+ cursor: not-allowed;
40
+ }
41
+ @media (pointer: coarse) {
42
+ input {
43
+ min-block-size: max(var(--ui-control-size-md), var(--ui-control-min-block-size));
44
+ }
45
+ }
46
+ :scope:where([data-component~="ui-slider"])[hidden] {
47
+ display: none !important;
48
+ }
49
+ }
50
+ @scope ([data-component~="ui-slider"]) to ([data-component]) {
51
+ @media (pointer: coarse) {
52
+ }
53
+ }
@@ -20,6 +20,10 @@
20
20
  syntax: "*";
21
21
  inherits: false;
22
22
  }
23
+ @property --ui-tabs-panel-padding {
24
+ syntax: "*";
25
+ inherits: false;
26
+ }
23
27
 
24
28
  /* Density resolves into the tab row's own values; the public tokens still override them. */
25
29
  :scope:where([data-component~="ui-tabs"]) {
@@ -27,6 +31,7 @@
27
31
  --_ui-tabs-tab-min-block-size: var(--ui-tabs-tab-min-block-size);
28
32
  --_ui-tabs-tab-padding-block: var(--ui-tabs-tab-padding-block);
29
33
  --_ui-tabs-tab-padding-inline: var(--ui-tabs-tab-padding-inline);
34
+ --_ui-tabs-panel-padding: var(--ui-tabs-panel-padding);
30
35
 
31
36
  --_tab-min-block-size: var(--ui-control-size);
32
37
  --_tab-padding-block: var(--ui-space-2);
@@ -157,7 +162,7 @@
157
162
  border-radius: var(--ui-radius-sm);
158
163
  }
159
164
  .panels > :where([data-slotted], [data-slotted] *):is(*) {
160
- padding: var(--ui-space-4) !important;
165
+ padding: var(--_ui-tabs-panel-padding, var(--ui-space-4)) !important;
161
166
  }
162
167
 
163
168
  :scope:where([data-component~="ui-tabs"])[data-ui-tabs-state~="orientation=vertical"] .list button,