@mkbabb/glass-ui 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-8whJrLWt.js +268 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
  4. package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
  5. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
  9. package/dist/DialogFooter-9phqcRIS.js +80 -0
  10. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  11. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
  12. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  13. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
  14. package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
  15. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
  16. package/dist/Input-Cg9DF62r.js +57 -0
  17. package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
  18. package/dist/Notification-CphK7AAm.js +43 -0
  19. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  20. package/dist/PagerDots-Cjx96la-.js +98 -0
  21. package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  22. package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
  23. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
  24. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
  25. package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
  26. package/dist/Separator-DQcwC2TR.js +44 -0
  27. package/dist/Switch-B8RscmRu.js +49 -0
  28. package/dist/Toaster-D9qIHjBI.js +274 -0
  29. package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
  30. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +21 -33
  33. package/dist/api/types-extra.d.ts +37 -0
  34. package/dist/api.js +1 -1
  35. package/dist/aurora.js +1231 -260
  36. package/dist/badge.js +1 -1
  37. package/dist/border-progress.d.ts +1 -0
  38. package/dist/border-progress.js +98 -0
  39. package/dist/button-5dY1Dvhd.js +125 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +2 -2
  43. package/dist/carousel.js +93 -110
  44. package/dist/collapsible.js +1 -1
  45. package/dist/color-Cs0-oxYL.js +116 -0
  46. package/dist/color.js +2 -2
  47. package/dist/command.js +1 -1
  48. package/dist/compile-nZ1xVYTp.js +19 -0
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  53. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  55. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  56. package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
  57. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  58. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  59. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
  60. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  61. package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
  62. package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
  63. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  65. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  66. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  67. package/dist/components/custom/aurora/index.d.ts +2 -1
  68. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  69. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  70. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
  71. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  72. package/dist/components/custom/border-progress/index.d.ts +4 -0
  73. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  74. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  75. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  76. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  77. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  78. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
  79. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
  80. package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
  81. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
  82. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  83. package/dist/components/custom/concentric/constants.d.ts +67 -0
  84. package/dist/components/custom/concentric/index.d.ts +5 -0
  85. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  86. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  87. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  88. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  89. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  90. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  91. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  92. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  93. package/dist/components/custom/constellation/constants.d.ts +33 -0
  94. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  95. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  96. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  97. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  98. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  99. package/dist/components/custom/constellation/index.d.ts +5 -5
  100. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  101. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  102. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  103. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  104. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  105. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  106. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  107. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  108. package/dist/components/custom/deck/constants.d.ts +14 -0
  109. package/dist/components/custom/deck/index.d.ts +8 -0
  110. package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
  111. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  112. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  113. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  114. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
  115. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  116. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  117. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  118. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  119. package/dist/components/custom/dock/constants.d.ts +18 -14
  120. package/dist/components/custom/dock/index.d.ts +5 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
  123. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
  124. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
  125. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
  126. package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
  127. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  128. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  129. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
  130. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  131. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  132. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  133. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  134. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  135. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  136. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  137. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  138. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  139. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  140. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  141. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  142. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
  143. package/dist/components/custom/easing/constants.d.ts +28 -0
  144. package/dist/components/custom/easing/index.d.ts +3 -0
  145. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  146. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
  147. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  148. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  149. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  150. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
  151. package/dist/components/custom/fourier-field/constants.d.ts +64 -0
  152. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  153. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  156. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
  158. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  159. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  160. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  161. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  163. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  165. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  167. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  168. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  172. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  173. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  174. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  176. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  177. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  178. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  179. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  180. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  181. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  182. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  183. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  184. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  185. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  186. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  187. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  188. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  189. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  190. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  191. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  192. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  193. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  194. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  195. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  196. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  197. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  198. package/dist/components/custom/search/index.d.ts +2 -0
  199. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  200. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  201. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  202. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  203. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  204. package/dist/components/custom/spa-view/index.d.ts +2 -0
  205. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  206. package/dist/components/custom/split-chars/index.d.ts +1 -0
  207. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
  208. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  209. package/dist/components/custom/tabs/constants.d.ts +20 -2
  210. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
  211. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  212. package/dist/components/ui/_shared/index.d.ts +2 -0
  213. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  214. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  215. package/dist/components/ui/badge/index.d.ts +1 -1
  216. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  217. package/dist/components/ui/button/index.d.ts +2 -2
  218. package/dist/components/ui/card/Card.vue.d.ts +79 -4
  219. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  220. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  221. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  222. package/dist/components/ui/card/index.d.ts +3 -1
  223. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  224. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  225. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  226. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  227. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  228. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  229. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  230. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  231. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  232. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  233. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  234. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  235. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  236. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  237. package/dist/components/ui/drawer/constants.d.ts +45 -0
  238. package/dist/components/ui/drawer/index.d.ts +23 -15
  239. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  240. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  241. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  242. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  243. package/dist/components/ui/index.d.ts +1 -0
  244. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  245. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  246. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  247. package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
  248. package/dist/components/ui/sheet/index.d.ts +1 -1
  249. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  250. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  251. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  252. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  253. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  254. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  255. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  256. package/dist/composables/color/index.d.ts +2 -0
  257. package/dist/composables/color/useAccentTone.d.ts +34 -0
  258. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  259. package/dist/composables/glass/index.d.ts +5 -2
  260. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  261. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  262. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  263. package/dist/composables/glass/vSpecular.d.ts +2 -0
  264. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  265. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  266. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  267. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  268. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  269. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
  270. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
  271. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  272. package/dist/composables/motion/core/index.d.ts +4 -0
  273. package/dist/composables/motion/index.d.ts +4 -0
  274. package/dist/composables/motion/scrollReader.d.ts +25 -0
  275. package/dist/composables/motion/springPresets.d.ts +20 -1
  276. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  277. package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
  278. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  279. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  280. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  281. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  282. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  283. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  284. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  285. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  286. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  287. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  288. package/dist/composables/sidebar/index.d.ts +4 -1
  289. package/dist/composables/sidebar/types.d.ts +68 -3
  290. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  291. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  292. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  293. package/dist/composables/virtual/index.d.ts +4 -0
  294. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  295. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  296. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  297. package/dist/concentric.d.ts +1 -0
  298. package/dist/concentric.js +836 -0
  299. package/dist/configurator.js +3 -2
  300. package/dist/confirm-dialog.js +62 -49
  301. package/dist/constellation.js +635 -235
  302. package/dist/context-menu.js +3 -3
  303. package/dist/controls.js +2 -2
  304. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  305. package/dist/dark.js +1 -1
  306. package/dist/data-table.js +1 -1
  307. package/dist/deck.d.ts +1 -0
  308. package/dist/deck.js +105 -0
  309. package/dist/dialog.js +4 -3
  310. package/dist/dock.js +819 -568
  311. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  312. package/dist/dom.js +5 -5
  313. package/dist/dot-flow-field.d.ts +1 -0
  314. package/dist/dot-flow-field.js +894 -0
  315. package/dist/dot-matrix.d.ts +1 -0
  316. package/dist/dot-matrix.js +630 -0
  317. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  318. package/dist/drawer.d.ts +1 -0
  319. package/dist/drawer.js +380 -0
  320. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
  321. package/dist/dropdown-menu.js +1 -1
  322. package/dist/easing.d.ts +1 -0
  323. package/dist/easing.js +475 -0
  324. package/dist/expandable-container.js +46 -21
  325. package/dist/fading-scroll.js +1 -1
  326. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  327. package/dist/focus-scope.d.ts +1 -0
  328. package/dist/focus-scope.js +23 -0
  329. package/dist/forms.js +65 -63
  330. package/dist/fourier-field.js +831 -172
  331. package/dist/fourier-math.js +1 -1
  332. package/dist/glass-panel.js +2 -2
  333. package/dist/glass-ui.css +1 -1
  334. package/dist/glass-ui.js +187 -338
  335. package/dist/goo-blob.js +241 -692
  336. package/dist/goo-dot-matrix.d.ts +1 -0
  337. package/dist/goo-dot-matrix.js +591 -0
  338. package/dist/handmark.js +2 -2
  339. package/dist/header-ribbon.js +1 -1
  340. package/dist/hover-card.js +1 -1
  341. package/dist/hover-popover.js +1 -1
  342. package/dist/icon-chip.js +1 -1
  343. package/dist/icon-tooltip.js +1 -1
  344. package/dist/index.d.ts +3 -1
  345. package/dist/instrument-chassis.js +1 -1
  346. package/dist/keyboard.js +1 -1
  347. package/dist/label.js +1 -1
  348. package/dist/labeled-field.js +70 -60
  349. package/dist/metric-badge.js +1 -1
  350. package/dist/metric-cell.js +1 -1
  351. package/dist/metric-stack.js +14 -9
  352. package/dist/motion-core.js +58 -36
  353. package/dist/motion-curves.js +11 -1
  354. package/dist/motion.js +90 -53
  355. package/dist/notification.js +1 -1
  356. package/dist/number-field.js +1 -1
  357. package/dist/pager-dots.js +2 -91
  358. package/dist/paper-backdrop.js +1 -1
  359. package/dist/paper-grid.d.ts +1 -0
  360. package/dist/paper-grid.js +788 -0
  361. package/dist/popover.js +1 -1
  362. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  363. package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
  364. package/dist/progress.js +1 -1
  365. package/dist/pulse.js +2 -2
  366. package/dist/reactive.js +1 -1
  367. package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
  368. package/dist/scrollReader-DI1NWxUw.js +42 -0
  369. package/dist/scrolling-text.js +1 -1
  370. package/dist/search.js +162 -308
  371. package/dist/select.js +3 -3
  372. package/dist/selectable-chip.d.ts +1 -0
  373. package/dist/selectable-chip.js +65 -0
  374. package/dist/separator.js +1 -1
  375. package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
  376. package/dist/sheet.js +1 -1
  377. package/dist/sidebar.js +216 -114
  378. package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
  379. package/dist/slider.js +1 -1
  380. package/dist/sortable-list.js +2 -2
  381. package/dist/spa-view.d.ts +1 -0
  382. package/dist/spa-view.js +46 -0
  383. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  384. package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
  385. package/dist/styles/animations.css +46 -12
  386. package/dist/styles/border-progress.css +109 -0
  387. package/dist/styles/cards.css +145 -0
  388. package/dist/styles/completion-seal.css +131 -0
  389. package/dist/styles/components.css +2 -3
  390. package/dist/styles/configurator.css +55 -0
  391. package/dist/styles/critical-partition.mjs +162 -0
  392. package/dist/styles/critical.css +12 -0
  393. package/dist/styles/deferred.css +33 -0
  394. package/dist/styles/dock/cta-seat.css +87 -0
  395. package/dist/styles/dock/density.css +198 -0
  396. package/dist/styles/dock/layers.css +101 -29
  397. package/dist/styles/dock/morph-bridge.css +54 -18
  398. package/dist/styles/dock/morph.css +132 -7
  399. package/dist/styles/dock/overflow.css +28 -2
  400. package/dist/styles/dock/search.css +68 -0
  401. package/dist/styles/dock/shape.css +124 -0
  402. package/dist/styles/dock/shell.css +77 -21
  403. package/dist/styles/dock/stack-rail.css +264 -0
  404. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  405. package/dist/styles/dock-controls/icon-button.css +14 -0
  406. package/dist/styles/dock.css +43 -1
  407. package/dist/styles/drawer.css +81 -35
  408. package/dist/styles/glass/accent-tone.css +66 -0
  409. package/dist/styles/glass/control-surfaces.css +167 -0
  410. package/dist/styles/glass/deep.css +44 -0
  411. package/dist/styles/glass/ladder.css +147 -41
  412. package/dist/styles/glass/material.css +78 -15
  413. package/dist/styles/glass/reveal.css +136 -0
  414. package/dist/styles/glass/rim.css +110 -0
  415. package/dist/styles/glass/surfaces.css +148 -129
  416. package/dist/styles/glass-refract.css +96 -44
  417. package/dist/styles/glass-specular-track.css +7 -0
  418. package/dist/styles/glass.css +13 -0
  419. package/dist/styles/hover-popover.css +7 -6
  420. package/dist/styles/icon-chip.css +77 -15
  421. package/dist/styles/index.css +36 -9
  422. package/dist/styles/instrument-chassis.css +66 -3
  423. package/dist/styles/scroll-choreography.css +300 -0
  424. package/dist/styles/scroll-chrome.css +123 -0
  425. package/dist/styles/scroll-driven.css +38 -0
  426. package/dist/styles/segmented-tabs.css +81 -14
  427. package/dist/styles/theme/bridges.css +33 -0
  428. package/dist/styles/theme/literals.css +11 -2
  429. package/dist/styles/theme/radius.css +24 -2
  430. package/dist/styles/tokens/color-radius.css +13 -3
  431. package/dist/styles/tokens/dark-arm.css +137 -32
  432. package/dist/styles/tokens/glass-deep.css +100 -0
  433. package/dist/styles/tokens/glass-fx.css +376 -0
  434. package/dist/styles/tokens/glass.css +131 -351
  435. package/dist/styles/tokens/light-dark.css +16 -3
  436. package/dist/styles/tokens/offsets.css +143 -0
  437. package/dist/styles/tokens/on-glass-fg.css +39 -0
  438. package/dist/styles/tokens/property-regs.css +260 -0
  439. package/dist/styles/tokens/scale-paper.css +168 -96
  440. package/dist/styles/tokens/scheme-motion.css +114 -38
  441. package/dist/styles/tokens/scroll-tokens.css +123 -0
  442. package/dist/styles/tokens/sizing-config.css +110 -0
  443. package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
  444. package/dist/styles/tokens.css +14 -3
  445. package/dist/styles/typography/semantic.css +26 -13
  446. package/dist/styles/typography/utilities.css +22 -7
  447. package/dist/styles/utilities/a11y-overrides.css +20 -5
  448. package/dist/styles/utilities/animate.css +27 -24
  449. package/dist/styles/utilities/base-misc.css +307 -0
  450. package/dist/styles/utilities/base.css +47 -261
  451. package/dist/styles/utilities/btn.css +17 -4
  452. package/dist/styles/utilities/components.css +31 -6
  453. package/dist/styles/utilities/metal.css +215 -0
  454. package/dist/styles/utilities.css +14 -7
  455. package/dist/switch.js +1 -1
  456. package/dist/tabs.js +220 -107
  457. package/dist/timeline.js +2 -2
  458. package/dist/toast.js +1 -1
  459. package/dist/toggle-chip.js +10 -10
  460. package/dist/toggle-group.js +1 -1
  461. package/dist/tooltip.js +1 -1
  462. package/dist/typewriter.js +2 -2
  463. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  464. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  465. package/dist/useConfiguratorState-4xblKfwd.js +162 -0
  466. package/dist/useControlSize-SH1UmJCi.js +9 -0
  467. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  468. package/dist/useDragMorph-BUgAC-zK.js +102 -0
  469. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  470. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  471. package/dist/useLiquidPress-BooG97RY.js +39 -0
  472. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  473. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  474. package/dist/useSpring-C0jyvEJB.js +40 -0
  475. package/dist/useSpringMount-BWDnKIwh.js +71 -0
  476. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  477. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  478. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  479. package/dist/vSpecular-EX7loENl.js +68 -0
  480. package/dist/vendor-B2qOlYY3.js +239 -0
  481. package/dist/virtual.d.ts +1 -0
  482. package/dist/virtual.js +225 -0
  483. package/dist/watercolor-dot.js +117 -74
  484. package/package.json +252 -28
  485. package/src/styles/animations.css +46 -12
  486. package/src/styles/border-progress.css +109 -0
  487. package/src/styles/cards.css +145 -0
  488. package/src/styles/completion-seal.css +131 -0
  489. package/src/styles/configurator.css +55 -0
  490. package/src/styles/critical-partition.mjs +162 -0
  491. package/src/styles/dock/cta-seat.css +87 -0
  492. package/src/styles/dock/density.css +198 -0
  493. package/src/styles/dock/layers.css +101 -29
  494. package/src/styles/dock/morph-bridge.css +54 -18
  495. package/src/styles/dock/morph.css +132 -7
  496. package/src/styles/dock/overflow.css +28 -2
  497. package/src/styles/dock/search.css +68 -0
  498. package/src/styles/dock/shape.css +124 -0
  499. package/src/styles/dock/shell.css +77 -21
  500. package/src/styles/dock/stack-rail.css +264 -0
  501. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  502. package/src/styles/dock-controls/icon-button.css +14 -0
  503. package/src/styles/dock.css +43 -1
  504. package/src/styles/drawer.css +81 -35
  505. package/src/styles/glass/accent-tone.css +66 -0
  506. package/src/styles/glass/control-surfaces.css +167 -0
  507. package/src/styles/glass/deep.css +44 -0
  508. package/src/styles/glass/ladder.css +147 -41
  509. package/src/styles/glass/material.css +78 -15
  510. package/src/styles/glass/reveal.css +136 -0
  511. package/src/styles/glass/rim.css +110 -0
  512. package/src/styles/glass/surfaces.css +148 -129
  513. package/src/styles/glass-refract.css +96 -44
  514. package/src/styles/glass-specular-track.css +7 -0
  515. package/src/styles/glass.css +13 -0
  516. package/src/styles/hover-popover.css +7 -6
  517. package/src/styles/icon-chip.css +77 -15
  518. package/src/styles/index.css +27 -0
  519. package/src/styles/instrument-chassis.css +66 -3
  520. package/src/styles/scroll-choreography.css +300 -0
  521. package/src/styles/scroll-chrome.css +123 -0
  522. package/src/styles/scroll-driven.css +38 -0
  523. package/src/styles/segmented-tabs.css +81 -14
  524. package/src/styles/theme/bridges.css +33 -0
  525. package/src/styles/theme/literals.css +11 -2
  526. package/src/styles/theme/radius.css +24 -2
  527. package/src/styles/tokens/color-radius.css +13 -3
  528. package/src/styles/tokens/dark-arm.css +137 -32
  529. package/src/styles/tokens/glass-deep.css +100 -0
  530. package/src/styles/tokens/glass-fx.css +376 -0
  531. package/src/styles/tokens/glass.css +131 -351
  532. package/src/styles/tokens/light-dark.css +16 -3
  533. package/src/styles/tokens/offsets.css +143 -0
  534. package/src/styles/tokens/on-glass-fg.css +39 -0
  535. package/src/styles/tokens/property-regs.css +260 -0
  536. package/src/styles/tokens/scale-paper.css +168 -96
  537. package/src/styles/tokens/scheme-motion.css +114 -38
  538. package/src/styles/tokens/scroll-tokens.css +123 -0
  539. package/src/styles/tokens/sizing-config.css +110 -0
  540. package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
  541. package/src/styles/tokens.css +14 -3
  542. package/src/styles/typography/semantic.css +26 -13
  543. package/src/styles/typography/utilities.css +22 -7
  544. package/src/styles/utilities/a11y-overrides.css +20 -5
  545. package/src/styles/utilities/animate.css +27 -24
  546. package/src/styles/utilities/base-misc.css +307 -0
  547. package/src/styles/utilities/base.css +47 -261
  548. package/src/styles/utilities/btn.css +17 -4
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +215 -0
  551. package/src/styles/utilities.css +14 -7
  552. package/dist/CardAction-XH4YBVEK.js +0 -158
  553. package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
  554. package/dist/DialogFooter-8eZbdmPc.js +0 -165
  555. package/dist/HoverCardContent-DkMaQzH5.js +0 -83
  556. package/dist/Input-DVG_J0ne.js +0 -55
  557. package/dist/Notification-DKjKsQq8.js +0 -100
  558. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  559. package/dist/Separator-BArl4OaB.js +0 -37
  560. package/dist/Switch-Dr--uLGH.js +0 -47
  561. package/dist/Toaster-Bm_HQSpc.js +0 -263
  562. package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
  563. package/dist/TooltipProvider-B3MkB_8P.js +0 -104
  564. package/dist/button-BNDWhAZb.js +0 -81
  565. package/dist/check-njhk-vfu.js +0 -7
  566. package/dist/chevron-down-DKkxb4VV.js +0 -7
  567. package/dist/chevron-right-CPXbqQQz.js +0 -7
  568. package/dist/chevron-up-n_24SqI-.js +0 -7
  569. package/dist/color-DweYl7pE.js +0 -86
  570. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  571. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  572. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  573. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  574. package/dist/minimize-2-BV31Ob_h.js +0 -38
  575. package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
  576. package/dist/search-BSGrf2Sk.js +0 -12
  577. package/dist/styles/dock/rail-extend.css +0 -397
  578. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  579. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  580. package/dist/useRAFLoop-CdwJ7284.js +0 -109
  581. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  582. package/dist/useSpringMount-CvopqiFr.js +0 -108
  583. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  584. package/dist/x-BUwTKe50.js +0 -10
  585. package/src/styles/dock/rail-extend.css +0 -397
  586. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  587. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  588. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  589. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  590. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  591. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
  592. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  593. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  594. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  595. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  596. /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
  597. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  598. /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
  599. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  600. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  601. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  602. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  603. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  604. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  605. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  606. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  607. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  608. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  609. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1,155 @@
1
+ import type { Ref } from "vue";
2
+ /**
3
+ * BB.W-CARVE4 — the dock morph MEASURE/SEAT helpers, carved out of
4
+ * `dockMorphContext.ts` to hold the no-god-module bound (the aurora→useAurora /
5
+ * goo-blob→useMetaballRenderer / fourier-field→useFourierField colocation pattern).
6
+ * The orchestrator stays the morph DRIVER (it owns the `SpringProgress`, the targets
7
+ * Set, the per-frame `--dock-morph-t` write); these are the PURE geometry + the
8
+ * reserved-footprint measure + the SYNCHRONOUS PRM seat it composes. `DOCK_SPRING` is
9
+ * byte-fenced — it lives in `../constants`, never touched here.
10
+ *
11
+ * The functions take their element/axis/target dependencies as explicit params (the
12
+ * orchestrator's closures collapse onto this seam) — no module-level state, so the
13
+ * extraction is behaviour-identical to the prior inline closures.
14
+ */
15
+ /** The minimal morph-target shape the measure/seat helpers read (the orchestrator's
16
+ * full `MorphTarget` structurally satisfies it). */
17
+ export interface MorphMeasureTarget {
18
+ containerEl: Ref<HTMLElement | null>;
19
+ axis: Ref<"horizontal" | "vertical">;
20
+ /** PER-TARGET swap generation — the seat gates its pipeline on its own id. */
21
+ txId: number;
22
+ }
23
+ export declare function dimOf(axis: "horizontal" | "vertical"): "width" | "height";
24
+ export declare function morphAxisProp(axis: "horizontal" | "vertical"): "inline-size" | "block-size";
25
+ export declare function getSize(el: HTMLElement, axis: "horizontal" | "vertical"): number;
26
+ export declare function clearMorphVars(el: HTMLElement): void;
27
+ /**
28
+ * BC.W-LIQUID-MORPH (M3) — the reserve-floor in px (the measure-failure floor). The
29
+ * CSS reserve floors the box at `max(var(--dock-morph-to), var(--dock-morph-min))`
30
+ * (layers.css), but the SCALAR ratio still runs toward `--dock-morph-to`, so a
31
+ * `to:0` mis-measure would interpolate toward a degenerate target. The orchestrator's
32
+ * measure-failure guard seats the measured `to` at THIS px so the morph interpolates
33
+ * toward a visible footprint, never 0 — "visible at the floor," never "white." Reads
34
+ * the element's RESOLVED `--dock-morph-min` (density-scaled), falling back to the WCAG
35
+ * ~44px touch floor when the token is unset / unresolvable. Pure read — no write.
36
+ */
37
+ export declare function morphMinFloorPx(el: HTMLElement | null): number;
38
+ /**
39
+ * BA-VJS-1 (valuejs-fold A-1) — the OTHER registered targets whose container is a
40
+ * DOM DESCENDANT of `outerEl` (a nested `<DockLayerGroup>` stack inside the outer
41
+ * `.dock-layers`). These are the pinned inner spans the outer measure must see at
42
+ * their OWN intrinsic `max-content`, not their collapsed pin, or the outer
43
+ * shrink-wraps to ~0.
44
+ */
45
+ export declare function nestedTargetsWithin(outer: MorphMeasureTarget, outerEl: HTMLElement, targets: Iterable<MorphMeasureTarget>): MorphMeasureTarget[];
46
+ /**
47
+ * BA-VJS-1 — force ONE nested target to its own-axis `max-content` (clearing its
48
+ * reserved `--dock-morph-to` footprint so it sizes to content), and return a closure
49
+ * that RESTORES its exact prior inline state. The restore re-writes the precise
50
+ * prior `inline-size`/`block-size` inline value (or removes it if there was none),
51
+ * so the inner's in-flight pin is byte-identical after the outer's measurement —
52
+ * the inner target's own spring/pin pipeline is never disturbed.
53
+ */
54
+ export declare function forceNestedMaxContent(n: MorphMeasureTarget): () => void;
55
+ /**
56
+ * BB.W-DOCK-MORPH-FAMILY (c) — measure the true `to` for ONE target with the
57
+ * morph axis forced to `max-content` (the same circular-measure escape the rAF
58
+ * path uses), composing the BA-VJS-1 nested-descendant `max-content` ordering so
59
+ * a nested group reads its TRUE intrinsic span (never `to:0`). The element is at
60
+ * the live painted geometry on entry; this forces+reads+restores the axis. PURE
61
+ * measure — no spring, no pin write.
62
+ */
63
+ export declare function measureTo(t: MorphMeasureTarget, el: HTMLElement, targets: Iterable<MorphMeasureTarget>): number;
64
+ /** The orchestrator settle callbacks the synchronous seat composes (it clears the
65
+ * morph vars + nulls the leaving layer, then parks the root/spring once no target
66
+ * is morphing). */
67
+ export interface MorphSeatCallbacks {
68
+ /** Settle ONE target (clear its morph vars + null its leavingLayer). */
69
+ settleTarget(t: MorphMeasureTarget): void;
70
+ /** Park the shared scalar + spring once NO target is morphing. */
71
+ maybeSettleRoot(): void;
72
+ }
73
+ /**
74
+ * BB.W-DOCK-MORPH-FAMILY (c) — the SYNCHRONOUS PRM seat. Under
75
+ * `prefers-reduced-motion: reduce` there is NO morph to play, so the geometry +
76
+ * the scalar seat at the target in ONE step (the `useDockOrientationMorph.pin()`
77
+ * precedent transplanted onto the collapse/expand path): measure the true `to`
78
+ * (composing the BA-VJS-1 nested ordering), write the box at `to` (the
79
+ * reserved-footprint reads at scale 1), and set `--dock-morph-t` to the endpoint
80
+ * for THIS swap — then clear the morph state immediately (no rAF measure-defer,
81
+ * no spring, no morph window). The box NEVER paints the collapsed `from` sliver
82
+ * with the scalar at 1 (the P0 terminal failure). Endpoint is the per-swap
83
+ * incoming-ness `1` (the new pane is fully in; the directional `--dock-expand-t`
84
+ * resolves to the class endpoint with `[data-morphing]` cleared).
85
+ */
86
+ export declare function seatTargetSync(t: MorphMeasureTarget, id: number, root: HTMLElement | null, targets: Iterable<MorphMeasureTarget>, cb: MorphSeatCallbacks): void;
87
+ /**
88
+ * The swap-while-morphing sibling re-base. The shared scalar resets to 0 for the
89
+ * new span; if SIBLING targets are mid-morph, re-base their `from` to their CURRENT
90
+ * painted px first, so resetting the scalar keeps them visually continuous (they
91
+ * interpolate fresh from where they are, toward their unchanged `to`) rather than
92
+ * snapping back to their old `from`. PURE over the swapping target + the target set.
93
+ */
94
+ export declare function rebaseSiblingSpans(swapping: MorphMeasureTarget, targets: Iterable<MorphMeasureTarget>): void;
95
+ /**
96
+ * BC.W-DOCK-ROOT-MORPH — clear the ROOT box's own morph span (the `inline-size` =
97
+ * f(scalar) recipe in layers.css reads `--dock-root-morph-from/to`; clearing them
98
+ * hands the box back to the at-rest shrink-wrap once the morph settles). PURE on
99
+ * the root element — no orchestrator closure.
100
+ */
101
+ export declare function clearRootMorphSpan(root: HTMLElement | null): void;
102
+ /**
103
+ * BC.W-DOCK-ROOT-MORPH — pin the ROOT box's own from→to span on the dock root.
104
+ *
105
+ * THE SNAP ROOT CAUSE: the inner `.dock-layers` reserves its SETTLED `to`
106
+ * footprint (`inline-size: var(--dock-morph-to)`, layers.css — the E4-frozen
107
+ * CDP-Layout-flat mechanism) and morphs VISUALLY via `transform: scaleX()`. A
108
+ * `transform` is paint-only — a parent does NOT shrink-wrap to a scaled child —
109
+ * so the root `.glass-dock` (display:inline-flex) shrink-wraps to the inner's
110
+ * RESERVED full `to` width and SNAPS to full on frame 0, while the inner's scaled
111
+ * box rides the spring smoothly. The gate (and the page) measure the ROOT box, so
112
+ * the root must ALSO ramp. The layers.css recipe reads
113
+ * `inline-size: calc(from + (to−from)·--dock-morph-t)` (the SAME scalar the spring
114
+ * glides, NO CSS transition — proof:no-layout-animation stays GREEN; a `calc()`
115
+ * over the registered `--dock-morph-t` is not a transition). PURE on the root.
116
+ */
117
+ export declare function armRootMorphSpan(root: HTMLElement | null, rootFrom: number, rootTo: number): void;
118
+ /** The orchestrator callbacks the rAF measure-and-arm window composes — the arm
119
+ * step re-pins the per-target + root spans on the shared scalar. */
120
+ export interface MorphMeasureArmCallbacks {
121
+ /** Arm the per-target `--dock-morph-from/to` span + ensure the shared spring. */
122
+ armTarget(t: MorphMeasureTarget, id: number, fromSize: number, toSize: number): void;
123
+ }
124
+ /**
125
+ * BC.W-DOCK-ROOT-MORPH / BA-VJS-1 / BC.W-LIQUID-MORPH (M3) — the rAF measure-and-arm
126
+ * window: ONE rAF (post-flush) later, lift the pin for a single synchronous
127
+ * measurement of the now-correct shrink-wrapped to-size, then re-pin + start the
128
+ * spring IN THE SAME FRAME. The measurement + arm are gated on THIS target's own
129
+ * `txId`, so a sibling target swapping in the same tick does NOT clobber it.
130
+ *
131
+ * BA-VJS-1 — the nested-`DockLayerGroup` measure-ORDERING fix: force every OTHER
132
+ * registered target whose container is a DOM descendant of this outer's container
133
+ * to its own-axis `max-content` (clearing its pinned calc span) for the single
134
+ * synchronous measurement, then RESTORE its exact prior inline state, so the outer
135
+ * shrink-wraps around the inner's TRUE intrinsic content, not its pinned collapse.
136
+ *
137
+ * BC.W-DOCK-ROOT-MORPH — for the OUTER target, LIFT the root's own pinned span for
138
+ * the duration of this synchronous measure (clearing `--dock-root-morph-from/to`,
139
+ * which the layers.css recipe constrains the root by) so the root shrink-wraps to
140
+ * its TRUE expanded width, read it DIRECTLY (sidestepping the chrome-offset
141
+ * arithmetic + the empty-summary `inner-to:0` trap), then RESTORE the pin and
142
+ * arm the root from→to span so its `inline-size` ramps on the SAME scalar.
143
+ *
144
+ * BC.W-LIQUID-MORPH (M3) — the measure-failure guard: a `to:0` mis-measure (a
145
+ * mid-morph re-grab, a nested collapsible still pinned, a race the ordering fix
146
+ * missed) seats the measured `to` at the resolved floor (`--dock-morph-min`,
147
+ * density-scaled, WCAG ~44px fallback) so the morph interpolates toward a visible
148
+ * footprint, never toward 0 — "visible at the floor," never "white." Inert on a
149
+ * healthy measurement.
150
+ *
151
+ * PURE over its explicit deps (the orchestrator passes the live element/targets/
152
+ * outer identity + the `armTarget` re-pin callback) — no module-level state, so the
153
+ * extraction is behaviour-identical to the prior inline rAF closure.
154
+ */
155
+ export declare function measureAndArmMorph(t: MorphMeasureTarget, id: number, axis: "horizontal" | "vertical", fromSize: number, rootFromSize: number, isOuter: boolean, rootEl: HTMLElement | null, targets: Iterable<MorphMeasureTarget>, cb: MorphMeasureArmCallbacks): void;
@@ -1,5 +1,7 @@
1
1
  export { useDockState } from "./useDockState";
2
2
  export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./useDockState";
3
+ export { useDockSearch } from "./useDockSearch";
4
+ export type { UseDockSearchOptions, UseDockSearchReturn } from "./useDockSearch";
3
5
  export { useLayerTransition } from "./useLayerTransition";
4
6
  export type { UseLayerTransitionOptions, UseLayerTransitionReturn } from "./useLayerTransition";
5
7
  export { useDockHold } from "./useDockHold";
@@ -0,0 +1,85 @@
1
+ import { type MaybeRefOrGetter, type Ref } from "vue";
2
+ import type { UseDockStateReturn } from "./useDockState";
3
+ import { type FuzzySearchState, type SearchableItem, type SearchResult } from "../../search/composables";
4
+ import { type UseScrollChromeReturn } from "../../../../composables/motion/useScrollChrome";
5
+ export interface UseDockSearchOptions<T extends SearchableItem = SearchableItem> {
6
+ /** Composes the existing dock state machine (no fork) — `armSearch`/`disarmSearch`
7
+ ride its `onClickCollapsed`/`keepOpen`/`release`. */
8
+ dockState: UseDockStateReturn;
9
+ /**
10
+ * The search items (sync) — a static array or a getter. Drives the composed
11
+ * `useFuzzySearch` matcher. MUTUALLY EXCLUSIVE with `onSearch` (sync XOR async).
12
+ */
13
+ items?: T[] | (() => T[]);
14
+ /**
15
+ * The pluggable async data source (the words network case). The consumer owns the
16
+ * abort/network race-guard; the dock owns the gesture/shrink/dropdown. When set, the
17
+ * dock awaits the source on each query, cancelling the prior request's
18
+ * `AbortController` (the generic thin abort). MUTUALLY EXCLUSIVE with `items`.
19
+ */
20
+ onSearch?: (query: string, signal: AbortSignal) => Promise<T[]>;
21
+ /** Debounce delay in ms forwarded to the matcher / the async source. Default 120. */
22
+ debounceMs?: number;
23
+ /** Maximum results forwarded to the matcher. Default 30. */
24
+ maxResults?: number;
25
+ /**
26
+ * Opt-in collapse-on-scroll — composes `useScrollChrome` (persistent-default, the
27
+ * iOS-27 lesson). DEFAULT FALSE: the dock is PERSISTENT; the morph fires on user
28
+ * intent (tap/focus), never a passive scroll. When true the chrome shrinks+fades on
29
+ * scroll-down + expands on scroll-up (the transform-only `--chrome-collapse-t` ramp).
30
+ */
31
+ collapseOnScroll?: boolean;
32
+ /** The scroll source for the optional collapse-on-scroll (a container or window). */
33
+ scrollContainer?: MaybeRefOrGetter<HTMLElement | Window | null>;
34
+ /** The dock element the collapse-on-scroll writes `--chrome-collapse-t` onto. */
35
+ chromeRef?: MaybeRefOrGetter<HTMLElement | null>;
36
+ /**
37
+ * Result-select hook — wires the ToC subsume: `ensureTargetWindow(id)` (warm the
38
+ * window so the target renders) + `scrollTo(id)` (the rAF-retry scroll-to-and-land).
39
+ * The dock owns the gesture; the consumer passes the two leaves' bound functions.
40
+ */
41
+ onResultSelect?: (result: SearchResult<T>) => void;
42
+ /**
43
+ * The virtual-window warm step (composed `useVirtualSectionWindow.ensureTargetWindow`).
44
+ * Called BEFORE `scrollTo` on a result-select so the windowed target is rendered.
45
+ */
46
+ ensureTargetWindow?: (id: string) => void;
47
+ /**
48
+ * The ToC scroll-to (composed `useScrollTo.scrollTo`) — the rAF-retry scroll-to-id.
49
+ * Called AFTER the warm step on a result-select.
50
+ */
51
+ scrollTo?: (id: string) => void;
52
+ }
53
+ export interface UseDockSearchReturn<T extends SearchableItem = SearchableItem> {
54
+ /** The composed `useFuzzySearch` handle (query/results/selectedIndex/onKeydown/…). */
55
+ fuzzy: FuzzySearchState<T>;
56
+ /** The ghost-text top-match completion (the unmatched suffix of `results[0].label`). */
57
+ autocompleteText: Ref<string>;
58
+ /** The optional collapse-on-scroll machine (null when `collapseOnScroll` is false). */
59
+ scrollChrome: UseScrollChromeReturn | null;
60
+ /** Tap/focus → expand + hold (composes `onClickCollapsed` + `keepOpen`). */
61
+ armSearch: () => void;
62
+ /** Close → release the hold (composes `release`) + close the fuzzy surface. */
63
+ disarmSearch: () => void;
64
+ /** Tab/Space/ArrowRight → fill the ghost-text into the query. */
65
+ acceptAutocomplete: () => void;
66
+ /** True while the search field is the armed/morphed surface. */
67
+ isSearchArmed: Ref<boolean>;
68
+ }
69
+ /**
70
+ * The dock-search seam — composes `useDockState` + `useFuzzySearch` (+ optional
71
+ * `useScrollChrome`); the `armSearch`/`disarmSearch`/`autocompleteText`/
72
+ * `acceptAutocomplete` surface; the async `onSearch` adapter; the `onResultSelect` →
73
+ * `ensureTargetWindow` + `scrollTo` wire. Does NOT edit the morph engine
74
+ * (`dockMorphContext`/`DOCK_SPRING` byte-untouched — the box-inviolate fence); the
75
+ * pill→field morph is the dock's OWN `--dock-morph-t` glide + the `morph-bridge.css`
76
+ * metaball.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const dockState = useDockState({ rootEl });
81
+ * const search = useDockSearch({ dockState, items: () => sections.value });
82
+ * // armSearch() on tap → the pill morphs into the field; type → fuzzy dropdown ranks.
83
+ * ```
84
+ */
85
+ export declare function useDockSearch<T extends SearchableItem = SearchableItem>(options: UseDockSearchOptions<T>): UseDockSearchReturn<T>;
@@ -143,6 +143,17 @@ export interface DockProps {
143
143
  * case); absent, it stack-walks the painted page background (the static case).
144
144
  */
145
145
  backgroundCanvas?: HTMLCanvasElement | (() => HTMLCanvasElement | null) | string | null;
146
+ /**
147
+ * BC.W-DOCK-SEARCH — the dock-as-native-dynamic-search-bar MODE (additive,
148
+ * default `false`). When true the dock stamps `[data-search]` (the CSS hook the
149
+ * `dock/search.css` active-field tint seam + the `.glass-menu-row` result rows
150
+ * target) and renders the `#search` slot INSIDE the existing morph aperture — the
151
+ * consumer composes `useDockSearch` (the gesture/shrink/dropdown seam) and slots
152
+ * its search field + fuzzy dropdown there. The pill→field morph is the dock's OWN
153
+ * `--dock-morph-t` glide (box-inviolate — no second engine). A non-search dock is
154
+ * byte-identical to HEAD (the slot + the data-attr are present only when authored).
155
+ */
156
+ search?: boolean;
146
157
  }
147
158
  /** The resolved shell-prop computeds the GlassDock SFC binds. */
148
159
  export interface DockShellProps {
@@ -68,6 +68,19 @@ export interface UseLayerTransitionReturn {
68
68
  currentLayer: Ref<string>;
69
69
  /** The layer id currently fading out, or null. */
70
70
  leavingLayer: Ref<string | null>;
71
+ /**
72
+ * BB.W-PERF-PRODUCER A′-4 — `true` while the size morph is in flight (the
73
+ * reactive twin of the `data-morphing` attr). A floating dock consumer reads
74
+ * this to hold a reka Popper re-position off the morph's critical frames.
75
+ */
76
+ morphing: Ref<boolean>;
77
+ /**
78
+ * BB.W-PERF-PRODUCER A′-4 — schedule a reka Popper re-position OFF the
79
+ * synchronous morph flush. Queued while a morph is live (flushed ONCE on
80
+ * settle, against the final box), else run on the next rAF. Defers the floating
81
+ * re-position only — NOT the FLIP measure.
82
+ */
83
+ deferReposition(cb: () => void): void;
71
84
  }
72
85
  /**
73
86
  * Coordinates the size morph + crossfade between grid-stacked dock layer panes.
@@ -1,18 +1,22 @@
1
1
  import type { Component } from "vue";
2
2
  /**
3
- * AZ.W-RAIL3 — one `<DockRail>` chip descriptor: the visible facet the floating
4
- * carousel strip renders (id + label + glyph). A `<script setup>` SFC cannot
5
- * re-export a named type through the `export { default }` barrel, so the chip
6
- * descriptor lives here (the colocated types home) and the SFC imports it; the
7
- * barrel re-exports it for consumers typing their `items` array.
3
+ * BC.W-DOCK-STACK-RAIL — one `<DockStack>` member descriptor: a stack member that fans
4
+ * OUT of the macOS hover-expand stack (id + label + glyph + optional select handler).
5
+ * A `<script setup>` SFC cannot re-export a named type through the `export { default }`
6
+ * barrel, so the descriptor lives here (the colocated types home) and the SFC imports
7
+ * it; the barrel re-exports it for consumers typing their `items` array. This is the
8
+ * stack's MEMBER, not a facet chip — the divider-carousel `DockRailItem` is RETIRED
9
+ * (clean break, no alias).
8
10
  */
9
- export interface DockRailItem {
10
- /** The context id this chip selects (written to `v-model:context`). */
11
+ export interface DockStackItem {
12
+ /** Stable identifier — the `v-for` key + the selected-member id. */
11
13
  id: string;
12
- /** The chip label. */
14
+ /** The member's accessible label (the `aria-label` + tooltip). */
13
15
  label: string;
14
- /** The chip glyph (a `@lucide/vue` icon or any component). */
16
+ /** The member glyph (a `@lucide/vue` icon or any component). */
15
17
  icon?: Component;
18
+ /** Optional per-member select handler (fired alongside the model write). */
19
+ onSelect?: () => void;
16
20
  }
17
21
  /**
18
22
  * BA.W-DOCK-SECTIONS — the three named zone kinds the declarative `<DockSection>`
@@ -42,12 +46,12 @@ export interface DockSectionDescriptor {
42
46
  /** Optional accessible label for the grouped zone. */
43
47
  label?: string;
44
48
  /**
45
- * For a `section` kind: the contextual facets this section carries. When present
46
- * (length > 1) the section's facets are the rail's chips (the W-RAIL3 move OUT of
47
- * the dock body — the facets ride the seam rail, never re-inflate the box). The
48
- * descriptor names them; `<DockRail :items>` renders them.
49
+ * For a `section` kind: the stack members this section carries. When present
50
+ * (length > 1) the members ride the dock's `#rail` stack (the macOS hover-expand
51
+ * stack, OUTSIDE the dock box — never re-inflating it). The descriptor names them;
52
+ * `<DockStack :items>` fans them out.
49
53
  */
50
- layers?: readonly DockRailItem[];
54
+ layers?: readonly DockStackItem[];
51
55
  }
52
56
  /**
53
57
  * The ONE dock-morph spring authority — the iOS-26 interruptible-physics tuning the
@@ -7,8 +7,8 @@ export { default as DockTabButton } from "./DockTabButton.vue";
7
7
  export { default as DockSelectTrigger } from "./DockSelectTrigger.vue";
8
8
  export { default as DockDropdownTrigger } from "./DockDropdownTrigger.vue";
9
9
  export { default as DockSeparator } from "./DockSeparator.vue";
10
- export { default as DockRail } from "./DockRail.vue";
11
- export type { DockRailItem } from "./constants";
10
+ export { default as DockStack } from "./DockStack.vue";
11
+ export type { DockStackItem } from "./constants";
12
12
  export { default as DockSection } from "./DockSection.vue";
13
13
  export type { DockSectionDescriptor, DockSectionKind } from "./constants";
14
14
  export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./composables";
@@ -16,3 +16,6 @@ export { useLayerTransition } from "./composables";
16
16
  export type { UseLayerTransitionOptions, UseLayerTransitionReturn, } from "./composables";
17
17
  export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, type DockLayout, } from "./composables/dockContext";
18
18
  export { useDockOrientationMorph, type DockMorphOrientation, type UseDockOrientationMorphOptions, type UseDockOrientationMorphReturn, } from "./composables/useDockOrientationMorph";
19
+ export { useDockCtaReceive, type UseDockCtaReceiveOptions, type UseDockCtaReceiveReturn, type DockCtaReceivePreset, } from "../../../composables/motion/useDockCtaReceive";
20
+ export { useDockSearch } from "./composables";
21
+ export type { UseDockSearchOptions, UseDockSearchReturn } from "./composables";
@@ -0,0 +1,42 @@
1
+ import type { FlowFieldConfig } from "./constants";
2
+ /**
3
+ * DotFlowField — a calm anchored dot-matrix a slow LARGE wave sweeps through
4
+ * (BC.W-VIZ-DOTFLOW retopology — NOT the BB free-advecting particle cloud).
5
+ *
6
+ * Each dot is anchored to a deterministic lattice cell and eases toward its sub-cell
7
+ * displacement target with a restoring spring (no advection, no re-seed); a broad
8
+ * bright iso-band sweeps the lattice, lighting the dots it passes — the low-frequency
9
+ * Gerstner/Tessendorf sum-of-sines height (`composables/flowField.ts`). WebGPU-FIRST:
10
+ * the compute pass pulls the lattice to its target, the render pass draws instanced
11
+ * billboard quads lit by the sweeping band; a pure WebGL2 FRAGMENT fallback evaluates
12
+ * the SAME field where WebGPU is absent (no Canvas2D — the §E "no canvas" mandate). It
13
+ * composes `useDotFlowField` → the `createGpuSubstrate` picker over the ONE canvas
14
+ * lifecycle leaf (offscreen-pause, live-PRM freeze, the shared pointer field) — it never
15
+ * bootstraps its own context.
16
+ *
17
+ * The DEFAULT palette is the warm-cream library identity; the mono-dim-on-near-black
18
+ * reference + the globe mask are DEMO presets (presets-in-consumers — never a library
19
+ * token). The teal-on-navy is GONE entirely (clean break).
20
+ */
21
+ type __VLS_Props = {
22
+ /** The full author schema (the studio's `useConfiguratorState` model). */
23
+ config?: FlowFieldConfig;
24
+ /**
25
+ * The declarative WCAG-2.2.2 pause seam. `v-model:paused` parks the render loop
26
+ * (the substrate's `manual` suspend) when `true`. Wire `<DockBackgroundToggle>`'s
27
+ * `@update:paused` to this `v-model`.
28
+ */
29
+ paused?: boolean;
30
+ };
31
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
32
+ pause: () => void;
33
+ resume: () => void;
34
+ wake: () => void;
35
+ renderAt: (timeSec: number) => void;
36
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
+ "update:paused": (value: boolean) => any;
38
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
39
+ "onUpdate:paused"?: ((value: boolean) => any) | undefined;
40
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
+ declare const _default: typeof __VLS_export;
42
+ export default _default;
@@ -0,0 +1,83 @@
1
+ /** A 2-vector. */
2
+ export interface Vec2 {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ /**
7
+ * One Gerstner / Tessendorf wave component. `amplitude` A_i, `wavelength` λ_i (so
8
+ * k_i = 2π/λ_i), `direction` in DEGREES (the unit travel direction), `phase` φ_i.
9
+ * `ω_i = √(g·k_i)` is derived from the dispersion relation, not stored.
10
+ */
11
+ export interface WaveComponent {
12
+ amplitude: number;
13
+ wavelength: number;
14
+ /** Travel direction in degrees (0 = +x). */
15
+ direction: number;
16
+ phase: number;
17
+ }
18
+ /** Deep-water gravity constant (normalized; scales the dispersion ω). */
19
+ export declare const FLOW_GRAVITY = 9.81;
20
+ /**
21
+ * The Gerstner-sum velocity v(p,t) = ∇⊥h = (∂h/∂y, −∂h/∂x), ANALYTIC. The single
22
+ * math source the WGSL kernel transcribes. `windSpeed` scales the dispersion ω;
23
+ * `windDirection` (deg) is folded into each component's direction by the caller (the
24
+ * components carry their own absolute direction). Returns the un-normalized flow vector.
25
+ */
26
+ export declare function gerstnerVelocity(p: Vec2, timeSec: number, waves: readonly WaveComponent[], windSpeed: number): Vec2;
27
+ /** The 2D curl of the scalar fbm potential (the JS twin of `curlFBM`). */
28
+ export declare function curlFBM(p: Vec2): Vec2;
29
+ /**
30
+ * The COMPOSITE flow velocity v(p,t): the Gerstner sum-of-sines analytic ∇⊥h PLUS the
31
+ * `curlStrength`-weighted fbm curl-noise braiding term. The SINGLE math source the WGSL
32
+ * compute kernel transcribes; `proof:viz-dotflow` clause F3 round-trips the two paths.
33
+ *
34
+ * RETOPOLOGY (BC.W-VIZ-DOTFLOW). The curl domain-scale dropped 1.7→0.55 (coarse braiding,
35
+ * not fine chatter) per the §3.2 regime inversion. The velocity is no longer an advection
36
+ * integrand (the lattice does not advect) — it is the DISPLACEMENT field's perp-gradient
37
+ * source. `sampleDisplacement` is the per-frame sub-cell offset; `sampleVelocity` stays as
38
+ * the round-trip anchor + the analytic ∇⊥h the displacement reads.
39
+ */
40
+ export declare function sampleVelocity(p: Vec2, timeSec: number, waves: readonly WaveComponent[], windSpeed: number, curlStrength: number): Vec2;
41
+ /** The shipped domain half-extent (the lattice is laid out over [-half, half]²). */
42
+ export declare const FLOW_DOMAIN_HALF = 0.85;
43
+ /**
44
+ * The deterministic lattice origin for a particle index — the WGSL `instance_index →
45
+ * origin` mapping matches this EXACTLY (the F3 round-trip anchor). `cols` columns, square
46
+ * pitch in DOMAIN units; the grid is centered on the origin so the field reads symmetric.
47
+ * Index `i` walks row-major (`col = i % cols`, `row = floor(i / cols)`).
48
+ */
49
+ export declare function gridOrigin(index: number, cols: number, pitch: number): Vec2;
50
+ /**
51
+ * The scalar Gerstner HEIGHT at an origin — the brightness driver (the moving bright
52
+ * stripe the lattice paints). `h(o,t) = Σ_i A_i·sin(k_i·(D_i·o) − ω_i·t + φ_i)`, the SAME
53
+ * sum the velocity derives from (no second wave table). The brightness field reads at the
54
+ * ANCHOR (`o`), not the live position, so the sweep is stable + low-frequency.
55
+ */
56
+ export declare function sampleHeight(o: Vec2, timeSec: number, waves: readonly WaveComponent[], windSpeed: number): number;
57
+ /**
58
+ * The sub-cell DISPLACEMENT for an origin — the divergence-free ∇⊥h (the Gerstner perp-
59
+ * gradient) PLUS a faint coarse curl break. The dot eases toward `o + disp·displaceAmp`
60
+ * (the restoring spring lives in the kernel); this is the target offset, NOT an advection
61
+ * step. Capped LOW by `displaceAmp` so the dot never leaves its cell by > ~0.5 pitch.
62
+ */
63
+ export declare function sampleDisplacement(o: Vec2, timeSec: number, waves: readonly WaveComponent[], windSpeed: number, curlStrength: number): Vec2;
64
+ /**
65
+ * The sweeping bright-stripe band: a `smoothstep` band centered `center` width `width`
66
+ * over the normalized height — the moving iso-band that lights the dots it passes. The
67
+ * band is symmetric about the center (a soft ridge crossing the lattice as `h` sweeps).
68
+ */
69
+ export declare function waveBand(h: number, center: number, width: number): number;
70
+ /**
71
+ * Build the wave ladder about a dominant wind direction. BC.W-VIZ-DOTFLOW REGIME
72
+ * INVERSION (research/viz/dot-flow-field.md §3.2): the LOW-frequency coherent regime — a
73
+ * LARGE base wavelength (≈½–1 period across the view → ONE dominant sweeping wave), 2-3
74
+ * octaves (no fine chatter), a steep amplitude persistence (×0.38 → the base wave
75
+ * dominates, detail a whisper), the λ falloff floored so the finest λ ≥ ~⅓ view. The
76
+ * directions spread MODESTLY about `windDirection` (the sweep reads as ONE coherent form,
77
+ * not a braided delta).
78
+ *
79
+ * `lambda0Mul` is λ₀ as a MULTIPLE of the domain extent (default 2.5 — the §1 target);
80
+ * `octaves` is 2-3 (the coherent band). Amplitudes follow the Phillips falloff × the
81
+ * per-octave persistence so the field stays energy-realistic.
82
+ */
83
+ export declare function buildWaveLadder(windDirection: number, octaves?: number, lambda0Mul?: number): WaveComponent[];
@@ -0,0 +1,39 @@
1
+ import type { OklchStop } from "../../../../composables/color";
2
+ import { type FlowFieldConfig } from "../constants";
3
+ /** The domain half-extent (the lattice spans [-half, half]²; mirrors flowField.ts). */
4
+ export declare const FLOW_DOMAIN_HALF = 0.85;
5
+ export interface FlowGridGeometry {
6
+ cols: number;
7
+ count: number;
8
+ /** The lattice pitch in DOMAIN units (the px pitch mapped to the domain). */
9
+ pitchDomain: number;
10
+ }
11
+ /** Compile-time lattice cap (mirrors the WGSL storage-buffer array bound). */
12
+ export declare const FLOW_MAX_LATTICE = 16384;
13
+ export declare function flowGridGeometry(gridPitchPx: number, canvasCssMin: number): FlowGridGeometry;
14
+ export declare const FLOW_COMPUTE_UNIFORM_BYTES: number;
15
+ export interface FlowUniformScratch {
16
+ buffer: ArrayBuffer;
17
+ f32: Float32Array;
18
+ i32: Int32Array;
19
+ }
20
+ export declare function createFlowComputeScratch(): FlowUniformScratch;
21
+ /** Pack the compute uniforms in place. */
22
+ export declare function packFlowComputeUniforms(scratch: FlowUniformScratch, config: FlowFieldConfig, timeSec: number, dt: number, geometry: FlowGridGeometry): FlowUniformScratch;
23
+ export declare const FLOW_RENDER_UNIFORM_BYTES: number;
24
+ export declare function createFlowRenderScratch(): FlowUniformScratch;
25
+ /** The base resting brightness (the calm-lattice floor before the band lights a dot). */
26
+ export declare const FLOW_BASE_BRIGHT = 0.22;
27
+ /** The drift-driven size pulse (a subtle breathing; never a re-seed). */
28
+ export declare const FLOW_SIZE_PULSE = 0.4;
29
+ /** Pack the render uniforms in place. */
30
+ export declare function packFlowRenderUniforms(scratch: FlowUniformScratch, config: FlowFieldConfig, timeSec: number, aspect: number, canvasCssMin: number, geometry: FlowGridGeometry, palette: OklchStop[]): FlowUniformScratch;
31
+ /** The byte size of one lattice dot in the storage buffer (vec4<f32>). */
32
+ export declare const FLOW_PARTICLE_BYTES = 16;
33
+ /**
34
+ * Seed the lattice storage buffer: each dot starts AT its anchor origin (the restoring
35
+ * spring needs no initial offset). `(pos.x, pos.y, height=0, |disp|=0)` per index — the
36
+ * compute kernel re-derives the origin from `gridOrigin(index, cols, pitch)` each frame,
37
+ * so the seed only needs the starting position (the lattice settles on the first frames).
38
+ */
39
+ export declare function seedLatticeBuffer(geometry: FlowGridGeometry): Float32Array;
@@ -0,0 +1,35 @@
1
+ import { type Ref } from "vue";
2
+ import { type GpuBackend } from "../../../../composables/glass/webgpu/useGpuSubstrate";
3
+ import type { OklchStop } from "../../../../composables/color";
4
+ import type { FlowFieldConfig } from "../constants";
5
+ export interface UseDotFlowFieldOptions {
6
+ config: FlowFieldConfig;
7
+ /** Resolve the dot-color palette as OKLCh (the demo themes it; default warm-identity). */
8
+ getPalette: () => OklchStop[];
9
+ /** `"capture"` → renderAt-only (the deterministic π capture path). Default `"live"`. */
10
+ mode?: "live" | "capture";
11
+ }
12
+ /** The uniform handle a consumer wires its lifecycle against (backend-agnostic). */
13
+ export interface DotFlowFieldHandle {
14
+ /** The resolved backend (`"webgpu"` where supported, else the WebGL2 fragment fallback). */
15
+ readonly backend: GpuBackend;
16
+ /** Park the loop (the WCAG-2.2.2 pause seam — `DockBackgroundToggle` wires this). */
17
+ pause: () => void;
18
+ /** Re-arm the loop. */
19
+ resume: () => void;
20
+ /** Re-arm a parked loop on demand (a pointer/setter that re-introduced motion). */
21
+ wake: () => void;
22
+ /** Draw one frame out-of-loop (capture / thumbnail). */
23
+ renderAt: (timeSec: number) => void;
24
+ /** The live `prefers-reduced-motion: reduce` state. */
25
+ readonly reducedMotion: boolean;
26
+ /** Tear down the renderer + release GPU/GL resources. */
27
+ dispose: () => void;
28
+ }
29
+ /**
30
+ * Mount the dot-flow-field renderer on `canvasRef`. The WebGPU primary runs the
31
+ * compute+render two-pass over the anchored lattice; the WebGL2 fallback evaluates the SAME
32
+ * `flowField.ts` field as a fullscreen fragment pass (the ONE math source). Returns the
33
+ * uniform lifecycle handle.
34
+ */
35
+ export declare function useDotFlowField(canvasRef: Ref<HTMLCanvasElement | null>, options: UseDotFlowFieldOptions): DotFlowFieldHandle;
@@ -0,0 +1,31 @@
1
+ import type { WebGPUCanvasFrame } from "../../../../composables/glass/webgpu/useWebGPUCanvas";
2
+ import type { WebGLCanvasFrame } from "../../../../composables/glass/webgl/useWebGLCanvas";
3
+ import type { OklchStop } from "../../../../composables/color";
4
+ import type { FlowFieldConfig } from "../constants";
5
+ export interface FlowSetupDeps {
6
+ canvas: HTMLCanvasElement;
7
+ config: FlowFieldConfig;
8
+ /** The resolved (ColorResolver) palette stops as OKLCh — re-read each frame so a live palette edit reaches the buffer. */
9
+ getPalette: () => OklchStop[];
10
+ /** Demand-gate (the renderer's quiescence layer — substrate-agnostic). */
11
+ shouldContinue: () => boolean;
12
+ /**
13
+ * The per-frame pointer hook — useDotFlowField advances the shared
14
+ * `usePointerVelocityField` here (the no-own-rAF discipline; the renderer's loop feeds
15
+ * the push-API tick). ZERO own rAF.
16
+ */
17
+ onFrame?: (timeSec: number) => void;
18
+ }
19
+ /**
20
+ * Build the dot-flow-field `setupWGPU(device, context, format)` callback. Closes over the
21
+ * config/palette getters + the renderer's demand gate + the pointer `onFrame` hook.
22
+ */
23
+ export declare function createFlowWGPUSetup(deps: FlowSetupDeps): (device: GPUDevice, context: GPUCanvasContext, format: GPUTextureFormat) => WebGPUCanvasFrame;
24
+ /**
25
+ * Build the `setupGL(gl)` callback the `createGpuSubstrate` WebGL2 path invokes — a clean
26
+ * aurora-class fullscreen fragment pass (the retopology made the dot-lattice + brightness
27
+ * model fragment-friendly; the Canvas2D point-cloud is GONE, clean break). It evaluates
28
+ * the SAME `flowField.ts` height/displacement field the WGSL primary does, splicing the
29
+ * SHARED GLSL color chunk (the ONE color source → no drift between the two backends).
30
+ */
31
+ export declare function createFlowGLSetup(deps: FlowSetupDeps): (gl: WebGL2RenderingContext) => WebGLCanvasFrame;