@mkbabb/glass-ui 4.0.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-DlVP2evz.js} +72 -53
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-By-VQcLO.js} +25 -14
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-YMXdINHx.js} +14 -14
  4. package/dist/ContextMenuContent-CMWn6huB.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DvwWCUc0.js} +16 -16
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/DialogFooter-DoLy0ewI.js +80 -0
  9. package/dist/DialogScrollContent-BMekN7gq.js +93 -0
  10. package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-P8B30rAD.js} +1 -1
  11. package/dist/HoverCardContent-DAmGYglo.js +88 -0
  12. package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-DYpBOzzF.js} +1 -1
  13. package/dist/{IconChip-BTD-nay5.js → IconChip-CQa7XZYc.js} +7 -5
  14. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-_df8M3xm.js} +1 -1
  15. package/dist/Input-CyU4_hIC.js +57 -0
  16. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  17. package/dist/{Notification-VUwexFUf.js → Notification-BlSPJhtZ.js} +4 -4
  18. package/dist/NumberFieldContent-Z3VxGu_6.js +140 -0
  19. package/dist/PagerDots-CYlqVFd4.js +196 -0
  20. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  21. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  22. package/dist/{Progress-DctG61iZ.js → Progress-C9SsdwIZ.js} +1 -1
  23. package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-DY3W1Jfh.js} +2 -2
  24. package/dist/SelectScrollDownButton-3mFHX_R-.js +260 -0
  25. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-CNRGG7Ew.js} +1 -1
  26. package/dist/Separator-Cf9-JFgi.js +44 -0
  27. package/dist/Switch-uf-UKPA2.js +49 -0
  28. package/dist/{Toaster-Bw4xR8xV.js → Toaster-ozrsR4mP.js} +2 -2
  29. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BpzaVzNm.js} +6 -6
  30. package/dist/TooltipProvider-QQVM_80r.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +16 -32
  33. package/dist/api/types-extra.d.ts +33 -0
  34. package/dist/api.js +2 -2
  35. package/dist/aurora.js +629 -269
  36. package/dist/badge-Bt14yURi.js +72 -0
  37. package/dist/badge.js +1 -1
  38. package/dist/border-progress.js +49 -57
  39. package/dist/button-D1W9PrzI.js +130 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +1 -1
  43. package/dist/carousel.js +235 -106
  44. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  45. package/dist/collapsible.js +1 -1
  46. package/dist/color-B9jZdhJX.js +116 -0
  47. package/dist/color.js +2 -2
  48. package/dist/command.js +1 -1
  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/color.d.ts +13 -0
  53. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  54. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  55. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  56. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +12 -3
  57. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  58. package/dist/components/custom/aurora/constants/presets.d.ts +47 -0
  59. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  60. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  62. package/dist/components/custom/aurora/index.d.ts +1 -1
  63. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  64. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  65. package/dist/components/custom/border-progress/index.d.ts +1 -1
  66. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  67. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  68. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  69. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  70. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  71. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +12 -0
  72. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  73. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  74. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -3
  75. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  76. package/dist/components/custom/concentric/constants.d.ts +69 -24
  77. package/dist/components/custom/concentric/index.d.ts +2 -2
  78. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  79. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  80. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  81. package/dist/components/custom/configurator/index.d.ts +1 -1
  82. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  83. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  84. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  85. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  86. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  87. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  88. package/dist/components/custom/constellation/constants.d.ts +33 -0
  89. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  90. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  91. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  92. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  93. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  94. package/dist/components/custom/constellation/index.d.ts +5 -5
  95. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  96. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  97. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  98. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  99. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  100. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  101. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  102. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  103. package/dist/components/custom/deck/constants.d.ts +14 -0
  104. package/dist/components/custom/deck/index.d.ts +8 -0
  105. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  106. package/dist/components/custom/dock/DockIconButton.vue.d.ts +22 -0
  107. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  108. package/dist/components/custom/dock/DockStack.vue.d.ts +78 -0
  109. package/dist/components/custom/dock/GlassDock.vue.d.ts +21 -3
  110. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  111. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +78 -67
  112. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  113. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  114. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  115. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  116. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  117. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  118. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +49 -0
  119. package/dist/components/custom/dock/constants.d.ts +32 -17
  120. package/dist/components/custom/dock/index.d.ts +8 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +69 -6
  123. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  124. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  125. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  126. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  127. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +50 -9
  128. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  129. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +23 -9
  130. package/dist/components/custom/dot-flow-field/constants.d.ts +92 -20
  131. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  132. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  133. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +31 -18
  134. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  135. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  136. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  137. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +61 -0
  138. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  139. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +34 -0
  140. package/dist/components/custom/dot-matrix/constants.d.ts +72 -0
  141. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  142. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  143. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  144. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  145. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  146. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  147. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +44 -47
  148. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  149. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  150. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +56 -0
  151. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +61 -37
  152. package/dist/components/custom/fourier-field/constants.d.ts +114 -4
  153. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  156. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  158. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  159. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  160. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  161. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  163. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  165. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/types.d.ts +86 -1
  167. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  168. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +79 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +45 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  172. package/dist/components/custom/goo-dot-matrix/constants.d.ts +115 -0
  173. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  174. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +13 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +4 -0
  176. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  177. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  178. package/dist/components/custom/handmark/brush.d.ts +17 -17
  179. package/dist/components/custom/handmark/constants.d.ts +28 -8
  180. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  181. package/dist/components/custom/handmark/index.d.ts +1 -1
  182. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  183. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  184. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  185. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  186. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  187. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  188. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  189. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  190. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +105 -0
  191. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +18 -0
  192. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +21 -0
  193. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  194. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  195. package/dist/components/custom/paper-grid/constants.d.ts +95 -0
  196. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  197. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  198. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  199. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  200. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  201. package/dist/components/custom/search/index.d.ts +2 -0
  202. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  203. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  204. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  205. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  206. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +15 -0
  207. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  208. package/dist/components/custom/split-chars/index.d.ts +1 -0
  209. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  210. package/dist/components/custom/tabs/constants.d.ts +28 -2
  211. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  212. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  213. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  214. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +32 -17
  215. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  216. package/dist/components/ui/_shared/index.d.ts +2 -0
  217. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  218. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  219. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  220. package/dist/components/ui/badge/index.d.ts +1 -0
  221. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  222. package/dist/components/ui/button/index.d.ts +1 -1
  223. package/dist/components/ui/card/Card.vue.d.ts +46 -1
  224. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  225. package/dist/components/ui/card/index.d.ts +1 -1
  226. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  227. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  228. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  229. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  230. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  231. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  232. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  233. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  234. package/dist/components/ui/drawer/constants.d.ts +8 -6
  235. package/dist/components/ui/drawer/index.d.ts +12 -2
  236. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  237. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  238. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  239. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  240. package/dist/components/ui/select/SelectContent.vue.d.ts +12 -0
  241. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  242. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  243. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  244. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  245. package/dist/composables/color/index.d.ts +2 -0
  246. package/dist/composables/color/useAccentTone.d.ts +34 -0
  247. package/dist/composables/dom/index.d.ts +1 -0
  248. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  249. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  250. package/dist/composables/glass/wave/index.d.ts +4 -0
  251. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  252. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  253. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  254. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +105 -2
  255. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  256. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  257. package/dist/composables/glass/webgpu/index.d.ts +2 -1
  258. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +65 -7
  259. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +50 -2
  260. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  261. package/dist/composables/motion/core/index.d.ts +7 -0
  262. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  263. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  264. package/dist/composables/motion/index.d.ts +2 -0
  265. package/dist/composables/motion/scrollReader.d.ts +25 -0
  266. package/dist/composables/motion/springPresets.d.ts +19 -1
  267. package/dist/composables/motion/suite.d.ts +2 -2
  268. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  269. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  270. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  271. package/dist/composables/motion/useDockCtaReceive.d.ts +29 -22
  272. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  273. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  274. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  275. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  276. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  277. package/dist/composables/motion/useMorphField.d.ts +157 -0
  278. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  279. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  280. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  281. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  282. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  283. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  284. package/dist/composables/sidebar/index.d.ts +4 -1
  285. package/dist/composables/sidebar/types.d.ts +68 -3
  286. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  287. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  288. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  289. package/dist/composables/virtual/index.d.ts +4 -0
  290. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  291. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  292. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  293. package/dist/concentric.js +552 -309
  294. package/dist/configurator.js +2 -2
  295. package/dist/confirm-dialog.js +62 -47
  296. package/dist/constellation.js +635 -235
  297. package/dist/context-menu.js +2 -2
  298. package/dist/controls.js +2 -2
  299. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  300. package/dist/dark.js +1 -1
  301. package/dist/data-table.js +1 -1
  302. package/dist/deck.d.ts +1 -0
  303. package/dist/deck.js +105 -0
  304. package/dist/dialog.js +4 -3
  305. package/dist/dock.js +1320 -631
  306. package/dist/dockContext-gFVS2gMg.js +18 -0
  307. package/dist/dom.js +7 -6
  308. package/dist/dot-flow-field.js +1268 -387
  309. package/dist/dot-matrix.d.ts +1 -0
  310. package/dist/dot-matrix.js +774 -0
  311. package/dist/dotMatrixField-CRO0ZFk4.js +48 -0
  312. package/dist/drawer.js +106 -96
  313. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-CCfcCQ68.js} +83 -79
  314. package/dist/dropdown-menu.js +1 -1
  315. package/dist/easing.js +188 -176
  316. package/dist/expandable-container.js +43 -21
  317. package/dist/fading-scroll.js +1 -1
  318. package/dist/flow.glsl-DqEGRpl4.js +4 -0
  319. package/dist/forms.js +64 -62
  320. package/dist/fourier-field.js +1069 -178
  321. package/dist/fourier-math.js +1 -1
  322. package/dist/glass-panel.js +2 -2
  323. package/dist/glass-ui.css +1 -1
  324. package/dist/glass-ui.js +164 -119
  325. package/dist/goo-blob.js +175 -1230
  326. package/dist/goo-dot-matrix.d.ts +1 -0
  327. package/dist/goo-dot-matrix.js +811 -0
  328. package/dist/handmark.js +137 -94
  329. package/dist/header-ribbon.js +1 -1
  330. package/dist/hover-card.js +1 -1
  331. package/dist/hover-popover.js +1 -1
  332. package/dist/icon-chip.js +1 -1
  333. package/dist/icon-tooltip.js +1 -1
  334. package/dist/index.d.ts +5 -0
  335. package/dist/instrument-chassis.js +1 -1
  336. package/dist/keyboard.js +1 -1
  337. package/dist/label.js +1 -1
  338. package/dist/labeled-field.js +70 -60
  339. package/dist/metric-badge.js +1 -1
  340. package/dist/metric-cell.js +1 -1
  341. package/dist/metric-stack.js +12 -3
  342. package/dist/motion-core.js +59 -34
  343. package/dist/motion-curves.js +30 -14
  344. package/dist/motion.js +231 -96
  345. package/dist/notification.js +1 -1
  346. package/dist/number-field.js +1 -1
  347. package/dist/pager-dots.js +2 -91
  348. package/dist/paper-backdrop.js +1 -1
  349. package/dist/paper-grid.d.ts +1 -0
  350. package/dist/paper-grid.js +761 -0
  351. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  352. package/dist/popover.js +1 -1
  353. package/dist/{presets-BW2b-fr1.js → presets-QvYgnFIZ.js} +14 -13
  354. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-C1Y5PkM6.js} +2 -2
  355. package/dist/progress.js +1 -1
  356. package/dist/pulse.js +2 -2
  357. package/dist/reactive.js +2 -2
  358. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-DsSJk06I.js} +16 -6
  359. package/dist/scrollReader-rc3Ns_NM.js +42 -0
  360. package/dist/scrolling-text.js +1 -1
  361. package/dist/search.js +162 -306
  362. package/dist/select.js +3 -3
  363. package/dist/selectable-chip.d.ts +1 -0
  364. package/dist/selectable-chip.js +48 -0
  365. package/dist/separator.js +1 -1
  366. package/dist/{sheet-tZMg0E0w.js → sheet-DUCIoOe0.js} +4 -4
  367. package/dist/sheet.js +1 -1
  368. package/dist/sidebar.js +216 -114
  369. package/dist/slider-CcICPe3u.js +149 -0
  370. package/dist/slider.js +1 -1
  371. package/dist/sortable-list.js +3 -3
  372. package/dist/spectrum-walk-cBNSx_zm.js +33 -0
  373. package/dist/springPresets-DfoQ6XRY.js +64 -0
  374. package/dist/stacked-icons.js +54 -39
  375. package/dist/styles/animations.css +13 -3
  376. package/dist/styles/cards.css +271 -2
  377. package/dist/styles/completion-seal.css +131 -0
  378. package/dist/styles/components.css +1 -4
  379. package/dist/styles/configurator.css +221 -1
  380. package/dist/styles/critical-partition.mjs +66 -11
  381. package/dist/styles/deferred.css +4 -0
  382. package/dist/styles/dock/adaptive-legibility.css +119 -0
  383. package/dist/styles/dock/cta-seat.css +87 -0
  384. package/dist/styles/dock/density.css +167 -6
  385. package/dist/styles/dock/fission-bridge.css +552 -0
  386. package/dist/styles/dock/layers.css +90 -78
  387. package/dist/styles/dock/morph-bridge.css +67 -18
  388. package/dist/styles/dock/morph.css +57 -118
  389. package/dist/styles/dock/overflow.css +12 -0
  390. package/dist/styles/dock/search.css +68 -0
  391. package/dist/styles/dock/shape.css +250 -0
  392. package/dist/styles/dock/shell.css +24 -8
  393. package/dist/styles/dock/stack-rail.css +352 -0
  394. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  395. package/dist/styles/dock-controls/icon-button.css +46 -0
  396. package/dist/styles/dock-controls/triggers.css +23 -1
  397. package/dist/styles/dock-controls.css +18 -0
  398. package/dist/styles/dock.css +27 -2
  399. package/dist/styles/drawer.css +166 -0
  400. package/dist/styles/glass/accent-tone.css +66 -0
  401. package/dist/styles/glass/control-surfaces.css +167 -0
  402. package/dist/styles/glass/glass-atom.css +244 -0
  403. package/dist/styles/glass/glass-capsule.css +143 -0
  404. package/dist/styles/glass/glass-chip.css +215 -0
  405. package/dist/styles/glass/ladder.css +67 -17
  406. package/dist/styles/glass/liquid-enter.css +252 -0
  407. package/dist/styles/glass/liquid-morph.css +850 -0
  408. package/dist/styles/glass/material.css +70 -1
  409. package/dist/styles/glass/reveal.css +22 -2
  410. package/dist/styles/glass/rim.css +31 -9
  411. package/dist/styles/glass/surfaces.css +81 -150
  412. package/dist/styles/glass.css +21 -0
  413. package/dist/styles/icon-chip.css +45 -0
  414. package/dist/styles/index.css +26 -0
  415. package/dist/styles/jubilance.css +65 -0
  416. package/dist/styles/motion/morph-field.css +229 -0
  417. package/dist/styles/paper.css +230 -14
  418. package/dist/styles/scroll-choreography.css +135 -78
  419. package/dist/styles/scroll-chrome.css +123 -0
  420. package/dist/styles/scroll-driven.css +38 -0
  421. package/dist/styles/segmented-tabs.css +110 -40
  422. package/dist/styles/select.css +151 -0
  423. package/dist/styles/theme/bridges.css +22 -0
  424. package/dist/styles/theme/radius.css +18 -1
  425. package/dist/styles/tokens/color-radius.css +14 -4
  426. package/dist/styles/tokens/dark-arm.css +94 -12
  427. package/dist/styles/tokens/glass-deep.css +33 -4
  428. package/dist/styles/tokens/glass-fx.css +122 -1
  429. package/dist/styles/tokens/glass.css +226 -34
  430. package/dist/styles/tokens/light-dark.css +3 -3
  431. package/dist/styles/tokens/offsets.css +27 -0
  432. package/dist/styles/tokens/property-regs.css +277 -0
  433. package/dist/styles/tokens/scale-paper.css +86 -30
  434. package/dist/styles/tokens/scheme-motion.css +106 -133
  435. package/dist/styles/tokens/scheme-spring.css +239 -0
  436. package/dist/styles/tokens/scroll-tokens.css +15 -15
  437. package/dist/styles/tokens/shadow.css +73 -13
  438. package/dist/styles/tokens/sizing-config.css +110 -0
  439. package/dist/styles/tokens/sizing.css +55 -104
  440. package/dist/styles/tokens.css +14 -2
  441. package/dist/styles/typography/semantic.css +18 -5
  442. package/dist/styles/utilities/a11y-overrides.css +20 -5
  443. package/dist/styles/utilities/base-misc.css +52 -0
  444. package/dist/styles/utilities/btn.css +84 -3
  445. package/dist/styles/utilities/components.css +31 -6
  446. package/dist/styles/utilities/metal.css +26 -0
  447. package/dist/switch.js +1 -1
  448. package/dist/tabs.js +199 -182
  449. package/dist/timeline.js +241 -206
  450. package/dist/toast.js +1 -1
  451. package/dist/toggle-chip.js +14 -41
  452. package/dist/toggle-group.js +1 -1
  453. package/dist/tooltip.js +1 -1
  454. package/dist/typewriter.js +2 -2
  455. package/dist/uniformBridgeWGPU-BCse1SHU.js +1268 -0
  456. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  457. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-22BcULzF.js} +41 -38
  458. package/dist/useControlSize-DAZ062x7.js +9 -0
  459. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  460. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-DGLSewwB.js} +4 -4
  461. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  462. package/dist/useFuzzySearch-0fTYOhS4.js +177 -0
  463. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  464. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  465. package/dist/useHaptic-CPz5BT9I.js +134 -0
  466. package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  467. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  468. package/dist/useMorphField-ogBM7ubT.js +141 -0
  469. package/dist/usePointerVelocityField-BrkqZFhj.js +91 -0
  470. package/dist/useScrollChrome-JuImi1DM.js +258 -0
  471. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-DFxtzmkR.js} +1 -1
  472. package/dist/useSpringPress-VM9RgVq3.js +36 -0
  473. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  474. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  475. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  476. package/dist/virtual.d.ts +1 -0
  477. package/dist/virtual.js +225 -0
  478. package/dist/watercolor-dot.js +107 -74
  479. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  480. package/package.json +140 -9
  481. package/src/styles/animations.css +13 -3
  482. package/src/styles/cards.css +271 -2
  483. package/src/styles/completion-seal.css +131 -0
  484. package/src/styles/configurator.css +221 -1
  485. package/src/styles/critical-partition.mjs +66 -11
  486. package/src/styles/dock/adaptive-legibility.css +119 -0
  487. package/src/styles/dock/cta-seat.css +87 -0
  488. package/src/styles/dock/density.css +167 -6
  489. package/src/styles/dock/fission-bridge.css +552 -0
  490. package/src/styles/dock/layers.css +90 -78
  491. package/src/styles/dock/morph-bridge.css +67 -18
  492. package/src/styles/dock/morph.css +57 -118
  493. package/src/styles/dock/overflow.css +12 -0
  494. package/src/styles/dock/search.css +68 -0
  495. package/src/styles/dock/shape.css +250 -0
  496. package/src/styles/dock/shell.css +24 -8
  497. package/src/styles/dock/stack-rail.css +352 -0
  498. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  499. package/src/styles/dock-controls/icon-button.css +46 -0
  500. package/src/styles/dock-controls/triggers.css +23 -1
  501. package/src/styles/dock-controls.css +18 -0
  502. package/src/styles/dock.css +27 -2
  503. package/src/styles/drawer.css +164 -0
  504. package/src/styles/glass/accent-tone.css +66 -0
  505. package/src/styles/glass/control-surfaces.css +167 -0
  506. package/src/styles/glass/glass-atom.css +244 -0
  507. package/src/styles/glass/glass-capsule.css +143 -0
  508. package/src/styles/glass/glass-chip.css +215 -0
  509. package/src/styles/glass/ladder.css +67 -17
  510. package/src/styles/glass/liquid-enter.css +252 -0
  511. package/src/styles/glass/liquid-morph.css +850 -0
  512. package/src/styles/glass/material.css +70 -1
  513. package/src/styles/glass/reveal.css +22 -2
  514. package/src/styles/glass/rim.css +31 -9
  515. package/src/styles/glass/surfaces.css +81 -150
  516. package/src/styles/glass.css +21 -0
  517. package/src/styles/icon-chip.css +45 -0
  518. package/src/styles/index.css +26 -0
  519. package/src/styles/jubilance.css +65 -0
  520. package/src/styles/motion/morph-field.css +229 -0
  521. package/src/styles/paper.css +230 -14
  522. package/src/styles/scroll-choreography.css +135 -78
  523. package/src/styles/scroll-chrome.css +123 -0
  524. package/src/styles/scroll-driven.css +38 -0
  525. package/src/styles/segmented-tabs.css +110 -36
  526. package/src/styles/select.css +151 -0
  527. package/src/styles/theme/bridges.css +22 -0
  528. package/src/styles/theme/radius.css +18 -1
  529. package/src/styles/tokens/color-radius.css +14 -4
  530. package/src/styles/tokens/dark-arm.css +94 -12
  531. package/src/styles/tokens/glass-deep.css +33 -4
  532. package/src/styles/tokens/glass-fx.css +122 -1
  533. package/src/styles/tokens/glass.css +226 -34
  534. package/src/styles/tokens/light-dark.css +3 -3
  535. package/src/styles/tokens/offsets.css +27 -0
  536. package/src/styles/tokens/property-regs.css +277 -0
  537. package/src/styles/tokens/scale-paper.css +86 -30
  538. package/src/styles/tokens/scheme-motion.css +106 -133
  539. package/src/styles/tokens/scheme-spring.css +239 -0
  540. package/src/styles/tokens/scroll-tokens.css +15 -15
  541. package/src/styles/tokens/shadow.css +73 -13
  542. package/src/styles/tokens/sizing-config.css +110 -0
  543. package/src/styles/tokens/sizing.css +55 -104
  544. package/src/styles/tokens.css +14 -2
  545. package/src/styles/typography/semantic.css +18 -5
  546. package/src/styles/utilities/a11y-overrides.css +20 -5
  547. package/src/styles/utilities/base-misc.css +52 -0
  548. package/src/styles/utilities/btn.css +84 -3
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +26 -0
  551. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  552. package/dist/DialogContent-DcKK8k9i.js +0 -103
  553. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  554. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  555. package/dist/Input-h9v5LeXf.js +0 -55
  556. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  557. package/dist/PaperBackdrop-Vf3tlpvd.js +0 -31
  558. package/dist/SelectScrollDownButton-CrA8F0iV.js +0 -252
  559. package/dist/Separator-pKF0oA4M.js +0 -37
  560. package/dist/Switch-CwYNf8bo.js +0 -47
  561. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  562. package/dist/badge-D9XWW4GT.js +0 -53
  563. package/dist/button-DYCUa-tH.js +0 -126
  564. package/dist/color-DweYl7pE.js +0 -86
  565. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -44
  566. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  567. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  568. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  569. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  570. package/dist/dockContext-BNfyPLe9.js +0 -17
  571. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  572. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  573. package/dist/slider-DVb4HXU-.js +0 -142
  574. package/dist/springPresets-CFQGQfdl.js +0 -40
  575. package/dist/styles/dock/rail-extend.css +0 -397
  576. package/dist/useLiquidPress-kfb4KX79.js +0 -39
  577. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  578. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  579. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  580. package/src/styles/dock/rail-extend.css +0 -397
  581. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  582. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  583. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  584. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  585. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-Dcczq44n.js} +0 -0
  586. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  587. /package/dist/{compile-CQEFRTmx.js → compile-INR_tPk_.js} +0 -0
  588. /package/dist/{constants-BPOqYJAm.js → constants-BWj7DkMn.js} +0 -0
  589. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  590. /package/dist/{math-BINYmg5z.js → math-5RcIgCB4.js} +0 -0
  591. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  592. /package/dist/{prng-Za0Rmgag.js → prng-B5tIXTtj.js} +0 -0
  593. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-B4HO9LXG.js} +0 -0
  594. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  595. /package/dist/{useInterval-CvK1mL92.js → useInterval-BVUI-sez.js} +0 -0
  596. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  597. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  598. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  599. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-A0M6qRl7.js} +0 -0
  600. /package/dist/{useSortable-DHjtZSEd.js → useSortable-DQV_UNDw.js} +0 -0
  601. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-Bma3UlKA.js} +0 -0
  602. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  603. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  604. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  605. /package/dist/{vReveal-Czsb7zQC.js → vReveal-CT1KtwZA.js} +0 -0
  606. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -2,10 +2,11 @@
2
2
  * contract (AX.W06 carve).
3
3
  *
4
4
  * Carved from the dock.css god-module (slice 25). This partial owns the dock's
5
- * layer model: the `.dock-layers` grid container + the FLIP-driven box-size morph
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
5
+ * layer model: the `.dock-layers` grid container + the ratio-FREE convex-blend
6
+ * box-size morph (BD.W-DOCK-CORE — `scale: var(--dock-size-scale)` from a
7
+ * `--dock-live` blend of two measure-ONCE endpoints `--dock-expanded-px`/
8
+ * `--dock-collapsed-px`, BOUNDED by construction off the ONE `--dock-morph-t`
9
+ * scalar; NO per-swap `from/to` ratio, NO per-frame layout-axis lerp), the unified
9
10
  * `.is-active` / `.is-leaving` 3-state crossfade + hit-test contract (the
10
11
  * a11y-006 anchor), the per-child reveal stagger (the `--dock-stagger-*` ramp),
11
12
  * and the `layout="grid"` 2D tile-grid arrangement. The `.dock-layer-group` /
@@ -39,66 +40,63 @@
39
40
  }
40
41
 
41
42
 
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). */
59
- .glass-dock[data-morphing] .dock-layers,
60
- .glass-dock[data-morphing] .dock-layer-stack {
61
- --dock-morph-ratio: calc(
62
- var(--dock-morph-from, 0px) / max(var(--dock-morph-to, 1px), 1px)
43
+ /* ── BD.W-DOCK-CORE — the ratio-FREE convex-blend SIZE (the width-seizure cure) ──
44
+ THE BUG THIS RETIRES: the prior morph drove the visible size by an UNBOUNDED
45
+ per-swap `from/to` ratio — `--dock-root-scale = max(ratio + (1−ratio)·t, 0.06)`,
46
+ a FLOOR with NO CEILING. A degenerate `to` (the FLIP measure racing the content
47
+ layout) ran `ratio = from/max(to,1px)` to ~56 → `scaleX(56)` ≈ 2451px on
48
+ collapse, or an inversion at the spring's >1 overshoot peak. `transform-origin:
49
+ center` kept the centroid clean (cxRange 0), which is exactly why every prior
50
+ judge measuring the centroid PASSED while the WIDTH detonated. The whole
51
+ per-swap measure-and-arm pipeline + the `--dock-root-*`/`--dock-morph-ratio/scale`
52
+ rules are DELETED (clean break, no legacy).
53
+
54
+ THE CURE — a convex blend of two POSITIVE measure-ONCE endpoints. The dock
55
+ measures its expanded content span + its collapsed box ONCE per content change
56
+ (`useDockExpandedSize` writes `--dock-expanded-px`/`--dock-collapsed-px`, NOT a
57
+ per-swap rAF race) and the visible size is `--dock-live = collapsed +
58
+ (expanded − collapsed)·clamp(0, --dock-morph-t, 1)` → BOUNDED by construction:
59
+ a convex blend can NEVER exceed the larger endpoint nor invert below the smaller,
60
+ regardless of spring overshoot (the `clamp(0,t,1)` caps the size term; the >1
61
+ excursion routes to the orthogonal `--dock-punch-stretch` channel). No ratio, no
62
+ `from>to` degeneracy, no floor guard (the two endpoints ARE the floors). The box
63
+ RESERVES `--dock-expanded-px` (ONE layout solve, CDP-Layout-flat) and the visible
64
+ size rides `scale: var(--dock-size-scale)` from `transform-origin: center` —
65
+ container-justify-agnostic, center-out by construction (left-anchored / centred /
66
+ auto-margin docks ALL grow center-out, no justify detection, no translate). The
67
+ endpoints default to a no-op (`expanded == collapsed → scale 1`) so an unmeasured
68
+ dock paints neutral. The actual `scale:` property is composed in shape.css (folded
69
+ WITH the `--stretch` squish × the `--dock-punch-stretch` cartoon punch on ONE
70
+ compositor channel). KEEP `--dock-morph-t` (the shipped token — NO rename). */
71
+ .glass-dock[data-morphing] {
72
+ --dock-live: calc(
73
+ var(--dock-collapsed-px, var(--dock-expanded-px, 0px)) +
74
+ (
75
+ var(--dock-expanded-px, 0px) -
76
+ var(--dock-collapsed-px, var(--dock-expanded-px, 0px))
77
+ ) *
78
+ clamp(0, var(--dock-morph-t, 1), 1)
63
79
  );
64
- --dock-morph-scale: calc(
65
- var(--dock-morph-ratio) +
66
- (1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
80
+ --dock-size-scale: clamp(
81
+ 0.06,
82
+ calc(var(--dock-live) / max(var(--dock-expanded-px, 1px), 1px)),
83
+ 1
67
84
  );
68
- /* The box RESERVES its settled `to` footprint — a single layout solve, NOT
69
- the live scalar calc. The transform composites over it. */
70
- inline-size: var(--dock-morph-to);
71
- transform: scaleX(var(--dock-morph-scale));
72
- transform-origin: left center;
85
+ transform-origin: center center;
73
86
  will-change: transform;
74
87
  }
75
88
 
76
- /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
77
- BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
78
- measures/writes the same `--dock-morph-from/to` span on the block axis
79
- (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
80
- vertical→`block-size`).
81
- BB.W-DOCK-MORPH-FAMILY (a)/(b) — the vertical box reserves its settled `to`
82
- BLOCK footprint + composites a `scaleY()` over it on the SAME `--dock-morph-t`
83
- scalar (the inverse axis of the horizontal `scaleX`), `transform-origin` at the
84
- block-start pinned edge. NO live-scalar `block-size` calc → no per-frame
85
- relayout on the vertical axis either. */
86
- .glass-dock.vertical[data-morphing] .dock-layers {
87
- inline-size: auto;
88
- block-size: var(--dock-morph-to);
89
- transform: scaleY(var(--dock-morph-scale));
90
- transform-origin: center top;
91
- will-change: transform;
89
+ /* The box RESERVES its expanded footprint (ONE layout solve — the page reflows
90
+ ONCE to the final size, CDP-Layout stays FLAT) while the visible size scales
91
+ toward it. Horizontal reserves `inline-size`, vertical reserves `block-size`,
92
+ matching the morph axis. The `.dock-layers` content lays out at its natural
93
+ size behind the clip (shell.css) — that natural span is the `--dock-expanded-px`
94
+ the ResizeObserver reads. */
95
+ .glass-dock[data-morphing]:not(.vertical) {
96
+ inline-size: var(--dock-expanded-px);
92
97
  }
93
-
94
- /* A vertical inner group morphs the BLOCK axis — the same settled-footprint
95
- reserve + `scaleY()` composite over it. */
96
- .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
97
- inline-size: auto;
98
- block-size: var(--dock-morph-to);
99
- transform: scaleY(var(--dock-morph-scale));
100
- transform-origin: center top;
101
- will-change: transform;
98
+ .glass-dock[data-morphing].vertical {
99
+ block-size: var(--dock-expanded-px);
102
100
  }
103
101
 
104
102
  /* The inner DockLayerGroup stack has no collapsed/expanded class, so its
@@ -278,7 +276,10 @@
278
276
  .glass-dock[data-morphing] .dock-layer-item-host.is-active > * {
279
277
  --dock-stagger-window: var(--dock-stagger-window-size, 0.55);
280
278
  --dock-stagger-onset: 0;
281
- opacity: clamp(
279
+ /* BD.W-DOCK-CORE (A6) — factor the reveal ramp into ONE named var so opacity AND
280
+ the center-coupled scale read the SAME clamp (W-MOTION-CANON P3, fade coupled to
281
+ transform). */
282
+ --child-reveal: clamp(
282
283
  0,
283
284
  calc(
284
285
  (var(--dock-expand-t, 1) - var(--dock-stagger-onset)) /
@@ -286,11 +287,14 @@
286
287
  ),
287
288
  1
288
289
  );
289
- translate: 0
290
- calc(
291
- (1 - clamp(0, calc((var(--dock-expand-t, 1) - var(--dock-stagger-onset)) / var(--dock-stagger-window)), 1)) *
292
- var(--dock-stagger-rise, 4px)
293
- );
290
+ opacity: var(--child-reveal);
291
+ /* BD.W-DOCK-CORE (A6) — the rise is a center-coupled SCALE pop (0.82 → 1 on the
292
+ reveal ramp, transform-origin center), NOT the prior independent `translate: 0
293
+ 4px` vertical hop. The children inherit the SAME center-anchored read as the box
294
+ — a small inertial pop FROM the center, coupled to opacity. The global PRM gate
295
+ strips `scale` → snap. */
296
+ scale: calc(0.82 + 0.18 * var(--child-reveal));
297
+ transform-origin: center;
294
298
  }
295
299
 
296
300
  /* AX.W02 — per-child onsets off the ONE `--dock-stagger-step` token. Each
@@ -305,26 +309,34 @@
305
309
  collapse this to a single declaration, but it is not yet Baseline across
306
310
  Safari/Firefox — the token-keyed nth-child set is the cross-engine form, and
307
311
  the magic ladder is gone either way.) */
308
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(2),
309
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(2) {
312
+ /* BD.W-DOCK-CORE (A6) — the SYMMETRIC center-out stagger (the index-cascade RETIRED,
313
+ clean break). The onset ladders by DISTANCE FROM THE ROW CENTER (center pair = onset
314
+ 0 via the base rule, then ±1, ±2 …) so the reveal radiates center-out in lockstep
315
+ with the center-out box morph (I.2) — never the prior left-to-right index cascade
316
+ that desynced from the centered grow. `--dock-stagger-step` is the per-ring beat;
317
+ `nth-child(N of *)` + `nth-last-child(N of *)` reach BOTH ends (the row is short —
318
+ ≤8 controls is the dock norm), the central rule holds the deep middle. The `of *`
319
+ syntax is Safari 16.4+/Chrome 111+. The rule is duplicated for the inner pane-stack
320
+ host (identical onsets). */
321
+ /* ring ±1 — 2nd-from-center each side */
322
+ .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(2 of *),
323
+ .glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(2 of *),
324
+ .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(2 of *),
325
+ .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-last-child(2 of *) {
310
326
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 1);
311
327
  }
312
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(3),
313
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(3) {
328
+ /* ring ±2 — 3rd-from-center each side */
329
+ .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(3 of *),
330
+ .glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(3 of *),
331
+ .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(3 of *),
332
+ .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-last-child(3 of *) {
314
333
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 2);
315
334
  }
316
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(4),
317
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(4) {
335
+ /* ring ±3 — the deep-middle 4th/5th-from-edge cap (a long row finishes in-window) */
336
+ .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(n + 4):nth-child(-n + 5),
337
+ .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(n + 4):nth-child(-n + 5) {
318
338
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 3);
319
339
  }
320
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(5),
321
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(5) {
322
- --dock-stagger-onset: calc(var(--dock-stagger-step) * 4);
323
- }
324
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(n + 6),
325
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(n + 6) {
326
- --dock-stagger-onset: calc(var(--dock-stagger-step) * 5);
327
- }
328
340
 
329
341
  /* AW.W2 — the at-rest clip-lift moved to `.expanded:not([data-morphing])` /
330
342
  `.always-expanded:not([data-morphing])` (the clip-shell block at the top).
@@ -76,36 +76,85 @@
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
+ /* BD.W-MORPH-FIELD-WELD — the GAP-RELATIVE waist (the scale-blind-threshold fix /
113
+ the user's 296px→dot defect). The prior travel necked the tall plate ALL the way
114
+ to a 52px circle at t=0.5, so the goo threshold over-ate the two thin overlapping
115
+ circles to a lone white dot. The neck now travels only `--morph-neck-frac` (0.62)
116
+ of the way to the circle, so the midpoint silhouette holds a FAT fused mass with a
117
+ real waist (≤0.45 of body), not a pinched dot — the goo blur fuses it into one
118
+ teardrop barbell instead of eating it. */
119
+ --morph-neck-frac: 0.62;
120
+ --dock-bridge-v-neck: calc(
121
+ (var(--dock-bridge-v-h, 16rem) - var(--dock-bridge-v-w, 3.25rem)) / 2 *
122
+ var(--morph-neck-frac) *
123
+ clamp(0, calc(var(--dock-morph-t, 0) * 2), 1)
124
+ );
125
+ clip-path: inset(
126
+ var(--dock-bridge-v-neck) 0 var(--dock-bridge-v-neck) 0 round 999px
95
127
  );
96
128
  opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
97
129
  /* squish Y on travel (the tall plate stretches along its collapse axis) */
98
130
  scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
99
131
  }
100
132
 
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. */
133
+ /* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It RESERVES its full
134
+ wide footprint (a one-time layout solve) and grows its silhouette from the center
135
+ via a `clip-path: inset()` whose inline insets SHRINK as t: 0.5 → 1 (a thin neck
136
+ at the midpoint → the full wide bar at t=1). `--dock-bridge-h-neck` is the inset
137
+ travel: ~half the reserved width − half the height at t=0.5 (necked to a circle)
138
+ → 0 at t=1 (full width shows). NO per-frame width — the clip carves the silhouette
139
+ on the compositor. */
104
140
  .dock-morph-bridge-plate--horizontal {
141
+ width: var(--dock-bridge-h-w, 18rem);
105
142
  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)
143
+ /* the inline-axis inset travel: (half the reserved width − half the height) at
144
+ t=0.5 → 0 at t=1, so the necked silhouette is ~a circle (the height) at the
145
+ midpoint and the full bar at t=1. */
146
+ /* BD.W-MORPH-FIELD-WELD — gap-relative waist (the symmetric arm of the V-plate fix
147
+ above): the wide plate necks only `--morph-neck-frac` of the way to its small
148
+ dimension at the midpoint, so the fused mass stays fat (a real teardrop, not a
149
+ dot). */
150
+ --morph-neck-frac: 0.62;
151
+ --dock-bridge-h-neck: calc(
152
+ (var(--dock-bridge-h-w, 18rem) - var(--dock-bridge-h-h, 3.25rem)) / 2 *
153
+ var(--morph-neck-frac) *
154
+ (1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1))
155
+ );
156
+ clip-path: inset(
157
+ 0 var(--dock-bridge-h-neck) 0 var(--dock-bridge-h-neck) round 999px
109
158
  );
110
159
  opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
111
160
  /* squish X on travel (the wide plate stretches along its growth axis) */
@@ -62,24 +62,33 @@
62
62
  --dock-expand-t: calc(1 - var(--dock-morph-t));
63
63
  }
64
64
 
65
- /* BB.W-LIQUID-REVEAL — the dock-expand LIQUID-OPEN bloom beat (DOCK-EXPAND-CONSUMER).
66
- The dock pill BLOOMS open from its collapsed circle: a coupled `filter` blur-
67
- settle decongest reading the SAME `--dock-expand-t` directional scalar the chrome
68
- interp rides (the W-DOCK-MORPH-FAMILY morph mechanism is UNTOUCHED — this is a
69
- SURFACE arm, NOT a morph-axis layout edit). Collapsed (`--dock-expand-t` 0) the
70
- dock content reads a faint `blur(--dock-reveal-blur)` decongest; as it expands
71
- (`--dock-expand-t` → 1) the blur SETTLES to 0 so the chrome clarifies AS the pill
72
- blooms — the iOS "light-bending modulation" arrival on the dock's own pixels
73
- (`filter`, NOT `backdrop-filter`, so the resting glass-tier plate blur the dock
74
- carries is never clobbered). Compositor-safe (a `filter` radius interp, never a
75
- layout property — the proof:no-layout-animation floor). The beat rides the ONE
76
- `--dock-expand-t` scalar, so it tracks the `DOCK_SPRING` clock with NO second
77
- clock + NO re-added CSS transition (the morph already animates `--dock-morph-t`).
78
- PRM: the `--dock-reveal-blur` knob is zeroed under reduce (the carve below). */
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. */
79
75
  .glass-dock {
80
- --dock-reveal-blur: 3px;
76
+ --dock-reveal-blur: 0px; /* resting: CRISP — no own-pixel self-blur */
77
+ }
78
+ .glass-dock[data-morphing] {
79
+ /* BD.W-DOCK-CORE (A4) — the blur DIAL-BACK. The peak drops 3px → 1.25px AND the
80
+ decay is FRONT-LOADED: the `clamp(0, (0.5 - expand-t)/0.5, 1)` ramp drives the
81
+ blur 1.25px → 0 as expand-t crosses 0 → 0.5, then HOLDS 0 for the back half — a
82
+ brief decongest FLASH, crisp by the morph's midpoint (the icons never read soft
83
+ through the slow grow). The resting self-blur stays 0px (above, untouched). The
84
+ 9px BACKDROP blur (the material) is untouched — only the OWN-pixel self-blur is
85
+ dialed. PRM → 0 (the carve below). */
86
+ --dock-reveal-blur: 1.25px; /* the transient decongest bloom — mid-morph only */
81
87
  filter: blur(
82
- calc(var(--dock-reveal-blur) * (1 - var(--dock-expand-t, 1)))
88
+ calc(
89
+ var(--dock-reveal-blur) *
90
+ clamp(0, calc((0.5 - var(--dock-expand-t, 1)) / 0.5), 1)
91
+ )
83
92
  );
84
93
  }
85
94
 
@@ -97,7 +106,8 @@
97
106
  .glass-dock:not(.vertical) {
98
107
  /* AY.W-A11Y-PERF O-1 / AZ.W-ADAPTIVE-AUTO Arm 1 — BOTH morph endpoints compose
99
108
  the W55 oklab adaptive tint so the self-engage darken (the unconditional
100
- `:where(.glass-dock)` rule below re-points the element-level
109
+ `:where(.glass-dock)` rule in the sibling adaptive-legibility.css partial
110
+ re-points the element-level
101
111
  `--glass-tint-source`/`--glass-tint-strength`) reaches the LIVE
102
112
  horizontal dock surface in BOTH the expanded AND the COLLAPSED look (this
103
113
  0,3,0 morph interp OVERRIDES the 0,1,0 shell.css bg, so the tint must be
@@ -329,6 +339,27 @@
329
339
  margin-inline-start: 0;
330
340
  }
331
341
 
342
+ /* BD.W-DOCK-CORE (A5) — the collapsed persistent pill centers its single glyph on
343
+ BOTH axes (the empty-summary case where the #persistent control IS the collapsed
344
+ circle). The `--dock-control-safe-inset` padding (background-clip: content-box) must
345
+ not shift the glyph off the pill's geometric center — `place-items: center`
346
+ belt-and-braces both axes so the shrunken icon reads dead-center (A5 "icons in the
347
+ SHRUNKEN state are NOT ALIGNED"). */
348
+ .glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent {
349
+ display: grid;
350
+ place-items: center;
351
+ }
352
+ .glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent > * {
353
+ place-self: center;
354
+ }
355
+ /* BD.W-DOCK-CORE (A5) — floor the collapsed glyph at the 16px-min the rail glyph
356
+ carries (never a sliver inside an inline-flex column). */
357
+ .glass-dock.collapsed .dock-persistent svg,
358
+ .glass-dock.collapsed .dock-layer--summary svg {
359
+ min-width: 1rem;
360
+ min-height: 1rem;
361
+ }
362
+
332
363
  /* AW.W3 — the collapsed-hover scale rides the unified dock spring vocabulary.
333
364
  The `scale var(--dock-motion-resize)` arm was added to the `.glass-dock`
334
365
  root transition above, so this hover scale settles on the SAME spring curve
@@ -357,6 +388,7 @@
357
388
 
358
389
  .glass-dock.collapsed:hover:not([data-morphing]) {
359
390
  scale: var(--dock-collapsed-hover-scale);
391
+ will-change: transform; /* BC.W-DOCK-ENGINE move 2 — promote the armed-at-rest scale lift */
360
392
  }
361
393
 
362
394
  /* J.W5.C — held-state substrate response.
@@ -385,107 +417,14 @@
385
417
  box-shadow var(--duration-fast) var(--ease-standard);
386
418
  }
387
419
 
388
- /* AQ.W3 §W3.1b — open-descendant surface response. When a dock-hosted
389
- trigger (`[data-state="open"]`) is open, the dock root holds its elevated
390
- read natively (no consumer JS). Idempotent with `[data-held]` above (same
391
- floating paint, different trigger). Decorative; `:has()` Baseline Widely. */
392
- .glass-dock:has([data-state="open"]) {
393
- /* AX.W55 — same oklab tint wrapper as `[data-held]` (zero-delta at rest). */
394
- background: color-mix(
395
- in oklab,
396
- var(--glass-bg-floating, var(--glass-bg-resting)),
397
- var(--glass-tint-source) var(--glass-tint-strength)
398
- );
399
- border-color: var(--glass-border-floating, var(--glass-border-resting));
400
- }
401
-
402
- /* ── Adaptive legibility: SELF-ENGAGE the dock over a light backdrop by default
403
- (AZ.W-ADAPTIVE-AUTO Arm 1 — the literal G2 surface; "Glass dock over VERY
404
- LIGHT materials is unreadable, darken DYNAMICALLY like iOS 27") ─────────────
405
- The dock floats over WHATEVER the consumer painted — frequently a light/near-
406
- white app surface (the canonical G2 case the user reported). AY.W-A11Y-PERF
407
- O-1 set `--glass-backdrop: light` on the dock's OWN root (shell.css) intending
408
- a self-darken, but CSS style queries NEVER self-match (the `@container
409
- style()` block below reads an ANCESTOR — verified on Chrome 148), so the
410
- self-declaration was a NO-OP. This `:where(.glass-dock)` rule is the genuine
411
- UNCONDITIONAL self-engage — mirroring the overlay band's `ladder.css:169` —
412
- re-pointing the INHERITING tint tokens DIRECTLY on the dock root so the
413
- shell (`--glass-bg-dock`), chassis-strip, and held/open tiers (which compose
414
- the oklab tint AT THE ELEMENT — the substitution-vs-inheritance-safe targets)
415
- darken toward warm-ink in lockstep. `--dock-fg-on-aurora` re-points to the
416
- warm-ink here too — ONE reconciled path, the foreground twin folded in (it
417
- reaches the dock CONTROLS' glyph/label color). Over a DARK page the darken is
418
- sub-perceptual; a dark-substrate consumer opts out via `--glass-tint-strength:
419
- 0%` on the dock root. The morph-root interp (`.glass-dock:not(.vertical)`
420
- above) stays `color-mix(in srgb …)` for the transition — the adaptive darken
421
- rides its RESTING endpoint (`--glass-bg-dock`), the in-flight morph frames are
422
- sub-perceptual (the ratified resting-endpoint-only default). The muted body
423
- register lifts to the full warm-ink under the engaged plate (the muted L40
424
- tier cannot clear 4.5:1 on a translucent darkened plate — darkening moves the
425
- plate TOWARD muted's own luminance; the low-contrast muted register is
426
- inappropriate over a busy glass plate, so it resolves to the legible dark
427
- ink, which clears ~10:1). */
428
- :where(.glass-dock) {
429
- --glass-tint-source: var(--glass-tint-ink);
430
- /* BC.W-AUDIT — the scope-7 completion: the dock JOINS the content-tier
431
- sub-perceptual FLOOR by default (translucent warm liquid glass, NOT a grey
432
- slab), and the FULL AA darken engages ONLY under the genuine bright signal —
433
- the `@container --glass-backdrop: light` bucket below, written by the dock's
434
- own sampled-luminance observer over a bright backdrop (aurora/DockStage) OR a
435
- consumer's explicit bucket. The prior unconditional AA (20% ink-ward) darkened
436
- the dock to grey over EVERY calm light page — the iOS-27 dynamic model done
437
- wrong (darken-always vs darken-when-bright). The full glass rebuild is BC. */
438
- --glass-tint-strength: var(--glass-tint-strength-floor);
439
- --dock-fg-on-aurora: var(--glass-tint-ink);
440
- --muted-foreground: var(--foreground);
441
- }
442
-
443
- /* The ancestor-querying `@container` block KEPT — it reaches the DESCENDANT
444
- nested-glass surfaces inside a dock when a consumer marks `--glass-backdrop:
445
- light` on the dock's ancestor (the self-engage above re-points only the dock
446
- root's own inheriting tokens; a consumer's explicit ancestor bucket still
447
- cascades to nested glass through this block). */
448
- @container style(--glass-backdrop: light) {
449
- .glass-dock {
450
- --glass-tint-source: var(--glass-tint-ink);
451
- --glass-tint-strength: var(--glass-tint-strength-aa);
452
- --dock-fg-on-aurora: var(--glass-tint-ink);
453
- }
454
- }
420
+ /* BD.W-DOCK-CORE (A7) — the whole-plate open-descendant recolor is DELETED (clean
421
+ break, no alias). HEAD repainted the ENTIRE dock plate to the floating tier when ANY
422
+ descendant overlay opened (a dropdown/select/popover) — 44%α warm-cream → 80.8%α
423
+ floating, the user's "a dropdown changes the color of the ENTIRE dock" bug. A
424
+ dropdown opening now leaves the dock plate INVARIANT; the open affordance is
425
+ TRIGGER-scoped (the trigger's own `[aria-expanded]`/`[data-state=open]` active-fill
426
+ in dock-controls/triggers.css). The `[data-held]` (slider-drag) lift above is KEPT —
427
+ a legitimate held-cursor cue, not the bug. */
455
428
 
456
- /* AX.W55 — the `contrast-color()` flip for the dock control foreground (Chrome
457
- 147+/Safari 26+; progressive enhancement, NEVER the load-bearing floor). The
458
- declarative bucket above already carries AA on all engines (it darkens the dock
459
- plate so the warm-dark `--dock-fg-on-aurora` clears ~17:1 over white at the 18%
460
- floor). On a supporting engine `contrast-color()` REFINES the control ink,
461
- anchored on the LIGHT BACKDROP signal (`--card`, the warm-white surface base the
462
- bright bucket implies) — `contrast-color(var(--card))` resolves to the legible
463
- DARK ink. Anchoring on the dark ink instead inverts to white (illegible on the
464
- still-light dock plate), so the anchor is the light surface, matching the rung
465
- refinement in glass.css. The bucket is the floor; this is the native pick. */
466
- @supports (color: contrast-color(white)) {
467
- /* The SELF-ENGAGED dock refinement (the unconditional self-engage above);
468
- progressive enhancement only — the declarative darken is the AA floor. */
469
- :where(.glass-dock) {
470
- --dock-fg-on-aurora: contrast-color(var(--card));
471
- --muted-foreground: contrast-color(var(--card));
472
- }
473
- @container style(--glass-backdrop: light) {
474
- .glass-dock {
475
- --dock-fg-on-aurora: contrast-color(var(--card));
476
- }
477
- }
478
- }
479
429
  }
480
430
 
481
- /* BB.W-LIQUID-REVEAL — the dock-expand bloom beat's blur-settle is OFF under
482
- `prefers-reduced-motion: reduce` (the vestibular floor). The morph itself snaps
483
- instantly under PRM (the `DOCK_SPRING` `respectReducedMotion` in
484
- dockMorphContext.ts), and zeroing `--dock-reveal-blur` here removes the resting
485
- collapsed-pill decongest blur too — a reduced-motion dock reads crisp at every
486
- state, no in-between blur frames. */
487
- @media (prefers-reduced-motion: reduce) {
488
- .glass-dock {
489
- --dock-reveal-blur: 0px;
490
- }
491
- }
@@ -262,6 +262,18 @@
262
262
  calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
263
263
  var(--dock-icon-glyph-floor)
264
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);
265
277
  --dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
266
278
  --dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
267
279
  /* --dock-collapsed-summary-min-size derives from --dock-layer-height (the