@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,87 @@
1
+ /* dock/cta-seat.css — the `[data-cta-pending]` CTA-receive landing SEAT (BC.W-AX-DOCK-
2
+ * CTA-SEAT; the speedtest-AX BC-W2 + BC-W3 fold).
3
+ *
4
+ * THE MOVE. `useDockCtaReceive` (the BB.B2 morph half) flies an EXTERNAL CTA onto a
5
+ * dock control's rect; this partial makes the control it lands on a SEAT that was
6
+ * visibly RESERVED for it. While the CTA is in flight (or pending), the target dock
7
+ * control carries `data-cta-pending` (written by `setPending()` on the
8
+ * `useDockCtaReceive` return): the control shows a quiet dim GHOST (a placeholder
9
+ * awaiting its arrival) AND reserves its resting footprint from frame 0 so the dock
10
+ * box does NOT jump when the CTA lands. On `clearPending()` (the default hand-off
11
+ * fires it as the CTA lands) the attribute is removed and the seat REVEALS its real
12
+ * content with a plain `transition: opacity` FLIP.
13
+ *
14
+ * THE NO-BOX-JUMP (T2). The reserve is a STATIC `min-inline-size`/`min-block-size`
15
+ * keyed off `--dock-control-size`/`--dock-layer-height` (the control's resting box) —
16
+ * a ONE-TIME reservation set the instant `setPending()` fires, NEVER an animated
17
+ * dimension (the W-DESKTOP-RESERVE static-frame-0 precedent). The dock's shrink-wrap
18
+ * is already at the seated width, so the CTA lands into an already-sized hole; the box
19
+ * never grows on reveal. `proof:no-layout-animation` holds — no `transition: width`/
20
+ * animated min-* anywhere here.
21
+ *
22
+ * THE FLIP REVEAL (T3). The seat is a CONTENT swap on an already-sized box, NOT a box
23
+ * morph — so the reveal is a PLAIN `transition: opacity` on the `--ease-out`
24
+ * no-overshoot register (a content reveal must not overshoot — W-MOTION-CANON P2). It
25
+ * does NOT ride the dock collapse/expand morph-stagger (`--dock-expand-t`/the child
26
+ * stagger); re-using the morph clock would read as a janky stagger-restart on a
27
+ * content reveal.
28
+ *
29
+ * RECT-DRIVEN, LAYOUT-AGNOSTIC (Gate-1 Q5). The seat targets `[data-cta-pending]` on
30
+ * ANY dock control — it makes NO assumption about a skip-arrow affordance (a
31
+ * consumer-side functional skip control that may or may not be present). The reserve
32
+ * is the control's own resting footprint; the seat works with or without arrows.
33
+ *
34
+ * COMPOSITOR-ONLY. `setPending`/`clearPending` toggle the data attribute; this partial
35
+ * paints with `opacity` + the static reserve. No layout property is animated. The
36
+ * `--cta-seat-*` knobs are the consumer retune seam.
37
+ *
38
+ * @import-ed by dock.css in the dock partial cascade, in the SAME `@layer components`. */
39
+
40
+ @layer components {
41
+ /* The armed seat — the control is RESERVED. The static min-*-size locks the resting
42
+ footprint from frame 0 (the no-box-jump); the dim opacity is the placeholder
43
+ ghost awaiting the CTA's arrival. The `transition: opacity` is declared HERE (not
44
+ only on the cleared state) so the GHOST→content reveal is a smooth fade in BOTH
45
+ directions on the SAME compositor-safe register — the box is already sized, only
46
+ the opacity moves. */
47
+ [data-cta-pending] {
48
+ /* The STATIC resting-geometry reserve (T2) — a one-time min-*-size off the
49
+ control's own resting box. NEVER transitioned (an animated dimension
50
+ CLS-storms — the proof:no-layout-animation floor). */
51
+ min-inline-size: var(--dock-control-size, var(--size-icon-btn));
52
+ min-block-size: var(
53
+ --dock-layer-height,
54
+ var(--dock-control-size, var(--size-icon-btn))
55
+ );
56
+
57
+ /* The dim GHOST placeholder — the control awaits its arrival (T3). */
58
+ opacity: var(--cta-seat-ghost-opacity, 0.35);
59
+
60
+ /* The FLIP reveal register — a PLAIN opacity transition on --ease-out
61
+ (no-overshoot). Default duration tracks the snappy spring envelope so the
62
+ reveal reads as the same family as the morph that lands the CTA. */
63
+ transition: opacity
64
+ var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
65
+ var(--ease-out);
66
+ }
67
+
68
+ /* The seated CONTENT also dims while pending — the icon/label is the thing that
69
+ fades back in on reveal. Direct-child targeting keeps the seat layout-agnostic
70
+ (it does not name a control class — Q5). */
71
+ [data-cta-pending] > * {
72
+ opacity: var(--cta-seat-ghost-opacity, 0.35);
73
+ transition: opacity
74
+ var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
75
+ var(--ease-out);
76
+ }
77
+
78
+ /* PRM — the reveal is an INSTANT opacity swap (the vestibular floor; the seat snaps
79
+ to its content, zero transition frames). The reserve is unchanged (it is static,
80
+ not a motion). The gesture completes; the animation is off. */
81
+ @media (prefers-reduced-motion: reduce) {
82
+ [data-cta-pending],
83
+ [data-cta-pending] > * {
84
+ transition: none;
85
+ }
86
+ }
87
+ }
@@ -11,6 +11,89 @@
11
11
  * @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
12
12
  * carve is isomorphic (same layer, same source order → ZERO visual delta). */
13
13
 
14
+ /* ── BB.W-HIERARCHY2 — the CONTENT-side anti-collision gutter ───────────────────
15
+ `--dock-content-safe-inset` is the structural CONTENT-side counterpart to the
16
+ dock-collision SEAT fix (W-CHIP-GRAZE + W-DOCK-RAIL-SEAT-FINAL own the chip-fan
17
+ SEAT — the chips fan off-canvas into the rail's dead gutter, chipOverMain:false on
18
+ EVERY route by topology). This token reserves a guaranteed safe-inset gutter on the
19
+ CONTENT column so the page-title band is structurally clear of any chip reach even
20
+ on a route added WITHOUT a per-route audit (the anti-gameability the gestalt gate
21
+ wants). It is keyed to the dock reach (`--dock-rail-extend-length`, the rail's
22
+ beyond-edge overrun) so the content gutter tracks the dock geometry in lockstep,
23
+ and it rides `--dock-scale` transitively through that reach token.
24
+
25
+ THE DE-OVERLOAD IS BINDING (distinct geometry concerns, distinct tokens):
26
+ `--dock-control-safe-inset` (per-density, below) is the dock CONTROL plate-clearance
27
+ inset (the painted plate floors a notch below its track cell — BA.W-DOCK-GEOMETRY,
28
+ owned by proof:dock-plate-clearance); `--dock-content-safe-inset` is the CONTENT-band
29
+ gutter (the content column reserves dead inline space the chips can never share).
30
+ The two close the collision from BOTH sides — the chip seat (the SEAT waves) AND the
31
+ content gutter (this token) — coordinated on the SAME dead inline gutter: the content
32
+ gutter is the RESERVE, the gutter-fan lands the chips in it (ONE gutter, two
33
+ consumers). NEVER re-point this AT --dock-control-safe-inset (the de-overload). */
34
+ :root {
35
+ --dock-content-safe-inset: var(--dock-rail-extend-length, 2.5rem);
36
+
37
+ /* ── BC.W-DOCK-ARBITRARY — the arbitrary-shape morph tokens ─────────────────
38
+ The dock morph is no longer locked to circle↔pill. The shape is now a SCALAR
39
+ PARAMETER: a `--dock-shape-from`/`--dock-shape-to` corner-radius pair the chrome
40
+ radius arm interpolates on `--dock-morph-t`, an OPT-IN `--dock-shape-clip-from`/
41
+ `--dock-shape-clip-to` clip-path silhouette pair (compositor-only, no layout),
42
+ and a `--dock-morph-max-stretch` squish cap. The library DEFAULTS preserve the
43
+ collapsed-perfect-circle ↔ expanded-pill identity (CLAUDE.md `aspect-ratio: 1` +
44
+ `--radius-dock` 9999px), so the common case needs no consumer override; a consumer
45
+ sets these to morph to an arbitrary silhouette (a wide bar, a teardrop, a tall
46
+ rail). Clean break (MEMORY: no backwards compat) — the prior hardcoded circle/pill
47
+ endpoints become these token DEFAULTS, no `--dock-radius-legacy`. */
48
+
49
+ /* The corner profile span — the `from`-radius (the collapsed perfect circle, a
50
+ 9999px pill that rounds the height-pinned square into a circle) ↔ the `to`-radius
51
+ (the expanded pill, `--radius-dock`). Consumer-targetable: set either to any
52
+ radius to morph to an arbitrary corner profile. */
53
+ --dock-shape-from: var(--radius-dock, 9999px);
54
+ --dock-shape-to: var(--radius-dock, 9999px);
55
+
56
+ /* The arbitrary-silhouette span — an OPT-IN `clip-path` pair (a compositor property,
57
+ NO layout). DEFAULT-OFF: `none`/`none` means the rectangle/pill morph (the common
58
+ case) needs no clip. A consumer opts into a teardrop/blob silhouette by setting the
59
+ clip-from/to to two `inset()`/`path()`/`shape()` values the morph LERPS between on
60
+ `--dock-morph-t`. */
61
+ --dock-shape-clip-from: none;
62
+ --dock-shape-clip-to: none;
63
+
64
+ /* The squish cap — the LOW volume-preserving `--stretch` ceiling for the shape-morph
65
+ deformation, mirroring the tab-indicator's iOS-segmented register (the
66
+ `DEFAULT_INDICATOR_MAX_STRETCH` 1.08). A fast morph swells the plate then caps —
67
+ a lively settle, never a taffy-pull. */
68
+ --dock-morph-max-stretch: 1.08;
69
+
70
+ /* ── BC.W-LIQUID-MORPH — the reserve floor (the white morph can never paint) ──
71
+ The morph box reserves `inline-size`/`block-size: max(var(--dock-morph-to),
72
+ var(--dock-morph-min))` (layers.css). A degenerate `to:0` measurement (the
73
+ BA-VJS-1 nested-group race, glass-dock-codebase.md §2.2) would otherwise reserve
74
+ a ZERO-width footprint → `overflow: clip` blanks the content → the white/invisible
75
+ morph the user reports. The floor seats it at the collapsed-pill minimum (~44px,
76
+ the WCAG touch floor / `--dock-control-floor`), so a missed measurement degrades to
77
+ "visible at the floor," never "white." A SAFETY NET: on every healthy measurement
78
+ the `max()` resolves to the real `to` (inert above the floor); it fires ONLY on the
79
+ degenerate race. Density-scaled, riding `--dock-scale` transitively. */
80
+ --dock-morph-min: max(2.75rem, var(--dock-control-floor, 0px));
81
+
82
+ /* ── BC.W-DOCK-SEARCH — the collapse-on-scroll trigger-points ─────────────────
83
+ The dock-search optional shrink-on-scroll (composing useScrollChrome — the
84
+ native dual-path reader, persistent-default) reads these two tunable px
85
+ trigger-points: the shrink BEGINS at `--dock-search-shrink-start` of scroll and
86
+ reaches the compact form at `--dock-search-shrink-end` (the words
87
+ `scrollInflectionPoint` generalized into dock-scoped tokens). They ride
88
+ `--dock-scale` transitively (a coarse-pointer dock's trigger-points scale with
89
+ its geometry), and a consumer retunes the inflection in ONE write. NOTE the
90
+ PERSISTENT default — these are inert unless the consumer opts in via
91
+ `collapseOnScroll`; the morph itself NEVER fires on a passive scroll (the
92
+ iOS-27 lesson — the scroll path is the distinct compositor shrink). */
93
+ --dock-search-shrink-start: calc(0rem * var(--dock-scale));
94
+ --dock-search-shrink-end: calc(7.25rem * var(--dock-scale));
95
+ }
96
+
14
97
  @layer components {
15
98
  /* AX.W45 — the density cascade is threaded by the ONE `--dock-scale`
16
99
  multiplier (default 1, lifted to `--dock-mobile-scale` on coarse pointers).
@@ -222,6 +305,121 @@
222
305
  );
223
306
  }
224
307
 
308
+ /* ── BC.W-AX-DOCK-COCKPIT — the `cockpit` geometry PRESET ─────────────────────
309
+ The tight instrument-cockpit register: a FIXED `2.75rem` control floor (the
310
+ Gate-1 Q6 fixed value — NOT a range) with COMPACT-tight chrome (the tightest
311
+ padding/gap/tile-pad, distinct from `spacious`'s LOOSE chrome at the SAME
312
+ 2.75rem control). It closes the dock-oversize chronic (speedtest A-9): a
313
+ consumer opts into a dense, proportioned instrument strip — `2.75rem` control,
314
+ compact chrome, the label tracking the control by `--dock-label-ratio` (so the
315
+ label never reads OVERSIZE on the tight pill).
316
+
317
+ It is a NAMED preset, NOT a 5th density rung — the density axis stays FOUR rungs
318
+ (`proof:dock-unify`'s density census is unaffected). The preset is a geometry
319
+ OVERRIDE composing WITH a `data-density` base: `[data-preset="cockpit"]` wins the
320
+ control-size/layer-height/chrome by source-order (this block comes AFTER the rungs),
321
+ so a `<GlassDock data-density="comfortable" data-preset="cockpit">` resolves the
322
+ cockpit geometry. An ancestor `[data-preset="cockpit"]` scope re-declares these
323
+ tokens too (the substitution-vs-inheritance discipline) so descendant docks inherit.
324
+
325
+ The control floor rides the SAME `* var(--dock-scale)` thread + the `max(…,
326
+ --dock-control-floor)` WCAG 2.5.5 clamp as the rungs — the cockpit is tight, but
327
+ the coarse-pointer touch target NEVER drops below the 44px floor. */
328
+ .glass-dock[data-preset="cockpit"] {
329
+ /* The FIXED 2.75rem control floor (Q6) — the cockpit register, riding
330
+ `--dock-scale` + the 44px clamp. NOT a `clamp(2.5rem, …, 3rem)` range. */
331
+ --dock-control-size: max(
332
+ calc(2.75rem * var(--dock-scale)),
333
+ var(--dock-control-floor, 0px)
334
+ );
335
+ --dock-layer-height: max(
336
+ calc(2.75rem * var(--dock-scale)),
337
+ var(--dock-control-floor, 0px)
338
+ );
339
+ /* The TIGHT chrome — the COMPACT-rung tightness (the cockpit is a dense
340
+ instrument strip, NOT the spacious loosening). This is the distinction
341
+ from `spacious` (same control, LOOSE chrome). */
342
+ --dock-padding-block: calc(
343
+ var(--dock-density-compact-padding-block, 0.25rem) * var(--dock-scale)
344
+ );
345
+ --dock-padding-inline: calc(
346
+ var(--dock-density-compact-padding-inline, 0.375rem) * var(--dock-scale)
347
+ );
348
+ --dock-layer-gap: calc(
349
+ var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
350
+ );
351
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset, in lockstep with
352
+ the rungs (the 10%-per-side painted-plate inset). */
353
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
354
+ --dock-tile-min: calc(
355
+ var(--dock-control-size) + var(--dock-tile-pad, 1rem) * var(--dock-scale)
356
+ );
357
+ --dock-trigger-padding-block: calc(
358
+ var(--dock-density-compact-trigger-padding-block, 0.1875rem) *
359
+ var(--dock-scale)
360
+ );
361
+ --dock-trigger-padding-inline: calc(
362
+ var(--dock-density-compact-trigger-padding-inline, 0.4375rem) *
363
+ var(--dock-scale)
364
+ );
365
+ --dock-tab-padding-block: calc(
366
+ var(--dock-density-compact-tab-padding-block, 0.3125rem) *
367
+ var(--dock-scale)
368
+ );
369
+ --dock-tab-padding-inline: calc(
370
+ var(--dock-density-compact-tab-padding-inline, 0.625rem) *
371
+ var(--dock-scale)
372
+ );
373
+ --dock-tab-h: calc(32px * var(--dock-scale));
374
+ /* The cockpit-tight label ratio — the label reads EVEN tighter relative to
375
+ its control than the `:root` default (the A-9 close). The `dock-label`
376
+ font-size is `calc(--dock-control-size * --dock-label-ratio)`; the cockpit
377
+ tunes the ratio DOWN so a 2.75rem cockpit control carries a label sized for
378
+ the dense strip, not the comfortable-default proportion. */
379
+ --dock-label-ratio: 0.42;
380
+ /* RE-RESOLVE the density-painted glyph tokens against the cockpit
381
+ `--dock-layer-height` (the same substitution-vs-inheritance trap the
382
+ `.glass-dock[data-density]` re-resolve below fixes — a `[data-preset]`
383
+ scope paints its OWN `--dock-layer-height`, so the `:root`-derived glyph
384
+ would freeze at the fallback). Identical formula to the density re-resolve;
385
+ only the resolution element moves so the cockpit height flows into the glyph. */
386
+ --dock-icon-glyph: max(
387
+ calc(var(--dock-layer-height) * var(--dock-icon-glyph-ratio)),
388
+ var(--dock-icon-glyph-floor)
389
+ );
390
+ --dock-control-glyph-size: var(--dock-icon-glyph);
391
+ }
392
+
393
+ /* BB.W-PERF-PRODUCER A′-6 — RE-RESOLVE the glyph token inside the density-painted
394
+ scope. `--dock-icon-glyph` (offsets-sizing.css) is a RATIO of
395
+ `--dock-layer-height`, but density.css paints `--dock-layer-height` ONLY on
396
+ `.glass-dock[data-density]` — the `:root` `--dock-icon-glyph` definition reads
397
+ `--dock-layer-height` at `:root` (the inline fallback ladder), so it would
398
+ FREEZE at the fallback rather than track the per-rung painted height (the SAME
399
+ substitution-vs-inheritance trap the R5-1 sweep fixed for
400
+ `--dock-collapsed-summary-min-size` in overflow.css). Re-resolving it HERE, on
401
+ the element that paints `--dock-layer-height`, lets the per-density height flow
402
+ into the glyph so a `spacious` dock's glyph grows in lockstep with the shelf
403
+ (the value.js D5-1 defect). The formula is IDENTICAL to the `:root` definition;
404
+ only the resolution element moves. The WCAG floor + the `--dock-icon-glyph-ratio`
405
+ knob ride through unchanged; the `.dark-mode-toggle-button > svg` mirror reads
406
+ the same re-resolved token so both glyphs track the density axis. */
407
+ .glass-dock[data-density] {
408
+ --dock-icon-glyph: max(
409
+ calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
410
+ var(--dock-icon-glyph-floor)
411
+ );
412
+ /* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — RE-RESOLVE the in-dock
413
+ control-glyph knob against the density-painted `--dock-icon-glyph` (the
414
+ same substitution-vs-inheritance trap as the glyph above: a `:root`-only
415
+ `--dock-control-glyph-size` would freeze at the `:root` glyph while
416
+ `--dock-icon-glyph` lifts per density). Re-declaring it HERE keeps the
417
+ docked dark-toggle glyph + its inset pad on the density axis with the nav
418
+ glyphs. Identical to the `:root` default; only the resolution element
419
+ moves so the density-painted glyph flows in. */
420
+ --dock-control-glyph-size: var(--dock-icon-glyph);
421
+ }
422
+
225
423
  /* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
226
424
  box is narrow the audacious-dock label glyphs compress so the chrome
227
425
  doesn't overflow its host (≤14px below 30rem, 15px 30–45rem). Keyed off
@@ -3,7 +3,9 @@
3
3
  *
4
4
  * Carved from the dock.css god-module (slice 25). This partial owns the dock's
5
5
  * layer model: the `.dock-layers` grid container + the FLIP-driven box-size morph
6
- * (the `--dock-morph-size` calc off the ONE `--dock-morph-t` scalar), the unified
6
+ * (BB.W-DOCK-MORPH-FAMILY — a `transform: scale()` over a reserved settled `to`
7
+ * footprint, the live `--dock-morph-scale` derived off the ONE `--dock-morph-t`
8
+ * scalar; NO per-frame layout-axis lerp), the unified
7
9
  * `.is-active` / `.is-leaving` 3-state crossfade + hit-test contract (the
8
10
  * a11y-006 anchor), the per-child reveal stagger (the `--dock-stagger-*` ramp),
9
11
  * and the `layout="grid"` 2D tile-grid arrangement. The `.dock-layer-group` /
@@ -37,46 +39,114 @@
37
39
  }
38
40
 
39
41
 
40
- /* AX.W01 — the box size morph reads the SAME `--dock-morph-t` scalar as the
41
- root chrome (ONE clock, co-temporal by construction). `useLayerTransition`
42
- measures the from→to size ONCE per swap (the allowed one-time FLIP
43
- measurement) and writes `--dock-morph-from`/`--dock-morph-to` px on the
44
- morphing element; the live scalar interpolates between them. The size lands
45
- on the morph AXIS — `inline-size` for a horizontal `.dock-layers` (always
46
- inline) + a horizontal inner stack, `block-size` for a vertical inner stack.
47
- Gated on the root `[data-morphing]`, so at REST the intrinsic / `width:100%`
48
- rules below hold (the morph vars are cleared on settle). Replaces the prior
49
- `transition: width var(--dock-motion-resize)` inline-FLIP — there is NO CSS
50
- transition on the size axis; the spring writes the scalar, CSS reads it. The
51
- active pane is REVEALED through the clip aperture as the box grows (the W2
52
- clip-reveal contract). */
42
+ /* BB.W-DOCK-MORPH-FAMILY (a)/(b) — the box morph is now a COMPOSITOR TRANSFORM
43
+ over a RESERVED SETTLED footprint, NOT a per-frame `inline-size` lerp (the C3
44
+ "too slow and laggy" relayout-every-frame defect). `useLayerTransition` /
45
+ the orchestrator still measure the from→to size ONCE per swap (the allowed
46
+ one-time FLIP measurement) and write `--dock-morph-from`/`--dock-morph-to` px
47
+ on the morphing element — but the layout axis is set to the SETTLED `to`
48
+ value (ONE layout solve, the box reserves its end footprint from frame 0), and
49
+ the live `--dock-morph-t` scalar drives a `transform: scale()` between the
50
+ from/to RATIO and 1. The content lays out COMPLETE at `to` behind the
51
+ `overflow: clip` aperture (shell.css), and the scaled-down box reads as the
52
+ smaller in-flight footprint (the clip uncovers the scaled box, never a
53
+ half-painted growing layout — the reveal-seat (b) fix). `--dock-morph-ratio`
54
+ is `from/to` (guarded: `to:0` → ratio 0); `--dock-morph-scale` runs
55
+ `ratio → 1` as `t: 0 → 1`. `transform-origin` anchors the pinned edge
56
+ (inline-start for the horizontal aperture) so the box grows from the correct
57
+ side. NO `inline-size`/`block-size` reads the live scalar — the CDP Layout
58
+ track stays FLAT through the morph (the F1 compositor-bound floor). */
53
59
  .glass-dock[data-morphing] .dock-layers,
54
60
  .glass-dock[data-morphing] .dock-layer-stack {
55
- --dock-morph-size: calc(
56
- var(--dock-morph-from, 0px) +
57
- (var(--dock-morph-to, 0px) - var(--dock-morph-from, 0px)) *
61
+ --dock-morph-ratio: calc(
62
+ var(--dock-morph-from, 0px) / max(var(--dock-morph-to, 1px), 1px)
63
+ );
64
+ /* BC.W-LIQUID-MORPH — the SCALE FLOOR (the white morph can never paint). A
65
+ degenerate `from:0`/`to:0` measurement (the BA-VJS-1 nested-group race)
66
+ drives `--dock-morph-ratio` to 0 → `scaleX(0)` at t=0 → the zero-width void
67
+ `overflow: clip` blanks (the white/invisible morph, glass-dock-codebase.md
68
+ §2.2 fix (2)). Flooring the scale at ~6% bottoms a degenerate ratio at a
69
+ thin-but-VISIBLE glass sliver (clipped, but never white), recovered by the
70
+ next correct measurement one frame later. A SAFETY NET: a real measurement is
71
+ always well above 6%, so the `max()` is inert on the healthy path (the
72
+ gestalt of a healthy morph is byte-unchanged). */
73
+ --dock-morph-scale: max(
74
+ calc(
75
+ var(--dock-morph-ratio) +
76
+ (1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
77
+ ),
78
+ 0.06
79
+ );
80
+ /* The box RESERVES its settled `to` footprint — a single layout solve, NOT
81
+ the live scalar calc. The transform composites over it.
82
+ BC.W-LIQUID-MORPH — the RESERVE FLOOR: `max(var(--dock-morph-to),
83
+ var(--dock-morph-min))` so a `to:0` measurement reserves the collapsed-pill
84
+ minimum (~44px), never a zero-width box (the white morph root). Inert above
85
+ the floor on every healthy measurement. */
86
+ inline-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
87
+ transform: scaleX(var(--dock-morph-scale));
88
+ transform-origin: left center;
89
+ will-change: transform;
90
+ }
91
+
92
+ /* BC.W-DOCK-ROOT-MORPH — the ROOT box rides the scalar (THE snap fix). The inner
93
+ `.dock-layers` above reserves its settled `to` + morphs via `scaleX()` (paint-
94
+ only), so the root `.glass-dock` (inline-flex) shrink-wraps to that reserved full
95
+ `to` and SNAPS on frame 0 while the inner scales smoothly — yet the gate + the
96
+ page reflow both read the ROOT box. The orchestrator (dockMorphContext.ts)
97
+ measures + writes the root's own `--dock-root-morph-{from,to}` px span; this
98
+ drives the morph-axis size as a `calc()` of the SAME `--dock-morph-t` scalar the
99
+ spring glides — NOT a `transition: width` (proof:no-layout-animation stays GREEN;
100
+ a `calc()` over the scalar is not a transition). The span is armed inline ONLY by
101
+ the outer collapse↔expand swap; a nested-only pane-swap leaves it unset → the
102
+ fallback-less `var()` invalidates the rule → the box returns to its at-rest
103
+ shrink-wrap (the inert path). Horizontal morphs `inline-size`, vertical morphs
104
+ `block-size` (matching the orchestrator's `morphAxisProp` axis pick). */
105
+ .glass-dock[data-morphing]:not(.vertical) {
106
+ inline-size: calc(
107
+ var(--dock-root-morph-from) +
108
+ (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
109
+ var(--dock-morph-t, 0)
110
+ );
111
+ }
112
+ .glass-dock[data-morphing].vertical {
113
+ block-size: calc(
114
+ var(--dock-root-morph-from) +
115
+ (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
58
116
  var(--dock-morph-t, 0)
59
117
  );
60
- inline-size: var(--dock-morph-size);
61
118
  }
62
119
 
63
120
  /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
64
121
  BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
65
122
  measures/writes the same `--dock-morph-from/to` span on the block axis
66
123
  (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
67
- vertical→`block-size`), so the CSS lands the scalar on `block-size` and lets the
68
- inline axis stay intrinsic. This is the wiring that gives a collapsible vertical
69
- dock the height-morph the mandate names. */
124
+ vertical→`block-size`).
125
+ BB.W-DOCK-MORPH-FAMILY (a)/(b) — the vertical box reserves its settled `to`
126
+ BLOCK footprint + composites a `scaleY()` over it on the SAME `--dock-morph-t`
127
+ scalar (the inverse axis of the horizontal `scaleX`), `transform-origin` at the
128
+ block-start pinned edge. NO live-scalar `block-size` calc → no per-frame
129
+ relayout on the vertical axis either. */
70
130
  .glass-dock.vertical[data-morphing] .dock-layers {
71
131
  inline-size: auto;
72
- block-size: var(--dock-morph-size);
132
+ /* BC.W-LIQUID-MORPH — the vertical RESERVE FLOOR (the inverse axis twin of the
133
+ horizontal floor above): a `to:0` block measurement reserves the collapsed-pill
134
+ minimum, never a zero-height void. Inert above the floor on every healthy read. */
135
+ block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
136
+ transform: scaleY(var(--dock-morph-scale));
137
+ transform-origin: center top;
138
+ will-change: transform;
73
139
  }
74
140
 
75
- /* A vertical inner group morphs the BLOCK axis — the same span lands on
76
- block-size, and the inline axis stays intrinsic. */
141
+ /* A vertical inner group morphs the BLOCK axis — the same settled-footprint
142
+ reserve + `scaleY()` composite over it. */
77
143
  .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
78
144
  inline-size: auto;
79
- block-size: var(--dock-morph-size);
145
+ /* BC.W-LIQUID-MORPH — the nested vertical group's reserve is floored too. */
146
+ block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
147
+ transform: scaleY(var(--dock-morph-scale));
148
+ transform-origin: center top;
149
+ will-change: transform;
80
150
  }
81
151
 
82
152
  /* The inner DockLayerGroup stack has no collapsed/expanded class, so its
@@ -311,10 +381,12 @@
311
381
  from these state rules; they keep only their non-overflow concerns.
312
382
 
313
383
  AX.W01 — `:not([data-morphing])` gate: at REST expanded the layers fill the
314
- box (`width:100%`), but DURING the morph the FLIP from→to px (the
315
- `--dock-morph-size` calc above) is the SOLE size authority — a `width:100%`
316
- here would win on specificity and snap the box past the spring. The gate
317
- hands the size to the scalar for the morph and back to 100% on settle. */
384
+ box (`width:100%`), but DURING the morph the reserved `to`-footprint +
385
+ `transform: scale()` (BB.W-DOCK-MORPH-FAMILY, above) is the SOLE size
386
+ authority — a `width:100%` here would win on specificity and fight the
387
+ reserved footprint. The gate hands the box to the transform for the morph and
388
+ back to 100% on settle (the transform/reserve vanish when `[data-morphing]`
389
+ clears). */
318
390
  .glass-dock.expanded:not(.fit-content):not([data-morphing]) .dock-layers {
319
391
  width: 100%;
320
392
  }
@@ -76,36 +76,72 @@
76
76
  color-mix(in oklab, var(--card), var(--foreground) 6%) 100%
77
77
  );
78
78
  border-radius: 999px;
79
- /* The volume-preserving teardrop squish — stretch along the travel axis,
80
- compress reciprocally. Reads `--stretch` (the liquid-flex derivative). The
81
- vertical plate squishes on Y, the horizontal on X (set per-plate below). */
82
- will-change: width, height, transform;
79
+ /* BC.W-GLASS-GLOW-FIX (Atlas A-8 root, CANDIDATE 4) — BOUND the 120%×120% radial
80
+ to the plate box. The gradient SIZE (120%) reaches past the plate's content box
81
+ so the domed droplet would over-paint were the silhouette ever un-clipped;
82
+ `overflow: clip` keeps the radial fill inside the teardrop silhouette (the
83
+ `border-radius: 999px` capsule), so the oversized radial can NEVER paint a giant
84
+ cream blob past the plate. The domed-droplet read is PRESERVED — the radial still
85
+ fills the plate; only the past-bounds escape is killed. Defensive, structural,
86
+ zero visual change (the border-radius already clips the fill — this makes the
87
+ bound explicit so the leak-class gate holds). */
88
+ overflow: clip;
89
+ /* BC.W-LIQUID-MORPH — the teardrop silhouette is the COMPOSITOR `clip-path`
90
+ inset (NOT a per-frame `width`/`height` — the layout-jank root, glass-dock-
91
+ codebase.md §2.2 fix (3)). Each plate RESERVES its MAX footprint (a single
92
+ layout solve, the settled box) and the silhouette necks via a `clip-path:
93
+ inset()` interpolated on `--dock-morph-t`. The volume-preserving squish reads
94
+ `--stretch` (the liquid-flex derivative) on `scale`. NO `width`/`height`
95
+ animation — only `clip-path`/`scale`/`opacity` (compositor/paint), so the
96
+ CDP Layout track stays FLAT across the morph (proof:no-layout-animation +
97
+ proof:liquid-morph M4). will-change promotes the compositor channels ONLY. */
98
+ will-change: clip-path, transform, opacity;
83
99
  }
84
100
 
85
- /* The VERTICAL plate — a tall capsule (the t=0 silhouette). It collapses its height
86
- toward the center as t: 0 → 0.5, where it has merged into the teardrop. Width is
87
- the dock's inline footprint; height interpolates full → a thin neck. */
101
+ /* The VERTICAL plate — a tall capsule (the t=0 silhouette). It RESERVES its full
102
+ tall footprint (a one-time layout solve, NOT a per-frame height lerp) and necks
103
+ its silhouette toward the center via a `clip-path: inset()` whose block insets
104
+ GROW as t: 0 → 0.5 (the tall capsule collapses to a thin neck at the midpoint
105
+ where the goo merges, gone by t=1). `--dock-bridge-v-neck` is the inset travel:
106
+ 0 at t=0 (full height shows) → ~half the reserved height by t=0.5 (necked to a
107
+ circle ~the width). The box footprint is static; the clip carves the silhouette
108
+ on the compositor. */
88
109
  .dock-morph-bridge-plate--vertical {
89
110
  width: var(--dock-bridge-v-w, 3.25rem);
90
- /* full height at t=0, necking to ~the width (a circle) by t=0.5, gone by t=1 */
91
- height: calc(
92
- var(--dock-bridge-v-h, 16rem) *
93
- (1 - clamp(0, var(--dock-morph-t, 0), 1)) +
94
- var(--dock-bridge-v-w, 3.25rem) * clamp(0, var(--dock-morph-t, 0), 1)
111
+ height: var(--dock-bridge-v-h, 16rem);
112
+ /* the block-axis inset travel: 0 → (half the reserved height − half the width)
113
+ so the necked silhouette is ~a circle (the width) at t=0.5. */
114
+ --dock-bridge-v-neck: calc(
115
+ (var(--dock-bridge-v-h, 16rem) - var(--dock-bridge-v-w, 3.25rem)) / 2 *
116
+ clamp(0, calc(var(--dock-morph-t, 0) * 2), 1)
117
+ );
118
+ clip-path: inset(
119
+ var(--dock-bridge-v-neck) 0 var(--dock-bridge-v-neck) 0 round 999px
95
120
  );
96
121
  opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
97
122
  /* squish Y on travel (the tall plate stretches along its collapse axis) */
98
123
  scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
99
124
  }
100
125
 
101
- /* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It grows its width
102
- from the center as t: 0.5 → 1. Height is the dock's block footprint; width
103
- interpolates a thin neck → full. */
126
+ /* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It RESERVES its full
127
+ wide footprint (a one-time layout solve) and grows its silhouette from the center
128
+ via a `clip-path: inset()` whose inline insets SHRINK as t: 0.5 → 1 (a thin neck
129
+ at the midpoint → the full wide bar at t=1). `--dock-bridge-h-neck` is the inset
130
+ travel: ~half the reserved width − half the height at t=0.5 (necked to a circle)
131
+ → 0 at t=1 (full width shows). NO per-frame width — the clip carves the silhouette
132
+ on the compositor. */
104
133
  .dock-morph-bridge-plate--horizontal {
134
+ width: var(--dock-bridge-h-w, 18rem);
105
135
  height: var(--dock-bridge-h-h, 3.25rem);
106
- width: calc(
107
- var(--dock-bridge-h-h, 3.25rem) * (1 - clamp(0, var(--dock-morph-t, 0), 1)) +
108
- var(--dock-bridge-h-w, 18rem) * clamp(0, var(--dock-morph-t, 0), 1)
136
+ /* the inline-axis inset travel: (half the reserved width − half the height) at
137
+ t=0.5 → 0 at t=1, so the necked silhouette is ~a circle (the height) at the
138
+ midpoint and the full bar at t=1. */
139
+ --dock-bridge-h-neck: calc(
140
+ (var(--dock-bridge-h-w, 18rem) - var(--dock-bridge-h-h, 3.25rem)) / 2 *
141
+ (1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1))
142
+ );
143
+ clip-path: inset(
144
+ 0 var(--dock-bridge-h-neck) 0 var(--dock-bridge-h-neck) round 999px
109
145
  );
110
146
  opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
111
147
  /* squish X on travel (the wide plate stretches along its growth axis) */