@mkbabb/glass-ui 3.13.0 → 4.0.1

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 (507) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
  8. package/dist/DialogContent-DcKK8k9i.js +103 -0
  9. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/FadingScroll-DI6hQhT9.js +76 -0
  11. package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/IconChip-BTD-nay5.js +55 -0
  14. package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
  17. package/dist/Notification-VUwexFUf.js +43 -0
  18. package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
  19. package/dist/PopoverContent-DL7E6vJP.js +127 -0
  20. package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
  21. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
  23. package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
  24. package/dist/Toaster-Bw4xR8xV.js +274 -0
  25. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  26. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  27. package/dist/animated-digit.js +2 -2
  28. package/dist/api/index.d.ts +16 -8
  29. package/dist/api/types-extra.d.ts +6 -0
  30. package/dist/api.js +2 -2
  31. package/dist/aurora.js +888 -230
  32. package/dist/badge.js +1 -1
  33. package/dist/border-progress.d.ts +1 -0
  34. package/dist/border-progress.js +106 -0
  35. package/dist/button-DYCUa-tH.js +126 -0
  36. package/dist/button.js +1 -1
  37. package/dist/canvas.js +2 -2
  38. package/dist/card.js +2 -2
  39. package/dist/carousel.d.ts +1 -1
  40. package/dist/carousel.js +90 -151
  41. package/dist/collapsible.js +1 -1
  42. package/dist/color-swatch.d.ts +1 -0
  43. package/dist/color-swatch.js +47 -0
  44. package/dist/color.js +1 -1
  45. package/dist/command.js +1 -1
  46. package/dist/compile-CQEFRTmx.js +19 -0
  47. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  48. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  51. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  52. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  53. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  54. package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
  55. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
  56. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  59. package/dist/components/custom/aurora/index.d.ts +3 -2
  60. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  61. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  62. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  63. package/dist/components/custom/border-progress/index.d.ts +4 -0
  64. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  65. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  66. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  67. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  68. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  69. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  70. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  71. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  72. package/dist/components/custom/concentric/constants.d.ts +43 -0
  73. package/dist/components/custom/concentric/index.d.ts +5 -0
  74. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  75. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  76. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  77. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  78. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  79. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  80. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  81. package/dist/components/custom/constellation/index.d.ts +1 -1
  82. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  83. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  84. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  85. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  86. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  87. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  88. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  89. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  90. package/dist/components/custom/dock/constants.d.ts +35 -0
  91. package/dist/components/custom/dock/index.d.ts +2 -0
  92. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  93. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  94. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  95. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  96. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  97. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  98. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  99. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  100. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  101. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  102. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  103. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  104. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  105. package/dist/components/custom/easing/constants.d.ts +28 -0
  106. package/dist/components/custom/easing/index.d.ts +3 -0
  107. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  108. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  109. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  110. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  111. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  112. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
  113. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  114. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  115. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  116. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  117. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
  118. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  119. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  120. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
  121. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  122. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  123. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  124. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  125. package/dist/components/custom/handmark/brush.d.ts +269 -0
  126. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  127. package/dist/components/custom/handmark/constants.d.ts +39 -0
  128. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  129. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  130. package/dist/components/custom/handmark/index.d.ts +27 -0
  131. package/dist/components/custom/handmark/ink.d.ts +11 -0
  132. package/dist/components/custom/handmark/texture.d.ts +39 -0
  133. package/dist/components/custom/handmark/types.d.ts +62 -0
  134. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  135. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  136. package/dist/components/custom/icon-chip/types.d.ts +82 -0
  137. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
  138. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  139. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  140. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  141. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  142. package/dist/components/custom/spa-view/index.d.ts +2 -0
  143. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
  144. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  145. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  146. package/dist/components/custom/tabs/constants.d.ts +9 -3
  147. package/dist/components/custom/tabs/index.d.ts +1 -1
  148. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
  149. package/dist/components/ui/_shared/index.d.ts +2 -0
  150. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  151. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  152. package/dist/components/ui/badge/index.d.ts +1 -1
  153. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  154. package/dist/components/ui/button/index.d.ts +2 -2
  155. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  156. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  157. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  158. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  159. package/dist/components/ui/card/index.d.ts +2 -0
  160. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  161. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  162. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  163. package/dist/components/ui/carousel/index.d.ts +0 -1
  164. package/dist/components/ui/command/Command.vue.d.ts +4 -1
  165. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  167. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
  168. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  169. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  170. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  171. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  172. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  173. package/dist/components/ui/drawer/constants.d.ts +45 -0
  174. package/dist/components/ui/drawer/index.d.ts +23 -15
  175. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  176. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  177. package/dist/components/ui/index.d.ts +1 -1
  178. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  179. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  180. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  181. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  183. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  184. package/dist/components/ui/sheet/index.d.ts +1 -1
  185. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  186. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  187. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  188. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  189. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  190. package/dist/composables/dark/index.d.ts +1 -1
  191. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  192. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  193. package/dist/composables/glass/index.d.ts +5 -2
  194. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  195. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  196. package/dist/composables/glass/vSpecular.d.ts +2 -0
  197. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  198. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  199. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  200. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  201. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  202. package/dist/composables/motion/core/index.d.ts +1 -0
  203. package/dist/composables/motion/index.d.ts +4 -0
  204. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  205. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  206. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  207. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  208. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  209. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  210. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  211. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  212. package/dist/concentric.d.ts +1 -0
  213. package/dist/concentric.js +562 -0
  214. package/dist/configurator.js +3 -2
  215. package/dist/confirm-dialog.js +22 -24
  216. package/dist/constellation.js +93 -95
  217. package/dist/context-menu.js +3 -3
  218. package/dist/controls.js +10 -4
  219. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  220. package/dist/dark.d.ts +1 -1
  221. package/dist/dark.js +1 -1
  222. package/dist/data-table.js +1 -1
  223. package/dist/dialog.js +2 -2
  224. package/dist/dock.js +738 -442
  225. package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
  226. package/dist/dom.js +5 -5
  227. package/dist/dot-flow-field.d.ts +1 -0
  228. package/dist/dot-flow-field.js +604 -0
  229. package/dist/drawer.d.ts +1 -0
  230. package/dist/drawer.js +380 -0
  231. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
  232. package/dist/dropdown-menu.js +1 -1
  233. package/dist/easing.d.ts +1 -0
  234. package/dist/easing.js +463 -0
  235. package/dist/expandable-container.js +45 -38
  236. package/dist/fading-scroll.d.ts +1 -0
  237. package/dist/fading-scroll.js +2 -0
  238. package/dist/focus-scope.d.ts +1 -0
  239. package/dist/focus-scope.js +23 -0
  240. package/dist/forms.js +7 -7
  241. package/dist/fourier-field.js +135 -122
  242. package/dist/fourier-math.js +2 -2
  243. package/dist/glass-panel.js +39 -36
  244. package/dist/glass-ui.css +1 -1
  245. package/dist/glass-ui.js +154 -362
  246. package/dist/goo-blob.js +838 -227
  247. package/dist/handmark.d.ts +1 -0
  248. package/dist/handmark.js +707 -0
  249. package/dist/header-ribbon.js +1 -1
  250. package/dist/hover-card.js +1 -1
  251. package/dist/hover-popover.js +1 -1
  252. package/dist/icon-chip.d.ts +1 -0
  253. package/dist/icon-chip.js +2 -0
  254. package/dist/icon-tooltip.js +1 -1
  255. package/dist/index.d.ts +3 -3
  256. package/dist/instrument-chassis.js +1 -1
  257. package/dist/keyboard.js +1 -1
  258. package/dist/label.js +1 -1
  259. package/dist/labeled-field.js +6 -6
  260. package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
  261. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
  262. package/dist/metric-badge.js +1 -1
  263. package/dist/metric-cell.js +25 -22
  264. package/dist/metric-stack.js +4 -8
  265. package/dist/motion-core.js +36 -35
  266. package/dist/motion-curves.js +1 -1
  267. package/dist/motion.js +157 -55
  268. package/dist/notification.js +1 -1
  269. package/dist/number-field.js +1 -1
  270. package/dist/pager-dots.d.ts +1 -0
  271. package/dist/pager-dots.js +91 -0
  272. package/dist/paper-backdrop.js +1 -1
  273. package/dist/popover.js +1 -1
  274. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  275. package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  276. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  277. package/dist/progress.js +1 -1
  278. package/dist/pulse.js +1 -1
  279. package/dist/reactive.js +2 -2
  280. package/dist/scrolling-text.js +1 -1
  281. package/dist/search.js +10 -12
  282. package/dist/select.js +3 -3
  283. package/dist/separator.js +1 -1
  284. package/dist/sheet-tZMg0E0w.js +218 -0
  285. package/dist/sheet.js +1 -1
  286. package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +3 -3
  289. package/dist/spa-view.d.ts +1 -0
  290. package/dist/spa-view.js +46 -0
  291. package/dist/styles/animations.css +40 -31
  292. package/dist/styles/border-progress.css +109 -0
  293. package/dist/styles/cards.css +76 -0
  294. package/dist/styles/components.css +1 -1
  295. package/dist/styles/configurator.css +35 -0
  296. package/dist/styles/critical-partition.mjs +140 -0
  297. package/dist/styles/critical.css +12 -0
  298. package/dist/styles/deferred.css +31 -0
  299. package/dist/styles/dock/density.css +64 -0
  300. package/dist/styles/dock/layers.css +54 -30
  301. package/dist/styles/dock/morph.css +124 -7
  302. package/dist/styles/dock/overflow.css +31 -2
  303. package/dist/styles/dock/rail-extend.css +168 -71
  304. package/dist/styles/dock/section.css +59 -0
  305. package/dist/styles/dock/shell.css +83 -16
  306. package/dist/styles/dock-controls/icon-button.css +11 -1
  307. package/dist/styles/dock-controls/tab-button.css +24 -83
  308. package/dist/styles/dock-controls/triggers.css +7 -0
  309. package/dist/styles/dock.css +38 -3
  310. package/dist/styles/drawer.css +127 -35
  311. package/dist/styles/feedback-tone.css +104 -0
  312. package/dist/styles/glass/deep.css +44 -0
  313. package/dist/styles/glass/ladder.css +154 -52
  314. package/dist/styles/glass/material.css +78 -15
  315. package/dist/styles/glass/reveal.css +136 -0
  316. package/dist/styles/glass/rim.css +100 -0
  317. package/dist/styles/glass/surface-axis.css +113 -0
  318. package/dist/styles/glass/surfaces.css +189 -15
  319. package/dist/styles/glass-refract.css +96 -44
  320. package/dist/styles/glass-specular-track.css +7 -0
  321. package/dist/styles/glass.css +8 -2
  322. package/dist/styles/hover-popover.css +7 -6
  323. package/dist/styles/icon-chip.css +211 -0
  324. package/dist/styles/index.css +78 -4
  325. package/dist/styles/instrument-chassis.css +107 -2
  326. package/dist/styles/menu.css +127 -0
  327. package/dist/styles/scroll-choreography.css +300 -0
  328. package/dist/styles/segmented-tabs.css +188 -86
  329. package/dist/styles/select.css +50 -0
  330. package/dist/styles/theme/bridges.css +22 -1
  331. package/dist/styles/theme/literals.css +11 -2
  332. package/dist/styles/theme/radius.css +6 -1
  333. package/dist/styles/tokens/color-radius.css +40 -13
  334. package/dist/styles/tokens/dark-arm.css +200 -20
  335. package/dist/styles/tokens/glass-deep.css +75 -0
  336. package/dist/styles/tokens/glass-fx.css +333 -0
  337. package/dist/styles/tokens/glass.css +95 -315
  338. package/dist/styles/tokens/light-dark.css +64 -22
  339. package/dist/styles/tokens/offsets.css +116 -0
  340. package/dist/styles/tokens/on-glass-fg.css +39 -0
  341. package/dist/styles/tokens/property-regs.css +130 -10
  342. package/dist/styles/tokens/scale-paper.css +155 -84
  343. package/dist/styles/tokens/scheme-motion.css +102 -46
  344. package/dist/styles/tokens/scroll-tokens.css +123 -0
  345. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  346. package/dist/styles/tokens.css +9 -3
  347. package/dist/styles/transitions.css +7 -7
  348. package/dist/styles/typography/scale.css +153 -0
  349. package/dist/styles/typography/semantic.css +220 -0
  350. package/dist/styles/typography/utilities.css +174 -0
  351. package/dist/styles/typography.css +23 -507
  352. package/dist/styles/utilities/a11y-overrides.css +33 -4
  353. package/dist/styles/utilities/animate.css +27 -24
  354. package/dist/styles/utilities/base-misc.css +255 -0
  355. package/dist/styles/utilities/base.css +100 -138
  356. package/dist/styles/utilities/btn.css +21 -202
  357. package/dist/styles/utilities/metal.css +189 -0
  358. package/dist/styles/utilities.css +14 -7
  359. package/dist/styles/view-transition.css +4 -1
  360. package/dist/switch.js +1 -1
  361. package/dist/tabs.js +275 -191
  362. package/dist/timeline.js +2 -2
  363. package/dist/toast.js +1 -1
  364. package/dist/toggle-chip.js +3 -1
  365. package/dist/toggle-group.js +1 -1
  366. package/dist/tooltip.js +1 -1
  367. package/dist/typewriter.js +1 -1
  368. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
  369. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  370. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  371. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  372. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  373. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  374. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  375. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
  376. package/dist/useSpring-C0jyvEJB.js +40 -0
  377. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  378. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  379. package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
  380. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
  381. package/dist/vReveal-Czsb7zQC.js +10 -0
  382. package/dist/vSpecular-CQFmLNzA.js +68 -0
  383. package/dist/vendor-CKmzio-i.js +226 -0
  384. package/dist/watercolor-dot.js +12 -5
  385. package/package.json +193 -25
  386. package/src/styles/animations.css +40 -31
  387. package/src/styles/border-progress.css +109 -0
  388. package/src/styles/cards.css +76 -0
  389. package/src/styles/configurator.css +35 -0
  390. package/src/styles/critical-partition.mjs +140 -0
  391. package/src/styles/dock/density.css +64 -0
  392. package/src/styles/dock/layers.css +54 -30
  393. package/src/styles/dock/morph.css +124 -7
  394. package/src/styles/dock/overflow.css +31 -2
  395. package/src/styles/dock/rail-extend.css +168 -71
  396. package/src/styles/dock/section.css +59 -0
  397. package/src/styles/dock/shell.css +83 -16
  398. package/src/styles/dock-controls/icon-button.css +11 -1
  399. package/src/styles/dock-controls/tab-button.css +24 -83
  400. package/src/styles/dock-controls/triggers.css +7 -0
  401. package/src/styles/dock.css +38 -3
  402. package/src/styles/drawer.css +123 -35
  403. package/src/styles/feedback-tone.css +104 -0
  404. package/src/styles/glass/deep.css +44 -0
  405. package/src/styles/glass/ladder.css +154 -52
  406. package/src/styles/glass/material.css +78 -15
  407. package/src/styles/glass/reveal.css +136 -0
  408. package/src/styles/glass/rim.css +100 -0
  409. package/src/styles/glass/surface-axis.css +113 -0
  410. package/src/styles/glass/surfaces.css +189 -15
  411. package/src/styles/glass-refract.css +96 -44
  412. package/src/styles/glass-specular-track.css +7 -0
  413. package/src/styles/glass.css +8 -2
  414. package/src/styles/hover-popover.css +7 -6
  415. package/src/styles/icon-chip.css +211 -0
  416. package/src/styles/index.css +78 -4
  417. package/src/styles/instrument-chassis.css +107 -2
  418. package/src/styles/menu.css +127 -0
  419. package/src/styles/scroll-choreography.css +300 -0
  420. package/src/styles/segmented-tabs.css +184 -84
  421. package/src/styles/select.css +50 -0
  422. package/src/styles/theme/bridges.css +22 -1
  423. package/src/styles/theme/literals.css +11 -2
  424. package/src/styles/theme/radius.css +6 -1
  425. package/src/styles/tokens/color-radius.css +40 -13
  426. package/src/styles/tokens/dark-arm.css +200 -20
  427. package/src/styles/tokens/glass-deep.css +75 -0
  428. package/src/styles/tokens/glass-fx.css +333 -0
  429. package/src/styles/tokens/glass.css +95 -315
  430. package/src/styles/tokens/light-dark.css +64 -22
  431. package/src/styles/tokens/offsets.css +116 -0
  432. package/src/styles/tokens/on-glass-fg.css +39 -0
  433. package/src/styles/tokens/property-regs.css +130 -10
  434. package/src/styles/tokens/scale-paper.css +155 -84
  435. package/src/styles/tokens/scheme-motion.css +102 -46
  436. package/src/styles/tokens/scroll-tokens.css +123 -0
  437. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  438. package/src/styles/tokens.css +9 -3
  439. package/src/styles/transitions.css +7 -7
  440. package/src/styles/typography/scale.css +153 -0
  441. package/src/styles/typography/semantic.css +220 -0
  442. package/src/styles/typography/utilities.css +174 -0
  443. package/src/styles/typography.css +23 -507
  444. package/src/styles/utilities/a11y-overrides.css +33 -4
  445. package/src/styles/utilities/animate.css +27 -24
  446. package/src/styles/utilities/base-misc.css +255 -0
  447. package/src/styles/utilities/base.css +100 -138
  448. package/src/styles/utilities/btn.css +21 -202
  449. package/src/styles/utilities/metal.css +189 -0
  450. package/src/styles/utilities.css +14 -7
  451. package/src/styles/view-transition.css +4 -1
  452. package/dist/CardAction-Cj2eycQ2.js +0 -157
  453. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  454. package/dist/Notification-DdwNxIrI.js +0 -100
  455. package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
  456. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  457. package/dist/TabsList-Dttss653.js +0 -105
  458. package/dist/Toaster-D6q4HtXu.js +0 -263
  459. package/dist/button-ChXMfsud.js +0 -81
  460. package/dist/check-njhk-vfu.js +0 -7
  461. package/dist/chevron-down-DKkxb4VV.js +0 -7
  462. package/dist/chevron-right-CPXbqQQz.js +0 -7
  463. package/dist/chevron-up-n_24SqI-.js +0 -7
  464. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  465. package/dist/components/custom/underline/index.d.ts +0 -2
  466. package/dist/components/custom/underline/types.d.ts +0 -56
  467. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  468. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  469. package/dist/minimize-2-BV31Ob_h.js +0 -38
  470. package/dist/search-BSGrf2Sk.js +0 -12
  471. package/dist/sheet-1fChZjtw.js +0 -214
  472. package/dist/underline.d.ts +0 -1
  473. package/dist/underline.js +0 -85
  474. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  475. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  476. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  477. package/dist/useSpringMount-CI2jOstM.js +0 -108
  478. package/dist/vReveal-CqaCz_mC.js +0 -44
  479. package/dist/x-BUwTKe50.js +0 -10
  480. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
  481. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  482. /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
  483. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
  484. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  485. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
  486. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
  487. /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
  488. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  489. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  490. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  491. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  492. /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
  493. /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
  494. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  495. /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
  496. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  497. /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
  498. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  499. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  500. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  501. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  502. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  503. /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
  504. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
  505. /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
  506. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
  507. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The ONE `navigator.gpu` capability probe (the single-bootstrap rule — mirrors
3
+ * `probeWebGL2Renderer`). SSR-safe (returns `false` with no `navigator`). The picker
4
+ * (`useGpuSubstrate`) reads it to decide the backend; a consumer NEVER touches
5
+ * `navigator.gpu` directly (it composes the substrate — `proof:gpu-substrate-single`
6
+ * clause A reds a direct call).
7
+ */
8
+ export declare function supportsWebGPU(): boolean;
9
+ export type WebGPUSuspendReason = "tab-hidden" | "off-screen" | "off-screen-io" | "manual";
10
+ /**
11
+ * The per-frame hooks a consumer's `setup(device, context, format)` returns. The
12
+ * consumer owns the WGSL pipeline + bind groups + the per-frame command-encoder
13
+ * record/submit; the substrate owns the schedule.
14
+ */
15
+ export interface WebGPUCanvasFrame {
16
+ /**
17
+ * Draw one frame at `timeSec`: the consumer records a command encoder, begins a
18
+ * render pass against the current swap-chain texture view
19
+ * (`context.getCurrentTexture().createView()`), draws, and submits.
20
+ */
21
+ frame: (timeSec: number) => void;
22
+ /** Demand-gate: is there live motion to render next frame? `false` → park. */
23
+ shouldContinue: () => boolean;
24
+ /** Size the canvas backing store. The consumer owns its DPR policy. */
25
+ resize: () => void;
26
+ /** Frame time from elapsed seconds — the consumer owns frozen/reduced-motion. */
27
+ time?: (elapsedSec: number) => number;
28
+ /** Release per-instance GPU resources (pipelines/buffers/bind groups). Runs on dispose + before a restore re-setup. */
29
+ teardown?: () => void;
30
+ }
31
+ export interface WebGPUCanvasOptions {
32
+ /** `context.configure` alpha mode (the consumer's — default `"premultiplied"`). */
33
+ alphaMode?: GPUCanvasAlphaMode;
34
+ /** Extra device-request options (features/limits). */
35
+ deviceDescriptor?: GPUDeviceDescriptor;
36
+ /** Adapter-request options (e.g. `powerPreference`). */
37
+ adapterOptions?: GPURequestAdapterOptions;
38
+ /** `"capture"` pre-seeds the `manual` suspension (renderAt-only). Default `"live"`. */
39
+ mode?: "live" | "capture";
40
+ /**
41
+ * Honor `prefers-reduced-motion: reduce` by painting ONE static frame then
42
+ * parking the loop. The shared lifecycle core live-monitors the query via a
43
+ * `matchMedia` `change` listener and re-arms (one static frame) on un-reduce.
44
+ * Default `true` for live mode, `false` for capture mode.
45
+ */
46
+ respectReducedMotion?: boolean;
47
+ /**
48
+ * Build the WGSL pipeline + bind groups on the resolved device. Called on the
49
+ * async arm AND on every device-restore. Returns the per-frame hooks.
50
+ */
51
+ setup: (device: GPUDevice, context: GPUCanvasContext, format: GPUTextureFormat) => WebGPUCanvasFrame;
52
+ /** Surface a device-init / validation failure (no WebGPU adapter, a `setup` throw). */
53
+ onInitError?: (error: unknown) => void;
54
+ }
55
+ export interface WebGPUCanvasHandle {
56
+ /**
57
+ * Run the expensive ASYNC init (adapter + device + context.configure + `setup`)
58
+ * THEN arm the loop. Resolves once armed (or rejects-via-`onInitError` on a
59
+ * device-unavailable / `setup` failure). Idempotent; a no-op post-dispose.
60
+ */
61
+ armAsync: () => Promise<void>;
62
+ /**
63
+ * Synchronous `arm` — a no-op until `armAsync` has resolved the device (the
64
+ * uniform-handle parity with the synchronous backends; the picker calls
65
+ * `armAsync` for the WebGPU path). Idempotent.
66
+ */
67
+ arm: () => void;
68
+ suspend: (reason?: WebGPUSuspendReason) => void;
69
+ resume: (reason?: WebGPUSuspendReason) => void;
70
+ /** Re-arm a parked loop (a setter that re-introduced motion calls this). */
71
+ wake: () => void;
72
+ /** Draw one frame at `timeSec` out-of-loop (capture / thumbnail). */
73
+ renderAt: (timeSec: number) => void;
74
+ dispose: () => void;
75
+ /** The live device (null before armAsync / after dispose / mid-loss). */
76
+ readonly device: GPUDevice | null;
77
+ /**
78
+ * The live `prefers-reduced-motion: reduce` state. The shared lifecycle core
79
+ * owns + re-monitors it; consumers read it (e.g. a viz freezes its frame time
80
+ * at the authored offset while this is `true`).
81
+ */
82
+ readonly reducedMotion: boolean;
83
+ }
84
+ export declare function createWebGPUCanvas(canvas: HTMLCanvasElement, options: WebGPUCanvasOptions): WebGPUCanvasHandle;
@@ -10,3 +10,4 @@ export * from "../useViewTransition";
10
10
  export * from "../vReveal";
11
11
  export * from "../useTextHighlight";
12
12
  export * from "../useLiquidFlex";
13
+ export * from "../usePointerVelocityField";
@@ -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,59 @@
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
+ /**
41
+ * The external-CTA-into-dock-control morph. Composes the SAME kf `ElementMorph` +
42
+ * `springTimingFunction` substrate `useLiquidReveal` activates, driven FORWARD (the
43
+ * reveal's inverse): the CTA flies + reshapes from its own rect onto the dock
44
+ * control's rect, fades + congests into the glass on the spring clock, then hands off.
45
+ * Compositor-only + PRM-seats. See the module header for the REUSE + the FORWARD-play
46
+ * mechanism + the channel split.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * const { receive, reset } = useDockCtaReceive(ctaRef, {
51
+ * dockControl: dockTargetRef,
52
+ * preset: "snappy",
53
+ * onReceived: () => (ctaConsumed.value = true),
54
+ * })
55
+ * // on the CTA click: morph it into the dock.
56
+ * function onCta() { receive() }
57
+ * ```
58
+ */
59
+ 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;
@@ -5,6 +5,17 @@
5
5
  * (one symmetric curve), which is functionally identical (the swap still runs). */
6
6
  export interface ViewTransitionOptions {
7
7
  types?: string[];
8
+ /**
9
+ * BA.W-ATLAS-RECONCILE A-4b — take the JS-level INSTANT path under
10
+ * `prefers-reduced-motion: reduce` (run `mutate` directly, NO snapshot
11
+ * captured). The HEAD default pushes PRM to CSS only (`view-transition.css`
12
+ * sets `animation: none` on the VT pseudos) — but that STILL captures a
13
+ * snapshot. For the navigation case a reduced-motion user wants the swap to
14
+ * happen with no transition machinery at all; `navigate()` sets this true.
15
+ * Defaults to `false` so the existing sync-VT consumers (muster J.W5 row
16
+ * re-rank) keep their exact CSS-handled PRM behaviour. @default false
17
+ */
18
+ instantUnderReducedMotion?: boolean;
8
19
  }
9
20
  export interface ViewTransitionResult {
10
21
  /**
@@ -43,4 +54,28 @@ export declare function supportsViewTransitions(): boolean;
43
54
  * // directional intent — snappier exit on collapse, softer entry on expand
44
55
  * startViewTransition(() => mutate(), { types: ["dock-expand"] });
45
56
  */
46
- export declare function startViewTransition(mutate: () => void, options?: ViewTransitionOptions): ViewTransitionResult;
57
+ export declare function startViewTransition(mutate: () => void | Promise<void>, options?: ViewTransitionOptions): ViewTransitionResult;
58
+ /** Options for `navigate` — the directional transition `types` (Chrome 140+,
59
+ * feature-detected; tag `["forward"]`/`["back"]` off the navigation direction). */
60
+ export type NavigateOptions = ViewTransitionOptions;
61
+ /**
62
+ * Run a (possibly ASYNC) navigation callback wrapped in a View Transition, with
63
+ * the reduced-motion + unsupported instant-paths. The navigation ALWAYS runs
64
+ * (awaited); the morph is conditional on support + motion preference. Returns the
65
+ * same `{ finished, transitioned }` contract — `await navigate(go).finished` then
66
+ * route focus (the a11y MANDATORY).
67
+ *
68
+ * @example the card → masthead route morph
69
+ * // both the card title + masthead title carry
70
+ * // view-transition-class: gl-shared-element; view-transition-name: dash-title
71
+ * await navigate(() => router.push(`/${slug}`), { types: ["forward"] }).finished;
72
+ * mastheadTitle.value?.focus();
73
+ */
74
+ export declare function navigate(nav: () => void | Promise<void>, options?: NavigateOptions): ViewTransitionResult;
75
+ /**
76
+ * True when the route-transition morph can run (native VT available). A consumer
77
+ * gates VT-only navigation styling on this (alias of `supportsViewTransitions`
78
+ * named for the navigation call site). Under reduced motion the `navigate` helper
79
+ * still takes the instant path even when this is `true`.
80
+ */
81
+ export declare function supportsRouteTransitions(): boolean;
@@ -0,0 +1 @@
1
+ export * from "./components/custom/concentric";