@mkbabb/glass-ui 4.0.0 → 4.1.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 (609) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-8whJrLWt.js +268 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
  4. package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
  5. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
  9. package/dist/DialogFooter-9phqcRIS.js +80 -0
  10. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  11. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
  12. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  13. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
  14. package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
  15. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
  16. package/dist/Input-Cg9DF62r.js +57 -0
  17. package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
  18. package/dist/Notification-CphK7AAm.js +43 -0
  19. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  20. package/dist/PagerDots-Cjx96la-.js +98 -0
  21. package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  22. package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
  23. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
  24. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
  25. package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
  26. package/dist/Separator-DQcwC2TR.js +44 -0
  27. package/dist/Switch-B8RscmRu.js +49 -0
  28. package/dist/Toaster-D9qIHjBI.js +274 -0
  29. package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
  30. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +21 -33
  33. package/dist/api/types-extra.d.ts +37 -0
  34. package/dist/api.js +1 -1
  35. package/dist/aurora.js +1231 -260
  36. package/dist/badge.js +1 -1
  37. package/dist/border-progress.d.ts +1 -0
  38. package/dist/border-progress.js +98 -0
  39. package/dist/button-5dY1Dvhd.js +125 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +2 -2
  43. package/dist/carousel.js +93 -110
  44. package/dist/collapsible.js +1 -1
  45. package/dist/color-Cs0-oxYL.js +116 -0
  46. package/dist/color.js +2 -2
  47. package/dist/command.js +1 -1
  48. package/dist/compile-nZ1xVYTp.js +19 -0
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  53. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  55. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  56. package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
  57. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  58. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  59. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
  60. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  61. package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
  62. package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
  63. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  65. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  66. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  67. package/dist/components/custom/aurora/index.d.ts +2 -1
  68. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  69. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  70. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
  71. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  72. package/dist/components/custom/border-progress/index.d.ts +4 -0
  73. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  74. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  75. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  76. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  77. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  78. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
  79. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
  80. package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
  81. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
  82. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  83. package/dist/components/custom/concentric/constants.d.ts +67 -0
  84. package/dist/components/custom/concentric/index.d.ts +5 -0
  85. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  86. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  87. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  88. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  89. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  90. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  91. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  92. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  93. package/dist/components/custom/constellation/constants.d.ts +33 -0
  94. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  95. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  96. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  97. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  98. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  99. package/dist/components/custom/constellation/index.d.ts +5 -5
  100. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  101. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  102. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  103. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  104. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  105. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  106. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  107. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  108. package/dist/components/custom/deck/constants.d.ts +14 -0
  109. package/dist/components/custom/deck/index.d.ts +8 -0
  110. package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
  111. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  112. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  113. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  114. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
  115. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  116. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  117. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  118. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  119. package/dist/components/custom/dock/constants.d.ts +18 -14
  120. package/dist/components/custom/dock/index.d.ts +5 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
  123. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
  124. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
  125. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
  126. package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
  127. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  128. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  129. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
  130. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  131. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  132. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  133. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  134. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  135. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  136. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  137. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  138. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  139. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  140. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  141. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  142. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
  143. package/dist/components/custom/easing/constants.d.ts +28 -0
  144. package/dist/components/custom/easing/index.d.ts +3 -0
  145. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  146. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
  147. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  148. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  149. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  150. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
  151. package/dist/components/custom/fourier-field/constants.d.ts +64 -0
  152. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  153. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  156. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
  158. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  159. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  160. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  161. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  163. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  165. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  167. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  168. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  172. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  173. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  174. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  176. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  177. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  178. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  179. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  180. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  181. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  182. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  183. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  184. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  185. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  186. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  187. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  188. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  189. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  190. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  191. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  192. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  193. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  194. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  195. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  196. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  197. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  198. package/dist/components/custom/search/index.d.ts +2 -0
  199. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  200. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  201. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  202. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  203. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  204. package/dist/components/custom/spa-view/index.d.ts +2 -0
  205. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  206. package/dist/components/custom/split-chars/index.d.ts +1 -0
  207. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
  208. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  209. package/dist/components/custom/tabs/constants.d.ts +20 -2
  210. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
  211. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  212. package/dist/components/ui/_shared/index.d.ts +2 -0
  213. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  214. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  215. package/dist/components/ui/badge/index.d.ts +1 -1
  216. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  217. package/dist/components/ui/button/index.d.ts +2 -2
  218. package/dist/components/ui/card/Card.vue.d.ts +79 -4
  219. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  220. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  221. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  222. package/dist/components/ui/card/index.d.ts +3 -1
  223. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  224. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  225. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  226. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  227. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  228. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  229. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  230. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  231. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  232. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  233. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  234. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  235. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  236. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  237. package/dist/components/ui/drawer/constants.d.ts +45 -0
  238. package/dist/components/ui/drawer/index.d.ts +23 -15
  239. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  240. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  241. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  242. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  243. package/dist/components/ui/index.d.ts +1 -0
  244. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  245. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  246. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  247. package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
  248. package/dist/components/ui/sheet/index.d.ts +1 -1
  249. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  250. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  251. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  252. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  253. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  254. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  255. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  256. package/dist/composables/color/index.d.ts +2 -0
  257. package/dist/composables/color/useAccentTone.d.ts +34 -0
  258. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  259. package/dist/composables/glass/index.d.ts +5 -2
  260. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  261. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  262. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  263. package/dist/composables/glass/vSpecular.d.ts +2 -0
  264. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  265. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  266. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  267. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  268. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  269. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
  270. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
  271. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  272. package/dist/composables/motion/core/index.d.ts +4 -0
  273. package/dist/composables/motion/index.d.ts +4 -0
  274. package/dist/composables/motion/scrollReader.d.ts +25 -0
  275. package/dist/composables/motion/springPresets.d.ts +20 -1
  276. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  277. package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
  278. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  279. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  280. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  281. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  282. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  283. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  284. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  285. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  286. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  287. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  288. package/dist/composables/sidebar/index.d.ts +4 -1
  289. package/dist/composables/sidebar/types.d.ts +68 -3
  290. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  291. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  292. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  293. package/dist/composables/virtual/index.d.ts +4 -0
  294. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  295. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  296. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  297. package/dist/concentric.d.ts +1 -0
  298. package/dist/concentric.js +836 -0
  299. package/dist/configurator.js +3 -2
  300. package/dist/confirm-dialog.js +62 -49
  301. package/dist/constellation.js +635 -235
  302. package/dist/context-menu.js +3 -3
  303. package/dist/controls.js +2 -2
  304. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  305. package/dist/dark.js +1 -1
  306. package/dist/data-table.js +1 -1
  307. package/dist/deck.d.ts +1 -0
  308. package/dist/deck.js +105 -0
  309. package/dist/dialog.js +4 -3
  310. package/dist/dock.js +819 -568
  311. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  312. package/dist/dom.js +5 -5
  313. package/dist/dot-flow-field.d.ts +1 -0
  314. package/dist/dot-flow-field.js +894 -0
  315. package/dist/dot-matrix.d.ts +1 -0
  316. package/dist/dot-matrix.js +630 -0
  317. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  318. package/dist/drawer.d.ts +1 -0
  319. package/dist/drawer.js +380 -0
  320. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
  321. package/dist/dropdown-menu.js +1 -1
  322. package/dist/easing.d.ts +1 -0
  323. package/dist/easing.js +475 -0
  324. package/dist/expandable-container.js +46 -21
  325. package/dist/fading-scroll.js +1 -1
  326. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  327. package/dist/focus-scope.d.ts +1 -0
  328. package/dist/focus-scope.js +23 -0
  329. package/dist/forms.js +65 -63
  330. package/dist/fourier-field.js +831 -172
  331. package/dist/fourier-math.js +1 -1
  332. package/dist/glass-panel.js +2 -2
  333. package/dist/glass-ui.css +1 -1
  334. package/dist/glass-ui.js +187 -338
  335. package/dist/goo-blob.js +241 -692
  336. package/dist/goo-dot-matrix.d.ts +1 -0
  337. package/dist/goo-dot-matrix.js +591 -0
  338. package/dist/handmark.js +2 -2
  339. package/dist/header-ribbon.js +1 -1
  340. package/dist/hover-card.js +1 -1
  341. package/dist/hover-popover.js +1 -1
  342. package/dist/icon-chip.js +1 -1
  343. package/dist/icon-tooltip.js +1 -1
  344. package/dist/index.d.ts +3 -1
  345. package/dist/instrument-chassis.js +1 -1
  346. package/dist/keyboard.js +1 -1
  347. package/dist/label.js +1 -1
  348. package/dist/labeled-field.js +70 -60
  349. package/dist/metric-badge.js +1 -1
  350. package/dist/metric-cell.js +1 -1
  351. package/dist/metric-stack.js +14 -9
  352. package/dist/motion-core.js +58 -36
  353. package/dist/motion-curves.js +11 -1
  354. package/dist/motion.js +90 -53
  355. package/dist/notification.js +1 -1
  356. package/dist/number-field.js +1 -1
  357. package/dist/pager-dots.js +2 -91
  358. package/dist/paper-backdrop.js +1 -1
  359. package/dist/paper-grid.d.ts +1 -0
  360. package/dist/paper-grid.js +788 -0
  361. package/dist/popover.js +1 -1
  362. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  363. package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
  364. package/dist/progress.js +1 -1
  365. package/dist/pulse.js +2 -2
  366. package/dist/reactive.js +1 -1
  367. package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
  368. package/dist/scrollReader-DI1NWxUw.js +42 -0
  369. package/dist/scrolling-text.js +1 -1
  370. package/dist/search.js +162 -308
  371. package/dist/select.js +3 -3
  372. package/dist/selectable-chip.d.ts +1 -0
  373. package/dist/selectable-chip.js +65 -0
  374. package/dist/separator.js +1 -1
  375. package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
  376. package/dist/sheet.js +1 -1
  377. package/dist/sidebar.js +216 -114
  378. package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
  379. package/dist/slider.js +1 -1
  380. package/dist/sortable-list.js +2 -2
  381. package/dist/spa-view.d.ts +1 -0
  382. package/dist/spa-view.js +46 -0
  383. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  384. package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
  385. package/dist/styles/animations.css +46 -12
  386. package/dist/styles/border-progress.css +109 -0
  387. package/dist/styles/cards.css +145 -0
  388. package/dist/styles/completion-seal.css +131 -0
  389. package/dist/styles/components.css +2 -3
  390. package/dist/styles/configurator.css +55 -0
  391. package/dist/styles/critical-partition.mjs +162 -0
  392. package/dist/styles/critical.css +12 -0
  393. package/dist/styles/deferred.css +33 -0
  394. package/dist/styles/dock/cta-seat.css +87 -0
  395. package/dist/styles/dock/density.css +198 -0
  396. package/dist/styles/dock/layers.css +101 -29
  397. package/dist/styles/dock/morph-bridge.css +54 -18
  398. package/dist/styles/dock/morph.css +132 -7
  399. package/dist/styles/dock/overflow.css +28 -2
  400. package/dist/styles/dock/search.css +68 -0
  401. package/dist/styles/dock/shape.css +124 -0
  402. package/dist/styles/dock/shell.css +77 -21
  403. package/dist/styles/dock/stack-rail.css +264 -0
  404. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  405. package/dist/styles/dock-controls/icon-button.css +14 -0
  406. package/dist/styles/dock.css +43 -1
  407. package/dist/styles/drawer.css +81 -35
  408. package/dist/styles/glass/accent-tone.css +66 -0
  409. package/dist/styles/glass/control-surfaces.css +167 -0
  410. package/dist/styles/glass/deep.css +44 -0
  411. package/dist/styles/glass/ladder.css +147 -41
  412. package/dist/styles/glass/material.css +78 -15
  413. package/dist/styles/glass/reveal.css +136 -0
  414. package/dist/styles/glass/rim.css +110 -0
  415. package/dist/styles/glass/surfaces.css +148 -129
  416. package/dist/styles/glass-refract.css +96 -44
  417. package/dist/styles/glass-specular-track.css +7 -0
  418. package/dist/styles/glass.css +13 -0
  419. package/dist/styles/hover-popover.css +7 -6
  420. package/dist/styles/icon-chip.css +77 -15
  421. package/dist/styles/index.css +36 -9
  422. package/dist/styles/instrument-chassis.css +66 -3
  423. package/dist/styles/scroll-choreography.css +300 -0
  424. package/dist/styles/scroll-chrome.css +123 -0
  425. package/dist/styles/scroll-driven.css +38 -0
  426. package/dist/styles/segmented-tabs.css +81 -14
  427. package/dist/styles/theme/bridges.css +33 -0
  428. package/dist/styles/theme/literals.css +11 -2
  429. package/dist/styles/theme/radius.css +24 -2
  430. package/dist/styles/tokens/color-radius.css +13 -3
  431. package/dist/styles/tokens/dark-arm.css +137 -32
  432. package/dist/styles/tokens/glass-deep.css +100 -0
  433. package/dist/styles/tokens/glass-fx.css +376 -0
  434. package/dist/styles/tokens/glass.css +131 -351
  435. package/dist/styles/tokens/light-dark.css +16 -3
  436. package/dist/styles/tokens/offsets.css +143 -0
  437. package/dist/styles/tokens/on-glass-fg.css +39 -0
  438. package/dist/styles/tokens/property-regs.css +260 -0
  439. package/dist/styles/tokens/scale-paper.css +168 -96
  440. package/dist/styles/tokens/scheme-motion.css +114 -38
  441. package/dist/styles/tokens/scroll-tokens.css +123 -0
  442. package/dist/styles/tokens/sizing-config.css +110 -0
  443. package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
  444. package/dist/styles/tokens.css +14 -3
  445. package/dist/styles/typography/semantic.css +26 -13
  446. package/dist/styles/typography/utilities.css +22 -7
  447. package/dist/styles/utilities/a11y-overrides.css +20 -5
  448. package/dist/styles/utilities/animate.css +27 -24
  449. package/dist/styles/utilities/base-misc.css +307 -0
  450. package/dist/styles/utilities/base.css +47 -261
  451. package/dist/styles/utilities/btn.css +17 -4
  452. package/dist/styles/utilities/components.css +31 -6
  453. package/dist/styles/utilities/metal.css +215 -0
  454. package/dist/styles/utilities.css +14 -7
  455. package/dist/switch.js +1 -1
  456. package/dist/tabs.js +220 -107
  457. package/dist/timeline.js +2 -2
  458. package/dist/toast.js +1 -1
  459. package/dist/toggle-chip.js +10 -10
  460. package/dist/toggle-group.js +1 -1
  461. package/dist/tooltip.js +1 -1
  462. package/dist/typewriter.js +2 -2
  463. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  464. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  465. package/dist/useConfiguratorState-4xblKfwd.js +162 -0
  466. package/dist/useControlSize-SH1UmJCi.js +9 -0
  467. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  468. package/dist/useDragMorph-BUgAC-zK.js +102 -0
  469. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  470. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  471. package/dist/useLiquidPress-BooG97RY.js +39 -0
  472. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  473. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  474. package/dist/useSpring-C0jyvEJB.js +40 -0
  475. package/dist/useSpringMount-BWDnKIwh.js +71 -0
  476. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  477. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  478. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  479. package/dist/vSpecular-EX7loENl.js +68 -0
  480. package/dist/vendor-B2qOlYY3.js +239 -0
  481. package/dist/virtual.d.ts +1 -0
  482. package/dist/virtual.js +225 -0
  483. package/dist/watercolor-dot.js +117 -74
  484. package/package.json +252 -28
  485. package/src/styles/animations.css +46 -12
  486. package/src/styles/border-progress.css +109 -0
  487. package/src/styles/cards.css +145 -0
  488. package/src/styles/completion-seal.css +131 -0
  489. package/src/styles/configurator.css +55 -0
  490. package/src/styles/critical-partition.mjs +162 -0
  491. package/src/styles/dock/cta-seat.css +87 -0
  492. package/src/styles/dock/density.css +198 -0
  493. package/src/styles/dock/layers.css +101 -29
  494. package/src/styles/dock/morph-bridge.css +54 -18
  495. package/src/styles/dock/morph.css +132 -7
  496. package/src/styles/dock/overflow.css +28 -2
  497. package/src/styles/dock/search.css +68 -0
  498. package/src/styles/dock/shape.css +124 -0
  499. package/src/styles/dock/shell.css +77 -21
  500. package/src/styles/dock/stack-rail.css +264 -0
  501. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  502. package/src/styles/dock-controls/icon-button.css +14 -0
  503. package/src/styles/dock.css +43 -1
  504. package/src/styles/drawer.css +81 -35
  505. package/src/styles/glass/accent-tone.css +66 -0
  506. package/src/styles/glass/control-surfaces.css +167 -0
  507. package/src/styles/glass/deep.css +44 -0
  508. package/src/styles/glass/ladder.css +147 -41
  509. package/src/styles/glass/material.css +78 -15
  510. package/src/styles/glass/reveal.css +136 -0
  511. package/src/styles/glass/rim.css +110 -0
  512. package/src/styles/glass/surfaces.css +148 -129
  513. package/src/styles/glass-refract.css +96 -44
  514. package/src/styles/glass-specular-track.css +7 -0
  515. package/src/styles/glass.css +13 -0
  516. package/src/styles/hover-popover.css +7 -6
  517. package/src/styles/icon-chip.css +77 -15
  518. package/src/styles/index.css +27 -0
  519. package/src/styles/instrument-chassis.css +66 -3
  520. package/src/styles/scroll-choreography.css +300 -0
  521. package/src/styles/scroll-chrome.css +123 -0
  522. package/src/styles/scroll-driven.css +38 -0
  523. package/src/styles/segmented-tabs.css +81 -14
  524. package/src/styles/theme/bridges.css +33 -0
  525. package/src/styles/theme/literals.css +11 -2
  526. package/src/styles/theme/radius.css +24 -2
  527. package/src/styles/tokens/color-radius.css +13 -3
  528. package/src/styles/tokens/dark-arm.css +137 -32
  529. package/src/styles/tokens/glass-deep.css +100 -0
  530. package/src/styles/tokens/glass-fx.css +376 -0
  531. package/src/styles/tokens/glass.css +131 -351
  532. package/src/styles/tokens/light-dark.css +16 -3
  533. package/src/styles/tokens/offsets.css +143 -0
  534. package/src/styles/tokens/on-glass-fg.css +39 -0
  535. package/src/styles/tokens/property-regs.css +260 -0
  536. package/src/styles/tokens/scale-paper.css +168 -96
  537. package/src/styles/tokens/scheme-motion.css +114 -38
  538. package/src/styles/tokens/scroll-tokens.css +123 -0
  539. package/src/styles/tokens/sizing-config.css +110 -0
  540. package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
  541. package/src/styles/tokens.css +14 -3
  542. package/src/styles/typography/semantic.css +26 -13
  543. package/src/styles/typography/utilities.css +22 -7
  544. package/src/styles/utilities/a11y-overrides.css +20 -5
  545. package/src/styles/utilities/animate.css +27 -24
  546. package/src/styles/utilities/base-misc.css +307 -0
  547. package/src/styles/utilities/base.css +47 -261
  548. package/src/styles/utilities/btn.css +17 -4
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +215 -0
  551. package/src/styles/utilities.css +14 -7
  552. package/dist/CardAction-XH4YBVEK.js +0 -158
  553. package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
  554. package/dist/DialogFooter-8eZbdmPc.js +0 -165
  555. package/dist/HoverCardContent-DkMaQzH5.js +0 -83
  556. package/dist/Input-DVG_J0ne.js +0 -55
  557. package/dist/Notification-DKjKsQq8.js +0 -100
  558. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  559. package/dist/Separator-BArl4OaB.js +0 -37
  560. package/dist/Switch-Dr--uLGH.js +0 -47
  561. package/dist/Toaster-Bm_HQSpc.js +0 -263
  562. package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
  563. package/dist/TooltipProvider-B3MkB_8P.js +0 -104
  564. package/dist/button-BNDWhAZb.js +0 -81
  565. package/dist/check-njhk-vfu.js +0 -7
  566. package/dist/chevron-down-DKkxb4VV.js +0 -7
  567. package/dist/chevron-right-CPXbqQQz.js +0 -7
  568. package/dist/chevron-up-n_24SqI-.js +0 -7
  569. package/dist/color-DweYl7pE.js +0 -86
  570. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  571. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  572. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  573. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  574. package/dist/minimize-2-BV31Ob_h.js +0 -38
  575. package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
  576. package/dist/search-BSGrf2Sk.js +0 -12
  577. package/dist/styles/dock/rail-extend.css +0 -397
  578. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  579. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  580. package/dist/useRAFLoop-CdwJ7284.js +0 -109
  581. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  582. package/dist/useSpringMount-CvopqiFr.js +0 -108
  583. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  584. package/dist/x-BUwTKe50.js +0 -10
  585. package/src/styles/dock/rail-extend.css +0 -397
  586. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  587. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  588. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  589. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  590. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  591. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
  592. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  593. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  594. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  595. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  596. /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
  597. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  598. /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
  599. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  600. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  601. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  602. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  603. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  604. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  605. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  606. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  607. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  608. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  609. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1,136 @@
1
+ /* glass/reveal.css
2
+ BB.W-LIQUID-REVEAL — the `.glass-reveal` LIQUID-ENTER recipe: the spring-clocked,
3
+ coupled-channel top-layer open that REPLACES `popover-animate`'s fixed-bezier
4
+ zoom-95 (clean break, no alias). The zero-JS floor the reka portaled overlays
5
+ compose (they are not native top-layer, so they cannot ride `@starting-style`;
6
+ `.glass-reveal` is the data-state form). The `useLiquidReveal` JS leaf is the
7
+ source-rect REFINEMENT (the dialog-from-button / dock-from-pill bloom); this CSS
8
+ recipe is the everywhere floor.
9
+ @import-ed by glass.css in cascade order, in its own @layer components
10
+ (isomorphic to the monolith). See docs/precepts/design-idioms.md §cohesion-aware
11
+ partials. */
12
+
13
+ /* ── THE LIQUID ENTER (the iOS-27 bloom-from-anchor) ──────────────────────────
14
+ *
15
+ * Three COUPLED channels, the SPATIAL/EFFECTS split (the Material-3 / §6 /
16
+ * W-MOTION-CANON doctrine):
17
+ *
18
+ * (a) SCALE (the bloom — SPATIAL) rides `--spring-snappy` + its OWN settle clock
19
+ * `--spring-snappy-duration` (the W-GLASS-CAL Unit 3 per-spring clock, NOT the
20
+ * generic `--duration-normal` that re-timed every spring to one wall clock).
21
+ * The overshoot interior of the spring `linear()` gives the canonical iOS
22
+ * arrival. `transform-origin` anchors at the popper edge (`--reka-popper-
23
+ * transform-origin`) so the surface blooms FROM its anchor, not center.
24
+ * (b) OPACITY (the fade — EFFECTS) rides `--ease-out` (NO overshoot — a fade must
25
+ * not bounce), coupled so scale+fade read as ONE continuous coalescing layer.
26
+ * (c) BLUR-SETTLE (the iOS "light-bending modulation" decongest — EFFECTS)
27
+ * `filter: blur(--glass-reveal-blur)` → `blur(0)`, on the SAME spring clock as
28
+ * the scale so the surface clarifies AS it blooms. The decongest rides the
29
+ * surface's OWN pixels (`filter`) NOT the backdrop (`backdrop-filter`), so it
30
+ * does NOT clobber the resting `glass-floating` tier plate blur the overlay
31
+ * carries at rest (a `backdrop-filter: blur(0)` open value would erase the
32
+ * glass). A `filter` radius interp is COMPOSITOR-safe (never a layout property
33
+ * — the proof:no-layout-animation floor).
34
+ *
35
+ * Uses the `scale:` / `translate:` LONGHANDS (not `transform:`), so it composes with
36
+ * any identity-base transform and mints no stacking context (the `.glass-top-layer`
37
+ * `scale:` discipline). NEVER animates a layout property (the zoom is `scale`, the
38
+ * side-slide is `translate` — the directional slide-in `popover-animate` +
39
+ * `slide-in-from-side` used to carry, now folded onto the compositor `translate` leg).
40
+ */
41
+
42
+ @layer components {
43
+ .glass-reveal {
44
+ /* The one public start knob (the decongest radius). The spatial/effects
45
+ clocks read the shared spring tokens (read-only — the W-GLASS-CAL fence). */
46
+ --glass-reveal-blur: 4px;
47
+ --glass-reveal-slide: 0.5rem;
48
+ transform-origin: var(--reka-popper-transform-origin, center);
49
+ /* The coupled transition list — the SPATIAL legs (scale/translate) on the
50
+ snappy spring's OWN settle clock, the EFFECTS legs (opacity/filter blur-
51
+ settle) on the no-overshoot ease-out. ONE coherent glide. The blur rides
52
+ `filter` (the surface's own pixels) NOT `backdrop-filter` (which would
53
+ clobber the resting glass-floating plate blur). */
54
+ transition-property: scale, translate, opacity, filter, display, overlay;
55
+ transition-duration: var(--spring-snappy-duration), var(--spring-snappy-duration),
56
+ var(--spring-snappy-duration), var(--spring-snappy-duration),
57
+ var(--spring-snappy-duration), var(--spring-snappy-duration);
58
+ transition-timing-function: var(--spring-snappy), var(--spring-snappy),
59
+ var(--ease-out), var(--ease-out), linear, linear;
60
+ transition-behavior: allow-discrete;
61
+ }
62
+
63
+ /* OPEN — the settled, bloomed-in state (the spring-clocked scale/fade/blur-settle
64
+ interpolates FROM the closed values). `filter: blur(0)` clarifies the surface;
65
+ the resting `glass-floating` backdrop-filter is untouched. The `translate` leg
66
+ is set ONLY by the `data-side` variants below (a side-anchored popover slides
67
+ from its edge) — the BASE never writes `translate`, so a center-anchored Dialog
68
+ keeping its `-translate-x-1/2 -translate-y-1/2` centering is NEVER clobbered. */
69
+ .glass-reveal[data-state="open"] {
70
+ scale: 1;
71
+ opacity: 1;
72
+ filter: blur(0);
73
+ }
74
+
75
+ /* CLOSED — both the resting CLOSED snapshot AND the EXIT leg. The exit reads
76
+ `--ease-out` (a bezier, NO overshoot — a closing surface must never overshoot
77
+ past gone, the §6/W-MOTION-CANON P2 doctrine); NO `--spring-*` token on the
78
+ exit. The exit is faster + un-sprung — the surface recedes cleanly. */
79
+ .glass-reveal[data-state="closed"] {
80
+ scale: var(--glass-reveal-enter-scale, 0.95);
81
+ opacity: 0;
82
+ filter: blur(var(--glass-reveal-blur));
83
+ transition-timing-function: var(--ease-out);
84
+ transition-duration: var(--duration-fast);
85
+ }
86
+
87
+ /* The directional slide-in — the compositor `translate` leg keyed off the
88
+ popper's `data-side` (folds the retired `slide-in-from-side` `@utility`'s
89
+ directional entry onto the compositor channel; the panel enters from outside
90
+ the anchor's edge). On the SAME snappy spring + clock as the scale. ONLY a
91
+ side-anchored popover (with `data-side`) sets `translate`; the open settled
92
+ value is `0 0` (per side, so it slides home from the edge). A center-anchored
93
+ Dialog has no `data-side` and is never reached here. */
94
+ .glass-reveal[data-side="top"][data-state="open"],
95
+ .glass-reveal[data-side="bottom"][data-state="open"],
96
+ .glass-reveal[data-side="left"][data-state="open"],
97
+ .glass-reveal[data-side="right"][data-state="open"] {
98
+ translate: 0 0;
99
+ }
100
+ .glass-reveal[data-state="closed"][data-side="top"] {
101
+ translate: 0 var(--glass-reveal-slide);
102
+ }
103
+ .glass-reveal[data-state="closed"][data-side="bottom"] {
104
+ translate: 0 calc(-1 * var(--glass-reveal-slide));
105
+ }
106
+ .glass-reveal[data-state="closed"][data-side="left"] {
107
+ translate: var(--glass-reveal-slide) 0;
108
+ }
109
+ .glass-reveal[data-state="closed"][data-side="right"] {
110
+ translate: calc(-1 * var(--glass-reveal-slide)) 0;
111
+ }
112
+ }
113
+
114
+ /* ── REDUCED-MOTION CARVE (the vestibular floor — WCAG 2.3.3) ──────────────────
115
+ * Under `prefers-reduced-motion: reduce` the reveal SNAPS the spatial channels to
116
+ * their endpoints (scale → none, translate → none) and the blur-settle to none —
117
+ * ZERO transform/blur frames. The OPACITY fade SURVIVES (opacity is not a vestibular
118
+ * trigger; the surface fades, never flies, never disappears). The fade rides the
119
+ * short `--duration-fast` clock (the `.glass-top-layer` PRM precedent). */
120
+ @media (prefers-reduced-motion: reduce) {
121
+ .glass-reveal {
122
+ scale: none;
123
+ translate: none;
124
+ /* The decongest snaps to clear (`filter: blur(0)`); the resting
125
+ `glass-floating` backdrop-filter plate blur is UNTOUCHED. */
126
+ filter: blur(0);
127
+ transition-property: opacity, display, overlay;
128
+ transition-duration: var(--duration-fast);
129
+ transition-timing-function: var(--ease-out);
130
+ }
131
+ .glass-reveal[data-state="closed"] {
132
+ scale: none;
133
+ translate: none;
134
+ filter: blur(0);
135
+ }
136
+ }
@@ -0,0 +1,110 @@
1
+ /* glass/rim.css
2
+ The BB.W-GLASS-ACCENT per-INSTANCE chromatic rim/accent group (the rim-ink +
3
+ --glass-material-rim ring + the per-rung --glass-border-accent border, light +
4
+ dark arms).
5
+ Carved from glass/ladder.css at BB.W-CARVE4 to hold the no-god-module bound (the
6
+ five-rung surface ladder + the W55 bright-bucket @container + the calm-tier re-point
7
+ + the contrast-color ink-flip + the opaque escape + the under-shadow modifier + the
8
+ grain ::after stay in ladder.css). @import-ed by glass.css in cascade order
9
+ IMMEDIATELY AFTER ladder.css — the SAME @layer components; the rim/accent group is
10
+ the SOLE writer of --glass-material-rim/--glass-border-accent (the rungs read those
11
+ + --glass-rim-ink as custom properties resolved at use-time on the SAME elements, so
12
+ the relocation is cascade-order-invariant), and the W55 bright-bucket is DELIBERATELY
13
+ kept in ladder.css (relocating it past the contrast-color @supports block would invert
14
+ their same-specificity source-order tie on supporting engines — a behaviour change the
15
+ byte-isomorphism bound forbids). The dist is byte-isomorphic. */
16
+ @layer components {
17
+ /* (b) The unified rim — `--glass-edge-light` full-perimeter inset ring on
18
+ EVERY material surface (AW.W22). Previously the rim was wired only into
19
+ the floating/overlay tiers' box-shadow stack; promoting it to the material
20
+ group makes wash/quiet/resting/card/dock-control all carry the same
21
+ silhouette catch-light from ONE token. The rim is its OWN `box-shadow`
22
+ declaration on the material group so it composes uniformly without
23
+ perturbing each tier's elevation recipe (the floating/overlay tiers drop
24
+ their now-redundant inline `--glass-edge-light` layer below). The alpha is
25
+ deliberately low so the rim never eats AA legibility over a busy
26
+ backdrop. */
27
+ /* ── BB.W-GLASS-ACCENT — the per-INSTANCE chromatic-RIM tint ───────────────
28
+ The THIRD disjoint glass axis (LEVEL · TINT · ACCENT). The rim is TWO
29
+ resolved things — the `--glass-material-rim` inset RING (= `--glass-edge-
30
+ light`, an inset box-shadow) and the per-rung `--glass-border-*` BORDER —
31
+ and BOTH must carry the accent hue so the rim reads as ONE accent silhouette,
32
+ not a half-tinted edge.
33
+
34
+ The composition is `color-mix(in oklab, <current rim color>, var(--glass-
35
+ accent) var(--glass-accent-strength))` — the PERCEPTUAL oklab mix the W55
36
+ glass-tint seam + the `<IconChip>` chip already speak (NOT in-srgb — the
37
+ in-srgb fence is the `--surface-tint-*` brand-overlay family, a SEPARATE
38
+ axis this never touches). At the resting `--glass-accent-strength: 0%` (the
39
+ `@property` default) + `--glass-accent: transparent` (the neutral identity)
40
+ the mix resolves byte-identical to today's rim (the W2 no-op floor).
41
+
42
+ The RING: a box-shadow value cannot be `color-mix`-ed whole, so the rim ring
43
+ is REBUILT here as `inset 0 0 0 0.75px <mixed-color>` — the SAME 0.75px inset
44
+ geometry the `--glass-edge-light` token paints (AV.W15 M3), only its COLOR
45
+ stop composing the accent. At 0% strength the color resolves to the
46
+ `--glass-edge-light` base ink (`hsl(0 0% 100% / 0.18)` light / 0.22 dark —
47
+ read via `--glass-rim-ink`) so the ring is byte-identical to
48
+ `var(--glass-edge-light)`. The `.dark` arm re-points `--glass-rim-ink` to the
49
+ dark base so the dark rim composes off `--glass-edge-light-dark`.
50
+
51
+ The BORDER: each rung's `border-color` reads `--glass-border-accent`, which
52
+ composes the accent onto the rung's own `--glass-border-*` ink. The rung
53
+ borders are re-pointed at their declarations (the `border: 1px solid
54
+ var(--glass-border-accent)`) so ONE derived token carries the accent across
55
+ the band; `--glass-border-accent` reads the per-rung `--glass-border-rung`
56
+ the rung sets locally, mixed with the accent.
57
+
58
+ This axis NEVER touches the plate BACKGROUND (the W55 `--glass-tint-source`
59
+ cohort) — the accent is the rim+glint chromatic DECORATION, not the
60
+ whole-plate legibility darken (the distinct-axis-not-fork fence). */
61
+ .glass-material,
62
+ .glass-wash,
63
+ .glass-quiet,
64
+ .glass-resting,
65
+ .glass-floating,
66
+ .glass-overlay,
67
+ .glass-card,
68
+ .glass-specular-track,
69
+ .dock-icon-button {
70
+ /* BC.W-BLACK-BAR D2 — the rim ring is now DIRECTIONAL: the top catch-light
71
+ (`--glass-rim-top`, glass-fx.css) carries the white-α ink the old
72
+ omnidirectional ring carried (0.30 light / 0.40 dark — the dark arm
73
+ re-points it via dark-arm.css), and the bottom under-shadow
74
+ (`--glass-rim-bottom`) grounds the plate. The accent (BB.W-GLASS-ACCENT)
75
+ still mixes ONTO the top catch-light ink so the chromatic rim reads on the
76
+ lit edge; at 0% strength the mix resolves byte-identical to the bare
77
+ `--glass-rim-top`. `--glass-rim-ink` is the resolved top-ink stop (kept as
78
+ the accent-compose seam — the `.dark` arm below re-points it). */
79
+ --glass-rim-ink: hsl(0 0% 100% / 0.30);
80
+ --glass-material-rim:
81
+ inset 0 1px 0
82
+ color-mix(in oklab, var(--glass-rim-ink), var(--glass-accent) var(--glass-accent-strength)),
83
+ var(--glass-rim-bottom);
84
+ /* the per-rung border ink, accent-composed. `--glass-border-rung` is set by
85
+ each rung at its own declaration (it reads the rung's `--glass-border-*`
86
+ token); the accent mixes onto it so the BORDER half of the rim carries the
87
+ same hue as the RING. At 0% strength === the un-mixed rung ink. */
88
+ --glass-border-accent: color-mix(
89
+ in oklab,
90
+ var(--glass-border-rung, var(--glass-border)),
91
+ var(--glass-accent) var(--glass-accent-strength)
92
+ );
93
+ }
94
+ .dark .glass-material,
95
+ .dark .glass-wash,
96
+ .dark .glass-quiet,
97
+ .dark .glass-resting,
98
+ .dark .glass-floating,
99
+ .dark .glass-overlay,
100
+ .dark .glass-card,
101
+ .dark .glass-specular-track,
102
+ .dark .dock-icon-button {
103
+ /* BC.W-BLACK-BAR D2 — the dark top catch-light ink is the lifted 0.40 stop
104
+ (mirroring the dark `--glass-rim-top`, dark-arm.css) so the accent composes
105
+ off the dark silhouette device (W-DARK-MATERIAL): dark glass needs a
106
+ brighter rim to read over the deep canvas. */
107
+ --glass-rim-ink: hsl(0 0% 100% / 0.40);
108
+ }
109
+
110
+ }
@@ -18,7 +18,12 @@
18
18
  position: relative;
19
19
  background: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
20
20
  backdrop-filter: var(--glass-blur-quiet);
21
- border: 1px solid var(--card-focus-border);
21
+ /* BB.W-GLASS-ACCENT — the card border feeds its focus-elevation ink into the
22
+ accent-composed `--glass-border-accent` (ladder.css rim group); byte-
23
+ identical at 0% strength. The focus rung still re-points `--card-focus-
24
+ border`, which flows through `--glass-border-rung`. */
25
+ --glass-border-rung: var(--card-focus-border);
26
+ border: 1px solid var(--glass-border-accent);
22
27
  border-radius: var(--radius-card);
23
28
  box-shadow: var(--glass-material-rim), var(--card-focus-shadow);
24
29
  /* AY.W-A11Y-PERF O-4 — upgrade `layout style` → include `paint` so the
@@ -181,150 +186,164 @@
181
186
  dedup-and-keep-prefixed, which modern Chromium then drops). */
182
187
  .btn-glass {
183
188
  backdrop-filter: var(--glass-blur-btn);
184
- }
185
-
186
- /* ── Pill input ───────────────────────────────── */
187
- .input-pill {
188
- @apply flex w-full;
189
189
 
190
- /* AX.W51 D18 — the input pill rides the ONE `--ui-scale` comfort axis: the
191
- height reads the `--control-h-md` cohort (`max(calc(2.5rem * --ui-scale),
192
- --control-floor)`, the h-10 register with the WCAG-44px coarse clamp), the
193
- font reads `--control-text`, the inline padding scales — so ONE override
194
- grows the field's height + padding + font in lockstep. Desktop default is
195
- the identity. */
196
- height: var(--control-h-md);
197
- border-radius: var(--radius-pill);
198
- /* AW.W13 — the resting field edge reads as an enclosed control at rest
199
- (~15%α — ~2× the prior 8% glass-wash floor that vanished on cream). The
200
- `:focus-visible` accent ring + the `:user-invalid`/`[aria-invalid]`
201
- destructive ring below still win by order + specificity.
202
- AX.W54 — moved off the srgb `--surface-tint-15` fork onto the glass
203
- border seam so the pill is ONE glass model with the rest of the ladder.
204
- BA.W-SURFACE-AXIS scope 7 — re-pointed onto the SHARED `--control-surface-*`
205
- REST register so Input/Textarea/NumberField/Select/Combobox/TagsInput are
206
- ONE material at rest (the input rung was the warmer of the two; Select rode
207
- the `glass-wash` gray — the no-gray control-family seam). The register reads
208
- the same `--glass-*` ladder, so `--glass-level`/the W55 bright bucket retune
209
- the whole form family in lockstep (--control-surface-border defaults to the
210
- `--glass-border-floating` 15%α rung, --control-surface-bg to `--glass-bg-quiet`,
211
- --control-surface-blur to `--glass-blur-quiet`). */
212
- border: 1.5px solid var(--control-surface-border);
213
- background: var(--control-surface-bg);
214
- /* The control's REAL glass blur — the shared register's quiet-tier radius
215
- (the same `--control-surface-blur` pairs with `--control-surface-bg`); the
216
- `--glass-level` knob clarifies it in lockstep with every surface. */
217
- backdrop-filter: var(--control-surface-blur);
218
- padding: 0 calc(1rem * var(--ui-scale));
219
- font-size: var(--control-text);
220
- color: var(--foreground);
221
- transition:
222
- background-color var(--duration-fast) var(--ease-standard),
223
- border-color var(--duration-fast) var(--ease-standard),
224
- box-shadow var(--duration-fast) var(--ease-standard),
225
- color var(--duration-fast) var(--ease-standard),
226
- opacity var(--duration-fast) var(--ease-standard);
190
+ /* BB.W-BUTTON-GLASS (d) — the button-scoped DEPTH stack + the hover-specular
191
+ bump. The glass button was the flattest wash rung (a bare backdrop-filter,
192
+ no rim, no under-shadow) — it read as a tinted rectangle, not a lifted
193
+ glass lozenge. The `--glass-btn-*` knobs compose ALREADY-MINTED tokens (the
194
+ `--glass-edge-light` rim + the `quiet`/`resting`-tier `--glass-under-shadow-*`
195
+ drop) so a consumer retints the whole button depth from ONE override; NO new
196
+ compositing axis. The rim+under-shadow lifts the lozenge; the box-shadow is
197
+ additive over the variant's own focus/press shadow legs (the `.btn-pill`
198
+ transition carries box-shadow on the §6 bezier, so the depth cross-fades
199
+ coherently). */
200
+ --glass-btn-rim: var(--glass-edge-light);
201
+ --glass-btn-under-shadow: var(--glass-under-shadow-quiet);
202
+ --glass-btn-under-shadow-hover: var(--glass-under-shadow-default);
203
+ box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow);
204
+ /* The button-scoped hover gleam bump (0.10 → ~0.14): a hovered glass button
205
+ reads a notch brighter at the grazing edge than the global hover whisper.
206
+ Token-scoped to `.btn-glass` (NOT the global `:root` cohort property-regs.css
207
+ owns) so only the button lifts. The active/rest rungs ride the global cohort
208
+ (the press whisper + the dormant rest). */
209
+ --glass-specular-intensity-hover: var(--glass-specular-btn-hover);
227
210
  }
228
211
 
229
- .input-pill::placeholder {
230
- color: var(--surface-tint-35);
212
+ /* BC.W-BUTTON-GLASS-IOS (move 2 / BG-IOS-2) — the hero CTA reaches DEEP glass.
213
+ `.btn-glass` reads `--glass-blur-btn` (not `--glass-blur-floating`), so the bare
214
+ `.glass-deep` axis (which re-points `--glass-blur-floating`) does not deepen a
215
+ button. This arm re-points `--glass-blur-btn` onto the deep family — the SAME
216
+ token-substitution model `.glass-deep` uses (glass/deep.css), composing the ONE
217
+ deep axis, NOT a new blur recipe. So a `default`/`primary-audacious` hero CTA
218
+ reads the apple.com-nav-grade thick refractive liquid glass (16px / saturate 1.5
219
+ family, `--glass-blur-deep`), while the plain content tiers + the quieter
220
+ `outline`/`secondary`/`accent` glass buttons stay calm at the floating-tier
221
+ `--glass-blur-btn`. The deep BLUR is budget-FREE (the W-LENSING budget binds the
222
+ `:liquid` SVG lens, not the deep-blur tier). The a11y `--glass-level:0` brackets
223
+ reach it for free (the deep blur composes `--glass-level`, the opaque-escape path). */
224
+ .btn-glass.glass-deep {
225
+ --glass-blur-btn: var(--glass-blur-deep);
231
226
  }
232
227
 
233
- /* BA.W-SURFACE-AXIS scope 7 — the shared control REST surface class. The
234
- NON-pill control families (the Select trigger, the TagsInput root) that do
235
- NOT compose `.input-pill` but want the SAME resting material read this — so
236
- the whole form band is ONE register at rest (the Select default rode the
237
- lighter `glass-wash` gray before; this is the no-gray control-family seam).
238
- It carries the bg/border/blur ONLY (each control owns its own height/radius/
239
- padding/font), so a non-pill control composes `.control-surface` + its own
240
- geometry. The hover lift brightens the fill one step toward the resting rung. */
241
- .control-surface {
242
- background: var(--control-surface-bg);
243
- border: 1px solid var(--control-surface-border);
244
- backdrop-filter: var(--control-surface-blur);
245
- -webkit-backdrop-filter: var(--control-surface-blur);
246
- }
247
- .control-surface:hover:not(:disabled, [data-disabled]) {
248
- background: var(--control-surface-bg-hover);
228
+ /* The depth deepens one rung on hover (the lifted-lozenge read) — additive over
229
+ the variant's own hover surface legs. The variants paint the bg/border on
230
+ hover; this adds the deeper drop. */
231
+ .btn-glass:hover:not(:disabled, [data-disabled]) {
232
+ box-shadow: var(--glass-btn-rim), var(--glass-btn-under-shadow-hover);
249
233
  }
250
234
 
251
- /* AQ.W4 §W4.6 — keyboard-focus ring only. Was bare `:focus` (showed the
252
- accent ring on a mouse click); `:focus-visible` matches the
253
- `.focus-ring` / `.glass-btn` / dock-control discipline. Ordered BEFORE
254
- the `:user-invalid` rungs so an invalid focused field shows destructive,
255
- not accent (the `:user-invalid:focus-visible` rule below wins by order +
256
- specificity). `:focus-visible` Baseline Widely — no fallback. */
257
- .input-pill:focus-visible {
258
- outline: none;
259
- border-color: var(--color-accent-opaque, var(--ring));
260
- box-shadow: 0 0 0 2px var(--color-accent, color-mix(in srgb, var(--ring) 30%, transparent));
235
+ /* BC.W-BUTTON-GLASS-IOS (move 3 / BG-IOS-4) — the press is COUPLED (W-MOTION-CANON
236
+ P3): the ONE `--glass-btn-press-t` 0..1 spring drive (Button.vue writes it off
237
+ `useSpringPress`) feeds BOTH the squish (the `useLiquidFlex` reciprocal X/Y deform,
238
+ Button.vue) AND a SPECULAR brightness leg here — the touch-ILLUMINATION (apple-
239
+ ios27.md §2.5 ".interactive() → scale + bounce + shimmer + touch-illumination").
240
+ During the press the button's specular tracks the SPRING (not the binary `:active`
241
+ toggle material.css sets): `--specular-intensity` LERPs from the hover gleam toward
242
+ the active gleam as `--glass-btn-press-t` travels, so the gleam ILLUMINATES on the
243
+ SAME spring scalar as the squish (the glass reads as DEFORMING-AND-BRIGHTENING with
244
+ the spring's alive overshoot, not a uniform shrink). It reads the EXISTING
245
+ `--glass-specular-intensity-{hover,active}` cohort (property-regs.css) — no new
246
+ token, ONE drive two legs. Specificity ties material's `.glass-wash:active::before`
247
+ (0,2,1) and wins by source-order-after (surfaces.css @import-s after material.css),
248
+ so the button press follows the spring; the hover gleam + the no-JS `:active` floor
249
+ are untouched. */
250
+ .btn-glass:active::before {
251
+ --specular-intensity: calc(
252
+ var(--glass-specular-intensity-hover) +
253
+ (var(--glass-specular-intensity-active) - var(--glass-specular-intensity-hover)) *
254
+ var(--glass-btn-press-t)
255
+ );
261
256
  }
262
257
 
263
- /* AQ.W4 §W4.1 — validity vocabulary on `.input-pill` (Input + Textarea).
264
- The forgiving `:where(:user-invalid, .user-invalid-fallback,
265
- [aria-invalid="true"])` group is ONE rule covering THREE trigger surfaces:
266
- native constraint-validation (`:user-invalid`), the `useUserInvalidAria`
267
- fallback class for engines without `:user-invalid` (css §3.2; NOT a
268
- live+dead alias — the class is the SOLE fallback), AND (AW.W18) the
269
- imperative `[aria-invalid="true"]` attribute. The `[aria-invalid]` arm
270
- serves APP-DRIVEN validity — a custom key match, an async server check —
271
- where there is no native constraint to trip `:user-invalid`, so the app
272
- sets the ARIA attribute and the library's own ring paints with no
273
- `:deep()` re-paint at the consumer. The destructive/success tints reuse
274
- the semantic tokens via `color-mix` per the house pattern (W2). Non-color
275
- reinforcement is the error TEXT (W4.5 `error` slot) + the `required`
276
- asterisk — the border/bg shift is the supplementary cue, never the sole
277
- one. `:user-valid` is intentionally subtle (border only, no bg fill) so
278
- a long valid form is not a wall of green. */
279
- .input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]) {
280
- border-color: var(--destructive);
281
- background: color-mix(in srgb, var(--destructive) 8%, var(--glass-bg-quiet));
258
+ /* BB.W-BUTTON-GLASS (a) — the ELEMENT-LEVEL oklab-tinted hover/active fill pair
259
+ (the substitution-vs-inheritance trap fixed on the button register). The glass
260
+ button variants painted `hover:bg-(--glass-bg-resting) active:bg-(--glass-bg-
261
+ floating)` — the RAW `:root` rung tokens, which carry NO `color-mix(in oklab, …,
262
+ --glass-tint-source --glass-tint-strength)` wrapper. So the W55 adaptive darken
263
+ + the `contrast-color()` ink flip + the content-tier floor (all of which the REST
264
+ bg `.glass-wash` composes via the element-level oklab seam) DROPPED the moment the
265
+ pointer landed — "more glass would cost legibility" exactly inverted from the
266
+ iOS-27 ask. These two tokens wrap the raw rungs in the SAME element-level oklab
267
+ seam `ladder.css` composes for the rest bg + `--glass-bg-dock` for the dock — ZERO
268
+ new compositing axis, the literal darken-over-light recipe reached at the lit
269
+ fill. ZERO-delta at the `--glass-tint-strength: 0%`/floor default (the mix toward
270
+ the source is 0%); under the declared/sampled bright bucket the lit fill darkens
271
+ to AA in lockstep with the rest bg. The `:root` raw `--glass-bg-*` tokens are
272
+ UNTOUCHED (other surfaces compose them at the element correctly — the raw token +
273
+ the element-level oklab wrapper is the correct ladder shape). */
274
+ /* BC.W-TABS-IOS — the tinted-FLOATING seam lifted off the `.btn-glass`-only scope
275
+ onto a SHARED `:where()` so the iOS-27 segmented-control active pill reads the
276
+ SAME element-level oklab-tint floating fill the glass button reads (the
277
+ substitution-over-redeclaration discipline: ONE tinted-floating source, NOT a
278
+ tab-local fork). The pill's active plate now reaches the W55 darken-over-bright
279
+ seam — over a bright field the pill darkens-to-legible, over a calm field it
280
+ stays warm-cream/near-white (the iOS adaptive register reaching the pill).
281
+ ZERO-delta at the `--glass-tint-strength: 0%`/floor default. */
282
+ :where(.btn-glass, .segmented-indicator) {
283
+ --glass-bg-floating-tinted: color-mix(
284
+ in oklab,
285
+ var(--glass-bg-floating),
286
+ var(--glass-tint-source) var(--glass-tint-strength)
287
+ );
282
288
  }
283
- .input-pill:where(:user-valid, .user-valid-fallback) {
284
- border-color: var(--success);
285
- }
286
- /* Invalid + keyboard-focused → destructive ring (overrides the accent
287
- `:focus-visible` ring above by order + the extra invalid compound). The
288
- `[aria-invalid]` arm rides the same widened group so an app-driven
289
- invalid field shows the destructive ring on focus too. */
290
- .input-pill:where(:user-invalid, .user-invalid-fallback, [aria-invalid="true"]):focus-visible {
291
- border-color: var(--destructive);
292
- box-shadow: 0 0 0 var(--focus-ring-width)
293
- color-mix(in srgb, var(--destructive) 35%, transparent);
289
+ .btn-glass {
290
+ /* BC.W-BUTTON-GLASS-IOS (BG-IOS-6) — the `quiet` rung gains the SAME element-
291
+ level oklab-tint wrapper so the de-shadcn `outline`/`secondary` reskin (the
292
+ QUIETER glass register, prominence-by-tint) reaches the W55 darken on its lit
293
+ fill too — ZERO new compositing axis, the SAME seam the resting/floating pair
294
+ composes. The floating rung is minted on the shared `:where()` seam ABOVE
295
+ (the tab pill reads it too); quiet + resting stay button-scoped (the
296
+ hover/active fill register the segmented pill does not engage). */
297
+ --glass-bg-quiet-tinted: color-mix(
298
+ in oklab,
299
+ var(--glass-bg-quiet),
300
+ var(--glass-tint-source) var(--glass-tint-strength)
301
+ );
302
+ --glass-bg-resting-tinted: color-mix(
303
+ in oklab,
304
+ var(--glass-bg-resting),
305
+ var(--glass-tint-source) var(--glass-tint-strength)
306
+ );
294
307
  }
295
308
 
296
- /* AQ.W4 §W4.3 — `field-sizing: content` autosize (opt-in via the Textarea
297
- `autosize` prop → `[data-autosize]`). The textarea grows vertically with
298
- content between a 3-line floor and a token-driven ceiling, then scrolls.
299
- `field-sizing` Baseline Newly (Chromium 2024) — on a non-supporting
300
- engine the declaration is ignored and the element keeps the
301
- `min/max-block-size` bounds + standard scroll (no JS, no `@supports`,
302
- no grid-mirror polyfill). The fixed-size path (default, `min-h-20`) is
303
- the unchanged no-op fallback. */
304
- .input-pill[data-autosize] {
305
- field-sizing: content;
306
- width: 100%;
307
- min-block-size: 3lh;
308
- max-block-size: var(--textarea-autosize-max, 12lh);
309
- resize: vertical;
310
- }
309
+ /* BB.W-BUTTON-GLASS (e) — the optional refraction-edge opt-in. CONSUMES the
310
+ EXISTING refraction axis (glass-refract.css, the `#glass-refract` SVG-filter
311
+ lens, `@supports (backdrop-filter: url(#…))`-gated with the un-gated blur base
312
+ as the off-Chromium floor) — NEVER a button-local lens fork. BB.W-LENSING landed
313
+ the squircle bevel-profile + the typed `--glass-refract` axis + the `.glass-lens`
314
+ opt-in class (renamed off `.glass-refract`, clean break); the button COMPOSES
315
+ `.glass-lens`.
311
316
 
312
- .input-pill:disabled {
313
- opacity: 0.5;
314
- cursor: not-allowed;
315
- }
317
+ A `<Button :liquid>` adds `.glass-lens` to the host; on a supporting engine the
318
+ button reads the edge-bend over its blur base. The base recipe (the
319
+ `@supports`-gated `.glass-lens` rule in glass-refract.css) already paints the
320
+ displacement filter over `--glass-blur-resting`; this block adds NOTHING to the
321
+ filter graph (it would fork the axis) — the button merely COMPOSES `.glass-lens`.
316
322
 
317
- /* AW.W13 — the Select trigger mirrors the input pill's resting border lift.
318
- The reka-ui SelectTrigger renders `role="combobox"` over the `.glass-wash`
319
- surface; its 8%α `--glass-border-wash` field edge vanished on cream just
320
- like the input pill, so the same `--surface-tint-15` lift makes the
321
- trigger read as an enclosed control at rest. Scoped to the combobox role
322
- so the lift reaches ONLY the Select trigger, not every `.glass-wash`
323
- surface. */
324
- .glass-wash[role="combobox"] {
325
- border-color: var(--surface-tint-15);
323
+ The `:active` LENS-SWELL is the CHEAP coupled read, NOT a per-frame displacement-
324
+ map re-rasterize (the §Triumvirate / R2 budget: `feDisplacementMap` is resize-
325
+ expensive — only the `scale` attr animates without rebuilding the map, and even
326
+ that re-rasterizes; the one-refractive-element-per-route budget forbids the per-
327
+ frame cost). The swell is the press SQUISH (Button.vue, the `useLiquidFlex`
328
+ reciprocal X/Y deform) + the coupled `--glass-specular-intensity-active` gleam
329
+ lift on the SAME `--glass-btn-press-t` drive — the glass reads as DEFORMING under
330
+ the press without re-rasterizing the lens map. Off-Chromium the whole arm degrades
331
+ to the un-gated `.btn-glass` blur+tint base (the no-workaround floor). The
332
+ `--glass-btn-press-t` typed drive (property-regs.css) is the ONE press scalar the
333
+ squish + the gleam coupling both read. */
334
+ .btn-glass.glass-lens {
335
+ /* The press drive scalar (0 rest → 1 pressed) Button.vue writes off the spring;
336
+ the resting default is 0 so an unwired refraction button is the static lens.
337
+ The `:active` LENS-SWELL on this drive lives in material.css's `.glass-lens`
338
+ block (`--glass-refract` bumps on press); this block only floors the drive. */
339
+ --glass-btn-press-t: 0;
326
340
  }
327
341
 
342
+ /* The .input-pill / .control-surface form-control REST register is carved into
343
+ glass/control-surfaces.css (a cohesive sub-concern, the no-god-module re-drain)
344
+ — @import-ed by glass.css IMMEDIATELY AFTER surfaces.css, same @layer components,
345
+ same source order (byte-isomorphic). */
346
+
328
347
  /* ── BA.W-PAGER — the glass pager pill chassis (.glass-pager-ring) ──────────
329
348
  The ONE pager-CHASSIS ring register: a `--radius-pill` glass-floating pill
330
349
  (the DockRail-chip recipe — `--glass-bg-floating` + `--glass-blur-floating`