@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
@@ -34,24 +34,52 @@
34
34
  during the morph, so the read resolves the correct in-flight blend (collapse
35
35
  1→0 via `1 - t`; expand 0→1 via `t`); on settle `[data-morphing]` clears and
36
36
  expand-t snaps to the exact class endpoint. */
37
- .glass-dock:not(.vertical).expanded,
38
- .glass-dock:not(.vertical).always-expanded {
37
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the `--dock-expand-t` directional derivation is
38
+ ORIENTATION-AGNOSTIC. The derivation reads the per-swap morph scalar + the
39
+ synchronously-set `.expanded`/`.collapsed` class — there is NO axis in this
40
+ blend (a `t`-vs-`1-t` directional read), so the `:not(.vertical)` qualifier is
41
+ DROPPED here. A collapsing VERTICAL dock now derives the same in-flight
42
+ expand-t (the box-size arm `layers.css` already morphs `block-size` on
43
+ `--dock-morph-t`; this gives the chrome the matching directional scalar). The
44
+ earlier "a vertical rail is ALWAYS-EXPANDED" assumption is retired since
45
+ vertical-collapse shipped — `alwaysExpanded` defaults false (GlassDock.vue),
46
+ so a genuinely-collapsing vertical dock gets its chrome on the ONE clock. */
47
+ .glass-dock.expanded,
48
+ .glass-dock.always-expanded {
39
49
  --dock-expand-t: 1;
40
50
  }
41
51
 
42
- .glass-dock:not(.vertical).collapsed {
52
+ .glass-dock.collapsed {
43
53
  --dock-expand-t: 0;
44
54
  }
45
55
 
46
- .glass-dock:not(.vertical).expanded[data-morphing],
47
- .glass-dock:not(.vertical).always-expanded[data-morphing] {
56
+ .glass-dock.expanded[data-morphing],
57
+ .glass-dock.always-expanded[data-morphing] {
48
58
  --dock-expand-t: var(--dock-morph-t);
49
59
  }
50
60
 
51
- .glass-dock:not(.vertical).collapsed[data-morphing] {
61
+ .glass-dock.collapsed[data-morphing] {
52
62
  --dock-expand-t: calc(1 - var(--dock-morph-t));
53
63
  }
54
64
 
65
+ /* BC.W-DOCK-SHRINK-BLUR — the BB.W-LIQUID-REVEAL bloom-from-source decongest is a
66
+ TRANSIENT, not a resting state. HEAD keyed the bare `.glass-dock` self-blur off
67
+ `--dock-expand-t`, which AT REST resolves to the class endpoint → a PERMANENT 3px
68
+ self-blur on the resting collapsed dock, STACKED on the 9px backdrop (the "blurry
69
+ mess when shrunken", glass-dock-codebase §2.4). The FIX gates the self-blur (a
70
+ SURFACE `filter` arm on the dock's own pixels — NOT `backdrop-filter`, so the glass
71
+ plate blur is never clobbered; compositor-safe) to `[data-morphing]`: at REST the
72
+ dock is CRISP; ONLY mid-morph does the 3px bloom settle to 0 as the pill
73
+ materializes (the iOS-27 bloom, gesture-only). The backdrop blur (the glass
74
+ material) is UNTOUCHED. PRM zeroes it (the carve below). Clean break, no alias. */
75
+ .glass-dock {
76
+ --dock-reveal-blur: 0px; /* resting: CRISP — no own-pixel self-blur */
77
+ }
78
+ .glass-dock[data-morphing] {
79
+ --dock-reveal-blur: 3px; /* the transient decongest bloom — mid-morph only */
80
+ filter: blur(calc(var(--dock-reveal-blur) * (1 - var(--dock-expand-t, 1))));
81
+ }
82
+
55
83
  /* The morphing root chrome — background / border-color interpolate between the
56
84
  collapsed and expanded endpoints on the ONE `--dock-expand-t` scalar. Scoped
57
85
  to the horizontal dock (`:not(.vertical)`) — the inline-axis aperture morph;
@@ -98,6 +126,43 @@
98
126
  );
99
127
  }
100
128
 
129
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL chrome-interp un-gate (BB-1). The
130
+ bg/border interp is AXIS-INVARIANT (a color mix reads the scalar with no
131
+ axis), so the vertical dock interpolates its plate between the SAME
132
+ collapsed↔expanded endpoints on the SAME `--dock-expand-t` scalar the
133
+ horizontal block reads — the ONE `DOCK_SPRING` clock, no second clock, no
134
+ re-added CSS transition. This PARALLEL `.vertical` block (specificity 0,2,0,
135
+ source-order AFTER the shell.css static `.glass-dock.vertical` plate so it
136
+ wins at equal specificity) is the inverse-axis twin of the horizontal block
137
+ above — the box-size morph already rides `block-size` on `layers.css`'s
138
+ `--dock-morph-t`; this gives the plate chrome the matching directional blend
139
+ so the vertical collapse↔expand no longer SNAPS its bg/border discretely. At
140
+ the rest endpoints `--dock-expand-t` resolves to the class value (0 collapsed
141
+ / 1 expanded), so the resting look is exact — byte-equivalent to the shell.css
142
+ static plate it supersedes during the morph. */
143
+ .glass-dock.vertical {
144
+ background: color-mix(
145
+ in srgb,
146
+ color-mix(
147
+ in oklab,
148
+ var(--glass-bg-dock, var(--glass-bg-wash)),
149
+ var(--glass-tint-source) var(--glass-tint-strength)
150
+ )
151
+ calc(var(--dock-expand-t, 1) * 100%),
152
+ color-mix(
153
+ in oklab,
154
+ var(--glass-bg-wash),
155
+ var(--glass-tint-source) var(--glass-tint-strength)
156
+ )
157
+ );
158
+ border-color: color-mix(
159
+ in srgb,
160
+ var(--glass-border-dock, var(--glass-border-wash))
161
+ calc(var(--dock-expand-t, 1) * 100%),
162
+ var(--glass-border-floating)
163
+ );
164
+ }
165
+
101
166
  /* The padding morph is split out + scoped `:not(.dock-overflow-wrap)` so the
102
167
  wrap variant's own padding rules (W04 territory — `.dock-overflow-wrap` +
103
168
  its `@media` snap-back) are NOT clobbered by this higher-specificity longhand.
@@ -142,6 +207,35 @@
142
207
  );
143
208
  }
144
209
 
210
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL padding interp is the AXIS-INVERSE
211
+ of the horizontal layout-isolation contract above. The vertical collapse↔
212
+ expand is a BLOCK-HEIGHT aperture (the box-size arm morphs `block-size`,
213
+ layers.css), so the CROSS (inline) axis MUST be invariant across the morph —
214
+ else the dock's outer WIDTH changes on collapse and reflows its horizontal
215
+ siblings (the §1 contract, mirrored onto the vertical axis). So `padding-
216
+ inline` is PINNED at the expanded inline value in BOTH states, and ONLY
217
+ `padding-block` morphs to tighten the collapsed pill on the morph axis. The
218
+ collapsed block-pad endpoint is the EXPANDED inline pad (max'd with the
219
+ consumer `--dock-collapsed-padding` handle) so the height-pinned-cross collapsed
220
+ pill is SYMMETRIC. Specificity 0,2,0 source-order after shell.css's static
221
+ `.glass-dock.vertical` padding so this wins at equal specificity; at the rest
222
+ endpoints `--dock-expand-t` is the class value so the look is exact. Scoped to
223
+ the NON-scroll/non-wrap vertical dock. */
224
+ .glass-dock.vertical:not(.dock-overflow-wrap) {
225
+ --dock-pad-collapsed: max(
226
+ var(--dock-padding-inline, 0.5rem),
227
+ var(--dock-collapsed-padding, 0px)
228
+ );
229
+ /* inline padding is INVARIANT — the cross axis, pinned both states so the
230
+ outer inline-size never changes → 0px horizontal sibling reflow. */
231
+ padding-inline: var(--dock-padding-inline, 0.5rem);
232
+ padding-block: calc(
233
+ var(--dock-pad-collapsed) +
234
+ (var(--dock-padding-block, 0.375rem) - var(--dock-pad-collapsed)) *
235
+ var(--dock-expand-t, 1)
236
+ );
237
+ }
238
+
145
239
  /* AX.W01 — the collapsed padding / background / border-color are RETIRED here
146
240
  (the `--dock-expand-t` morph block above is the single authority for those
147
241
  three axes — they interpolate, never snap). `.collapsed` keeps only its
@@ -260,6 +354,7 @@
260
354
 
261
355
  .glass-dock.collapsed:hover:not([data-morphing]) {
262
356
  scale: var(--dock-collapsed-hover-scale);
357
+ will-change: transform; /* BC.W-DOCK-ENGINE move 2 — promote the armed-at-rest scale lift */
263
358
  }
264
359
 
265
360
  /* J.W5.C — held-state substrate response.
@@ -330,7 +425,23 @@
330
425
  ink, which clears ~10:1). */
331
426
  :where(.glass-dock) {
332
427
  --glass-tint-source: var(--glass-tint-ink);
333
- --glass-tint-strength: var(--glass-tint-strength-aa);
428
+ /* BC.W-ADAPTIVE-RECONCILE — the dock JOINS the continuous observer driver (the
429
+ literal G2 surface: "darken DYNAMICALLY like iOS 27"). The dock's own
430
+ `useGlassBackdropLuminance` observer samples the threaded `:background-canvas`
431
+ (aurora/blob) and WRITES `--glass-backdrop-luma`; this clamp READS it and lerps
432
+ the plate from the warm-cream floor toward the ≤24% AA ceiling as the field
433
+ brightens past the knee — deepening over a bright bleed, lifting translucent over
434
+ a dark trough (the SAME clamp the content/overlay tiers get — ONE axis/driver/
435
+ signal; the discrete `@container` bucket RETIRED). Calm (luma ≤ knee) → floor. */
436
+ --glass-tint-strength: clamp(
437
+ var(--glass-tint-strength-floor),
438
+ calc(
439
+ var(--glass-tint-strength-floor) +
440
+ (var(--glass-tint-strength-aa) - var(--glass-tint-strength-floor)) *
441
+ max(0, (var(--glass-backdrop-luma, 0) - var(--glass-backdrop-luma-knee, 0.6)) / (1 - var(--glass-backdrop-luma-knee, 0.6)))
442
+ ),
443
+ var(--glass-tint-strength-aa)
444
+ );
334
445
  --dock-fg-on-aurora: var(--glass-tint-ink);
335
446
  --muted-foreground: var(--foreground);
336
447
  }
@@ -372,3 +483,17 @@
372
483
  }
373
484
  }
374
485
  }
486
+
487
+ /* BB.W-LIQUID-REVEAL — the dock-expand bloom beat's blur-settle is OFF under
488
+ `prefers-reduced-motion: reduce` (the vestibular floor): a reduced-motion dock reads
489
+ crisp at every state, no in-between blur frames.
490
+ BC.W-DOCK-SHRINK-BLUR — the self-blur is now gated to `[data-morphing]`, so the PRM
491
+ carve zeroes it on the ARMED scope too (specificity 0,2,0) — a PRM dock that briefly
492
+ arms `[data-morphing]` carries no 3px bloom; the resting `.glass-dock` is already
493
+ crisp by the re-gate. */
494
+ @media (prefers-reduced-motion: reduce) {
495
+ .glass-dock,
496
+ .glass-dock[data-morphing] {
497
+ --dock-reveal-blur: 0px;
498
+ }
499
+ }
@@ -246,8 +246,34 @@
246
246
  --dock-collapsed-padding / --dock-layer-tab-size paint at the global 1.5×
247
247
  while the density box paints at 1.17× — a desync the R5-2 register would
248
248
  introduce). The formulas are IDENTICAL to their :root definitions; only
249
- the resolution element moves so the lifted --dock-scale flows in. */
250
- --dock-icon-glyph: calc(1.25rem * var(--dock-scale));
249
+ the resolution element moves so the lifted --dock-scale flows in.
250
+ BB.W-PERF-PRODUCER A′-6 — --dock-icon-glyph is now a RATIO of the
251
+ density-painted --dock-layer-height (offsets-sizing.css + the density.css
252
+ [data-density] re-resolve). This coarse block @imports AFTER density.css
253
+ in the SAME @layer at the SAME specificity, so its --dock-icon-glyph
254
+ source-order-WINS on coarse pointers — it MUST carry the density-aware
255
+ formula too (the flat `1.25rem * --dock-scale` here would re-freeze the
256
+ glyph at the flat rem on touch, re-introducing the D5-1 defect the wave
257
+ fixes). --dock-layer-height re-resolves transitively at the lifted
258
+ --dock-scale (re-declared above), so the glyph tracks both the density
259
+ box AND the coarse register. Formula identical to the :root + density
260
+ re-resolve; only the resolution element moves. */
261
+ --dock-icon-glyph: max(
262
+ calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
263
+ var(--dock-icon-glyph-floor)
264
+ );
265
+ /* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — RE-DECLARE the in-dock
266
+ toggle glyph knob on coarse beside `--dock-icon-glyph`. Its `:root`
267
+ default tracks `--dock-icon-glyph`, but a `:root`-only default would
268
+ freeze at the `:root` `--dock-scale` (the identity 1) while the coarse
269
+ `--dock-icon-glyph` above lifts — the AZ.R5-TOKENS substitution-vs-
270
+ inheritance dead-knob (the SAME trap the dock-scale re-declare closed,
271
+ mirrored for the toggle glyph). Re-declaring it HERE, against the
272
+ coarse-re-resolved `--dock-icon-glyph`, keeps the in-dock dark-toggle
273
+ glyph optically uniform with the nav glyphs on coarse AND fine pointer.
274
+ The `--dark-mode-toggle-padding` clamp (dark-mode-toggle.css) subtracts
275
+ THIS knob, so the box pad re-resolves in lockstep too. */
276
+ --dock-control-glyph-size: var(--dock-icon-glyph);
251
277
  --dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
252
278
  --dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
253
279
  /* --dock-collapsed-summary-min-size derives from --dock-layer-height (the
@@ -0,0 +1,68 @@
1
+ /* dock/search.css — the dock-as-native-dynamic-search-bar field surface (BC.W-DOCK-SEARCH).
2
+ *
3
+ * The active dock-search field + its placeholder + the result rows read CLEARLY forward
4
+ * over whatever backdrop the dock floats on (≥4.5:1, the W55 darken seam) — never the
5
+ * pale-ghost-fading-into-content trap (the NN/g defect, WWDC §219 "buttons remain
6
+ * legible"). The field surface composes the W55 `--glass-tint-strength-aa` bright-bucket
7
+ * darken at the ELEMENT level (the `color-mix(in oklab, <rung>, var(--glass-tint-source)
8
+ * var(--glass-tint-strength))` seam glass/ladder.css + morph.css already compose) — NOT
9
+ * the RAW pre-substituted `--glass-bg-dock` token (the substitution-vs-inheritance trap
10
+ * the dock surfaces already hit: a surface reading the pre-baked `--glass-bg-dock` baked
11
+ * at `:root` 0% strength does NOT darken — the pale-fade). At the 0%/floor default the
12
+ * inner oklab mix is a no-op (byte-identical to the un-tinted rung); under the bright
13
+ * bucket it darkens-over-light (and lifts-over-dark per W-DARK-MATERIAL).
14
+ *
15
+ * The result rows ride `.glass-menu-row` (the glass-quiet hover-lift, BA.W-MENU-GLASS —
16
+ * CONSUMED here, the glassify is BC.W-SEARCH-CUSTOM's). The customization-surface axes
17
+ * (size/surface/variant) are BC.W-SEARCH-CUSTOM's — this partial only seats the field +
18
+ * the legibility seam. The morph itself is the dock's OWN `--dock-morph-t` + the
19
+ * byte-untouched `morph-bridge.css` metaball (READ-ONLY — bound, never edited). */
20
+
21
+ @layer components {
22
+ /* The search-field region inside the morph aperture. The consumer slots its
23
+ <SearchBar>/<FuzzySearch> here; this rule owns the legibility seam + the layout
24
+ inside the aperture (a column: the field over its dropdown). It is present ONLY on
25
+ a `[data-search]` dock (additive — a non-search dock never carries it). */
26
+ .glass-dock[data-search] .dock-search-field {
27
+ display: flex;
28
+ flex-direction: column;
29
+ inline-size: 100%;
30
+ min-inline-size: 0;
31
+ gap: var(--dock-search-field-gap, 0.375rem);
32
+ }
33
+
34
+ /* The ACTIVE field surface — the W55 element-level oklab tint (NOT the raw
35
+ `--glass-bg-dock`). The field reads the floating rung darkened toward the warm-ink
36
+ at the bright-bucket strength, so it reads ≥4.5:1 over a busy backdrop. The
37
+ `--glass-tint-source`/`--glass-tint-strength` are the SAME element-level customs
38
+ the dock plate self-engages (morph.css's `:where(.glass-dock)` rule re-points them
39
+ under the bright bucket); this field rides that lockstep, never a field-local
40
+ recipe. The field TEXT is `--foreground` (the full warm ink); the
41
+ placeholder/muted caption is `--on-glass-muted` (5.76:1 vs the plate). */
42
+ .glass-dock[data-search] .dock-search-field .input-bar {
43
+ background: color-mix(
44
+ in oklab,
45
+ var(--glass-bg-floating),
46
+ var(--glass-tint-source) var(--glass-tint-strength)
47
+ );
48
+ color: var(--foreground);
49
+ }
50
+
51
+ /* The placeholder + the autocomplete ghost-text + any muted caption inside the field
52
+ read the on-glass muted rung (NOT `--muted-foreground`, which is calibrated against
53
+ the opaque page and collapses on a translucent darkened plate). */
54
+ .glass-dock[data-search] .dock-search-field .input-bar-field::placeholder,
55
+ .glass-dock[data-search] .dock-search-field .dock-search-ghost,
56
+ .glass-dock[data-search] .dock-search-field .dock-search-result-meta {
57
+ color: var(--on-glass-muted);
58
+ }
59
+
60
+ /* The dropdown result rows ride the shared `.glass-menu-row` glass-quiet hover-lift
61
+ (BA.W-MENU-GLASS — CONSUMED, not re-authored). The dock-search list applies
62
+ `.glass-menu-row` per row; this rule reaches the selected/highlighted row through
63
+ the SAME register the menu families use (no flat `bg-accent`/`bg-muted` fork). The
64
+ active result reads the data-highlighted state the menu recipe already paints. */
65
+ .glass-dock[data-search] .dock-search-field .dock-search-result {
66
+ color: var(--foreground);
67
+ }
68
+ }
@@ -0,0 +1,124 @@
1
+ /* dock/shape.css — BC.W-DOCK-ARBITRARY: the arbitrary-shape morph register.
2
+ *
3
+ * The dock is no longer locked to "a rectangle that grows wider/taller." Its SHAPE
4
+ * is a SCALAR PARAMETER on the ONE `--dock-morph-t` clock (the BC.W-DOCK-ENGINE
5
+ * buttery scalar): the corner profile LERPS between a `--dock-shape-from`/
6
+ * `--dock-shape-to` radius pair, an OPT-IN `clip-path` silhouette LERPS between a
7
+ * `--dock-shape-clip-from`/`--dock-shape-clip-to` pair, and a `useLiquidFlex`
8
+ * volume-preserving squish couples the deformation. So the dock FLOWS between
9
+ * arbitrary silhouettes — a circle, a pill, a wide bar, a tall rail, a teardrop —
10
+ * as one continuous liquid-glass surface (the iOS-27 control-center materialization,
11
+ * apple-ios27.md §3.1 "physically morphs from one shape to another").
12
+ *
13
+ * THE COMPOSITOR FLOOR (apple-ios27.md §3.1 + motion-canon P5): the shape morph
14
+ * animates ONLY `border-radius`/`clip-path`/`--*` — compositor/paint properties,
15
+ * ZERO per-frame layout. The footprint is reached by the reserved-`scale()` morph
16
+ * (layers.css, byte-untouched here), NEVER a per-frame size lerp. proof:dock-arbitrary
17
+ * + proof:no-layout-animation both hold.
18
+ *
19
+ * THE LIBRARY DEFAULT IS THE CIRCLE↔PILL IDENTITY (CLAUDE.md the collapsed-perfect-
20
+ * circle): `--dock-shape-from`/`--dock-shape-to` default to `--radius-dock` (9999px)
21
+ * on both endpoints — a no-op lerp byte-identical to the prior static
22
+ * `border-radius: var(--radius-dock)` — and the clip pair defaults `none`/`none`
23
+ * (the rectangle/pill common case needs no clip). The arbitrary teardrop/blob
24
+ * silhouette is OPT-IN: a consumer sets the shape tokens on the dock scope
25
+ * (presets-in-consumers). Clean break (MEMORY: no backwards compat) — the prior
26
+ * hardcoded circle/pill radius becomes the token DEFAULT, no `--dock-radius-legacy`.
27
+ *
28
+ * @import-ed by dock.css in cascade order, in the SAME `@layer components`. */
29
+
30
+ @layer components {
31
+ /* ── The corner-profile lerp (A1 — the shape is a scalar parameter) ───────────
32
+ The dock surface radius interpolates the `--dock-shape-from`/`--dock-shape-to`
33
+ token pair on the ONE `--dock-expand-t` scalar (the directional expanded-ness
34
+ the BC.W-DOCK-ENGINE chrome interp rides; at rest it resolves to the class
35
+ endpoint, 0 collapsed / 1 expanded, so the resting corner is exact). This
36
+ GENERALIZES the prior two hardcoded class endpoints into a consumer-targetable
37
+ parameter: `from` is the collapsed silhouette's corner (the perfect circle,
38
+ 9999px), `to` is the expanded silhouette's corner (the pill / an arbitrary
39
+ profile). A consumer overrides either token on the dock scope to morph to an
40
+ arbitrary corner.
41
+
42
+ This is the SINGLE radius authority (shell.css's prior static `border-radius:
43
+ var(--radius-dock)` is GENERALIZED here — no dead static, no duplicate, clean
44
+ break). Both tokens default to `--radius-dock` (9999px) so the lerp is a NO-OP at
45
+ the library default — byte-identical to the prior static, the circle↔pill identity
46
+ preserved. The token-driven `border-radius` interp is a compositor/paint property
47
+ on the registered `--dock-expand-t` `<number>`, NOT a transition
48
+ (proof:no-layout-animation stays GREEN). shape.css is imported AFTER shell.css so
49
+ this rule is the cascade winner for the dock corner. */
50
+ .glass-dock {
51
+ border-radius: calc(
52
+ var(--dock-shape-from, var(--radius-dock)) +
53
+ (var(--dock-shape-to, var(--radius-dock)) -
54
+ var(--dock-shape-from, var(--radius-dock))) *
55
+ var(--dock-expand-t, 1)
56
+ );
57
+ }
58
+
59
+ /* ── The arbitrary silhouette — the OPT-IN `clip-path` lerp (A1) ──────────────
60
+ DEFAULT-OFF: at the library default `--dock-shape-clip-from`/`--dock-shape-clip-to`
61
+ are `none`, so this rule resolves `clip-path: none` (the rectangle/pill common
62
+ case needs no clip; the box-morph + corner lerp above is the whole shape). A
63
+ consumer opts into an arbitrary teardrop/blob silhouette by setting the clip
64
+ tokens to two compatible `inset()`/`path()`/`shape()` values; the silhouette then
65
+ LERPS between them on `--dock-morph-t` via the `from` * (1−t) + `to` * t weighting
66
+ below. `clip-path` is a compositor-friendly property — the silhouette morphs with
67
+ ZERO reflow (apple-ios27.md §3.1).
68
+
69
+ The lerp is expressed as a `clip-path` whose two endpoints carry per-endpoint
70
+ opacity-like weights via the scalar: the active silhouette is the `to`-clip once
71
+ the morph crosses, the `from`-clip before. The web platform cannot continuously
72
+ interpolate two arbitrary mismatched-topology `clip-path` functions, so the
73
+ opt-in consumer supplies TOPOLOGY-COMPATIBLE endpoints (two `inset()`s, or two
74
+ `path()`s with equal command counts) — the AX.W42 fold-7 topology limit is
75
+ RESPECTED (a mismatched-topology V↔H morph occludes its reflow in the goo-merge,
76
+ BC.W-LIQUID-MORPH, not a continuous clip morph THROUGH the change). The default
77
+ `none`/`none` opts the whole register off so the limit never bites the common
78
+ case. The custom property carries the consumer's interpolable pair; the engine
79
+ resolves it on the scalar only when set. */
80
+ .glass-dock {
81
+ --dock-shape-clip: var(--dock-shape-clip-to, none);
82
+ clip-path: var(--dock-shape-clip);
83
+ }
84
+
85
+ /* While morphing, the opt-in silhouette LERPS: before the midpoint the `from`-clip
86
+ reads, after it the `to`-clip, so the silhouette flows from one to the other as
87
+ the box scales under it (the corner + footprint + silhouette all on the ONE
88
+ scalar). The `none`/`none` default makes this a no-op (`clip-path: none` both
89
+ sides), so the rectangle/pill morph never pays the clip cost; the arbitrary
90
+ register engages ONLY when a consumer sets the clip tokens. */
91
+ .glass-dock[data-morphing] {
92
+ --dock-shape-clip: var(--dock-shape-clip-from, none);
93
+ }
94
+ .glass-dock[data-morphing]:where(.expanded, .always-expanded) {
95
+ /* expanding (0→1): once past the midpoint the `to`-silhouette is the target */
96
+ --dock-shape-clip: var(--dock-shape-clip-to, none);
97
+ }
98
+
99
+ /* ── The squish — the `useLiquidFlex` `--stretch` deformation (A4) ────────────
100
+ The shape morph couples the volume-preserving squish the tab-indicator +
101
+ useDockOrientationMorph already speak: `scale: var(--stretch) calc(1/var(--stretch))`
102
+ along the morph axis, capped LOW at `--dock-morph-max-stretch` (~1.08) by
103
+ useLiquidFlex itself (the ONE squish source — no forked deformation math). The
104
+ plate DEFORMS like liquid as it changes shape — a fast morph swells, a slow one
105
+ barely. The driver (useDockOrientationMorph) writes `--stretch` on the dock scope;
106
+ at rest `--stretch` is unset → 1/1 (no squish). The reciprocal pairing preserves
107
+ volume (stretch along travel, compress across). This is compositor-only (a
108
+ `scale` transform), composed WITH the reserved-footprint `scaleX/scaleY` morph
109
+ (layers.css) — the box scale rides `--dock-morph-scale`, the squish rides
110
+ `--stretch`, both transforms multiply on the compositor.
111
+
112
+ Scoped to `[data-morphing]` so the squish is a morph-transient (at rest the plate
113
+ is un-squished); the cross-axis is the morph axis's reciprocal. Horizontal docks
114
+ stretch X / compress Y; vertical stretch Y / compress X (the inverse-axis twin,
115
+ mirroring the bridge plates' per-orientation squish in morph-bridge.css). The
116
+ squish multiplies onto the dock's OWN transform box (the shell), distinct from the
117
+ inner `.dock-layers` reserved-scale box, so the two do not fight. */
118
+ .glass-dock[data-morphing]:not(.vertical) {
119
+ scale: var(--stretch, 1) calc(1 / var(--stretch, 1));
120
+ }
121
+ .glass-dock[data-morphing].vertical {
122
+ scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
123
+ }
124
+ }
@@ -87,13 +87,32 @@
87
87
  centered in its cell (≥1px slack/side at hover), the cell sits flush at the
88
88
  dock content edge, and the `--dock-padding-block` (≈6px) padding holds the
89
89
  plate ≥7px clear of the `contain: paint` border-box edge on the block axis.
90
- So `contain: paint` is the NON-proximate second clip box (the lane's
90
+ So the `paint` clip axis is the NON-proximate second clip box (the lane's
91
91
  `probe-bottomdock-nocontain.png` forced-root probe proved the inner
92
- scroll-port box was proximate, not this) and it is UNEDITED here — the
93
- inset + freed cross axis suffice, no containment lift on the control-plate
94
- band. The π readback (W-DOCK-GEOMETRY-DELTA.md) records the live
95
- plate-inside-padding margin number that binds this verdict. */
96
- contain: paint;
92
+ scroll-port box was proximate, not this) and the `paint` axis is RETAINED
93
+ here — the inset + freed cross axis suffice, no containment LIFT on the
94
+ control-plate band. (BB.W-PERF-PRODUCER A′-4 widens the value to
95
+ `contain: layout style paint` — the restyle-scope axes ALONGSIDE the paint
96
+ clip box, see below — but never lifts `paint`.) The π readback
97
+ (W-DOCK-GEOMETRY-DELTA.md) records the live plate-inside-padding margin
98
+ number that binds this verdict. */
99
+ /* BB.W-PERF-PRODUCER A′-4 — the `--dock-morph-t` restyle-scope narrowing.
100
+ The per-frame morph scalar write recomputes the inheriting `calc()` group
101
+ across the dock subtree (dock.css's 10-selector `:where()` consumers); add
102
+ the `layout` + `style` containment axes so a scalar write recomputes
103
+ layout/style WITHIN the dock subtree, not up the document (the value.js A′-4
104
+ ~13fps restyle-cost trace). RECONCILED with the existing axes: `paint`
105
+ (above, the BA.W-DOCK-GEOMETRY clip box) composes — `contain: layout style
106
+ paint` is the union, NEVER `size` (which `container-type: inline-size` carries
107
+ as `inline-size` ONLY on the OPT-IN `containerName` host below; the default
108
+ free-floating dock must stay shrink-to-fit, so `size`/`inline-size` is
109
+ DELIBERATELY excluded here — adding it would re-introduce the 3.3.0 sliver
110
+ regression the §99 comment documents). The morph-axis `overflow: clip`
111
+ (the reveal aperture) + the `.glass-dock-frame` rail-escape are UNAFFECTED:
112
+ `layout`/`style` containment scopes RECALC, it does not establish a paint
113
+ clip beyond the already-present `paint` axis. The `DOCK_SPRING` clock is
114
+ byte-fenced (the value.js letter) — this is restyle COST, not a re-tune. */
115
+ contain: layout style paint;
97
116
  display: inline-flex;
98
117
  align-items: center;
99
118
  /* AW.W1 — the dock does NOT establish a default inline-size container.
@@ -110,7 +129,7 @@
110
129
  host-constrained width it already has there. The default free-floating
111
130
  dock shrink-wraps to its content (AV.W16 TW3 made this a default and
112
131
  silently broke dock sizing for the common case). */
113
- border-radius: var(--radius-dock);
132
+ /* BC.W-DOCK-ARBITRARY — the base corner is the shape register's token lerp (dock/shape.css, the single radius authority generalizing the prior static). */
114
133
  white-space: nowrap;
115
134
  max-inline-size: var(--dock-max-inline-size);
116
135
  padding: var(--dock-padding-block, 0.375rem) var(--dock-padding-inline, 0.5rem);
@@ -129,10 +148,13 @@
129
148
  );
130
149
  backdrop-filter: var(--dock-surface-blur);
131
150
  border: 1.5px solid var(--glass-border-dock, var(--glass-border-resting));
132
- /* AV.W15 M3 — the full-perimeter `--glass-edge-light` rim rides as the
133
- leading inset layer of the dock shadow stack (the navigation-band
134
- silhouette catch-light, distinct from the top-only highlight). */
135
- box-shadow: var(--glass-edge-light), var(--shadow-dock-override, var(--shadow-dock));
151
+ /* BC.W-BLACK-BAR D2 — the dock rim is the DIRECTIONAL pair (bright catch-light
152
+ on the TOP edge, faint warm under-shadow on the BOTTOM — glass-fx.css), the
153
+ leading inset layers of the dock shadow stack. RETIRES the omnidirectional
154
+ `--glass-edge-light` ring that fought the (now ≤4% α) `--glass-border-dock`
155
+ perimeter; the navigation band reads its rim from the SAME corrected token
156
+ source as cards/dialogs (no dock-local dark rim re-paste). */
157
+ box-shadow: var(--glass-rim-top), var(--glass-rim-bottom), var(--shadow-dock-override, var(--shadow-dock));
136
158
  }
137
159
 
138
160
  /* AW.W2 — the box IS the reveal aperture (clip-reveal one-clock morph).
@@ -273,22 +295,40 @@
273
295
  shell above; the cross axis stays visible there. */
274
296
  padding: var(--dock-padding-block, 0.375rem);
275
297
  border-radius: var(--radius-dock);
276
- /* AX.W01 — a vertical rail is ALWAYS-EXPANDED (no collapse↔expand morph),
277
- so its root padding/background/border-color never morph; the prior
278
- `padding/background/border-color var(--dock-motion-*)` transition arms
279
- are DELETED (a residual root CSS-transition on the morph-chrome props is
280
- the second-clock smell the single-scalar rebuild retires). The block-axis
281
- (height) morph is owned by the inner `.dock-layer-stack` / DockLayerGroup
282
- via the `--dock-morph-t` scalar (the size `calc()` above), never a CSS
283
- transition here. KEPT: the DECORATIVE hover-scale + press-squish (the
284
- individual `scale`/`transform`) and the box-shadow fade — these are
285
- interaction polish on the static rail, NOT the morph. */
298
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the stale "a vertical rail is ALWAYS-EXPANDED
299
+ (no collapse↔expand morph)" assumption is RETIRED (it was false since
300
+ vertical-collapse shipped: `alwaysExpanded` defaults FALSE, so a vertical
301
+ dock genuinely collapses its `block-size`). The vertical plate's
302
+ bg/border/padding/radius now MORPH on the SAME `--dock-expand-t` scalar
303
+ the horizontal chrome rides (the morph.css `.glass-dock.vertical` interp +
304
+ padding axis-inverse + the radius arm below) — the chrome follows the
305
+ box-size morph, no discrete snap. NO root CSS-transition on the morph-
306
+ chrome props is re-added (a `transition: padding/background/border-color`
307
+ arm is the second-clock smell the single-scalar rebuild forbids — the
308
+ `--dock-expand-t` interp is the single authority). KEPT: the DECORATIVE
309
+ hover-scale + press-squish (the individual `scale`/`transform`) and the
310
+ box-shadow fade — interaction polish on the rail, NOT the morph chrome. */
286
311
  transition:
287
312
  box-shadow var(--dock-motion-standard),
288
313
  transform var(--dock-motion-resize),
289
314
  scale var(--dock-motion-resize);
290
315
  }
291
316
 
317
+ /* BC.W-DOCK-ENGINE move 2 — the rail polish transition is COMPOSITOR-PROMOTED
318
+ only while its hover/press/held state is ARMED (the transform/scale legs ride
319
+ the compositor channel; `will-change: transform` hints the layer for the
320
+ gesture). NEVER a resting `will-change` (a permanent promotion pins a wasted
321
+ compositor layer at rest — the motion-canon P5 no-resting-promotion floor):
322
+ the hint lives on the `:hover`/`:active`/`[data-held]` armed selectors and is
323
+ cleared the instant the state releases. PRM keeps no pinned layer either — the
324
+ universal a11y carve strips the spatial transform under reduce, and a
325
+ non-animating rail needs no promotion. */
326
+ .glass-dock.vertical:hover,
327
+ .glass-dock.vertical:active,
328
+ .glass-dock.vertical[data-held] {
329
+ will-change: transform;
330
+ }
331
+
292
332
  /* AZ.W-DOCK-TAXONOMY — the vertical dock's surface plate (the prior
293
333
  `.variant-rail` block; "rail-ness" is now `orientation="vertical"` + a
294
334
  shape/density choice, not a variant). */
@@ -318,6 +358,22 @@
318
358
  border-radius: var(--radius-xl);
319
359
  }
320
360
 
361
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL big-dock CARD radius MORPHS on the
362
+ SAME `--dock-expand-t` scalar the horizontal `.shape-card` rides (the radius
363
+ arm of the vertical chrome un-gate; it lives in shell.css beside the horizontal
364
+ arm, not morph.css). `--radius-pill` at expand-t 0 (collapsed), the finite
365
+ `--dock-card-radius` at expand-t 1 (expanded) — the radius follows the box-size
366
+ block morph, no discrete snap. The static `.shape-pill`/`.shape-rounded` rest
367
+ radii above are the rest endpoints for those shapes; this is the card shape's
368
+ interpolated radius (mirroring the horizontal `:not(.vertical).shape-card`). */
369
+ .glass-dock.vertical.shape-card {
370
+ border-radius: calc(
371
+ var(--radius-pill) +
372
+ (var(--dock-card-radius) - var(--radius-pill)) *
373
+ var(--dock-expand-t, 1)
374
+ );
375
+ }
376
+
321
377
  /* AW.W3b — horizontal-root shape rules. The `shape-*` class once bound ONLY under
322
378
  the vertical surface; on a horizontal dock the prop silently no-op'd (the root
323
379
  hardwired `--radius-dock` = `--radius-pill`). These rules close that