@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,42 @@
1
+ /**
2
+ * The recognizable WebGPU INIT-FAILURE signal (BC.W-WEBGPU-EVERYWHERE — the D8/D8'
3
+ * close). A no-adapter host (`requestAdapter()` returns null), a `requestDevice()`
4
+ * reject, or a device-lost-at-birth is NOT a contract violation — it is a recognized
5
+ * substrate decision the picker (`createGpuSubstrate`) catches to fall to the WebGL2
6
+ * net. `armAsync()` REJECTS with this typed signal (it does NOT `throw` an uncaught
7
+ * error to the page, and it does NOT fire the consumer's `onInitError` — that contract
8
+ * is reserved for a genuine POST-arm shader/OOM/validation violation). The picker's
9
+ * `try`/`catch` recognizes it; a consumer never sees a `no GPU adapter` PAGEERROR.
10
+ */
11
+ export declare class WebGPUInitError extends Error {
12
+ readonly kind: "no-adapter" | "device-request" | "no-navigator-gpu" | "software-adapter" | "pipeline-validation";
13
+ constructor(kind: WebGPUInitError["kind"], message: string, cause?: unknown);
14
+ }
15
+ /**
16
+ * Detect a SOFTWARE / CPU WebGPU adapter (SwiftShader / llvmpipe / the Microsoft
17
+ * Basic Render Driver, or a UA-supplied `isFallbackAdapter` software fallback) — the
18
+ * WebGPU twin of `isSoftwareWebGLRenderer` (the `renderMode.ts` WebGL software-raster
19
+ * guard, BB.W-AURORA-SWRASTER).
20
+ *
21
+ * WHY this forces the WebGL2 net (the BC WebGPU re-home regression this closes): on a
22
+ * headless / GPU-blocklisted / CI host, `navigator.gpu` exists AND `requestAdapter()`
23
+ * SUCCEEDS — it returns a SOFTWARE adapter (SwiftShader). `requestDevice()` succeeds
24
+ * too, so the WebGPU init does NOT reject; `setup()` builds the render pipeline, but the
25
+ * software backend cannot validate/compile it (a metaball `RenderPipeline` is invalid
26
+ * under SwiftShader), so the per-frame `pass.setPipeline(...)` floods
27
+ * `[Invalid RenderPipeline] is invalid due to a previous error` — a never-ending console
28
+ * spew with no fallback (the loop keeps trying to draw the invalid pipeline). A
29
+ * software-rastered WebGPU surface is the same per-composite cost class the WebGL guard
30
+ * forbids. So a software adapter is treated as a recognized INIT FAILURE: the picker's
31
+ * `armAsync` try/catch falls to the WebGL2 net — exactly the silent W-AURORA-SWRASTER
32
+ * degrade, never the invalid-pipeline flood.
33
+ *
34
+ * The signal is the `isFallbackAdapter` spec flag (a UA sets it on a software fallback —
35
+ * the spec moved it from `GPUAdapter` to `GPUAdapterInfo`, so it is read off BOTH the
36
+ * adapter AND its `info` for cross-UA coverage) OR a software/SwiftShader/llvmpipe/
37
+ * basic-render string in `adapter.info` (vendor/architecture/description). On a real
38
+ * Metal/Vulkan/D3D adapter both are false/empty, so the WebGPU path is BYTE-UNTOUCHED
39
+ * (the cardinal ba-gestalt capture holds). The read is defensive (the fields are optional
40
+ * across UAs); a throwing read is morally "cannot prove software" → keep WebGPU.
41
+ */
42
+ export declare function isSoftwareWebGPUAdapter(adapter: GPUAdapter): boolean;
@@ -10,3 +10,7 @@ export * from "../useViewTransition";
10
10
  export * from "../vReveal";
11
11
  export * from "../useTextHighlight";
12
12
  export * from "../useLiquidFlex";
13
+ export * from "../usePointerVelocityField";
14
+ export * from "../useCharStagger";
15
+ export * from "../useScrollTrigger";
16
+ export * from "../useScrollChrome";
@@ -2,6 +2,10 @@ export * from "./constants";
2
2
  export * from "./useSpring";
3
3
  export * from "./useSpringMount";
4
4
  export * from "./useSpringPress";
5
+ export * from "./useLiquidPress";
6
+ export * from "./useDragMorph";
7
+ export * from "./useLiquidReveal";
8
+ export * from "./useDockCtaReceive";
5
9
  export * from "./useNumericTransition";
6
10
  export * from "./useAnimatedNumber";
7
11
  export * from "./useAnimatedNumberMap";
@@ -0,0 +1,25 @@
1
+ /** The scroll source: an element with its own scroll-port, the Window, or null. */
2
+ export type ScrollSource = HTMLElement | Window | null;
3
+ export interface ScrollReader {
4
+ /** The resolved scroll-listener TARGET (the element, or `document` for the window). */
5
+ readonly target: EventTarget | null;
6
+ /** The current scroll position on the source (px) — `scrollTop` / `scrollY`. */
7
+ position: () => number;
8
+ /** The scrollable extent on the source (px) — `scrollHeight - clientHeight` / doc. */
9
+ extent: () => number;
10
+ /** Force a coalesced tick now (post-resize/layout re-read). */
11
+ schedule: () => void;
12
+ /** Detach the listener + cancel any in-flight frame. */
13
+ stop: () => void;
14
+ }
15
+ /**
16
+ * Attach ONE rAF-coalesced scroll listener to the source and call `onTick(reader)`
17
+ * once per scroll burst (a single in-flight frame). The `onTick` callback reads the
18
+ * live `position()`/`extent()` off the returned reader. The listener is the SAME
19
+ * `{ passive: true }` scroll listener `useScrollTracker` and `useFadingScroll`
20
+ * already used — factored to ONE site.
21
+ *
22
+ * @param source the scroll source (element / Window / null)
23
+ * @param onTick called once per coalesced scroll frame with the live reader
24
+ */
25
+ export declare function createScrollReader(source: ScrollSource, onTick: (reader: ScrollReader) => void): ScrollReader;
@@ -1,5 +1,5 @@
1
1
  /** A glass-ui named-spring preset name. */
2
- export type SpringPresetName = "smooth" | "snappy" | "bouncy" | "gentle" | "dock";
2
+ export type SpringPresetName = "smooth" | "snappy" | "bouncy" | "gentle" | "dock" | "press";
3
3
  /** One named-spring row: the analytic (response, dampingFraction) pair + its register doc. */
4
4
  export interface SpringPresetRow {
5
5
  /** The token suffix — `--spring-<name>` (CSS) and the `MOTION_CURVES` key. */
@@ -27,6 +27,25 @@ export interface SpringPresetRow {
27
27
  * dialog/success entrances, the VT default. Largest overshoot.
28
28
  * GENTLE → gentle — critically-damped slow settles (the patient end of the ladder).
29
29
  * DOCK → dock — the dock expand/collapse morph AND everything inside it.
30
+ * PRESS → press — the iOS interactive tap-press: sub-100ms answer, a tiny alive
31
+ * rebound. `useSpringPress` reads this row's (response, ζ).
32
+ *
33
+ * BC.W-SPRING-EASE — the retune that eases the two abrupt curves + mints the press
34
+ * register (USER-DEFECTS §B/§D, the "squishy/quick/coupled" mandate). The retune is
35
+ * SURGICAL — `smooth`/`dock`/`gentle` are byte-frozen KEEPS:
36
+ * · snappy: response 0.35 / ζ 0.65 → 0.42 / 0.78. The old pair front-loaded — its
37
+ * 2%-band travel collapsed into the first ~16% of the clock then sat dead-flat.
38
+ * The eased pair spreads the travel so the 90%-point lands mid-clock (the analytic
39
+ * 90%-travel fraction t₉₀/t_settle ≈ 0.57, in the [0.55,0.70] target band), keeping
40
+ * it QUICK (0.34s clock) with a whisper of life (overshoot ~+2.0%, ≤ the +7% bar).
41
+ * · bouncy: ζ 0.45 → 0.55. Overshoot drops +20.5% → +12.6%, into the Apple 12-18%
42
+ * band (apple-ios27.md §5 "ease toward ζ0.55-0.60 if abrupt"; ζ=1−bounce ⇒ bounce
43
+ * 0.45, more playful than Apple's 0.30 but controlled). response stays 0.5. ζ 0.55
44
+ * is the band floor — the +14% prose target maps here once the overshoot is solved
45
+ * analytically (ζ 0.60 lands +9.5%, BELOW the band; the proof's S2 floor is ζ≥0.55).
46
+ * · press: MINTED at response 0.15 / ζ 0.86 — the Apple `interactiveSpring`
47
+ * (apple-ios27.md §2.2/§2.5). The press answers in the sub-100ms iOS window with a
48
+ * sub-perceptual alive rebound (~+0.5%). `useSpringPress` defaults re-point onto it.
30
49
  */
31
50
  export declare const SPRING_PRESETS: readonly SpringPresetRow[];
32
51
  /** Lookup one preset row by name (used by `MOTION_CURVES` spring rows). */
@@ -0,0 +1,44 @@
1
+ import type { MaybeRefOrGetter, Ref } from "vue";
2
+ /** The per-step delay floor matches the shipped `.char-stagger` recipe — the
3
+ * glyph spans are mounted via `requestAnimationFrame`-free DOM writes; the CSS
4
+ * owns the timing. No magic timing lives here. */
5
+ export interface UseCharStaggerOptions {
6
+ /**
7
+ * Split unit. `"char"` (default) splits per UTF-16 code-unit-safe scalar;
8
+ * `"word"` splits on whitespace and keeps each word as ONE `.char` unit;
9
+ * `"grapheme"` uses `Intl.Segmenter` so emoji / combining-mark / ZWJ
10
+ * sequences (a 👨‍👩‍👧 family) are ONE glyph, never split into pieces.
11
+ */
12
+ by?: "char" | "word" | "grapheme";
13
+ /**
14
+ * Preserve whitespace as non-animating spacer spans so the word spacing
15
+ * survives the `inline-block` split. Default `true`.
16
+ */
17
+ preserveWhitespace?: boolean;
18
+ /**
19
+ * Write `--char-total` (the glyph count) on the wrapper, for a length-
20
+ * proportional / center-out / reverse stagger. Default `true`.
21
+ */
22
+ writeTotal?: boolean;
23
+ }
24
+ export interface UseCharStaggerReturn {
25
+ /** Re-run the split (after a `textContent` change). Idempotent — it restores
26
+ * the original text from the cached label and re-mints, so spans never
27
+ * accrete across re-splits. */
28
+ split: () => void;
29
+ /** The resolved glyph (`.char` unit) count. */
30
+ count: Ref<number>;
31
+ }
32
+ /**
33
+ * Split a target element's text into per-glyph `.char` spans + the
34
+ * `--char-index`/`--char-total` customs the shipped `.char-stagger` CSS reads —
35
+ * accessible by construction (the wrapper keeps the full text as its
36
+ * `aria-label`, every glyph span is `aria-hidden`).
37
+ *
38
+ * @example
39
+ * const el = ref<HTMLElement | null>(null);
40
+ * const { count } = useCharStagger(el, { by: "grapheme" });
41
+ * // <span ref="el" class="char-stagger" aria-label="Fourier" style="--char-total:7">
42
+ * // <span class="char" style="--char-index:0" aria-hidden>F</span> …
43
+ */
44
+ export declare function useCharStagger(target: MaybeRefOrGetter<HTMLElement | null>, opts?: UseCharStaggerOptions): UseCharStaggerReturn;
@@ -0,0 +1,84 @@
1
+ import { type Ref } from "vue";
2
+ import { type SpringPresetName } from "./springPresets";
3
+ /** The receive spring register — `snappy` (the crisp absorb default) or `bouncy`
4
+ * (the emphatic land-with-overshoot). A subset of the named `SPRING_PRESETS` rows,
5
+ * matching `useLiquidReveal`'s register so the two seams read as ONE family. */
6
+ export type DockCtaReceivePreset = Extract<SpringPresetName, "snappy" | "bouncy">;
7
+ export interface UseDockCtaReceiveOptions {
8
+ /**
9
+ * The target dock control the CTA morphs INTO — the destination rect (the
10
+ * `<DockIconButton>`/dock control element). When null at receive time, the morph
11
+ * is a no-op snap (no destination to fly to) and `onReceived` fires immediately.
12
+ */
13
+ dockControl: Ref<HTMLElement | null>;
14
+ /** The spring register (default `snappy`). */
15
+ preset?: DockCtaReceivePreset;
16
+ /** The ending congest blur radius in px (the CTA dissolves into the glass). Default 4. */
17
+ blur?: number;
18
+ /** Honor `prefers-reduced-motion: reduce` (snap to gone, then hand off). Default true. */
19
+ respectReducedMotion?: boolean;
20
+ /**
21
+ * Fired ONCE when the CTA has landed on the dock control (the hand-off seam) — the
22
+ * consumer hides the CTA + activates the dock control here. Fires on the animation
23
+ * settle AND on the PRM/no-target snap (the gesture always completes).
24
+ */
25
+ onReceived?: () => void;
26
+ }
27
+ export interface UseDockCtaReceiveReturn {
28
+ /**
29
+ * Morph the CTA into the dock control. Idempotent per call — measures the CTA +
30
+ * dock-control rects fresh, drives the spring 0→1 (fly+reshape+fade+congest). A
31
+ * no-op if the CTA element is not yet mounted (no `onReceived`).
32
+ */
33
+ receive: () => void;
34
+ /**
35
+ * Clear the morph transform (restore the CTA to its own rect, opacity 1) — the
36
+ * abort/reset seam. Cancels any in-flight morph; does NOT fire `onReceived`.
37
+ */
38
+ reset: () => void;
39
+ /**
40
+ * ARM the landing SEAT (BC.W-AX-DOCK-CTA-SEAT). Writes `data-cta-pending` on the
41
+ * `dockControl` element so the seat partial (`src/styles/dock/cta-seat.css`) paints
42
+ * a dim ghost AND reserves the resting control footprint (a STATIC `min-inline-size`
43
+ * /`min-block-size` off `--dock-control-size`/`--dock-layer-height`) — the dock box
44
+ * is already at the seated width, so it does NOT jump when the CTA lands. Idempotent.
45
+ * A no-op when the `dockControl` is not yet mounted. Sets `pending.value = true`.
46
+ */
47
+ setPending: () => void;
48
+ /**
49
+ * CLEAR the seat. Removes `data-cta-pending` from the `dockControl`, so the seat
50
+ * reveals its real content with the FLIP `transition: opacity` (the partial owns the
51
+ * paint — a calm content fade, NOT the dock morph-stagger). Idempotent. The default
52
+ * `onReceived` flow calls this on hand-off (the seat reveals as the CTA lands) unless
53
+ * the consumer drives it manually. Sets `pending.value = false`.
54
+ */
55
+ clearPending: () => void;
56
+ /** The reactive seat state — the consumer binds `:class`/`v-if` off it. */
57
+ pending: Readonly<Ref<boolean>>;
58
+ }
59
+ /**
60
+ * The external-CTA-into-dock-control morph. Composes the SAME kf `ElementMorph` +
61
+ * `springTimingFunction` substrate `useLiquidReveal` activates, driven FORWARD (the
62
+ * reveal's inverse): the CTA flies + reshapes from its own rect onto the dock
63
+ * control's rect, fades + congests into the glass on the spring clock, then hands off.
64
+ * Compositor-only + PRM-seats. See the module header for the REUSE + the FORWARD-play
65
+ * mechanism + the channel split.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const { receive, setPending, clearPending, pending, reset } = useDockCtaReceive(
70
+ * ctaRef,
71
+ * {
72
+ * dockControl: dockTargetRef,
73
+ * preset: "snappy",
74
+ * onReceived: () => (ctaConsumed.value = true),
75
+ * },
76
+ * )
77
+ * // ARM the seat (the dock control shows the dim ghost + reserves its footprint).
78
+ * setPending()
79
+ * // on the CTA click: morph it into the dock (the default hand-off clearPending()s,
80
+ * // revealing the seated content with the opacity FLIP — no box jump).
81
+ * function onCta() { receive() }
82
+ * ```
83
+ */
84
+ export declare function useDockCtaReceive(cta: Ref<HTMLElement | null>, options: UseDockCtaReceiveOptions): UseDockCtaReceiveReturn;
@@ -0,0 +1,77 @@
1
+ import { type ComputedRef, type Ref } from "vue";
2
+ /** The morph axis — `"x"` tracks the inline (horizontal) travel, `"y"` the block. */
3
+ export type DragMorphAxis = "x" | "y";
4
+ /**
5
+ * One snap target on the drag axis. `value` is the consumer's domain value (the
6
+ * tab/layer id) committed via `onSnap`; `center` is the target's center coordinate
7
+ * in the SAME px space the drag tracks (the element's offset-axis center).
8
+ */
9
+ export interface DragMorphSnapTarget<V = string> {
10
+ value: V;
11
+ center: number;
12
+ }
13
+ export interface UseDragMorphParams<V = string> {
14
+ /** The draggable element ref (the indicator/handle the gesture captures). */
15
+ el: Ref<HTMLElement | null>;
16
+ /** The morph axis (`"x"` horizontal · `"y"` vertical). May be a getter. */
17
+ axis: DragMorphAxis | (() => DragMorphAxis);
18
+ /**
19
+ * The ordered snap targets, resolved off the consumer's geometry (the
20
+ * center-anchored button/layer centers). May be a getter so a re-measure
21
+ * (a resize, an option change) re-resolves them without reconstruction.
22
+ */
23
+ snapTargets: readonly DragMorphSnapTarget<V>[] | (() => readonly DragMorphSnapTarget<V>[]);
24
+ /**
25
+ * The live cap getter for the squish (`--tab-indicator-max-stretch`, ≤1.08).
26
+ * Defaults to the shared 1.08 fence; a getter re-reads the cascade override.
27
+ */
28
+ maxStretch?: () => number;
29
+ /**
30
+ * Fired ONCE on settle at the nearest snap with the committed value. The
31
+ * consumer writes its `v-model` here — the single source of truth.
32
+ */
33
+ onSnap: (value: V) => void;
34
+ /** Honor `prefers-reduced-motion: reduce` (squish off, instant snap). Default true. */
35
+ respectReducedMotion?: boolean;
36
+ }
37
+ export interface UseDragMorphReturn {
38
+ /** True while a pointer gesture is in progress (down, not yet settled). */
39
+ dragging: Readonly<Ref<boolean>>;
40
+ /** The live drag position on the morph axis (px), for diagnostics/tests. */
41
+ position: Readonly<Ref<number>>;
42
+ /** The live squish scalar (≥1, capped at the live cap). 1 at rest / under PRM. */
43
+ stretch: Readonly<Ref<number>>;
44
+ /** The `transform: translate` style the consumer binds on the morph element. */
45
+ dragStyle: ComputedRef<Record<string, string>>;
46
+ /**
47
+ * Re-resolve the snap centers + axis (kf reads `snap` at construction, so a
48
+ * geometry change — a resize, an option change, an orientation flip — calls
49
+ * this to rebuild the `Draggable` over the SAME reused spring). Idempotent;
50
+ * a no-op while a gesture is in flight (the rebuild waits for settle).
51
+ */
52
+ refresh: () => void;
53
+ /** Tear down — detach the `Draggable`, dispose the spring + watchers. */
54
+ detach: () => void;
55
+ }
56
+ /**
57
+ * The abstract pull/drag-to-morph-squish gesture. Composes kf `Draggable`
58
+ * (pointer-capture follow + velocity + snap-aware fling) + `SpringProgress` (the
59
+ * physics core) + `useLiquidFlex` (`"tanh"` velocity-squish) into ONE gesture with
60
+ * a consumer-wired single-commit `onSnap`. See the module header for the REUSE +
61
+ * compositor-only + PRM rationale.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const { dragging, stretch, dragStyle, detach } = useDragMorph({
66
+ * el: indicatorRef,
67
+ * axis: () => (isVertical.value ? "y" : "x"),
68
+ * snapTargets: () => buttonRefs.value.map((b, i) => ({
69
+ * value: options.value[i].value,
70
+ * center: b.offsetLeft + b.offsetWidth / 2,
71
+ * })),
72
+ * maxStretch: () => readCap(),
73
+ * onSnap: (v) => { model.value = v },
74
+ * })
75
+ * ```
76
+ */
77
+ export declare function useDragMorph<V = string>(params: UseDragMorphParams<V>): UseDragMorphReturn;
@@ -53,6 +53,17 @@ export interface UseLiquidFlexReturn {
53
53
  /**
54
54
  * The size as a CSS length style object, keyed on `axis` (`{ width: "Npx" }` or
55
55
  * `{ height: "Npx" }`). Bind on the morphing element's style.
56
+ *
57
+ * DOCTRINE (BB.W-MOTION-CANON, P5 — the SIZESTYLE-LATENT record): `sizeStyle`
58
+ * is the SETTLED-FOOTPRINT writer — a one-time reserve of the morph TARGET box
59
+ * (the FLIP-measured `to` span), NEVER the per-frame animation channel. The
60
+ * per-frame channel is `transform` (the `stretchStyle` `--stretch` reciprocal
61
+ * scale, a compositor property). Binding `sizeStyle` to a CONTINUOUSLY-animated
62
+ * element animates `width`/`height` per frame OFF the compositor (the A'-3
63
+ * reflow-storm class proof:no-layout-animation forbids library-wide) — FORBIDDEN
64
+ * by the canon. Write the reserved footprint ONCE at the morph endpoint, then
65
+ * drive the visible motion through `stretchStyle`/`transform`. See
66
+ * `docs/precepts/motion-canon.md` P5.
56
67
  */
57
68
  sizeStyle: ComputedRef<Record<string, string>>;
58
69
  /**
@@ -0,0 +1,71 @@
1
+ import { type CSSProperties, type ComputedRef, type Ref } from "vue";
2
+ import { type UseSpringPressOptions } from "./useSpringPress";
3
+ export interface UseLiquidPressOptions extends UseSpringPressOptions {
4
+ /**
5
+ * The uniform press SHRINK depth — the contraction the press scale reaches at
6
+ * `t=1` (the iOS uniform shrink the reciprocal squish deforms AROUND). The X axis
7
+ * reads `shrink·stretch`, the Y axis `shrink/stretch` (the volume preserved on the
8
+ * travel axis). Default 0.03 (the button `--scale-press-btn` 0.97 magnitude — the
9
+ * JS path AGREES with the CSS `.tap-squish active:scale` floor). A calmer surface
10
+ * (the dock control's no-overshoot tap register) passes a smaller depth.
11
+ */
12
+ shrinkDepth?: number;
13
+ /**
14
+ * The LOW reciprocal-squish cap handed to `useLiquidFlex` (the +N% elongation along
15
+ * the travel axis). Default 1.04 (a button has no size span — the deform is a
16
+ * lively settle, never a taffy-pull). Kept LOW by the liquid register.
17
+ */
18
+ maxStretch?: number;
19
+ /**
20
+ * The custom-property NAME the live press value (0..1) is written under, for the
21
+ * surface CSS to read for the coupled brightness/specular leg. Default
22
+ * `"--press-t"`. Button passes `"--glass-btn-press-t"` (the W-BUTTON-GLASS drive
23
+ * the gleam already reads); the dock control passes `"--dock-press-t"`.
24
+ */
25
+ pressVar?: string;
26
+ /**
27
+ * Below this travel threshold the inline `scale` is OMITTED from `pressStyle` so the
28
+ * surface's at-rest CVA/utility transforms (a hover `scale`) win unimpeded; the JS
29
+ * reciprocal scale wins ONLY while the press is engaged (the single-source press,
30
+ * then yields back to the cascade as it settles). Default 0.001.
31
+ */
32
+ engageThreshold?: number;
33
+ }
34
+ export interface UseLiquidPressReturn {
35
+ /** The live spring press value (0 released → 1 pressed, with the spring overshoot). */
36
+ value: Readonly<Ref<number>>;
37
+ /** Drive the press to 1 (call on `pointerdown`). Interruptible — re-targets the live spring. */
38
+ press: () => void;
39
+ /** Release the press to 0 (call on `pointerup`/`cancel`/`leave`). */
40
+ release: () => void;
41
+ /** Pointer handlers ready to spread onto an element (the `useSpringPress` ergonomics). */
42
+ handlers: {
43
+ onPointerdown: () => void;
44
+ onPointerup: () => void;
45
+ onPointercancel: () => void;
46
+ onPointerleave: () => void;
47
+ };
48
+ /**
49
+ * The coupled press style — the ONE `:style` object a consumer binds. Carries the
50
+ * reciprocal X/Y `scale` (engaged only past `engageThreshold`) AND the `pressVar`
51
+ * 0..1 drive scalar the surface CSS reads for the brightness/specular leg.
52
+ * Compositor-only (`scale` + a custom property — never a layout property).
53
+ */
54
+ pressStyle: ComputedRef<CSSProperties>;
55
+ }
56
+ /**
57
+ * The ONE interruptible, coupled spring-press. Composes `useSpringPress` (the spring
58
+ * driver, PRM-aware) + `useLiquidFlex` (the volume-preserving reciprocal squish) and
59
+ * exposes a single `pressStyle` object + the pointer `handlers`.
60
+ *
61
+ * @example
62
+ * ```vue
63
+ * <script setup>
64
+ * const press = useLiquidPress()
65
+ * </script>
66
+ * <template>
67
+ * <button v-bind="press.handlers" :style="press.pressStyle" />
68
+ * </template>
69
+ * ```
70
+ */
71
+ export declare function useLiquidPress(options?: UseLiquidPressOptions): UseLiquidPressReturn;
@@ -0,0 +1,51 @@
1
+ import { type Ref } from "vue";
2
+ import { type SpringPresetName } from "./springPresets";
3
+ /** The reveal spring register — `snappy` (the quick app-open default) or `bouncy`
4
+ * (the emphatic large-dialog bloom). A subset of the named `SPRING_PRESETS` rows. */
5
+ export type LiquidRevealPreset = Extract<SpringPresetName, "snappy" | "bouncy">;
6
+ export interface UseLiquidRevealOptions {
7
+ /**
8
+ * The trigger element the surface blooms FROM — the source rect (the button, the
9
+ * collapsed dock pill). When null at reveal time, the bloom degrades to a
10
+ * center-anchored scale-from-self (the no-trigger fallback — still spring-clocked,
11
+ * never the flat bezier zoom).
12
+ */
13
+ trigger?: Ref<HTMLElement | null>;
14
+ /** The spring register (default `snappy`). */
15
+ preset?: LiquidRevealPreset;
16
+ /** The starting backdrop-blur radius in px (the decongest start). Default 4. */
17
+ blur?: number;
18
+ /** Honor `prefers-reduced-motion: reduce` (snap to settled, fade only). Default true. */
19
+ respectReducedMotion?: boolean;
20
+ }
21
+ export interface UseLiquidRevealReturn {
22
+ /**
23
+ * Bloom the surface open from the trigger's rect. Idempotent per call — measures
24
+ * the trigger + settled rects fresh, drives the inversion spring 1→0. A no-op if
25
+ * the surface element is not yet mounted.
26
+ */
27
+ reveal: () => void;
28
+ /**
29
+ * Snap the surface to its settled identity (clear the bloom transform/blur). The
30
+ * EXIT is the CSS recipe's `--ease-out` no-overshoot leg (a closing surface must
31
+ * not overshoot past gone) — this leaf clears the enter transform so the recipe's
32
+ * exit owns the close.
33
+ */
34
+ conceal: () => void;
35
+ }
36
+ /**
37
+ * The iOS-27 source-rect bloom. Composes the dormant kf `ElementMorph` +
38
+ * `springTimingFunction` into the three-channel liquid open (scale+fade+blur-settle
39
+ * from the trigger's origin), compositor-only + PRM-snap. See the module header for
40
+ * the REUSE + bloom-mechanism (FLIP inversion) + the channel split.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * const { reveal, conceal } = useLiquidReveal(surfaceRef, {
45
+ * trigger: triggerRef,
46
+ * preset: "bouncy",
47
+ * })
48
+ * watch(open, (o) => (o ? reveal() : conceal()))
49
+ * ```
50
+ */
51
+ export declare function useLiquidReveal(surface: Ref<HTMLElement | null>, options?: UseLiquidRevealOptions): UseLiquidRevealReturn;
@@ -30,9 +30,9 @@ export interface UseNumericTransitionOptions<K extends string> {
30
30
  * (a name now resolves only through the ASYNC `resolveEasing`, which crosses
31
31
  * the value.js dynamic boundary the dock/motion light surface must never
32
32
  * pull in). Narrowing glass-ui's public option to a callable decouples it
33
- * from keyframes' name-resolution churn AND is assignable to every supported
34
- * keyframes major (2.2 / 3 / 4). A consumer wanting a named curve passes the
35
- * function directly (e.g. `(t) => 1 - Math.pow(1 - t, 3)` for easeOutCubic).
33
+ * from keyframes' name-resolution churn. A consumer wanting a named curve
34
+ * passes the function directly (e.g. `(t) => 1 - Math.pow(1 - t, 3)` for
35
+ * easeOutCubic).
36
36
  */
37
37
  timingFunction?: TimingFunction;
38
38
  /** Per-frame consumer. Receives the same zero-allocation record each tick. */
@@ -0,0 +1,98 @@
1
+ import { type Ref } from "vue";
2
+ /** A 2-vector in normalized-host space (0..1 across the host box). */
3
+ export interface PointerVec2 {
4
+ x: number;
5
+ y: number;
6
+ }
7
+ export interface UsePointerVelocityFieldOptions {
8
+ /**
9
+ * The smoothing rate for the eased POSITION (0..1 per second-equivalent; higher
10
+ * = snappier approach). Default 0.22 (the cursorModel `CURSOR_POS_LERP` snappy
11
+ * register). The viz reads `position`/`smoothedPosition`; the velocity is its
12
+ * derivative.
13
+ */
14
+ positionLerp?: number;
15
+ /**
16
+ * The smoothing rate for the derived VELOCITY (0..1; higher = velocity tracks the
17
+ * live delta faster, lower = a longer momentum tail). Default 0.3 (the cursorModel
18
+ * `CURSOR_VELOCITY_LERP`).
19
+ */
20
+ velocityLerp?: number;
21
+ /**
22
+ * The smoothing rate for the derived ACCELERATION (0..1). Default 0.3 — the accel
23
+ * term tracks the velocity-delta on the same register as the velocity itself.
24
+ */
25
+ accelerationLerp?: number;
26
+ /**
27
+ * The per-tick burst decay multiplier (the transient swirl-impulse a fast flick
28
+ * injects, decaying over ~1s). Default 0.96 (the cursorModel
29
+ * `CURSOR_BURST_DECAY_PER_FRAME`, ≈0.96^60≈0.09 after 1s at 60fps).
30
+ */
31
+ burstDecay?: number;
32
+ /**
33
+ * Honor `prefers-reduced-motion: reduce` → `tick(0)` freeze (no live velocity).
34
+ * Default true. (A deterministic viz capture that ACCEPTS live dynamics opts out.)
35
+ */
36
+ respectReducedMotion?: boolean;
37
+ }
38
+ export interface UsePointerVelocityField {
39
+ /** True while the pointer is over the host (down between enter and leave). */
40
+ readonly active: Readonly<Ref<boolean>>;
41
+ /** The RAW live pointer target in normalized-host space (0..1), pre-smoothing. */
42
+ readonly position: Readonly<Ref<PointerVec2>>;
43
+ /** The eased/smoothed pointer position the velocity derives from (0..1). */
44
+ readonly smoothedPosition: Readonly<Ref<PointerVec2>>;
45
+ /** The smoothed pointer VELOCITY (normalized-host units per second). */
46
+ readonly velocity: Readonly<Ref<PointerVec2>>;
47
+ /** The scalar velocity magnitude (`hypot(velocity)`), the common viz read. */
48
+ readonly speed: Readonly<Ref<number>>;
49
+ /** The smoothed pointer ACCELERATION (the second derivative — the accel term). */
50
+ readonly acceleration: Readonly<Ref<PointerVec2>>;
51
+ /** The transient flick-burst impulse (0..1, decays over ~1s). */
52
+ readonly burst: Readonly<Ref<number>>;
53
+ /**
54
+ * The `@pointermove` handler — schedules NO frame; it only stashes the raw target
55
+ * (PRM-gated). The renderer's `tick` does the smoothing/derivation on its OWN
56
+ * frame. Bind on the host (or call `setPointer` directly from a custom listener).
57
+ */
58
+ onPointerMove: (event: PointerEvent) => void;
59
+ /** Bind on the host `@pointerenter` (sets `active`). */
60
+ onPointerEnter: () => void;
61
+ /** Bind on the host `@pointerleave` (clears `active`; the field decays to rest). */
62
+ onPointerLeave: () => void;
63
+ /**
64
+ * Set the raw pointer target directly in normalized-host space (0..1) — for a
65
+ * viz that already owns its pointer→uv mapping (a WebGPU surface reading
66
+ * clip-space coords). PRM-gated like `onPointerMove`.
67
+ */
68
+ setPointer: (xNorm: number, yNorm: number) => void;
69
+ /**
70
+ * Advance the physics ONE renderer frame. The viz calls this from INSIDE its
71
+ * existing frame callback with the frame `delta` (ms). NO own rAF — the renderer
72
+ * owns the loop. Under PRM (or an explicit `tick(0)`) the field freezes to rest
73
+ * (no live velocity). Returns the live field (so a renderer can read inline).
74
+ */
75
+ tick: (deltaMs: number) => void;
76
+ /** Snap the whole field to rest (position held, velocity/accel/burst zeroed). */
77
+ reset: () => void;
78
+ /** Tear down the cached PRM listener (auto-run on scope dispose). */
79
+ dispose: () => void;
80
+ }
81
+ /**
82
+ * The shared viz-pointer-physics field — pointer POSITION + derived VELOCITY +
83
+ * derived ACCELERATION (the accel term), advanced by the renderer's frame `tick`
84
+ * (NO own rAF), frozen under PRM (`tick(0)`). The procedural-viz family reads the
85
+ * field for pointer dynamics; the position is event-driven, the derivatives are
86
+ * computed in `tick`.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const field = usePointerVelocityField()
91
+ * // in the renderer's frame callback (the ONE loop the canvas lifecycle owns):
92
+ * function onFrame({ delta }) {
93
+ * field.tick(delta) // advance the physics, no second rAF
94
+ * uploadUniforms({ vel: field.velocity.value, accel: field.acceleration.value })
95
+ * }
96
+ * ```
97
+ */
98
+ export declare function usePointerVelocityField(options?: UsePointerVelocityFieldOptions): UsePointerVelocityField;
@@ -0,0 +1,58 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ export interface UseScrollChromeOptions {
3
+ /** Opt-in: collapse on scroll. DEFAULT FALSE — persistent-by-default (the iOS-27 lesson). */
4
+ collapseOnScroll?: boolean;
5
+ /** The flip-delta debounce (px) before a direction flip commits. Default 8 (the reader's). */
6
+ flipDeltaPx?: number;
7
+ /**
8
+ * Optional velocity gate (px/s): a flick over this collapses/expands IMMEDIATELY,
9
+ * a slow drag respects the threshold. Default off (undefined).
10
+ */
11
+ velocityGate?: number;
12
+ /** Snap-to-nearest commits past this fraction of the collapse range on scroll-STOP. Default 0.5. */
13
+ snapMidpoint?: number;
14
+ /**
15
+ * The scroll distance over which the chrome travels 0→1 collapsed (px). Default 116
16
+ * (the citymall headerHeight×2 reference) — the trigger-point span.
17
+ */
18
+ collapseRangePx?: number;
19
+ /**
20
+ * The chrome element (a dock, a header). When provided, the composable WRITES
21
+ * `--chrome-collapse-t` onto it directly (the JS leg of the dual-path single-writer)
22
+ * so the `.scroll-chrome` recipe reads it with no consumer `:style` plumbing. When
23
+ * absent, the consumer reads the `collapseT` ref and applies it itself.
24
+ */
25
+ chromeRef?: MaybeRefOrGetter<HTMLElement | null>;
26
+ /** Honor `prefers-reduced-motion: reduce` (drop the ramp to a discrete snap). Default true. */
27
+ respectReducedMotion?: boolean;
28
+ /**
29
+ * The scroll-STOP debounce window (ms) — the no-tick window after which the snap
30
+ * commits (the `onMomentumScrollEnd` analogue). Default 140 (a calm post-scroll beat).
31
+ */
32
+ scrollStopMs?: number;
33
+ }
34
+ export interface UseScrollChromeReturn {
35
+ /** 0..1 collapse fraction (drives the consumer's transform/opacity ramp). */
36
+ collapseT: Ref<number>;
37
+ /** True once collapseT past snapMidpoint (the discrete state). */
38
+ collapsed: Ref<boolean>;
39
+ /** Committed scroll direction (from the reader). */
40
+ direction: Ref<"down" | "up" | null>;
41
+ /** Force a re-read + re-evaluate (post-resize). */
42
+ recalculate: () => void;
43
+ }
44
+ /**
45
+ * The floating-chrome collapse-state machine. COMPOSES `useScrollTrigger` (the ONE
46
+ * scroll reader); ramps `collapseT` on direction + `collapseRangePx`; the optional
47
+ * `velocityGate` short-circuits on a flick; snaps to the nearest endpoint on scroll-stop.
48
+ * Writes `--chrome-collapse-t` onto `chromeRef` (when given). PERSISTENT by default
49
+ * (`collapseOnScroll: false`).
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * const header = ref<HTMLElement | null>(null)
54
+ * useScrollChrome(() => window, { collapseOnScroll: true, chromeRef: header })
55
+ * // header.style sets --chrome-collapse-t; the .scroll-chrome recipe reads it.
56
+ * ```
57
+ */
58
+ export declare function useScrollChrome(scrollContainer: MaybeRefOrGetter<HTMLElement | Window | null>, opts?: UseScrollChromeOptions): UseScrollChromeReturn;