@mkbabb/glass-ui 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/{CardAction-8whJrLWt.js → CardAction-DlVP2evz.js} +58 -54
  2. package/dist/{CommandShortcut-D3yxgHNn.js → CommandShortcut-By-VQcLO.js} +3 -3
  3. package/dist/{ConfiguratorRow-CaP7U3ZA.js → ConfiguratorRow-YMXdINHx.js} +3 -3
  4. package/dist/{ContextMenuContent-B3ZsheLV.js → ContextMenuContent-CMWn6huB.js} +1 -1
  5. package/dist/{ContextMenuSubContent-DDRID3qC.js → ContextMenuSubContent-DvwWCUc0.js} +1 -1
  6. package/dist/{DataTable-Bc9kUtu_.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/{DialogScrollContent-TTuovQst.js → DialogScrollContent-BMekN7gq.js} +1 -1
  9. package/dist/{FadingScroll-DLRbH5Xr.js → FadingScroll-P8B30rAD.js} +1 -1
  10. package/dist/{HoverCardContent-Bel1gdLZ.js → HoverCardContent-DAmGYglo.js} +1 -1
  11. package/dist/{HoverPopover-BcIxvyqZ.js → HoverPopover-DYpBOzzF.js} +1 -1
  12. package/dist/{IconChip-DhbdGdFQ.js → IconChip-CQa7XZYc.js} +7 -5
  13. package/dist/{IconTooltip-B0zimd2H.js → IconTooltip-_df8M3xm.js} +1 -1
  14. package/dist/{Input-Cg9DF62r.js → Input-CyU4_hIC.js} +2 -2
  15. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  16. package/dist/{Notification-CphK7AAm.js → Notification-BlSPJhtZ.js} +1 -1
  17. package/dist/{NumberFieldContent-D8cXeyO4.js → NumberFieldContent-Z3VxGu_6.js} +3 -3
  18. package/dist/PagerDots-CYlqVFd4.js +196 -0
  19. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  20. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  21. package/dist/{Progress-CnqB7gLm.js → Progress-C9SsdwIZ.js} +1 -1
  22. package/dist/{ScrollingText-CTZbA_cG.js → ScrollingText-DY3W1Jfh.js} +2 -2
  23. package/dist/{SelectScrollDownButton-DAKCBEdW.js → SelectScrollDownButton-3mFHX_R-.js} +15 -12
  24. package/dist/{Switch-B8RscmRu.js → Switch-uf-UKPA2.js} +1 -1
  25. package/dist/{Toaster-D9qIHjBI.js → Toaster-ozrsR4mP.js} +1 -1
  26. package/dist/{ToggleGroupItem-BLtr3TJq.js → ToggleGroupItem-BpzaVzNm.js} +4 -4
  27. package/dist/{TooltipProvider-BJ_Y5EGX.js → TooltipProvider-QQVM_80r.js} +1 -1
  28. package/dist/animated-digit.js +2 -2
  29. package/dist/api/index.d.ts +1 -0
  30. package/dist/api/types-extra.d.ts +3 -1
  31. package/dist/api.js +2 -2
  32. package/dist/aurora.js +163 -131
  33. package/dist/badge-Bt14yURi.js +72 -0
  34. package/dist/badge.js +1 -1
  35. package/dist/border-progress.js +1 -1
  36. package/dist/button-D1W9PrzI.js +130 -0
  37. package/dist/button.js +1 -1
  38. package/dist/canvas.js +1 -1
  39. package/dist/card.js +1 -1
  40. package/dist/carousel.js +227 -98
  41. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  42. package/dist/collapsible.js +1 -1
  43. package/dist/color.js +1 -1
  44. package/dist/command.js +1 -1
  45. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  46. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/presets.d.ts +29 -0
  48. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  49. package/dist/components/custom/aurora/index.d.ts +1 -1
  50. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  51. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +8 -3
  52. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +8 -4
  53. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  54. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -4
  55. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  56. package/dist/components/custom/concentric/constants.d.ts +62 -41
  57. package/dist/components/custom/concentric/index.d.ts +2 -2
  58. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  59. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  60. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  61. package/dist/components/custom/configurator/index.d.ts +1 -1
  62. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  63. package/dist/components/custom/dock/DockIconButton.vue.d.ts +10 -0
  64. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  65. package/dist/components/custom/dock/DockStack.vue.d.ts +35 -22
  66. package/dist/components/custom/dock/GlassDock.vue.d.ts +19 -3
  67. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  68. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +76 -145
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  71. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  72. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  73. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  74. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +38 -0
  75. package/dist/components/custom/dock/constants.d.ts +14 -3
  76. package/dist/components/custom/dock/index.d.ts +3 -0
  77. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +21 -0
  78. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  79. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  80. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  81. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  82. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +28 -2
  83. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -17
  84. package/dist/components/custom/dot-flow-field/constants.d.ts +51 -0
  85. package/dist/components/custom/dot-flow-field/index.d.ts +1 -1
  86. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  87. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +29 -0
  88. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  89. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +10 -1
  90. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +7 -0
  91. package/dist/components/custom/dot-matrix/constants.d.ts +14 -0
  92. package/dist/components/custom/dot-matrix/index.d.ts +1 -1
  93. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +2 -2
  94. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -1
  95. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +4 -0
  96. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +9 -0
  97. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +11 -0
  98. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +16 -1
  99. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +22 -1
  100. package/dist/components/custom/fourier-field/constants.d.ts +53 -0
  101. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +1 -1
  102. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
  103. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  104. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  105. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  106. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  107. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  108. package/dist/components/custom/goo-blob/types.d.ts +50 -1
  109. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +32 -3
  110. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +14 -4
  111. package/dist/components/custom/goo-dot-matrix/constants.d.ts +55 -16
  112. package/dist/components/custom/goo-dot-matrix/index.d.ts +1 -1
  113. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +2 -0
  114. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +1 -0
  115. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  116. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  117. package/dist/components/custom/handmark/brush.d.ts +17 -17
  118. package/dist/components/custom/handmark/constants.d.ts +28 -8
  119. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  120. package/dist/components/custom/handmark/index.d.ts +1 -1
  121. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  122. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  123. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +44 -29
  124. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +2 -0
  125. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +3 -1
  126. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +2 -2
  127. package/dist/components/custom/paper-grid/constants.d.ts +44 -6
  128. package/dist/components/custom/paper-grid/index.d.ts +2 -2
  129. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +1 -1
  130. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -1
  131. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  132. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +12 -20
  133. package/dist/components/custom/tabs/constants.d.ts +16 -8
  134. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  135. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  136. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  137. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +12 -10
  138. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  139. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  140. package/dist/components/ui/badge/index.d.ts +1 -0
  141. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  142. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  143. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  144. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  145. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  146. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  147. package/dist/components/ui/drawer/constants.d.ts +8 -6
  148. package/dist/components/ui/drawer/index.d.ts +12 -2
  149. package/dist/components/ui/select/SelectContent.vue.d.ts +9 -0
  150. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  151. package/dist/composables/dom/index.d.ts +1 -0
  152. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  153. package/dist/composables/glass/wave/index.d.ts +4 -0
  154. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  155. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  156. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  157. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +95 -2
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  159. package/dist/composables/glass/webgpu/index.d.ts +1 -0
  160. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +37 -0
  161. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +49 -2
  162. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +1 -1
  163. package/dist/composables/motion/core/index.d.ts +4 -0
  164. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  165. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  166. package/dist/composables/motion/index.d.ts +2 -0
  167. package/dist/composables/motion/springPresets.d.ts +16 -17
  168. package/dist/composables/motion/suite.d.ts +2 -2
  169. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  170. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  171. package/dist/composables/motion/useDockCtaReceive.d.ts +10 -28
  172. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  173. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  174. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  175. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  176. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  177. package/dist/composables/motion/useMorphField.d.ts +157 -0
  178. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  179. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  180. package/dist/concentric.js +532 -563
  181. package/dist/configurator.js +2 -2
  182. package/dist/confirm-dialog.js +3 -3
  183. package/dist/constellation.js +4 -4
  184. package/dist/context-menu.js +2 -2
  185. package/dist/controls.js +2 -2
  186. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  187. package/dist/dark.js +1 -1
  188. package/dist/data-table.js +1 -1
  189. package/dist/deck.js +1 -1
  190. package/dist/dialog.js +3 -3
  191. package/dist/dock.js +1163 -618
  192. package/dist/dockContext-gFVS2gMg.js +18 -0
  193. package/dist/dom.js +7 -6
  194. package/dist/dot-flow-field.js +1114 -523
  195. package/dist/dot-matrix.js +348 -204
  196. package/dist/drawer.js +106 -96
  197. package/dist/{dropdown-menu-aJmV5SqE.js → dropdown-menu-CCfcCQ68.js} +3 -3
  198. package/dist/dropdown-menu.js +1 -1
  199. package/dist/easing.js +3 -3
  200. package/dist/expandable-container.js +2 -2
  201. package/dist/fading-scroll.js +1 -1
  202. package/dist/forms.js +6 -6
  203. package/dist/fourier-field.js +441 -197
  204. package/dist/fourier-math.js +1 -1
  205. package/dist/glass-panel.js +2 -2
  206. package/dist/glass-ui.css +1 -1
  207. package/dist/glass-ui.js +139 -135
  208. package/dist/goo-blob.js +11 -9
  209. package/dist/goo-dot-matrix.js +418 -198
  210. package/dist/handmark.js +137 -94
  211. package/dist/header-ribbon.js +1 -1
  212. package/dist/hover-card.js +1 -1
  213. package/dist/hover-popover.js +1 -1
  214. package/dist/icon-chip.js +1 -1
  215. package/dist/icon-tooltip.js +1 -1
  216. package/dist/index.d.ts +3 -0
  217. package/dist/instrument-chassis.js +1 -1
  218. package/dist/keyboard.js +1 -1
  219. package/dist/label.js +1 -1
  220. package/dist/labeled-field.js +7 -7
  221. package/dist/metric-badge.js +1 -1
  222. package/dist/metric-cell.js +1 -1
  223. package/dist/metric-stack.js +1 -1
  224. package/dist/motion-core.js +42 -39
  225. package/dist/motion-curves.js +20 -14
  226. package/dist/motion.js +226 -26
  227. package/dist/notification.js +1 -1
  228. package/dist/number-field.js +1 -1
  229. package/dist/pager-dots.js +1 -1
  230. package/dist/paper-backdrop.js +1 -1
  231. package/dist/paper-grid.js +315 -342
  232. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  233. package/dist/popover.js +1 -1
  234. package/dist/{presets-CvOUqtdY.js → presets-QvYgnFIZ.js} +13 -12
  235. package/dist/progress.js +1 -1
  236. package/dist/pulse.js +1 -1
  237. package/dist/reactive.js +2 -2
  238. package/dist/{resolveCanvasColor-yPyIpJt9.js → resolveCanvasColor-DsSJk06I.js} +5 -5
  239. package/dist/scrolling-text.js +1 -1
  240. package/dist/search.js +7 -7
  241. package/dist/select.js +3 -3
  242. package/dist/selectable-chip.js +18 -35
  243. package/dist/separator.js +1 -1
  244. package/dist/{sheet-B2flBfLH.js → sheet-DUCIoOe0.js} +3 -3
  245. package/dist/sheet.js +1 -1
  246. package/dist/sidebar.js +1 -1
  247. package/dist/slider-CcICPe3u.js +149 -0
  248. package/dist/slider.js +1 -1
  249. package/dist/sortable-list.js +3 -3
  250. package/dist/{spectrum-walk-BVzA7Biz.js → spectrum-walk-cBNSx_zm.js} +1 -1
  251. package/dist/springPresets-DfoQ6XRY.js +64 -0
  252. package/dist/stacked-icons.js +54 -39
  253. package/dist/styles/cards.css +202 -2
  254. package/dist/styles/components.css +1 -3
  255. package/dist/styles/configurator.css +172 -7
  256. package/dist/styles/critical-partition.mjs +35 -2
  257. package/dist/styles/deferred.css +2 -0
  258. package/dist/styles/dock/adaptive-legibility.css +119 -0
  259. package/dist/styles/dock/density.css +18 -10
  260. package/dist/styles/dock/fission-bridge.css +552 -0
  261. package/dist/styles/dock/layers.css +88 -124
  262. package/dist/styles/dock/morph-bridge.css +15 -2
  263. package/dist/styles/dock/morph.css +45 -114
  264. package/dist/styles/dock/shape.css +137 -11
  265. package/dist/styles/dock/shell.css +1 -3
  266. package/dist/styles/dock/stack-rail.css +95 -7
  267. package/dist/styles/dock-controls/icon-button.css +34 -2
  268. package/dist/styles/dock-controls/triggers.css +23 -1
  269. package/dist/styles/dock-controls.css +18 -0
  270. package/dist/styles/dock.css +16 -1
  271. package/dist/styles/drawer.css +166 -0
  272. package/dist/styles/glass/glass-atom.css +244 -0
  273. package/dist/styles/glass/glass-capsule.css +143 -0
  274. package/dist/styles/glass/glass-chip.css +215 -0
  275. package/dist/styles/glass/liquid-enter.css +252 -0
  276. package/dist/styles/glass/liquid-morph.css +850 -0
  277. package/dist/styles/glass/material.css +70 -1
  278. package/dist/styles/glass/reveal.css +22 -2
  279. package/dist/styles/glass/rim.css +13 -1
  280. package/dist/styles/glass/surfaces.css +18 -8
  281. package/dist/styles/glass.css +11 -0
  282. package/dist/styles/icon-chip.css +45 -0
  283. package/dist/styles/index.css +11 -0
  284. package/dist/styles/jubilance.css +65 -0
  285. package/dist/styles/motion/morph-field.css +229 -0
  286. package/dist/styles/paper.css +230 -14
  287. package/dist/styles/scroll-choreography.css +135 -78
  288. package/dist/styles/segmented-tabs.css +85 -51
  289. package/dist/styles/select.css +151 -0
  290. package/dist/styles/tokens/color-radius.css +1 -1
  291. package/dist/styles/tokens/dark-arm.css +57 -8
  292. package/dist/styles/tokens/glass-deep.css +8 -4
  293. package/dist/styles/tokens/glass-fx.css +80 -2
  294. package/dist/styles/tokens/glass.css +140 -8
  295. package/dist/styles/tokens/light-dark.css +2 -2
  296. package/dist/styles/tokens/property-regs.css +144 -0
  297. package/dist/styles/tokens/scale-paper.css +20 -8
  298. package/dist/styles/tokens/scheme-motion.css +92 -157
  299. package/dist/styles/tokens/scheme-spring.css +239 -0
  300. package/dist/styles/tokens/scroll-tokens.css +15 -15
  301. package/dist/styles/tokens/shadow.css +73 -13
  302. package/dist/styles/tokens.css +9 -2
  303. package/dist/styles/utilities/btn.css +70 -0
  304. package/dist/switch.js +1 -1
  305. package/dist/tabs.js +198 -181
  306. package/dist/timeline.js +241 -206
  307. package/dist/toast.js +1 -1
  308. package/dist/toggle-chip.js +14 -41
  309. package/dist/toggle-group.js +1 -1
  310. package/dist/tooltip.js +1 -1
  311. package/dist/typewriter.js +1 -1
  312. package/dist/{uniformBridgeWGPU-CtAKl45L.js → uniformBridgeWGPU-BCse1SHU.js} +191 -127
  313. package/dist/{useAnimatedNumber-CLrxicG9.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  314. package/dist/{useConfiguratorState-4xblKfwd.js → useConfiguratorState-22BcULzF.js} +37 -35
  315. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  316. package/dist/{useDragMorph-BUgAC-zK.js → useDragMorph-DGLSewwB.js} +2 -2
  317. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  318. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  319. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  320. package/dist/{useViewTransition-CUI1nAgn.js → useHaptic-CPz5BT9I.js} +40 -1
  321. package/dist/{useLiquidFlex-UmA6LMZu.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  322. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  323. package/dist/useMorphField-ogBM7ubT.js +141 -0
  324. package/dist/{useScrollChrome-D66AVP7C.js → useScrollChrome-JuImi1DM.js} +2 -2
  325. package/dist/{useSpringMount-BWDnKIwh.js → useSpringMount-DFxtzmkR.js} +1 -1
  326. package/dist/{useSpringPress-B1-Czp-V.js → useSpringPress-VM9RgVq3.js} +1 -1
  327. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  328. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  329. package/dist/virtual.js +1 -1
  330. package/dist/watercolor-dot.js +16 -26
  331. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  332. package/package.json +14 -3
  333. package/src/styles/cards.css +202 -2
  334. package/src/styles/configurator.css +172 -7
  335. package/src/styles/critical-partition.mjs +35 -2
  336. package/src/styles/dock/adaptive-legibility.css +119 -0
  337. package/src/styles/dock/density.css +18 -10
  338. package/src/styles/dock/fission-bridge.css +552 -0
  339. package/src/styles/dock/layers.css +88 -124
  340. package/src/styles/dock/morph-bridge.css +15 -2
  341. package/src/styles/dock/morph.css +45 -114
  342. package/src/styles/dock/shape.css +137 -11
  343. package/src/styles/dock/shell.css +1 -3
  344. package/src/styles/dock/stack-rail.css +95 -7
  345. package/src/styles/dock-controls/icon-button.css +34 -2
  346. package/src/styles/dock-controls/triggers.css +23 -1
  347. package/src/styles/dock-controls.css +18 -0
  348. package/src/styles/dock.css +16 -1
  349. package/src/styles/drawer.css +164 -0
  350. package/src/styles/glass/glass-atom.css +244 -0
  351. package/src/styles/glass/glass-capsule.css +143 -0
  352. package/src/styles/glass/glass-chip.css +215 -0
  353. package/src/styles/glass/liquid-enter.css +252 -0
  354. package/src/styles/glass/liquid-morph.css +850 -0
  355. package/src/styles/glass/material.css +70 -1
  356. package/src/styles/glass/reveal.css +22 -2
  357. package/src/styles/glass/rim.css +13 -1
  358. package/src/styles/glass/surfaces.css +18 -8
  359. package/src/styles/glass.css +11 -0
  360. package/src/styles/icon-chip.css +45 -0
  361. package/src/styles/index.css +11 -0
  362. package/src/styles/jubilance.css +65 -0
  363. package/src/styles/motion/morph-field.css +229 -0
  364. package/src/styles/paper.css +230 -14
  365. package/src/styles/scroll-choreography.css +135 -78
  366. package/src/styles/segmented-tabs.css +85 -47
  367. package/src/styles/select.css +151 -0
  368. package/src/styles/tokens/color-radius.css +1 -1
  369. package/src/styles/tokens/dark-arm.css +57 -8
  370. package/src/styles/tokens/glass-deep.css +8 -4
  371. package/src/styles/tokens/glass-fx.css +80 -2
  372. package/src/styles/tokens/glass.css +140 -8
  373. package/src/styles/tokens/light-dark.css +2 -2
  374. package/src/styles/tokens/property-regs.css +144 -0
  375. package/src/styles/tokens/scale-paper.css +20 -8
  376. package/src/styles/tokens/scheme-motion.css +92 -157
  377. package/src/styles/tokens/scheme-spring.css +239 -0
  378. package/src/styles/tokens/scroll-tokens.css +15 -15
  379. package/src/styles/tokens/shadow.css +73 -13
  380. package/src/styles/tokens.css +9 -2
  381. package/src/styles/utilities/btn.css +70 -0
  382. package/dist/DialogContent-6JtTB5x2.js +0 -106
  383. package/dist/PagerDots-Cjx96la-.js +0 -98
  384. package/dist/PaperBackdrop-CqwjnfLv.js +0 -31
  385. package/dist/badge-D9XWW4GT.js +0 -53
  386. package/dist/button-5dY1Dvhd.js +0 -125
  387. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -85
  388. package/dist/createCanvasLifecycle-Gh45Ce-p.js +0 -93
  389. package/dist/dockContext-BNfyPLe9.js +0 -17
  390. package/dist/slider-2A0rPn79.js +0 -142
  391. package/dist/springPresets-Ce7OYCm9.js +0 -46
  392. package/dist/useDockCtaReceive-DfFkmgL1.js +0 -82
  393. package/dist/useGpuSubstrate-4pTcp6mX.js +0 -294
  394. package/dist/useLiquidPress-BooG97RY.js +0 -39
  395. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  396. /package/dist/{DialogFooter-9phqcRIS.js → DialogFooter-DoLy0ewI.js} +0 -0
  397. /package/dist/{InstrumentChassis-CxsHSyMj.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  398. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  399. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  400. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  401. /package/dist/{SelectSeparator-C2UGOkXF.js → SelectSeparator-CNRGG7Ew.js} +0 -0
  402. /package/dist/{Separator-DQcwC2TR.js → Separator-Cf9-JFgi.js} +0 -0
  403. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  404. /package/dist/{color-Cs0-oxYL.js → color-B9jZdhJX.js} +0 -0
  405. /package/dist/{compile-nZ1xVYTp.js → compile-INR_tPk_.js} +0 -0
  406. /package/dist/{constants--C2DkLW8.js → constants-BWj7DkMn.js} +0 -0
  407. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  408. /package/dist/{dotMatrixField-D_x9_1qq.js → dotMatrixField-CRO0ZFk4.js} +0 -0
  409. /package/dist/{flow.glsl-B2P7e0MT.js → flow.glsl-DqEGRpl4.js} +0 -0
  410. /package/dist/{math-Eb0w3LqU.js → math-5RcIgCB4.js} +0 -0
  411. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  412. /package/dist/{prng-B-d9eYX8.js → prng-B5tIXTtj.js} +0 -0
  413. /package/dist/{procedural-color.wgsl-m7Zgv35j.js → procedural-color.wgsl-C1Y5PkM6.js} +0 -0
  414. /package/dist/{scrollReader-DI1NWxUw.js → scrollReader-rc3Ns_NM.js} +0 -0
  415. /package/dist/{useControlSize-SH1UmJCi.js → useControlSize-DAZ062x7.js} +0 -0
  416. /package/dist/{useFuzzySearch-DIhcYtcw.js → useFuzzySearch-0fTYOhS4.js} +0 -0
  417. /package/dist/{useGlobalDark-CmjB9E32.js → useGlobalDark-B4HO9LXG.js} +0 -0
  418. /package/dist/{useIntersectionPause-Dbozzjgm.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  419. /package/dist/{useInterval-CNdua40W.js → useInterval-BVUI-sez.js} +0 -0
  420. /package/dist/{useKeyboardShortcuts-BPRp33Im.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  421. /package/dist/{usePointerVelocityField-QLsy3_kv.js → usePointerVelocityField-BrkqZFhj.js} +0 -0
  422. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  423. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  424. /package/dist/{useScrollProgress-c3yxmH6a.js → useScrollProgress-A0M6qRl7.js} +0 -0
  425. /package/dist/{useSortable-BVqlJRBR.js → useSortable-DQV_UNDw.js} +0 -0
  426. /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-Bma3UlKA.js} +0 -0
  427. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  428. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  429. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  430. /package/dist/{vReveal-D9k0jADx.js → vReveal-CT1KtwZA.js} +0 -0
@@ -1,155 +1,86 @@
1
- import type { Ref } from "vue";
1
+ import { type Ref } from "vue";
2
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.
3
+ * BD.W-DOCK-CORE (the width-seizure cure) — the dock morph SIZE measure.
10
4
  *
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.
5
+ * THE BUG THIS RETIRES (the year-old seizure): the prior pipeline measured a
6
+ * per-swap `from/to` FLIP ratio and drove the visible size by
7
+ * `--dock-root-scale = max(ratio + (1−ratio)·t, 0.06)` — a FLOOR with NO CEILING.
8
+ * When the morph target measured small (a degenerate `to` racing the content
9
+ * layout), `ratio = from/max(to,1px)` ran to ~56 → `scaleX(56)` = a ~2451px
10
+ * detonation on collapse / an inversion at the spring overshoot peak. The
11
+ * `transform-origin: center` kept the centroid clean (`cxRange 0`), which is
12
+ * exactly why every prior judge measuring the centroid PASSED while the WIDTH
13
+ * detonated. The whole measure-and-arm FLIP machinery
14
+ * (`measureAndArmMorph`/`seatTargetSync`/`rebaseSiblingSpans`/
15
+ * `forceNestedMaxContent`/`nestedTargetsWithin`/`measureTo`/`armRootMorphSpan`/
16
+ * `clearRootMorphSpan`/`morphMinFloorPx`/the per-target generation gating) is
17
+ * DELETED — clean break, no legacy, no floor that masks a bad measurement.
18
+ *
19
+ * THE CURE — a ratio-FREE measure-ONCE convex blend. The dock measures its two
20
+ * KNOWN footprints ONCE per content change (a `ResizeObserver`, NOT a per-swap
21
+ * rAF race): `--dock-expanded-px` (the expanded content width, read behind the
22
+ * clip aperture) and `--dock-collapsed-px` (the collapsed summary box). The
23
+ * visible size is the convex blend `--dock-live = collapsed + (expanded −
24
+ * collapsed)·--dock-morph-t` and `--dock-size-scale = --dock-live / expanded`
25
+ * (layers.css). A convex blend of two POSITIVE endpoints can NEVER exceed the
26
+ * larger nor invert below the smaller — BOUNDED by construction, no ratio, no
27
+ * `scaleX` explosion, regardless of spring overshoot (the `clamp(0,t,1)` caps the
28
+ * size term; the >1 excursion routes to the orthogonal punch channel).
29
+ *
30
+ * THE FRESHNESS GUARD (challenge 3·R2): a measure-ONCE endpoint can still be read
31
+ * stale — before `fonts.ready`, before async icon SVGs lay out, on a
32
+ * `display:none`→0 route swap, or on a `content-visibility:auto` parent (the RO
33
+ * fires 0). A 0 expanded would give `collapsed/0 = ∞`. So FLOOR `--dock-expanded-px`
34
+ * at `max(measured, --dock-collapsed-px)` and re-measure on `fonts.ready` + the
35
+ * FIRST non-zero RO callback + visibility-enter. This is NOT the deleted magic
36
+ * floor (which masked a per-frame measurement); it is a one-shot endpoint
37
+ * sanity bound on a value that is otherwise stable across the whole morph.
38
+ *
39
+ * `DOCK_SPRING` is byte-fenced — it lives in `../constants`, never touched here.
14
40
  */
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
41
  export declare function dimOf(axis: "horizontal" | "vertical"): "width" | "height";
24
- export declare function morphAxisProp(axis: "horizontal" | "vertical"): "inline-size" | "block-size";
25
42
  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;
43
+ export interface UseDockExpandedSizeOptions {
44
+ /** The `.glass-dock` root the `--dock-expanded-px`/`--dock-collapsed-px` write to. */
45
+ rootEl: Ref<HTMLElement | null>;
46
+ /**
47
+ * The content element whose intrinsic morph-axis span is observed for size
48
+ * changes (the active full-pane container — `.dock-layers`). Its resizes are the
49
+ * RO trigger; the ENDPOINTS are read off the ROOT box (content + chrome), keyed
50
+ * by the dock's at-rest expanded/collapsed state.
51
+ */
52
+ contentEl: Ref<HTMLElement | null>;
53
+ /**
54
+ * The morph axis (a horizontal dock blends width; a vertical dock blends height).
55
+ */
56
+ axis: Ref<"horizontal" | "vertical">;
57
+ /**
58
+ * Whether the dock is currently in its EXPANDED visual state (a `Ref<boolean>`).
59
+ * The endpoint captured at rest is keyed off this: at rest expanded → the root
60
+ * box is the `--dock-expanded-px` endpoint; at rest collapsed → the
61
+ * `--dock-collapsed-px` endpoint. (A reactive read, so a state flip re-captures.)
62
+ */
63
+ expanded: Ref<boolean>;
123
64
  }
124
65
  /**
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.
66
+ * BD.W-DOCK-CORE — capture the two convex-blend endpoints ONCE PER STATE off the
67
+ * ROOT box.
143
68
  *
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.
69
+ * The visible morph scales the ROOT (chrome + content), so the two blend endpoints
70
+ * must be the ROOT's OWN expanded/collapsed footprints — NOT the bare content span
71
+ * (which omits the padding/min-width chrome). The endpoints are captured at REST
72
+ * (when `[data-morphing]` is OFF): the dock's settled root box in its current
73
+ * expanded/collapsed state IS that state's endpoint. A `ResizeObserver` on the
74
+ * content re-captures the CURRENT state's endpoint whenever the content reflows
75
+ * (more controls, a font swap), so the blend stays fresh — but it never reads the
76
+ * box MID-MORPH (the scaled box would feed back a degenerate endpoint, the seizure's
77
+ * cousin). The expanded endpoint is FLOORED at `max(captured, collapsed)` — the
78
+ * freshness guard against a 0/degenerate read giving `collapsed/0 = ∞`.
150
79
  *
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.
80
+ * The collapsed endpoint starts at the resolved `--dock-morph-min` icon-square floor
81
+ * and is refined to the real collapsed root box the first time the dock rests
82
+ * collapsed; the expanded endpoint is captured the first (and every) time it rests
83
+ * expanded. So the FIRST morph from a freshly-mounted expanded dock already has a
84
+ * real expanded endpoint + a sane collapsed floor — bounded by construction.
154
85
  */
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;
86
+ export declare function useDockExpandedSize(options: UseDockExpandedSizeOptions): void;
@@ -11,3 +11,4 @@ export { provideDockContext, useDockContext, useOptionalDockContext, DOCK_CONTEX
11
11
  export { provideDockLayerGroupContext, useDockLayerGroupContext, useOptionalDockLayerGroupContext, DOCK_LAYER_GROUP_KEY, type DockLayerDescriptor, type DockLayerGroupContext, } from "./dockLayerContext";
12
12
  export { useDockMorphOrchestrator, provideDockMorphContext, useOptionalDockMorphContext, DOCK_MORPH_KEY, type DockMorphContext, type DockMorphGroupRegistration, type DockMorphGroupHandle, type UseDockMorphOrchestratorOptions, type UseDockMorphOrchestratorReturn, } from "./dockMorphContext";
13
13
  export { useDockOrientationMorph, type DockMorphOrientation, type UseDockOrientationMorphOptions, type UseDockOrientationMorphReturn, } from "./useDockOrientationMorph";
14
+ export { useDockFission, DOCK_SPLIT_SIGNATURES, type DockSplitContext, type DockSplitVector, type DockSplitSquishPeak, type DockSplitSignature, type DockFissionPieceRegistration, type DockFissionPieceHandle, type UseDockFissionOptions, type UseDockFissionReturn, } from "./useDockFission";
@@ -0,0 +1,45 @@
1
+ /** The signed shortest-arc offset on a wrap ring (the "negative-infinity modulus" — a
2
+ * naive `raw % N` breaks the backward wrap). Wraps to `[-N/2, N/2)`. */
3
+ export declare function ringOffset(raw: number, n: number): number;
4
+ /** The φ-tiered slot SPAN to a given absolute slot-distance — the chosen→neighbour gap
5
+ * is wider than the neighbour→far gap (the recession compresses as items recede, the
6
+ * depth read). The tier ratio is EXPRESSED in the accumulation, never a flat resolved
7
+ * rebake (the W-CARD-PAD φ-ladder fence). */
8
+ export declare function tieredSpan(adist: number, base: number, ratio: number): number;
9
+ /** The geometry knobs for the facet carousel — the φ-tier spacing + the fade model. */
10
+ export interface RailProjectionGeometry {
11
+ /** The active→neighbour base slot gap, in px (the tier-0 spacing). Default 44. */
12
+ slotSpacing?: number;
13
+ /** The φ tier ratio — each receding tier compresses by this. Default 1.618. */
14
+ tierRatio?: number;
15
+ /** The slot-distance at which the fade begins (active + immediate neighbour stay
16
+ * full). Default 0.5. */
17
+ fadeStart?: number;
18
+ /** The slot-span the fade runs over. Default 2.5. */
19
+ fadeRange?: number;
20
+ /** The far floor alpha. Default 0. */
21
+ fadeMinAlpha?: number;
22
+ /** The per-slot scale recession (the depth read). Default 0.06. */
23
+ scaleStep?: number;
24
+ /** The max slots the scale recession clamps at. Default 4. */
25
+ scaleClampSlots?: number;
26
+ }
27
+ /** One projected facet — the compositor-only transform tier for the ring item. */
28
+ export interface RailFacetProjection {
29
+ /** The stable ring index `0..count-1` (the `v-for` key). */
30
+ index: number;
31
+ /** The signed shortest-arc slot offset from the active facet. */
32
+ offset: number;
33
+ /** The px translate along the rail's main axis. */
34
+ translate: number;
35
+ /** The faded alpha (0..1). */
36
+ opacity: number;
37
+ /** The recession scale (≤1). */
38
+ scale: number;
39
+ /** Whether this is the active facet (offset 0). */
40
+ active: boolean;
41
+ }
42
+ /** Project the facet ring around the `active` index, fanned by `expand` (0 collapsed → 1
43
+ * fully fanned). Returns the virtualized WINDOW of `±ceil(fadeRange+1)` items, each with
44
+ * its compositor-only `{ translate, opacity, scale }`. PURE — no state, no measure. */
45
+ export declare function projectFacets(count: number, active: number, expand: number, geometry?: RailProjectionGeometry): RailFacetProjection[];
@@ -0,0 +1,192 @@
1
+ import { type MorphRect } from "@mkbabb/keyframes.js";
2
+ import { type Ref } from "vue";
3
+ import { type SpringPresetName } from "../../../../composables/motion/springPresets";
4
+ /** The dock orientation axis (the `dim`-idiom source — slot geometry derives from it). */
5
+ export type SilhouetteOrientation = "horizontal" | "vertical";
6
+ /** The four named silhouette kinds (the descriptor map's contract). */
7
+ export type DockSilhouetteKind = "bar" | "bar+pill" | "split" | "search";
8
+ /**
9
+ * The silhouette spring register — a subset of the named `SPRING_PRESETS` rows matching
10
+ * the `useDockCtaReceive`/`useLiquidReveal` register so every dock morph reads as ONE
11
+ * spring family. `dock` is the default (the dock's own settle clock).
12
+ */
13
+ export type SilhouettePreset = Extract<SpringPresetName, "dock" | "snappy" | "bouncy">;
14
+ /**
15
+ * One named SLOT inside a silhouette — a position keyed by `controlId`. The geometry is
16
+ * ORIENTATION-DERIVED: `main` is the offset along the dock's main axis (the row position
17
+ * horizontal / the column position vertical), `cross` the cross-axis offset, `size` the
18
+ * control's extent. The orchestrator resolves these into a concrete `MorphRect` off the
19
+ * orientation + the dock's measured origin (the `dim`-idiom — never a hardcoded
20
+ * `inline-size`/`block-size` literal, so vertical is the SAME data with `orientation`
21
+ * flipped).
22
+ */
23
+ export interface SilhouetteSlot {
24
+ /** The control this slot positions (the diff key — present-in-both → FLIP). */
25
+ controlId: string;
26
+ /** Offset along the dock's MAIN axis (px from the dock origin). */
27
+ main: number;
28
+ /** Offset along the CROSS axis (px from the dock origin). */
29
+ cross: number;
30
+ /** The control's main-axis extent (px). */
31
+ size: number;
32
+ /** The control's cross-axis extent (px; defaults to `size` for a square control). */
33
+ thickness?: number;
34
+ /**
35
+ * FUSION marker (the `bar+pill` headline): when true, this slot's `to`-rect is the
36
+ * bar's TOP CROWN and the orchestrator drives `--silhouette-fuse-t` so the slotted
37
+ * control (the now-playing pill) DOCKS DOWN and MELDS into the bar as ONE plate. A
38
+ * `bar+pill` descriptor with NO `fuse: true` slot is a pill-ABOVE-bar literal (the
39
+ * C3 anti-evasion — the gate reds it).
40
+ */
41
+ fuse?: boolean;
42
+ }
43
+ /**
44
+ * One declarative silhouette descriptor — a context's whole geometry as DATA (the
45
+ * `DockSectionDescriptor` precedent: data, not code paths). The orchestrator reads the
46
+ * MAP; there is NO per-context hardcoded silhouette literal (the gate's C1 anti-evasion
47
+ * floor).
48
+ */
49
+ export interface DockSilhouetteDescriptor {
50
+ /** Stable identifier — the `setSilhouette` argument + the active-silhouette id. */
51
+ id: string;
52
+ /** Which of the four named kinds this context renders. */
53
+ kind: DockSilhouetteKind;
54
+ /** The named slots (control positions) this silhouette places. */
55
+ slots: readonly SilhouetteSlot[];
56
+ /** This silhouette's spring register (DATA, not an SFC ternary). Default `dock`. */
57
+ preset?: SilhouettePreset;
58
+ /**
59
+ * The neck-hold for any DETACH this transition drives (DATA — fed to `useDockFission`
60
+ * when a control is present-in-from-only). 0 = no hold (immediate release), 1 = full
61
+ * hold (the goo necks late then snaps).
62
+ */
63
+ neckHold?: number;
64
+ }
65
+ /**
66
+ * The DETACH hand-off API the orchestrator drives (BE.W-DOCK-FISSION owns the engine).
67
+ * A control PRESENT-only-in-FROM detaches — the orchestrator registers it as a fission
68
+ * PIECE via `registerPiece` and the fission orchestrator buds it off the body. Defined
69
+ * here per the fission spec (`useDockFission` `registerPiece`); the sibling agent builds
70
+ * it, the orchestrator reconciles the import. The orchestrator never re-implements the
71
+ * detach physics — it CALLS this.
72
+ */
73
+ export interface FissionPieceHandle {
74
+ /** Release the piece (drive its `--dock-split-t` 0→1 detach). */
75
+ detach: () => void;
76
+ /** Re-merge the piece (the bidirectional 1→0). */
77
+ remerge: () => void;
78
+ /** Unregister the piece (cleanup). */
79
+ release: () => void;
80
+ }
81
+ /** The fission registrar the orchestrator composes (BE.W-DOCK-FISSION's `registerPiece`). */
82
+ export type RegisterFissionPiece = (el: HTMLElement, spec: {
83
+ vector: {
84
+ dx: number;
85
+ dy: number;
86
+ };
87
+ rank: number;
88
+ neckHold: number;
89
+ }) => FissionPieceHandle;
90
+ /**
91
+ * The BLOOM-IN hand-off API the orchestrator drives (BE.W-BLOOM-UP owns the engine). A
92
+ * control PRESENT-only-in-TO blooms in — the inverse FLIP. Defined here per the bloom-up
93
+ * spec (`useBloomUp(sourceRef, destRef)`); the orchestrator CALLS it, never re-implements
94
+ * the bloom.
95
+ */
96
+ export type BloomInPiece = (el: HTMLElement, fromRect: MorphRect, toRect: MorphRect) => void;
97
+ export interface UseDockContextSilhouetteOptions {
98
+ /** The declarative silhouette descriptor MAP (the four kinds; net-new DATA). */
99
+ silhouettes: readonly DockSilhouetteDescriptor[];
100
+ /** The id of the silhouette to seat at construction (defaults to the first). */
101
+ initial?: string;
102
+ /** The dock orientation (the `dim`-idiom source). Default `horizontal`. */
103
+ orientation?: SilhouetteOrientation | Ref<SilhouetteOrientation>;
104
+ /**
105
+ * Resolve a control's live element by `controlId` (the orchestrator measures its
106
+ * current rect for the FLIP). The consumer wires this off its slot refs.
107
+ */
108
+ resolveControl: (controlId: string) => HTMLElement | null;
109
+ /**
110
+ * The dock ROOT element — the orchestrator measures its origin (to resolve a slot's
111
+ * orientation-derived `main`/`cross` into a viewport `MorphRect`) AND writes
112
+ * `--silhouette-fuse-t` onto it for the fusion meld. The fused glass plate is the
113
+ * dock body itself (C5 — the detach pieces paint in the non-clipping frame; the fused
114
+ * plate is the dock root).
115
+ */
116
+ dockRoot: Ref<HTMLElement | null>;
117
+ /**
118
+ * The DETACH registrar (BE.W-DOCK-FISSION's `registerPiece`). When absent, a
119
+ * present-in-from-only control is simply removed from the FLIP set (no detach
120
+ * choreography — graceful until fission wires in).
121
+ */
122
+ registerFissionPiece?: RegisterFissionPiece;
123
+ /**
124
+ * The BLOOM-IN driver (BE.W-BLOOM-UP). When absent, a present-in-to-only control
125
+ * snaps in (no bloom choreography — graceful until bloom-up wires in).
126
+ */
127
+ bloomInPiece?: BloomInPiece;
128
+ /** Honor `prefers-reduced-motion: reduce` (seat synchronously). Default true. */
129
+ respectReducedMotion?: boolean;
130
+ /** Fired once when a silhouette transition has settled (the consumer hand-off). */
131
+ onSettled?: (toId: string) => void;
132
+ }
133
+ export interface UseDockContextSilhouetteReturn {
134
+ /** The active silhouette id (reactive — the consumer reads the SHAPE). */
135
+ active: Readonly<Ref<string>>;
136
+ /** The active descriptor (reactive). */
137
+ activeDescriptor: Readonly<Ref<DockSilhouetteDescriptor | null>>;
138
+ /** Whether a transition is in flight (the consumer guards re-entrancy / `[data-morphing]`). */
139
+ transitioning: Readonly<Ref<boolean>>;
140
+ /**
141
+ * Transition to the silhouette `toId` — DIFFs the slots by `controlId`, FLIPs the
142
+ * survivors, detaches the from-only, blooms in the to-only, and drives the fusion
143
+ * meld for a `bar+pill` target. A no-op if `toId` is unknown or already active.
144
+ */
145
+ setSilhouette: (toId: string) => void;
146
+ }
147
+ /**
148
+ * The declarative context→silhouette state machine. Reads a `DockSilhouetteDescriptor[]`
149
+ * MAP; on `setSilhouette` it DIFFs the slots by `controlId` and FLIPs/detaches/blooms via
150
+ * the SHIPPED `ElementMorph` + `springTimingFunction` substrate, ONE `DOCK_SPRING`. The
151
+ * `bar+pill` fusion docks the pill into the bar via `--silhouette-fuse-t`. Compositor-only
152
+ * + PRM-seats. See the module header for the REUSE + the orientation-derived slots + the
153
+ * fusion mechanism.
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * const sil = useDockContextSilhouette({
158
+ * silhouettes: [
159
+ * { id: "nav", kind: "bar", slots: [...] },
160
+ * { id: "media", kind: "bar+pill", slots: [{ controlId: "pill", main: 0, cross: -56, size: 240, fuse: true }, ...] },
161
+ * ],
162
+ * orientation,
163
+ * dockRoot,
164
+ * resolveControl: (id) => slotRefs.value[id] ?? null,
165
+ * })
166
+ * sil.setSilhouette("media") // the pill DOCKS DOWN + MELDS into the bar
167
+ * ```
168
+ */
169
+ export declare function useDockContextSilhouette(options: UseDockContextSilhouetteOptions): UseDockContextSilhouetteReturn;
170
+ /**
171
+ * Compute a detached control's DIRECTION-VECTOR off its slot + the orientation (the
172
+ * fission `vector` — the `dim`-idiom). A control peels along the CROSS axis (the
173
+ * `stack-rail.css` gutter direction the fission media=lateral signature reuses): the sign
174
+ * of `cross` chooses the side, the orientation chooses the axis. This is PURE (exported
175
+ * for the unit test — the slot-diff vector logic is testable without a DOM).
176
+ */
177
+ export declare function detachVector(slot: SilhouetteSlot, orientation: SilhouetteOrientation): {
178
+ dx: number;
179
+ dy: number;
180
+ };
181
+ /**
182
+ * PURE slot-diff — exported for the unit test (the diff logic is testable without a DOM).
183
+ * Classifies each controlId across the from/to slot sets: `survivors` (present-in-both →
184
+ * FLIP), `bloomIns` (to-only → BLOOM), `detaches` (from-only → DETACH). This is the
185
+ * load-bearing classification `setSilhouette` runs; testing it directly proves the
186
+ * descriptor-driven state machine is correct without a browser.
187
+ */
188
+ export declare function diffSilhouetteSlots(from: readonly SilhouetteSlot[], to: readonly SilhouetteSlot[]): {
189
+ survivors: string[];
190
+ bloomIns: string[];
191
+ detaches: string[];
192
+ };
@@ -0,0 +1,158 @@
1
+ import { type Ref } from "vue";
2
+ /** The three named fission CONTEXTS — each maps to a goo signature (F3). */
3
+ export type DockSplitContext = "search" | "media" | "nav";
4
+ /** The detach vector family a context selects. */
5
+ export type DockSplitVector = "radial" | "lateral" | "inward-merge";
6
+ /**
7
+ * BD.W-DOCK-CORE (II.2 — F-1 the headline fix). The placement axis the detached
8
+ * pieces TRAVEL ALONG to form the sibling island dock. The prior build let each
9
+ * piece scatter on its own radial center → it read as inline jitter inside the one
10
+ * pill, NOT a detach. A single COHERENT placement vector flies the whole piece
11
+ * cluster off the source plate so a second dock visibly materializes beside/above/
12
+ * below (the iOS-27 split read).
13
+ */
14
+ export type DockSplitPlacement = "beside" | "above" | "below";
15
+ /** The unit placement vector each `splitPlacement` flies the cluster along. */
16
+ export declare const PLACEMENT_VECTOR: Readonly<Record<DockSplitPlacement, {
17
+ dx: number;
18
+ dy: number;
19
+ }>>;
20
+ /** The squish-peak register — WHEN the `useLiquidFlex` swell peaks in the travel. */
21
+ export type DockSplitSquishPeak = "late" | "long" | "coalesce";
22
+ /**
23
+ * The per-context goo-SIGNATURE descriptor (F3 — the FLOOR, DATA not three code paths).
24
+ * The orchestrator reads this to compute each piece's vector + stagger + neck phase; the
25
+ * ONE `fission-bridge.css` recipe paints whatever the pieces carry.
26
+ */
27
+ export interface DockSplitSignature {
28
+ /** The context this signature serves. */
29
+ context: DockSplitContext;
30
+ /** The detach-vector family. */
31
+ vector: DockSplitVector;
32
+ /**
33
+ * How long the goo neck HOLDS before it snaps (0..1 of `--split-t`). High = the
34
+ * tense radial pop (neck holds to ~0.55 then snaps); the neck-break offset.
35
+ */
36
+ neckHold: number;
37
+ /**
38
+ * The per-piece stagger-rank resolver — returns piece `i`'s ordinal in the break
39
+ * SEQUENCE (innermost-first for radial, outside-in for lateral). The orchestrator
40
+ * phase-shifts each piece's `--neck-t` by `staggerStep * rank` so the N necks break
41
+ * in sequence, never simultaneously (the `--split-stagger * rank(i)` idiom).
42
+ */
43
+ staggerRank: (i: number, count: number) => number;
44
+ /** WHEN the `useLiquidFlex` squish swell peaks across the travel. */
45
+ squishPeak: DockSplitSquishPeak;
46
+ }
47
+ /** The canonical per-context signature MAP (F3 — search/media/nav, descriptor-driven). */
48
+ export declare const DOCK_SPLIT_SIGNATURES: Readonly<Record<DockSplitContext, DockSplitSignature>>;
49
+ /** The per-piece DIRECTION-VECTOR + rank a control registers (the MorphTarget twin). */
50
+ export interface DockFissionPieceRegistration {
51
+ /** The detaching control element (its `--split-*`/`--neck-t` vars are written here). */
52
+ el: Ref<HTMLElement | null>;
53
+ /**
54
+ * The detach DIRECTION as a unit-ish vector in dock-local space (the bloom/peel
55
+ * direction). `radial` blooms `(cx_i − cx_dock)`-ward; `lateral` peels cross-axis;
56
+ * `inward-merge` is the negative radial. May be a getter so a live re-measure
57
+ * (the FLIP-measured center) re-resolves per read.
58
+ */
59
+ vector: {
60
+ dx: number;
61
+ dy: number;
62
+ } | (() => {
63
+ dx: number;
64
+ dy: number;
65
+ });
66
+ /**
67
+ * The piece's ordinal in the registration order (the `--i` the bridge reads + the
68
+ * input to the signature's `staggerRank`). Stable per piece.
69
+ */
70
+ rank: number;
71
+ }
72
+ /** The handle a registered piece holds (detach on unmount). */
73
+ export interface DockFissionPieceHandle {
74
+ /** Detach this piece from the orchestrator (on the control's unmount). */
75
+ release(): void;
76
+ }
77
+ export interface UseDockFissionOptions {
78
+ /** The `.glass-dock` root (or the fission scope) the shared `--dock-split-t` writes to. */
79
+ rootEl: Ref<HTMLElement | null>;
80
+ /**
81
+ * The active signature (the context the dock is fissioning under). A `Ref` so a
82
+ * consumer can swap contexts; the orchestrator reads `.value` at split time.
83
+ */
84
+ signature: Ref<DockSplitSignature>;
85
+ /**
86
+ * BD.W-DOCK-CORE (II.2 — F-1). The placement the detached pieces fly to form the
87
+ * sibling island. A `Ref` so a consumer can swap placement. The orchestrator writes
88
+ * the per-piece travel along this ONE coherent vector (not per-piece radial scatter)
89
+ * so the cluster reads as a real detach into a second dock beside/above/below.
90
+ * Defaults to `"beside"`.
91
+ */
92
+ placement?: Ref<DockSplitPlacement>;
93
+ /**
94
+ * The LOW squish cap the `useLiquidFlex` recoil saturates at (≤1.08 — the anti-taffy
95
+ * fence). May be a getter so a live `--*-max-stretch` cascade override re-resolves.
96
+ * Defaults to 1.08 (the `useLiquidFlex` register).
97
+ */
98
+ maxStretch?: number | (() => number);
99
+ /**
100
+ * The seam-tension cap (F4 — kept LOW ≈0.12, the `useLiquidFlex` maxStretch
101
+ * register). A fast pull THINS the neck via the existing `clip-path` channel up to
102
+ * this cap, saturating — never a taffy-pull.
103
+ */
104
+ seamTensionCap?: number;
105
+ /**
106
+ * The seam-tension velocity gain `k` — `--seam-tension = clamp(0, speed·k, cap)`.
107
+ * Defaults to 0.6 (a calm gain over the normalized-host velocity).
108
+ */
109
+ seamTensionGain?: number;
110
+ /**
111
+ * The per-rank stagger STEP — the `--neck-t` phase shift per stagger-rank so the N
112
+ * necks break in sequence (the `--split-stagger * rank` idiom). Defaults to 0.08.
113
+ */
114
+ staggerStep?: number;
115
+ /** Honor `prefers-reduced-motion: reduce` → instant sync-seat (F5). Default true. */
116
+ respectReducedMotion?: boolean;
117
+ }
118
+ export interface UseDockFissionReturn {
119
+ /** The live split scalar (0 rest → 1 fissioned), the last value the spring wrote. */
120
+ readonly t: Readonly<Ref<number>>;
121
+ /** True while the dock is fissioned (or mid-fission past the threshold). */
122
+ readonly fissioned: Readonly<Ref<boolean>>;
123
+ /**
124
+ * Register a surviving control as a fission PIECE (the `Set<MorphTarget>` pattern).
125
+ * The piece carries its DIRECTION-VECTOR + rank; the orchestrator writes its
126
+ * `--split-dx`/`--split-dy`/`--i`/`--neck-t` off the active signature.
127
+ */
128
+ registerPiece(reg: DockFissionPieceRegistration): DockFissionPieceHandle;
129
+ /** SPLIT — run the scalar 0→1 (carve the pill into the N pieces). */
130
+ split(): void;
131
+ /** RE-MERGE — run the scalar 1→0 (the SAME loop, target flipped — F2 bidirectional). */
132
+ merge(): void;
133
+ /** Toggle split↔merge from the current state. */
134
+ toggle(): void;
135
+ /**
136
+ * The `@pointermove` handler the consumer binds on the dock host — feeds the raw
137
+ * pointer to the velocity field (the field is ticked from INSIDE the driver loop).
138
+ * PRM-gated by the field itself.
139
+ */
140
+ onPointerMove(event: PointerEvent): void;
141
+ /** Tear down the spring + the field listener (auto-run on scope dispose). */
142
+ dispose(): void;
143
+ }
144
+ /**
145
+ * The n-ary detach orchestrator. ONE `SpringProgress` on `DOCK_SPRING` writing
146
+ * `--dock-split-t` + per-piece `--split-dx`/`--split-dy`/`--i`/`--neck-t` off the active
147
+ * `DockSplitSignature`, the snap-recoil on `useLiquidFlex`, the seam-tension on
148
+ * `usePointerVelocityField` (fed from inside the ONE loop), PRM sync-seated. See the
149
+ * module header for the load-bearing-reuse + box-inviolate rationale.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * const fission = useDockFission({ rootEl, signature })
154
+ * const h = fission.registerPiece({ el: searchIconRef, vector: { dx: -1, dy: 0 }, rank: 0 })
155
+ * fission.split() // the pill carves into the pieces along the signature
156
+ * ```
157
+ */
158
+ export declare function useDockFission(options: UseDockFissionOptions): UseDockFissionReturn;