@mkbabb/glass-ui 4.1.0 → 4.2.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 (430) hide show
  1. package/dist/{CardAction-8whJrLWt.js → CardAction-DlVP2evz.js} +58 -54
  2. package/dist/{CommandShortcut-D3yxgHNn.js → CommandShortcut-By-VQcLO.js} +3 -3
  3. package/dist/{ConfiguratorRow-CaP7U3ZA.js → ConfiguratorRow-YMXdINHx.js} +3 -3
  4. package/dist/{ContextMenuContent-B3ZsheLV.js → ContextMenuContent-CMWn6huB.js} +1 -1
  5. package/dist/{ContextMenuSubContent-DDRID3qC.js → ContextMenuSubContent-DvwWCUc0.js} +1 -1
  6. package/dist/{DataTable-Bc9kUtu_.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/{DialogScrollContent-TTuovQst.js → DialogScrollContent-BMekN7gq.js} +1 -1
  9. package/dist/{FadingScroll-DLRbH5Xr.js → FadingScroll-P8B30rAD.js} +1 -1
  10. package/dist/{HoverCardContent-Bel1gdLZ.js → HoverCardContent-DAmGYglo.js} +1 -1
  11. package/dist/{HoverPopover-BcIxvyqZ.js → HoverPopover-DYpBOzzF.js} +1 -1
  12. package/dist/{IconChip-DhbdGdFQ.js → IconChip-CQa7XZYc.js} +7 -5
  13. package/dist/{IconTooltip-B0zimd2H.js → IconTooltip-_df8M3xm.js} +1 -1
  14. package/dist/{Input-Cg9DF62r.js → Input-CyU4_hIC.js} +2 -2
  15. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  16. package/dist/{Notification-CphK7AAm.js → Notification-BlSPJhtZ.js} +1 -1
  17. package/dist/{NumberFieldContent-D8cXeyO4.js → NumberFieldContent-Z3VxGu_6.js} +3 -3
  18. package/dist/PagerDots-CYlqVFd4.js +196 -0
  19. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  20. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  21. package/dist/{Progress-CnqB7gLm.js → Progress-C9SsdwIZ.js} +1 -1
  22. package/dist/{ScrollingText-CTZbA_cG.js → ScrollingText-DY3W1Jfh.js} +2 -2
  23. package/dist/{SelectScrollDownButton-DAKCBEdW.js → SelectScrollDownButton-3mFHX_R-.js} +15 -12
  24. package/dist/{Switch-B8RscmRu.js → Switch-uf-UKPA2.js} +1 -1
  25. package/dist/{Toaster-D9qIHjBI.js → Toaster-ozrsR4mP.js} +1 -1
  26. package/dist/{ToggleGroupItem-BLtr3TJq.js → ToggleGroupItem-BpzaVzNm.js} +4 -4
  27. package/dist/{TooltipProvider-BJ_Y5EGX.js → TooltipProvider-QQVM_80r.js} +1 -1
  28. package/dist/animated-digit.js +2 -2
  29. package/dist/api/index.d.ts +1 -0
  30. package/dist/api/types-extra.d.ts +3 -1
  31. package/dist/api.js +2 -2
  32. package/dist/aurora.js +163 -131
  33. package/dist/badge-Bt14yURi.js +72 -0
  34. package/dist/badge.js +1 -1
  35. package/dist/border-progress.js +1 -1
  36. package/dist/button-D1W9PrzI.js +130 -0
  37. package/dist/button.js +1 -1
  38. package/dist/canvas.js +1 -1
  39. package/dist/card.js +1 -1
  40. package/dist/carousel.js +227 -98
  41. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  42. package/dist/collapsible.js +1 -1
  43. package/dist/color.js +1 -1
  44. package/dist/command.js +1 -1
  45. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  46. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/presets.d.ts +29 -0
  48. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  49. package/dist/components/custom/aurora/index.d.ts +1 -1
  50. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  51. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +8 -3
  52. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +8 -4
  53. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  54. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -4
  55. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  56. package/dist/components/custom/concentric/constants.d.ts +62 -41
  57. package/dist/components/custom/concentric/index.d.ts +2 -2
  58. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  59. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  60. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  61. package/dist/components/custom/configurator/index.d.ts +1 -1
  62. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  63. package/dist/components/custom/dock/DockIconButton.vue.d.ts +10 -0
  64. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  65. package/dist/components/custom/dock/DockStack.vue.d.ts +35 -22
  66. package/dist/components/custom/dock/GlassDock.vue.d.ts +19 -3
  67. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  68. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +76 -145
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  71. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  72. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  73. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  74. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +38 -0
  75. package/dist/components/custom/dock/constants.d.ts +14 -3
  76. package/dist/components/custom/dock/index.d.ts +3 -0
  77. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +21 -0
  78. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  79. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  80. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  81. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  82. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +28 -2
  83. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -17
  84. package/dist/components/custom/dot-flow-field/constants.d.ts +51 -0
  85. package/dist/components/custom/dot-flow-field/index.d.ts +1 -1
  86. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  87. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +29 -0
  88. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  89. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +10 -1
  90. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +7 -0
  91. package/dist/components/custom/dot-matrix/constants.d.ts +14 -0
  92. package/dist/components/custom/dot-matrix/index.d.ts +1 -1
  93. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +2 -2
  94. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -1
  95. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +4 -0
  96. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +9 -0
  97. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +11 -0
  98. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +16 -1
  99. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +22 -1
  100. package/dist/components/custom/fourier-field/constants.d.ts +53 -0
  101. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +1 -1
  102. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
  103. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  104. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  105. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  106. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  107. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  108. package/dist/components/custom/goo-blob/types.d.ts +50 -1
  109. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +32 -3
  110. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +14 -4
  111. package/dist/components/custom/goo-dot-matrix/constants.d.ts +55 -16
  112. package/dist/components/custom/goo-dot-matrix/index.d.ts +1 -1
  113. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +2 -0
  114. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +1 -0
  115. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  116. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  117. package/dist/components/custom/handmark/brush.d.ts +17 -17
  118. package/dist/components/custom/handmark/constants.d.ts +28 -8
  119. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  120. package/dist/components/custom/handmark/index.d.ts +1 -1
  121. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  122. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  123. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +44 -29
  124. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +2 -0
  125. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +3 -1
  126. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +2 -2
  127. package/dist/components/custom/paper-grid/constants.d.ts +44 -6
  128. package/dist/components/custom/paper-grid/index.d.ts +2 -2
  129. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +1 -1
  130. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -1
  131. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  132. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +12 -20
  133. package/dist/components/custom/tabs/constants.d.ts +16 -8
  134. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  135. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  136. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  137. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +12 -10
  138. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  139. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  140. package/dist/components/ui/badge/index.d.ts +1 -0
  141. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  142. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  143. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  144. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  145. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  146. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  147. package/dist/components/ui/drawer/constants.d.ts +8 -6
  148. package/dist/components/ui/drawer/index.d.ts +12 -2
  149. package/dist/components/ui/select/SelectContent.vue.d.ts +9 -0
  150. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  151. package/dist/composables/dom/index.d.ts +1 -0
  152. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  153. package/dist/composables/glass/wave/index.d.ts +4 -0
  154. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  155. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  156. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  157. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +95 -2
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  159. package/dist/composables/glass/webgpu/index.d.ts +1 -0
  160. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +37 -0
  161. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +49 -2
  162. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +1 -1
  163. package/dist/composables/motion/core/index.d.ts +4 -0
  164. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  165. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  166. package/dist/composables/motion/index.d.ts +2 -0
  167. package/dist/composables/motion/springPresets.d.ts +16 -17
  168. package/dist/composables/motion/suite.d.ts +2 -2
  169. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  170. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  171. package/dist/composables/motion/useDockCtaReceive.d.ts +10 -28
  172. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  173. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  174. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  175. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  176. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  177. package/dist/composables/motion/useMorphField.d.ts +157 -0
  178. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  179. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  180. package/dist/concentric.js +532 -563
  181. package/dist/configurator.js +2 -2
  182. package/dist/confirm-dialog.js +3 -3
  183. package/dist/constellation.js +4 -4
  184. package/dist/context-menu.js +2 -2
  185. package/dist/controls.js +2 -2
  186. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  187. package/dist/dark.js +1 -1
  188. package/dist/data-table.js +1 -1
  189. package/dist/deck.js +1 -1
  190. package/dist/dialog.js +3 -3
  191. package/dist/dock.js +1163 -618
  192. package/dist/dockContext-gFVS2gMg.js +18 -0
  193. package/dist/dom.js +7 -6
  194. package/dist/dot-flow-field.js +1114 -523
  195. package/dist/dot-matrix.js +348 -204
  196. package/dist/drawer.js +106 -96
  197. package/dist/{dropdown-menu-aJmV5SqE.js → dropdown-menu-CCfcCQ68.js} +3 -3
  198. package/dist/dropdown-menu.js +1 -1
  199. package/dist/easing.js +3 -3
  200. package/dist/expandable-container.js +2 -2
  201. package/dist/fading-scroll.js +1 -1
  202. package/dist/forms.js +6 -6
  203. package/dist/fourier-field.js +441 -197
  204. package/dist/fourier-math.js +1 -1
  205. package/dist/glass-panel.js +2 -2
  206. package/dist/glass-ui.css +1 -1
  207. package/dist/glass-ui.js +139 -135
  208. package/dist/goo-blob.js +11 -9
  209. package/dist/goo-dot-matrix.js +418 -198
  210. package/dist/handmark.js +137 -94
  211. package/dist/header-ribbon.js +1 -1
  212. package/dist/hover-card.js +1 -1
  213. package/dist/hover-popover.js +1 -1
  214. package/dist/icon-chip.js +1 -1
  215. package/dist/icon-tooltip.js +1 -1
  216. package/dist/index.d.ts +3 -0
  217. package/dist/instrument-chassis.js +1 -1
  218. package/dist/keyboard.js +1 -1
  219. package/dist/label.js +1 -1
  220. package/dist/labeled-field.js +7 -7
  221. package/dist/metric-badge.js +1 -1
  222. package/dist/metric-cell.js +1 -1
  223. package/dist/metric-stack.js +1 -1
  224. package/dist/motion-core.js +42 -39
  225. package/dist/motion-curves.js +20 -14
  226. package/dist/motion.js +226 -26
  227. package/dist/notification.js +1 -1
  228. package/dist/number-field.js +1 -1
  229. package/dist/pager-dots.js +1 -1
  230. package/dist/paper-backdrop.js +1 -1
  231. package/dist/paper-grid.js +315 -342
  232. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  233. package/dist/popover.js +1 -1
  234. package/dist/{presets-CvOUqtdY.js → presets-QvYgnFIZ.js} +13 -12
  235. package/dist/progress.js +1 -1
  236. package/dist/pulse.js +1 -1
  237. package/dist/reactive.js +2 -2
  238. package/dist/{resolveCanvasColor-yPyIpJt9.js → resolveCanvasColor-DsSJk06I.js} +5 -5
  239. package/dist/scrolling-text.js +1 -1
  240. package/dist/search.js +7 -7
  241. package/dist/select.js +3 -3
  242. package/dist/selectable-chip.js +18 -35
  243. package/dist/separator.js +1 -1
  244. package/dist/{sheet-B2flBfLH.js → sheet-DUCIoOe0.js} +3 -3
  245. package/dist/sheet.js +1 -1
  246. package/dist/sidebar.js +1 -1
  247. package/dist/slider-CcICPe3u.js +149 -0
  248. package/dist/slider.js +1 -1
  249. package/dist/sortable-list.js +3 -3
  250. package/dist/{spectrum-walk-BVzA7Biz.js → spectrum-walk-cBNSx_zm.js} +1 -1
  251. package/dist/springPresets-DfoQ6XRY.js +64 -0
  252. package/dist/stacked-icons.js +54 -39
  253. package/dist/styles/cards.css +202 -2
  254. package/dist/styles/components.css +1 -3
  255. package/dist/styles/configurator.css +172 -7
  256. package/dist/styles/critical-partition.mjs +35 -2
  257. package/dist/styles/deferred.css +2 -0
  258. package/dist/styles/dock/adaptive-legibility.css +119 -0
  259. package/dist/styles/dock/density.css +18 -10
  260. package/dist/styles/dock/fission-bridge.css +552 -0
  261. package/dist/styles/dock/layers.css +88 -124
  262. package/dist/styles/dock/morph-bridge.css +15 -2
  263. package/dist/styles/dock/morph.css +45 -114
  264. package/dist/styles/dock/shape.css +137 -11
  265. package/dist/styles/dock/shell.css +1 -3
  266. package/dist/styles/dock/stack-rail.css +95 -7
  267. package/dist/styles/dock-controls/icon-button.css +34 -2
  268. package/dist/styles/dock-controls/triggers.css +23 -1
  269. package/dist/styles/dock-controls.css +18 -0
  270. package/dist/styles/dock.css +16 -1
  271. package/dist/styles/drawer.css +166 -0
  272. package/dist/styles/glass/glass-atom.css +244 -0
  273. package/dist/styles/glass/glass-capsule.css +143 -0
  274. package/dist/styles/glass/glass-chip.css +215 -0
  275. package/dist/styles/glass/liquid-enter.css +252 -0
  276. package/dist/styles/glass/liquid-morph.css +850 -0
  277. package/dist/styles/glass/material.css +70 -1
  278. package/dist/styles/glass/reveal.css +22 -2
  279. package/dist/styles/glass/rim.css +13 -1
  280. package/dist/styles/glass/surfaces.css +18 -8
  281. package/dist/styles/glass.css +11 -0
  282. package/dist/styles/icon-chip.css +45 -0
  283. package/dist/styles/index.css +11 -0
  284. package/dist/styles/jubilance.css +65 -0
  285. package/dist/styles/motion/morph-field.css +229 -0
  286. package/dist/styles/paper.css +230 -14
  287. package/dist/styles/scroll-choreography.css +135 -78
  288. package/dist/styles/segmented-tabs.css +85 -51
  289. package/dist/styles/select.css +151 -0
  290. package/dist/styles/tokens/color-radius.css +1 -1
  291. package/dist/styles/tokens/dark-arm.css +57 -8
  292. package/dist/styles/tokens/glass-deep.css +8 -4
  293. package/dist/styles/tokens/glass-fx.css +80 -2
  294. package/dist/styles/tokens/glass.css +140 -8
  295. package/dist/styles/tokens/light-dark.css +2 -2
  296. package/dist/styles/tokens/property-regs.css +144 -0
  297. package/dist/styles/tokens/scale-paper.css +20 -8
  298. package/dist/styles/tokens/scheme-motion.css +92 -157
  299. package/dist/styles/tokens/scheme-spring.css +239 -0
  300. package/dist/styles/tokens/scroll-tokens.css +15 -15
  301. package/dist/styles/tokens/shadow.css +73 -13
  302. package/dist/styles/tokens.css +9 -2
  303. package/dist/styles/utilities/btn.css +70 -0
  304. package/dist/switch.js +1 -1
  305. package/dist/tabs.js +198 -181
  306. package/dist/timeline.js +241 -206
  307. package/dist/toast.js +1 -1
  308. package/dist/toggle-chip.js +14 -41
  309. package/dist/toggle-group.js +1 -1
  310. package/dist/tooltip.js +1 -1
  311. package/dist/typewriter.js +1 -1
  312. package/dist/{uniformBridgeWGPU-CtAKl45L.js → uniformBridgeWGPU-BCse1SHU.js} +191 -127
  313. package/dist/{useAnimatedNumber-CLrxicG9.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  314. package/dist/{useConfiguratorState-4xblKfwd.js → useConfiguratorState-22BcULzF.js} +37 -35
  315. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  316. package/dist/{useDragMorph-BUgAC-zK.js → useDragMorph-DGLSewwB.js} +2 -2
  317. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  318. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  319. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  320. package/dist/{useViewTransition-CUI1nAgn.js → useHaptic-CPz5BT9I.js} +40 -1
  321. package/dist/{useLiquidFlex-UmA6LMZu.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  322. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  323. package/dist/useMorphField-ogBM7ubT.js +141 -0
  324. package/dist/{useScrollChrome-D66AVP7C.js → useScrollChrome-JuImi1DM.js} +2 -2
  325. package/dist/{useSpringMount-BWDnKIwh.js → useSpringMount-DFxtzmkR.js} +1 -1
  326. package/dist/{useSpringPress-B1-Czp-V.js → useSpringPress-VM9RgVq3.js} +1 -1
  327. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  328. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  329. package/dist/virtual.js +1 -1
  330. package/dist/watercolor-dot.js +16 -26
  331. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  332. package/package.json +14 -3
  333. package/src/styles/cards.css +202 -2
  334. package/src/styles/configurator.css +172 -7
  335. package/src/styles/critical-partition.mjs +35 -2
  336. package/src/styles/dock/adaptive-legibility.css +119 -0
  337. package/src/styles/dock/density.css +18 -10
  338. package/src/styles/dock/fission-bridge.css +552 -0
  339. package/src/styles/dock/layers.css +88 -124
  340. package/src/styles/dock/morph-bridge.css +15 -2
  341. package/src/styles/dock/morph.css +45 -114
  342. package/src/styles/dock/shape.css +137 -11
  343. package/src/styles/dock/shell.css +1 -3
  344. package/src/styles/dock/stack-rail.css +95 -7
  345. package/src/styles/dock-controls/icon-button.css +34 -2
  346. package/src/styles/dock-controls/triggers.css +23 -1
  347. package/src/styles/dock-controls.css +18 -0
  348. package/src/styles/dock.css +16 -1
  349. package/src/styles/drawer.css +164 -0
  350. package/src/styles/glass/glass-atom.css +244 -0
  351. package/src/styles/glass/glass-capsule.css +143 -0
  352. package/src/styles/glass/glass-chip.css +215 -0
  353. package/src/styles/glass/liquid-enter.css +252 -0
  354. package/src/styles/glass/liquid-morph.css +850 -0
  355. package/src/styles/glass/material.css +70 -1
  356. package/src/styles/glass/reveal.css +22 -2
  357. package/src/styles/glass/rim.css +13 -1
  358. package/src/styles/glass/surfaces.css +18 -8
  359. package/src/styles/glass.css +11 -0
  360. package/src/styles/icon-chip.css +45 -0
  361. package/src/styles/index.css +11 -0
  362. package/src/styles/jubilance.css +65 -0
  363. package/src/styles/motion/morph-field.css +229 -0
  364. package/src/styles/paper.css +230 -14
  365. package/src/styles/scroll-choreography.css +135 -78
  366. package/src/styles/segmented-tabs.css +85 -47
  367. package/src/styles/select.css +151 -0
  368. package/src/styles/tokens/color-radius.css +1 -1
  369. package/src/styles/tokens/dark-arm.css +57 -8
  370. package/src/styles/tokens/glass-deep.css +8 -4
  371. package/src/styles/tokens/glass-fx.css +80 -2
  372. package/src/styles/tokens/glass.css +140 -8
  373. package/src/styles/tokens/light-dark.css +2 -2
  374. package/src/styles/tokens/property-regs.css +144 -0
  375. package/src/styles/tokens/scale-paper.css +20 -8
  376. package/src/styles/tokens/scheme-motion.css +92 -157
  377. package/src/styles/tokens/scheme-spring.css +239 -0
  378. package/src/styles/tokens/scroll-tokens.css +15 -15
  379. package/src/styles/tokens/shadow.css +73 -13
  380. package/src/styles/tokens.css +9 -2
  381. package/src/styles/utilities/btn.css +70 -0
  382. package/dist/DialogContent-6JtTB5x2.js +0 -106
  383. package/dist/PagerDots-Cjx96la-.js +0 -98
  384. package/dist/PaperBackdrop-CqwjnfLv.js +0 -31
  385. package/dist/badge-D9XWW4GT.js +0 -53
  386. package/dist/button-5dY1Dvhd.js +0 -125
  387. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -85
  388. package/dist/createCanvasLifecycle-Gh45Ce-p.js +0 -93
  389. package/dist/dockContext-BNfyPLe9.js +0 -17
  390. package/dist/slider-2A0rPn79.js +0 -142
  391. package/dist/springPresets-Ce7OYCm9.js +0 -46
  392. package/dist/useDockCtaReceive-DfFkmgL1.js +0 -82
  393. package/dist/useGpuSubstrate-4pTcp6mX.js +0 -294
  394. package/dist/useLiquidPress-BooG97RY.js +0 -39
  395. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  396. /package/dist/{DialogFooter-9phqcRIS.js → DialogFooter-DoLy0ewI.js} +0 -0
  397. /package/dist/{InstrumentChassis-CxsHSyMj.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  398. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  399. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  400. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  401. /package/dist/{SelectSeparator-C2UGOkXF.js → SelectSeparator-CNRGG7Ew.js} +0 -0
  402. /package/dist/{Separator-DQcwC2TR.js → Separator-Cf9-JFgi.js} +0 -0
  403. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  404. /package/dist/{color-Cs0-oxYL.js → color-B9jZdhJX.js} +0 -0
  405. /package/dist/{compile-nZ1xVYTp.js → compile-INR_tPk_.js} +0 -0
  406. /package/dist/{constants--C2DkLW8.js → constants-BWj7DkMn.js} +0 -0
  407. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  408. /package/dist/{dotMatrixField-D_x9_1qq.js → dotMatrixField-CRO0ZFk4.js} +0 -0
  409. /package/dist/{flow.glsl-B2P7e0MT.js → flow.glsl-DqEGRpl4.js} +0 -0
  410. /package/dist/{math-Eb0w3LqU.js → math-5RcIgCB4.js} +0 -0
  411. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  412. /package/dist/{prng-B-d9eYX8.js → prng-B5tIXTtj.js} +0 -0
  413. /package/dist/{procedural-color.wgsl-m7Zgv35j.js → procedural-color.wgsl-C1Y5PkM6.js} +0 -0
  414. /package/dist/{scrollReader-DI1NWxUw.js → scrollReader-rc3Ns_NM.js} +0 -0
  415. /package/dist/{useControlSize-SH1UmJCi.js → useControlSize-DAZ062x7.js} +0 -0
  416. /package/dist/{useFuzzySearch-DIhcYtcw.js → useFuzzySearch-0fTYOhS4.js} +0 -0
  417. /package/dist/{useGlobalDark-CmjB9E32.js → useGlobalDark-B4HO9LXG.js} +0 -0
  418. /package/dist/{useIntersectionPause-Dbozzjgm.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  419. /package/dist/{useInterval-CNdua40W.js → useInterval-BVUI-sez.js} +0 -0
  420. /package/dist/{useKeyboardShortcuts-BPRp33Im.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  421. /package/dist/{usePointerVelocityField-QLsy3_kv.js → usePointerVelocityField-BrkqZFhj.js} +0 -0
  422. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  423. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  424. /package/dist/{useScrollProgress-c3yxmH6a.js → useScrollProgress-A0M6qRl7.js} +0 -0
  425. /package/dist/{useSortable-BVqlJRBR.js → useSortable-DQV_UNDw.js} +0 -0
  426. /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-Bma3UlKA.js} +0 -0
  427. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  428. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  429. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  430. /package/dist/{vReveal-D9k0jADx.js → vReveal-CT1KtwZA.js} +0 -0
@@ -0,0 +1,50 @@
1
+ import { type Ref } from "vue";
2
+ import { type SpringPresetName } from "./springPresets";
3
+ /** The burst spring register — `bouncy` (the emphatic playful default) or `snappy`. */
4
+ export type CelebrationBurstPreset = Extract<SpringPresetName, "bouncy" | "snappy">;
5
+ export interface UseCelebrationBurstOptions {
6
+ /** The number of glass petals to bloom. Default 12. */
7
+ count?: number;
8
+ /** The spring register (default `bouncy` — the playful overshoot). */
9
+ preset?: CelebrationBurstPreset;
10
+ /** The base outward radius in px (each petal lands at `radius × 0.7..1.0` seeded). Default 64. */
11
+ radius?: number;
12
+ /**
13
+ * An OPT-IN destination element whose `[data-reveal]` children get the chip-bloom-in
14
+ * settle cascade (the burst sets `--d` per child so the EXISTING `icon-chip-reveal`
15
+ * cascade plays). Omitted → no settle cascade (a pure radial burst).
16
+ */
17
+ destination?: Ref<HTMLElement | null>;
18
+ /**
19
+ * An OPT-IN `:tone` axis — when set, the petals tint toward this hue (a complete CSS
20
+ * `<color>` written to `--glass-accent`, the W-GLASS-ACCENT rim-tint seam, for a
21
+ * hue-keyed burst — a download-complete petal blooms `--viz-download`). Omitted → the
22
+ * warm-cream identity (the default).
23
+ */
24
+ tone?: string;
25
+ /** Honor `prefers-reduced-motion: reduce` (snap — terminal cascade only). Default true. */
26
+ respectReducedMotion?: boolean;
27
+ /** A fired-once callback when the burst settles (the overlay removed). */
28
+ onSettled?: () => void;
29
+ }
30
+ export interface UseCelebrationBurstReturn {
31
+ /**
32
+ * Fire the one-shot earned-moment petal bloom from the origin's center. Idempotent per
33
+ * call — a re-fire mid-bloom cancels the prior overlay + starts fresh. A no-op if the
34
+ * origin element is not mounted.
35
+ */
36
+ burst: () => void;
37
+ }
38
+ /**
39
+ * The library's ONE EARNED-moment celebration primitive — a one-shot radial bloom of N
40
+ * warm-cream glass petals (scale + fade + decongest from the origin on the bouncy spring),
41
+ * then a coupled chip-bloom-in cascade settles the destination. Compositor-only + PRM-static.
42
+ * See the module header for the REUSE + burst-mechanism + the channel writes.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const { burst } = useCelebrationBurst(metricCardRef, { preset: "bouncy", destination })
47
+ * onPersonalBest(() => burst())
48
+ * ```
49
+ */
50
+ export declare function useCelebrationBurst(origin: Ref<HTMLElement | null>, options?: UseCelebrationBurstOptions): UseCelebrationBurstReturn;
@@ -1,4 +1,4 @@
1
- import { type Ref } from "vue";
1
+ import { type ComponentPublicInstance, type Ref } from "vue";
2
2
  import { type SpringPresetName } from "./springPresets";
3
3
  /** The receive spring register — `snappy` (the crisp absorb default) or `bouncy`
4
4
  * (the emphatic land-with-overshoot). A subset of the named `SPRING_PRESETS` rows,
@@ -10,7 +10,14 @@ export interface UseDockCtaReceiveOptions {
10
10
  * `<DockIconButton>`/dock control element). When null at receive time, the morph
11
11
  * is a no-op snap (no destination to fly to) and `onReceived` fires immediately.
12
12
  */
13
- dockControl: Ref<HTMLElement | null>;
13
+ /**
14
+ * The dock control the CTA flies onto — a templateRef to the control ELEMENT or to
15
+ * a component (e.g. `<DockIconButton>`), whose root element is resolved via `.$el`.
16
+ * Resolving both keeps the seam forgiving: a `useTemplateRef<HTMLElement>` annotation
17
+ * on a component ref (whose value is the component public instance) no longer throws
18
+ * `setAttribute is not a function` at runtime — the stale element-vs-component class.
19
+ */
20
+ dockControl: Ref<HTMLElement | ComponentPublicInstance | null>;
14
21
  /** The spring register (default `snappy`). */
15
22
  preset?: DockCtaReceivePreset;
16
23
  /** The ending congest blur radius in px (the CTA dissolves into the glass). Default 4. */
@@ -56,29 +63,4 @@ export interface UseDockCtaReceiveReturn {
56
63
  /** The reactive seat state — the consumer binds `:class`/`v-if` off it. */
57
64
  pending: Readonly<Ref<boolean>>;
58
65
  }
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;
66
+ export declare function useDockCtaReceive(cta: Ref<HTMLElement | ComponentPublicInstance | null>, options: UseDockCtaReceiveOptions): UseDockCtaReceiveReturn;
@@ -0,0 +1,72 @@
1
+ import { type Ref } from "vue";
2
+ /**
3
+ * The three barbell silhouette elements the engine projects per frame. NOT
4
+ * `morph.children[i]` index-reaching (the fragile KISS-violating path) — three EXPLICIT
5
+ * refs the consumer renders + binds.
6
+ */
7
+ export interface GooBarbellRefs {
8
+ /** The trailing round body (the OUTGOING droplet). */
9
+ bodyARef: Ref<HTMLElement | null>;
10
+ /** The leading round body (the INCOMING droplet). */
11
+ bodyBRef: Ref<HTMLElement | null>;
12
+ /** The welling concave-throat neck between the two bodies. */
13
+ neckRef: Ref<HTMLElement | null>;
14
+ }
15
+ export interface UseGooMorphParams {
16
+ /**
17
+ * The barbell silhouette refs — two round bodies + a welling concave neck. The engine
18
+ * writes their three transforms each frame (the merge needs ≥2 masses; the neck is the
19
+ * bridge). NO single-element `morphRef` — the barbell IS the morph.
20
+ */
21
+ barbellRefs: GooBarbellRefs;
22
+ /** The geometry origin + the `--goo-t` transition host (the rail/track root). */
23
+ hostRef: Ref<HTMLElement | null>;
24
+ /** Travel axis. `false` → horizontal (translateX), `true` → vertical (translateY). */
25
+ vertical: Ref<boolean>;
26
+ /**
27
+ * Live center reader: the on-axis center (px, relative to the host content box)
28
+ * of slot `i`, on the travel axis. MEASURED off the live DOM (windowFit-correct,
29
+ * both axes) — never a hardcoded pitch.
30
+ */
31
+ centerOf: (i: number) => number | null;
32
+ /**
33
+ * The resting slot pitch (px) on the travel axis. The barbell body diameter is the
34
+ * golden-minor `D = restSize()/φ` (a BLOB, not a plate) — so the consumer passes the
35
+ * slot STEP, not a pre-shrunk body size.
36
+ */
37
+ restSize: () => number;
38
+ /**
39
+ * The token prefix for the flow/duration/max-stretch reads. Default `"pager-worm"`
40
+ * (the dot-pip register). The carousel passes `"carousel-goo"`; the deck `"deck-goo"`
41
+ * — each reads its OWN `--{prefix}-flow`/`-duration`/`-max-stretch` so a card-scale
42
+ * barbell dwells/swells at its own scale, the dot at its own. ONE engine, per-consumer
43
+ * tokens (the no-new-spring fence — they all resolve `--spring-*`-derived `linear()`).
44
+ */
45
+ tokenPrefix?: string;
46
+ /**
47
+ * The neck-gap fraction — how near the two bodies draw at the midpoint (sep's floor:
48
+ * 1 at the slots → `neckGap` at mid). Lower = the bodies near closer → a tighter,
49
+ * gooier waist. Default 0.78 (carousel). Pager 0.7, deck 0.85. (= `--{prefix}-neck-gap`
50
+ * if the consumer prefers a token; the param is the engine default.)
51
+ */
52
+ neckGap?: number;
53
+ }
54
+ export interface UseGooMorphReturn {
55
+ /**
56
+ * Travel the barbell from `from` to `to` (slot indices). Sets the `--goo-t`
57
+ * transition target (the spring glides it) and runs a short rAF that projects the
58
+ * interpolated scalar onto the three-element barbell each frame. PRM → instant snap to
59
+ * ONE resting body, no squish.
60
+ */
61
+ travel(from: number, to: number): void;
62
+ /** Snap the barbell to ONE resting body on `index` immediately (first paint / resize / PRM). */
63
+ snap(index: number): void;
64
+ /**
65
+ * Drag-driven continuous drive: set `--goo-t` DIRECTLY to a fractional slot position
66
+ * (the live drag scrollProgress, e.g. embla's `scrollProgress()*lastIndex`) with NO
67
+ * transition, and project the barbell for it. The neck wells with the live drag; call
68
+ * `travel()` on the snap to glide the release. PRM → snap.
69
+ */
70
+ drive(fractionalIndex: number): void;
71
+ }
72
+ export declare function useGooMorph(params: UseGooMorphParams): UseGooMorphReturn;
@@ -71,6 +71,24 @@ export interface UseLiquidFlexReturn {
71
71
  * The SFC's CSS pairs `--stretch` reciprocally along the travel axis.
72
72
  */
73
73
  stretchStyle: ComputedRef<Record<string, string>>;
74
+ /**
75
+ * BD.W-MOTION-WEIGHT — the SATURATING velocity term `tanh(|ṫ|·k) ∈ [0,1]` (the
76
+ * SAME term the squish already computes), exposed so a consumer can fold it into
77
+ * the universal `--motion-weight` velocity boost (§2c). 0 at rest; rises toward 1
78
+ * on a fast travel; self-extinguishes as the travel stills. In `"linear"` law it
79
+ * is the travel FRACTION (clamped to [0,1]); in `"tanh"` law it is `tanh(travel·k)`.
80
+ * The PRIMITIVE STAYS ELEMENT-LESS — it merely projects the term; the consumer
81
+ * writes it onto the driving element via the `writeVelocityWeight` helper.
82
+ */
83
+ flexVel: ComputedRef<number>;
84
+ /**
85
+ * The velocity term as a CSS custom-property style object
86
+ * (`{ "--flex-vel": "0.42" }`). The consumer binds it on the driving element (the
87
+ * one extra style object — the term it ALREADY computes); the local
88
+ * `--motion-weight: calc(0.618 + 0.382 * var(--flex-vel))` boost rides it. The
89
+ * primitive stays element-less; this is a pure projection.
90
+ */
91
+ velStyle: ComputedRef<Record<string, string>>;
74
92
  /**
75
93
  * Advance the morph: set the normalized progress to `next` (0→1). The squish
76
94
  * travel velocity is the |Δt| since the prior `drive`, so calling `drive` on a
@@ -0,0 +1,108 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ import { type SpringPresetName } from "./springPresets";
3
+ import { type LiquidRevealPreset } from "./useLiquidReveal";
4
+ /** The morph MODES the one scalar drives. */
5
+ export type LiquidMorphMode = "split" | "union" | "expand";
6
+ /**
7
+ * How a piece's travel ANGLE is resolved:
8
+ * • `radial` — the unit vector host-center -> piece-center (the n-ary fan).
9
+ * • `lateral` — the host's cross-axis (a single side bud).
10
+ * • `inward` — the negated radial (a union pull toward the host).
11
+ * • `directed` — the caller's explicit `piece.angle` (radians) — the
12
+ * configurable-angle case the playground's slider drives.
13
+ */
14
+ export type LiquidMorphVector = "radial" | "lateral" | "inward" | "directed";
15
+ /** The named morphology signature — the goo neck/squish character per mode. */
16
+ export interface LiquidMorphSignature {
17
+ /** How each piece's travel angle is resolved (default `radial`). */
18
+ vector: LiquidMorphVector;
19
+ /** Where the goo neck snaps in the 0..1 travel (0.4 tense -> 0.7 long-tail). */
20
+ neckHold: number;
21
+ /** The LOW squish cap the bud-off swell can reach (>1; default 1.08). */
22
+ maxStretch: number;
23
+ }
24
+ /** The default radial-fan signature (the macOS goo-split read). */
25
+ export declare const RADIAL_SPLIT: LiquidMorphSignature;
26
+ /** The directed-beam signature (the configurable-angle / single-direction case). */
27
+ export declare const DIRECTED_SPLIT: LiquidMorphSignature;
28
+ export interface UseLiquidMorphOptions {
29
+ /** The host element carrying the `--liquid-morph-t` scalar (a card OR a dock). */
30
+ rootEl: Ref<HTMLElement | null>;
31
+ /**
32
+ * The ORIGIN element the split BUDS FROM (the dock pill). The pieces fan out of
33
+ * this element's center (a connecting goo neck back to the dock), NOT the host
34
+ * stage center — the WAVE-1 "bud from the dock" fix. Its center is measured
35
+ * relative to `rootEl` each episode and written as `--liquid-morph-origin-x/y`
36
+ * (px-from-the-host-top-left) which the goo group (liquid-morph.css) anchors at.
37
+ * When unset the goo group falls back to the host center (the standalone case).
38
+ */
39
+ originEl?: Ref<HTMLElement | null>;
40
+ /** The morphology signature (default `RADIAL_SPLIT`). */
41
+ signature?: LiquidMorphSignature;
42
+ /**
43
+ * The spring register the scalar rides — a `SPRING_PRESETS` row name, or a
44
+ * ref/getter resolved PER-DRIVE so a host can vary the clock by gesture (a smooth
45
+ * card bloom vs a livelier split). Default `"dock"`. NO new family is minted.
46
+ */
47
+ spring?: MaybeRefOrGetter<SpringPresetName>;
48
+ /** The bloom preset for `expand()` (default `"bouncy"`). */
49
+ revealPreset?: LiquidRevealPreset;
50
+ /** Honor `prefers-reduced-motion: reduce` (seat synchronously). Default true. */
51
+ respectReducedMotion?: boolean;
52
+ }
53
+ /** A registered split piece — its element + its vector descriptor. */
54
+ export interface LiquidMorphPiece {
55
+ /** The piece element (a free-floating glass shard). */
56
+ el: Ref<HTMLElement | null>;
57
+ /**
58
+ * The explicit travel angle in RADIANS for the `directed` vector. Ignored for
59
+ * `radial`/`lateral`/`inward` (those derive the angle from geometry).
60
+ */
61
+ angle?: number;
62
+ /** The piece's fan rank (the stagger index; 0-based). */
63
+ rank?: number;
64
+ /** The travel distance in px (how far the piece flies). Default 96. */
65
+ distance?: number;
66
+ }
67
+ export interface RegisteredPiece extends LiquidMorphPiece {
68
+ /** Detach this piece from the morph (clears its inline customs). */
69
+ release(): void;
70
+ }
71
+ export interface UseLiquidMorphReturn {
72
+ /** Register a split piece; returns the live handle. */
73
+ registerPiece(p: LiquidMorphPiece): RegisteredPiece;
74
+ /** SPLIT — drive the scalar 0 -> 1 (the pieces bud off through the goo neck). */
75
+ split(): void;
76
+ /** UNION — drive the scalar 1 -> 0 (the SAME loop, reversed; bidirectional). */
77
+ union(): void;
78
+ /** SEEK — scrub the scalar to an arbitrary 0..1 value (the timeline scrubber). */
79
+ seek(value: number): void;
80
+ /** EXPAND — bloom a card FROM a trigger pill (the dock->card materialize). */
81
+ expand(opts: {
82
+ card: Ref<HTMLElement | null>;
83
+ trigger: Ref<HTMLElement | null>;
84
+ }): void;
85
+ /** COLLAPSE — conceal the expanded card back to the pill (the bloom's close). */
86
+ collapse(): void;
87
+ /** The live normalized scalar (0..1) — what `--liquid-morph-t` reads. */
88
+ readonly t: Readonly<Ref<number>>;
89
+ /** Whether a morph is in flight (the host carries `[data-liquid-morphing]`). */
90
+ readonly morphing: Readonly<Ref<boolean>>;
91
+ }
92
+ /**
93
+ * The generalized liquid-morph driver. See the module header for the REUSE (the
94
+ * cloned dock loop shape + the composed reveal/flex leaves), the arbitrary-angle goo
95
+ * mechanism, and the compositor-only + PRM fences.
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const root = ref<HTMLElement | null>(null)
100
+ * const morph = useLiquidMorph({ rootEl: root, signature: DIRECTED_SPLIT })
101
+ * for (const el of shardRefs) morph.registerPiece({ el, angle: theta.value })
102
+ * // n-ary split at an arbitrary angle:
103
+ * morph.split()
104
+ * // the dock -> card bloom:
105
+ * morph.expand({ card: cardRef, trigger: pillRef })
106
+ * ```
107
+ */
108
+ export declare function useLiquidMorph(options: UseLiquidMorphOptions): UseLiquidMorphReturn;
@@ -30,6 +30,18 @@ export interface UseLiquidPressOptions extends UseSpringPressOptions {
30
30
  * then yields back to the cascade as it settles). Default 0.001.
31
31
  */
32
32
  engageThreshold?: number;
33
+ /**
34
+ * BD.W-MOTION-WEIGHT — the pressed element (the host the consumer binds
35
+ * `pressStyle` on), so the press cap is derived SITE-LOCALLY off the live
36
+ * `--motion-weight` read at THAT element (the spike-corrected mechanism): the
37
+ * shipped `maxStretch` cap at rest weight 0.618 (byte-identical feel), 1.0 at
38
+ * weight 0 (the observer/PRM fence). When omitted, the cap is the static
39
+ * `maxStretch` (the no-element fallback — still correct at rest weight, the
40
+ * universal coupling is just not weight-scaled for that surface). The press is
41
+ * the GENTLE register — a button has no size span, so the weight-coupled cap is a
42
+ * lively settle, never a taffy-pull.
43
+ */
44
+ el?: Ref<HTMLElement | null>;
33
45
  }
34
46
  export interface UseLiquidPressReturn {
35
47
  /** The live spring press value (0 released → 1 pressed, with the spring overshoot). */
@@ -1,4 +1,4 @@
1
- import { type Ref } from "vue";
1
+ import { type ComponentPublicInstance, type Ref } from "vue";
2
2
  import { type SpringPresetName } from "./springPresets";
3
3
  /** The reveal spring register — `snappy` (the quick app-open default) or `bouncy`
4
4
  * (the emphatic large-dialog bloom). A subset of the named `SPRING_PRESETS` rows. */
@@ -6,11 +6,14 @@ export type LiquidRevealPreset = Extract<SpringPresetName, "snappy" | "bouncy">;
6
6
  export interface UseLiquidRevealOptions {
7
7
  /**
8
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
9
+ * collapsed dock pill). A templateRef to the trigger ELEMENT or to a COMPONENT (e.g.
10
+ * `<Button>`), whose root element is resolved via `.$el` — the binding-verification
11
+ * cure: a `ref` on a component is the public instance (no `getBoundingClientRect`),
12
+ * which silently no-oped the bloom. When null at reveal time, the bloom degrades to a
10
13
  * center-anchored scale-from-self (the no-trigger fallback — still spring-clocked,
11
14
  * never the flat bezier zoom).
12
15
  */
13
- trigger?: Ref<HTMLElement | null>;
16
+ trigger?: Ref<HTMLElement | ComponentPublicInstance | null>;
14
17
  /** The spring register (default `snappy`). */
15
18
  preset?: LiquidRevealPreset;
16
19
  /** The starting backdrop-blur radius in px (the decongest start). Default 4. */
@@ -48,4 +51,4 @@ export interface UseLiquidRevealReturn {
48
51
  * watch(open, (o) => (o ? reveal() : conceal()))
49
52
  * ```
50
53
  */
51
- export declare function useLiquidReveal(surface: Ref<HTMLElement | null>, options?: UseLiquidRevealOptions): UseLiquidRevealReturn;
54
+ export declare function useLiquidReveal(surface: Ref<HTMLElement | ComponentPublicInstance | null>, options?: UseLiquidRevealOptions): UseLiquidRevealReturn;
@@ -0,0 +1,157 @@
1
+ import { type MaybeRef, type Ref } from "vue";
2
+ /** The five motion VECTORS a signature selects (geometry/motion, never an app name). */
3
+ export type MorphVector = "lateral" | "radial" | "inward" | "axial" | "directed";
4
+ /** The render TIER a morph resolves to (the caps ladder). */
5
+ export type MorphTier = "css" | "svg-goo" | "gpu";
6
+ /** The silhouette a body presents. `capture` = sample its clip-path → SDF (Tier-G, the
7
+ * arbitrary-outline element→element morph — HARD-gated on useElementBloom). */
8
+ export type MorphSilhouette = "circle" | "squircle" | "capture";
9
+ /** A measured rectangle (the body endpoints; left/top/width/height in host-local px). */
10
+ export interface MorphFieldRect {
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+ /**
17
+ * The motion SIGNATURE — DATA, the only thing that distinguishes the morphs. `vector`
18
+ * picks the geometry; `kRest`/`kPeak` are gap-FRACTIONS (not px) the threshold band
19
+ * scales by; `neckHold` is how long the neck holds before it pinches; `maxStretch` the
20
+ * LOW squish cap (the anti-taffy fence).
21
+ */
22
+ export interface MorphSignature {
23
+ vector: MorphVector;
24
+ /** The neck-gap fraction at REST (bodies apart) — the threshold band floor. */
25
+ kRest: number;
26
+ /** The neck-gap fraction at the PEAK (bodies near, the gooey waist) — the band ceiling. */
27
+ kPeak: number;
28
+ /** How long (0..1 of t) the neck HOLDS its girth before it pinches (the tense pop). */
29
+ neckHold: number;
30
+ /** The LOW on-axis squish cap (≤~1.14 — the loud register lives in NECK girth, not body taffy). */
31
+ maxStretch: number;
32
+ }
33
+ /**
34
+ * The canonical, motion-named SIGNATURE map (DATA — F3, the FLOOR). Every consumer
35
+ * passes a `MorphSignatureName`; one weld reads the row; one recipe paints it. NO app
36
+ * names, NO three code paths.
37
+ */
38
+ export declare const MORPH_SIGNATURES: {
39
+ /** carousel / deck / pager goo: two equal beads bud apart, a concave neck wells, the
40
+ * filter merges them into one barbell with a thin pinched waist, then they coalesce. */
41
+ readonly lateralNeck: {
42
+ readonly vector: "lateral";
43
+ readonly kRest: 0.92;
44
+ readonly kPeak: 0.34;
45
+ readonly neckHold: 0.5;
46
+ readonly maxStretch: 1.12;
47
+ };
48
+ /** dock fission media: the now-playing anchor stays; flanking transport PEELS along
49
+ * the cross axis with a long tapering neck tail. */
50
+ readonly lateralPeel: {
51
+ readonly vector: "lateral";
52
+ readonly kRest: 0.88;
53
+ readonly kPeak: 0.4;
54
+ readonly neckHold: 0.4;
55
+ readonly maxStretch: 1.08;
56
+ };
57
+ /** dock fission search: controls fly outward like a bloom; the neck NECKS LATE (the
58
+ * tense radial pop), innermost-first — an outward ripple, not a simultaneous scatter. */
59
+ readonly radialBurst: {
60
+ readonly vector: "radial";
61
+ readonly kRest: 0.85;
62
+ readonly kPeak: 0.3;
63
+ readonly neckHold: 0.55;
64
+ readonly maxStretch: 1.08;
65
+ };
66
+ /** dock fission nav: the negative radial — N masses collapse INWARD to ONE; the bridge
67
+ * runs backward; --stretch peaks at coalescence. */
68
+ readonly inwardMerge: {
69
+ readonly vector: "inward";
70
+ readonly kRest: 0.8;
71
+ readonly kPeak: 0.28;
72
+ readonly neckHold: 0.35;
73
+ readonly maxStretch: 1.1;
74
+ };
75
+ /** dock V↔H: column-mass + row-mass are two distributions in ONE topology-free field;
76
+ * a gooey teardrop LOBS column→row through the midpoint (no crossfade dodge). */
77
+ readonly axialNeck: {
78
+ readonly vector: "axial";
79
+ readonly kRest: 0.9;
80
+ readonly kPeak: 0.36;
81
+ readonly neckHold: 0.5;
82
+ readonly maxStretch: 1.14;
83
+ };
84
+ /** dock collapse: the DEGENERATE 1-body field — a single mass squishes between two
85
+ * footprints (no waist, Tier-C). The ratio-free convex blend. */
86
+ readonly collapse: {
87
+ readonly vector: "axial";
88
+ readonly kRest: 1;
89
+ readonly kPeak: 1;
90
+ readonly neckHold: 0;
91
+ readonly maxStretch: 1.14;
92
+ };
93
+ /** drag morph: a grabbed rect → drop rect, an optional directed neck. */
94
+ readonly directed: {
95
+ readonly vector: "directed";
96
+ readonly kRest: 0.9;
97
+ readonly kPeak: 0.42;
98
+ readonly neckHold: 0.45;
99
+ readonly maxStretch: 1.1;
100
+ };
101
+ };
102
+ export type MorphSignatureName = keyof typeof MORPH_SIGNATURES;
103
+ /** A warm "body" the field welds — a measured endpoint pair + an optional silhouette. */
104
+ export interface BodySpec {
105
+ /** The DOM node this body IS (the weld writes its transform). */
106
+ el: Ref<HTMLElement | null>;
107
+ /** The body's REST rect (t=0), measured ONCE (dock-core: no per-frame measure). */
108
+ at0: () => MorphFieldRect;
109
+ /** The body's TARGET rect (t=1), measured ONCE. */
110
+ at1: () => MorphFieldRect;
111
+ /** The body diameter (px). Default `min(width,height)/φ` — a golden-minor BLOB. */
112
+ radius?: () => number;
113
+ /** circle (default) / squircle / capture (arbitrary outline → Tier-G, HARD-gated). */
114
+ silhouette?: MorphSilhouette;
115
+ }
116
+ export interface MorphFieldOptions {
117
+ /** 1..N warm masses. 1 body = collapse (no weld); 2 = a neck; (1+N) = fission. */
118
+ bodies: MaybeRef<BodySpec[]>;
119
+ /** The motion signature NAME (DATA). The weld reads its row from MORPH_SIGNATURES. */
120
+ signature: MorphSignatureName;
121
+ /**
122
+ * The EXISTING drive scalar this weld READS off the host (NO rename). Default
123
+ * `--goo-t`; dock passes `--dock-morph-t`, fission `--neck-t`. The consumer's
124
+ * spring/rAF writes it; the weld only samples + projects.
125
+ */
126
+ driveVar?: string;
127
+ /** The host the drive scalar + the dedicated squish channel are read/written on. */
128
+ hostRef: Ref<HTMLElement | null>;
129
+ /** The cartoon-weight scalar source. Read live off the host `--motion-weight` if absent. */
130
+ weight?: MaybeRef<number>;
131
+ /** The render tier. `auto` (default) resolves from caps + body count + signature. */
132
+ tier?: MorphTier | "auto";
133
+ /** Travel axis for the neck span. `false` (default) horizontal, `true` vertical. */
134
+ vertical?: MaybeRef<boolean>;
135
+ }
136
+ export interface MorphFieldHandle {
137
+ /** Mirror of the consumer's drive scalar (last sampled). Read-only. */
138
+ readonly t: Readonly<Ref<number>>;
139
+ /** The neck waist FRACTION (waist/body) at the current frame — for π readback. */
140
+ readonly waist: Readonly<Ref<number>>;
141
+ /** The resolved render tier. */
142
+ readonly tier: Readonly<Ref<MorphTier>>;
143
+ /**
144
+ * PROJECT the field for an explicit drive value `t` (0..1). Reads the masses'
145
+ * measured endpoints + the signature, writes each body's transform + the welling
146
+ * neck + the dedicated squish channel + the live waist. The consumer calls this from
147
+ * its OWN rAF/spring callback (the weld owns no clock).
148
+ */
149
+ project(t: number): void;
150
+ /**
151
+ * SEAT the endpoint silhouette at `t` with ZERO neck frames (the PRM cut / first
152
+ * paint). One resting mass at the endpoint, neck hidden, --stretch 1. The consumer's
153
+ * PRM branch calls this.
154
+ */
155
+ seat(t: number): void;
156
+ }
157
+ export declare function useMorphField(opts: MorphFieldOptions): MorphFieldHandle;
@@ -0,0 +1,49 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ import type { ComponentPublicInstance } from "vue";
3
+ import type { ScrollSource } from "./scrollReader";
4
+ export interface UseScrollPinOptions {
5
+ /**
6
+ * The tall `.scroll-pin` container (a templateRef to the element or a component). Its
7
+ * `getBoundingClientRect` gives the pin-slice ratio; `--pin-t` is written onto it (it
8
+ * `inherits: true` so the sticky stage + phase children read it).
9
+ */
10
+ container: MaybeRefOrGetter<HTMLElement | ComponentPublicInstance | null>;
11
+ /**
12
+ * The scroll source the pin tracks — the demo passes `main.demo-main-scroller`. Passed
13
+ * EXPLICITLY (the reader does not auto-discover). Default: the window/document.
14
+ */
15
+ source?: MaybeRefOrGetter<ScrollSource>;
16
+ /**
17
+ * The pin scrub ∈ [0, 1] — the pin drifts HEAVIER than a control (a scene, not a knob).
18
+ * Defaults to 1/φ² ≈ 0.382 (the golden heavier-drift rest). PRM → 0.
19
+ */
20
+ scrub?: number;
21
+ /** The spring damping ratio ζ for the felt reveal. < 1 overshoots. Default 0.85. */
22
+ dampingFraction?: number;
23
+ /** Honor `prefers-reduced-motion: reduce`. Default true. */
24
+ respectReducedMotion?: boolean;
25
+ }
26
+ export interface UseScrollPinReturn {
27
+ /** The spring-damped 0..1 pin progress (reactive — mirrors `--pin-t`). */
28
+ pinT: Readonly<Ref<number>>;
29
+ /** Force a re-read (post-resize). */
30
+ recalculate: () => void;
31
+ /** Detach. */
32
+ dispose: () => void;
33
+ }
34
+ /**
35
+ * Drive `--pin-t` ∈ [0, 1] onto a sticky `.scroll-pin` stage off the real scroll port,
36
+ * spring-damped so the pinned reveal arrives with inertia, overshoots, then settles. The
37
+ * phase recipes (`.scroll-pin-phase-reveal` / `-settle`) read `--pin-t` — no
38
+ * `animation-timeline`, every engine.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const pinContainer = ref<HTMLElement | null>(null)
43
+ * useScrollPin({
44
+ * container: pinContainer,
45
+ * source: () => document.querySelector<HTMLElement>("main.demo-main-scroller"),
46
+ * })
47
+ * ```
48
+ */
49
+ export declare function useScrollPin(options: UseScrollPinOptions): UseScrollPinReturn;
@@ -0,0 +1,67 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ import { type ScrollReader, type ScrollSource } from "./scrollReader";
3
+ /** The smoother register — a pure-lag low-pass (`SmoothProgress`) or an overshooting
4
+ * spring (`SpringProgress`). The FELT reveal wants the spring (it overshoots, then
5
+ * settles — the cartoon slam); the pure-lag legs (a progress number) want the smooth. */
6
+ export type ScrollSceneRegister = "smooth" | "spring";
7
+ export interface UseScrollSceneOptions {
8
+ /**
9
+ * The scroll source — an element with its own scroll port (the demo passes
10
+ * `main.demo-main-scroller`), the Window, or null. Resolved by `createScrollReader`:
11
+ * an HTMLElement listens on itself, else the document/window. Passed EXPLICITLY (the
12
+ * reader does NOT auto-discover a scroller).
13
+ */
14
+ source: MaybeRefOrGetter<ScrollSource>;
15
+ /**
16
+ * Map a fresh reader read to the raw 0..1 target this scene tracks. Default: the
17
+ * reader's own `position()/extent()` extent-relative progress. A pin passes a custom
18
+ * mapper keyed off a per-tick `getBoundingClientRect` (the pin-slice ratio).
19
+ */
20
+ map?: (reader: ScrollReader) => number;
21
+ /**
22
+ * The liquid-weight scrub ∈ [0, 1] — how much lag the scroll carries. 0 = a 1:1 snap
23
+ * (no weight); higher = heavier drift. Defaults to 1/φ ≈ 0.618 (the golden
24
+ * liquid-weight rest); a call site overrides per scene. PRM → 0. Mapped to the engine
25
+ * damping by `scrubToDamping` (a STATED function, no magic affine constants).
26
+ */
27
+ scrub?: number;
28
+ /** The smoother register (default `smooth` — the pure-lag low-pass). */
29
+ register?: ScrollSceneRegister;
30
+ /**
31
+ * For the `spring` register: the damping ratio ζ. < 1 overshoots (the felt slam),
32
+ * 0.85 ≈ the `--spring-gentle` identity. Default 0.85. Ignored for `smooth`.
33
+ */
34
+ dampingFraction?: number;
35
+ /** The element the damped value is written onto as a custom property (when bound). */
36
+ bindEl?: MaybeRefOrGetter<HTMLElement | null>;
37
+ /** The custom property name to write the damped 0..1 onto (e.g. `--pin-t`). */
38
+ property?: string;
39
+ /** Honor `prefers-reduced-motion: reduce` (scrub → 0, snap 1:1). Default true. */
40
+ respectReducedMotion?: boolean;
41
+ }
42
+ export interface UseScrollSceneReturn {
43
+ /** The spring-damped 0..1 progress (reactive). The single writer of every felt axis. */
44
+ progress: Readonly<Ref<number>>;
45
+ /** Force a coalesced re-read + re-target now (post-resize / layout shift). */
46
+ recalculate: () => void;
47
+ /** Detach the reader + stop the smoother. */
48
+ dispose: () => void;
49
+ }
50
+ /**
51
+ * The liquid-weight scroll spine. Composes the ONE `createScrollReader` + a keyframes.js
52
+ * smoother (`SmoothProgress` / `SpringProgress`); on each coalesced scroll tick it sets the
53
+ * smoother target to the mapped raw progress; the smoother converges with inertia and keeps
54
+ * moving after scroll stops (the liquid weight). Writes the damped 0..1 to `progress` + the
55
+ * optional `property` on `bindEl`.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const { progress } = useScrollScene({
60
+ * source: () => document.querySelector<HTMLElement>("main.demo-main-scroller"),
61
+ * scrub: 0.618,
62
+ * bindEl: stageRef,
63
+ * property: "--scroll-t",
64
+ * })
65
+ * ```
66
+ */
67
+ export declare function useScrollScene(options: UseScrollSceneOptions): UseScrollSceneReturn;