@mkbabb/glass-ui 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/dist/{CardAction-8whJrLWt.js → CardAction-DlVP2evz.js} +58 -54
  2. package/dist/{CommandShortcut-D3yxgHNn.js → CommandShortcut-By-VQcLO.js} +3 -3
  3. package/dist/{ConfiguratorRow-CaP7U3ZA.js → ConfiguratorRow-YMXdINHx.js} +3 -3
  4. package/dist/{ContextMenuContent-B3ZsheLV.js → ContextMenuContent-CMWn6huB.js} +1 -1
  5. package/dist/{ContextMenuSubContent-DDRID3qC.js → ContextMenuSubContent-DvwWCUc0.js} +1 -1
  6. package/dist/{DataTable-Bc9kUtu_.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/{DialogScrollContent-TTuovQst.js → DialogScrollContent-BMekN7gq.js} +1 -1
  9. package/dist/{FadingScroll-DLRbH5Xr.js → FadingScroll-P8B30rAD.js} +1 -1
  10. package/dist/{HoverCardContent-Bel1gdLZ.js → HoverCardContent-DAmGYglo.js} +1 -1
  11. package/dist/{HoverPopover-BcIxvyqZ.js → HoverPopover-DYpBOzzF.js} +1 -1
  12. package/dist/{IconChip-DhbdGdFQ.js → IconChip-CQa7XZYc.js} +7 -5
  13. package/dist/{IconTooltip-B0zimd2H.js → IconTooltip-_df8M3xm.js} +1 -1
  14. package/dist/{Input-Cg9DF62r.js → Input-CyU4_hIC.js} +2 -2
  15. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  16. package/dist/{Notification-CphK7AAm.js → Notification-BlSPJhtZ.js} +1 -1
  17. package/dist/{NumberFieldContent-D8cXeyO4.js → NumberFieldContent-Z3VxGu_6.js} +3 -3
  18. package/dist/PagerDots-CYlqVFd4.js +196 -0
  19. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  20. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  21. package/dist/{Progress-CnqB7gLm.js → Progress-C9SsdwIZ.js} +1 -1
  22. package/dist/{ScrollingText-CTZbA_cG.js → ScrollingText-DY3W1Jfh.js} +2 -2
  23. package/dist/{SelectScrollDownButton-DAKCBEdW.js → SelectScrollDownButton-3mFHX_R-.js} +15 -12
  24. package/dist/{Switch-B8RscmRu.js → Switch-uf-UKPA2.js} +1 -1
  25. package/dist/{Toaster-D9qIHjBI.js → Toaster-ozrsR4mP.js} +1 -1
  26. package/dist/{ToggleGroupItem-BLtr3TJq.js → ToggleGroupItem-BpzaVzNm.js} +4 -4
  27. package/dist/{TooltipProvider-BJ_Y5EGX.js → TooltipProvider-QQVM_80r.js} +1 -1
  28. package/dist/animated-digit.js +2 -2
  29. package/dist/api/index.d.ts +1 -0
  30. package/dist/api/types-extra.d.ts +3 -1
  31. package/dist/api.js +2 -2
  32. package/dist/aurora.js +163 -131
  33. package/dist/badge-Bt14yURi.js +72 -0
  34. package/dist/badge.js +1 -1
  35. package/dist/border-progress.js +1 -1
  36. package/dist/button-D1W9PrzI.js +130 -0
  37. package/dist/button.js +1 -1
  38. package/dist/canvas.js +1 -1
  39. package/dist/card.js +1 -1
  40. package/dist/carousel.js +227 -98
  41. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  42. package/dist/collapsible.js +1 -1
  43. package/dist/color.js +1 -1
  44. package/dist/command.js +1 -1
  45. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  46. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/presets.d.ts +29 -0
  48. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  49. package/dist/components/custom/aurora/index.d.ts +1 -1
  50. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  51. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +8 -3
  52. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +8 -4
  53. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  54. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -4
  55. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  56. package/dist/components/custom/concentric/constants.d.ts +62 -41
  57. package/dist/components/custom/concentric/index.d.ts +2 -2
  58. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  59. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  60. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  61. package/dist/components/custom/configurator/index.d.ts +1 -1
  62. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  63. package/dist/components/custom/dock/DockIconButton.vue.d.ts +10 -0
  64. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  65. package/dist/components/custom/dock/DockStack.vue.d.ts +35 -22
  66. package/dist/components/custom/dock/GlassDock.vue.d.ts +19 -3
  67. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  68. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +76 -145
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  71. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  72. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  73. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  74. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +38 -0
  75. package/dist/components/custom/dock/constants.d.ts +14 -3
  76. package/dist/components/custom/dock/index.d.ts +3 -0
  77. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +21 -0
  78. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  79. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  80. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  81. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  82. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +28 -2
  83. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -17
  84. package/dist/components/custom/dot-flow-field/constants.d.ts +51 -0
  85. package/dist/components/custom/dot-flow-field/index.d.ts +1 -1
  86. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  87. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +29 -0
  88. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  89. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +10 -1
  90. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +7 -0
  91. package/dist/components/custom/dot-matrix/constants.d.ts +14 -0
  92. package/dist/components/custom/dot-matrix/index.d.ts +1 -1
  93. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +2 -2
  94. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -1
  95. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +4 -0
  96. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +9 -0
  97. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +11 -0
  98. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +16 -1
  99. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +22 -1
  100. package/dist/components/custom/fourier-field/constants.d.ts +53 -0
  101. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +1 -1
  102. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
  103. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  104. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  105. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  106. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  107. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  108. package/dist/components/custom/goo-blob/types.d.ts +50 -1
  109. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +32 -3
  110. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +14 -4
  111. package/dist/components/custom/goo-dot-matrix/constants.d.ts +55 -16
  112. package/dist/components/custom/goo-dot-matrix/index.d.ts +1 -1
  113. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +2 -0
  114. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +1 -0
  115. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  116. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  117. package/dist/components/custom/handmark/brush.d.ts +17 -17
  118. package/dist/components/custom/handmark/constants.d.ts +28 -8
  119. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  120. package/dist/components/custom/handmark/index.d.ts +1 -1
  121. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  122. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  123. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +44 -29
  124. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +2 -0
  125. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +3 -1
  126. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +2 -2
  127. package/dist/components/custom/paper-grid/constants.d.ts +44 -6
  128. package/dist/components/custom/paper-grid/index.d.ts +2 -2
  129. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +1 -1
  130. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -1
  131. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  132. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +12 -20
  133. package/dist/components/custom/tabs/constants.d.ts +16 -8
  134. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  135. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  136. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  137. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +12 -10
  138. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  139. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  140. package/dist/components/ui/badge/index.d.ts +1 -0
  141. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  142. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  143. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  144. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  145. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  146. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  147. package/dist/components/ui/drawer/constants.d.ts +8 -6
  148. package/dist/components/ui/drawer/index.d.ts +12 -2
  149. package/dist/components/ui/select/SelectContent.vue.d.ts +9 -0
  150. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  151. package/dist/composables/dom/index.d.ts +1 -0
  152. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  153. package/dist/composables/glass/wave/index.d.ts +4 -0
  154. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  155. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  156. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  157. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +95 -2
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  159. package/dist/composables/glass/webgpu/index.d.ts +1 -0
  160. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +37 -0
  161. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +49 -2
  162. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +1 -1
  163. package/dist/composables/motion/core/index.d.ts +4 -0
  164. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  165. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  166. package/dist/composables/motion/index.d.ts +2 -0
  167. package/dist/composables/motion/springPresets.d.ts +16 -17
  168. package/dist/composables/motion/suite.d.ts +2 -2
  169. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  170. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  171. package/dist/composables/motion/useDockCtaReceive.d.ts +10 -28
  172. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  173. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  174. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  175. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  176. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  177. package/dist/composables/motion/useMorphField.d.ts +157 -0
  178. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  179. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  180. package/dist/concentric.js +532 -563
  181. package/dist/configurator.js +2 -2
  182. package/dist/confirm-dialog.js +3 -3
  183. package/dist/constellation.js +4 -4
  184. package/dist/context-menu.js +2 -2
  185. package/dist/controls.js +2 -2
  186. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  187. package/dist/dark.js +1 -1
  188. package/dist/data-table.js +1 -1
  189. package/dist/deck.js +1 -1
  190. package/dist/dialog.js +3 -3
  191. package/dist/dock.js +1163 -618
  192. package/dist/dockContext-gFVS2gMg.js +18 -0
  193. package/dist/dom.js +7 -6
  194. package/dist/dot-flow-field.js +1114 -523
  195. package/dist/dot-matrix.js +348 -204
  196. package/dist/drawer.js +106 -96
  197. package/dist/{dropdown-menu-aJmV5SqE.js → dropdown-menu-CCfcCQ68.js} +3 -3
  198. package/dist/dropdown-menu.js +1 -1
  199. package/dist/easing.js +3 -3
  200. package/dist/expandable-container.js +2 -2
  201. package/dist/fading-scroll.js +1 -1
  202. package/dist/forms.js +6 -6
  203. package/dist/fourier-field.js +441 -197
  204. package/dist/fourier-math.js +1 -1
  205. package/dist/glass-panel.js +2 -2
  206. package/dist/glass-ui.css +1 -1
  207. package/dist/glass-ui.js +139 -135
  208. package/dist/goo-blob.js +11 -9
  209. package/dist/goo-dot-matrix.js +418 -198
  210. package/dist/handmark.js +137 -94
  211. package/dist/header-ribbon.js +1 -1
  212. package/dist/hover-card.js +1 -1
  213. package/dist/hover-popover.js +1 -1
  214. package/dist/icon-chip.js +1 -1
  215. package/dist/icon-tooltip.js +1 -1
  216. package/dist/index.d.ts +3 -0
  217. package/dist/instrument-chassis.js +1 -1
  218. package/dist/keyboard.js +1 -1
  219. package/dist/label.js +1 -1
  220. package/dist/labeled-field.js +7 -7
  221. package/dist/metric-badge.js +1 -1
  222. package/dist/metric-cell.js +1 -1
  223. package/dist/metric-stack.js +1 -1
  224. package/dist/motion-core.js +42 -39
  225. package/dist/motion-curves.js +20 -14
  226. package/dist/motion.js +226 -26
  227. package/dist/notification.js +1 -1
  228. package/dist/number-field.js +1 -1
  229. package/dist/pager-dots.js +1 -1
  230. package/dist/paper-backdrop.js +1 -1
  231. package/dist/paper-grid.js +315 -342
  232. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  233. package/dist/popover.js +1 -1
  234. package/dist/{presets-CvOUqtdY.js → presets-QvYgnFIZ.js} +13 -12
  235. package/dist/progress.js +1 -1
  236. package/dist/pulse.js +1 -1
  237. package/dist/reactive.js +2 -2
  238. package/dist/{resolveCanvasColor-yPyIpJt9.js → resolveCanvasColor-DsSJk06I.js} +5 -5
  239. package/dist/scrolling-text.js +1 -1
  240. package/dist/search.js +7 -7
  241. package/dist/select.js +3 -3
  242. package/dist/selectable-chip.js +18 -35
  243. package/dist/separator.js +1 -1
  244. package/dist/{sheet-B2flBfLH.js → sheet-DUCIoOe0.js} +3 -3
  245. package/dist/sheet.js +1 -1
  246. package/dist/sidebar.js +1 -1
  247. package/dist/slider-CcICPe3u.js +149 -0
  248. package/dist/slider.js +1 -1
  249. package/dist/sortable-list.js +3 -3
  250. package/dist/{spectrum-walk-BVzA7Biz.js → spectrum-walk-cBNSx_zm.js} +1 -1
  251. package/dist/springPresets-DfoQ6XRY.js +64 -0
  252. package/dist/stacked-icons.js +54 -39
  253. package/dist/styles/cards.css +202 -2
  254. package/dist/styles/components.css +1 -3
  255. package/dist/styles/configurator.css +172 -7
  256. package/dist/styles/critical-partition.mjs +35 -2
  257. package/dist/styles/deferred.css +2 -0
  258. package/dist/styles/dock/adaptive-legibility.css +119 -0
  259. package/dist/styles/dock/density.css +18 -10
  260. package/dist/styles/dock/fission-bridge.css +552 -0
  261. package/dist/styles/dock/layers.css +88 -124
  262. package/dist/styles/dock/morph-bridge.css +15 -2
  263. package/dist/styles/dock/morph.css +45 -114
  264. package/dist/styles/dock/shape.css +137 -11
  265. package/dist/styles/dock/shell.css +1 -3
  266. package/dist/styles/dock/stack-rail.css +95 -7
  267. package/dist/styles/dock-controls/icon-button.css +34 -2
  268. package/dist/styles/dock-controls/triggers.css +23 -1
  269. package/dist/styles/dock-controls.css +18 -0
  270. package/dist/styles/dock.css +16 -1
  271. package/dist/styles/drawer.css +166 -0
  272. package/dist/styles/glass/glass-atom.css +244 -0
  273. package/dist/styles/glass/glass-capsule.css +143 -0
  274. package/dist/styles/glass/glass-chip.css +215 -0
  275. package/dist/styles/glass/liquid-enter.css +252 -0
  276. package/dist/styles/glass/liquid-morph.css +850 -0
  277. package/dist/styles/glass/material.css +70 -1
  278. package/dist/styles/glass/reveal.css +22 -2
  279. package/dist/styles/glass/rim.css +13 -1
  280. package/dist/styles/glass/surfaces.css +18 -8
  281. package/dist/styles/glass.css +11 -0
  282. package/dist/styles/icon-chip.css +45 -0
  283. package/dist/styles/index.css +11 -0
  284. package/dist/styles/jubilance.css +65 -0
  285. package/dist/styles/motion/morph-field.css +229 -0
  286. package/dist/styles/paper.css +230 -14
  287. package/dist/styles/scroll-choreography.css +135 -78
  288. package/dist/styles/segmented-tabs.css +85 -51
  289. package/dist/styles/select.css +151 -0
  290. package/dist/styles/tokens/color-radius.css +1 -1
  291. package/dist/styles/tokens/dark-arm.css +57 -8
  292. package/dist/styles/tokens/glass-deep.css +8 -4
  293. package/dist/styles/tokens/glass-fx.css +80 -2
  294. package/dist/styles/tokens/glass.css +140 -8
  295. package/dist/styles/tokens/light-dark.css +2 -2
  296. package/dist/styles/tokens/property-regs.css +144 -0
  297. package/dist/styles/tokens/scale-paper.css +20 -8
  298. package/dist/styles/tokens/scheme-motion.css +92 -157
  299. package/dist/styles/tokens/scheme-spring.css +239 -0
  300. package/dist/styles/tokens/scroll-tokens.css +15 -15
  301. package/dist/styles/tokens/shadow.css +73 -13
  302. package/dist/styles/tokens.css +9 -2
  303. package/dist/styles/utilities/btn.css +70 -0
  304. package/dist/switch.js +1 -1
  305. package/dist/tabs.js +198 -181
  306. package/dist/timeline.js +241 -206
  307. package/dist/toast.js +1 -1
  308. package/dist/toggle-chip.js +14 -41
  309. package/dist/toggle-group.js +1 -1
  310. package/dist/tooltip.js +1 -1
  311. package/dist/typewriter.js +1 -1
  312. package/dist/{uniformBridgeWGPU-CtAKl45L.js → uniformBridgeWGPU-BCse1SHU.js} +191 -127
  313. package/dist/{useAnimatedNumber-CLrxicG9.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  314. package/dist/{useConfiguratorState-4xblKfwd.js → useConfiguratorState-22BcULzF.js} +37 -35
  315. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  316. package/dist/{useDragMorph-BUgAC-zK.js → useDragMorph-DGLSewwB.js} +2 -2
  317. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  318. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  319. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  320. package/dist/{useViewTransition-CUI1nAgn.js → useHaptic-CPz5BT9I.js} +40 -1
  321. package/dist/{useLiquidFlex-UmA6LMZu.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  322. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  323. package/dist/useMorphField-ogBM7ubT.js +141 -0
  324. package/dist/{useScrollChrome-D66AVP7C.js → useScrollChrome-JuImi1DM.js} +2 -2
  325. package/dist/{useSpringMount-BWDnKIwh.js → useSpringMount-DFxtzmkR.js} +1 -1
  326. package/dist/{useSpringPress-B1-Czp-V.js → useSpringPress-VM9RgVq3.js} +1 -1
  327. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  328. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  329. package/dist/virtual.js +1 -1
  330. package/dist/watercolor-dot.js +16 -26
  331. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  332. package/package.json +14 -3
  333. package/src/styles/cards.css +202 -2
  334. package/src/styles/configurator.css +172 -7
  335. package/src/styles/critical-partition.mjs +35 -2
  336. package/src/styles/dock/adaptive-legibility.css +119 -0
  337. package/src/styles/dock/density.css +18 -10
  338. package/src/styles/dock/fission-bridge.css +552 -0
  339. package/src/styles/dock/layers.css +88 -124
  340. package/src/styles/dock/morph-bridge.css +15 -2
  341. package/src/styles/dock/morph.css +45 -114
  342. package/src/styles/dock/shape.css +137 -11
  343. package/src/styles/dock/shell.css +1 -3
  344. package/src/styles/dock/stack-rail.css +95 -7
  345. package/src/styles/dock-controls/icon-button.css +34 -2
  346. package/src/styles/dock-controls/triggers.css +23 -1
  347. package/src/styles/dock-controls.css +18 -0
  348. package/src/styles/dock.css +16 -1
  349. package/src/styles/drawer.css +164 -0
  350. package/src/styles/glass/glass-atom.css +244 -0
  351. package/src/styles/glass/glass-capsule.css +143 -0
  352. package/src/styles/glass/glass-chip.css +215 -0
  353. package/src/styles/glass/liquid-enter.css +252 -0
  354. package/src/styles/glass/liquid-morph.css +850 -0
  355. package/src/styles/glass/material.css +70 -1
  356. package/src/styles/glass/reveal.css +22 -2
  357. package/src/styles/glass/rim.css +13 -1
  358. package/src/styles/glass/surfaces.css +18 -8
  359. package/src/styles/glass.css +11 -0
  360. package/src/styles/icon-chip.css +45 -0
  361. package/src/styles/index.css +11 -0
  362. package/src/styles/jubilance.css +65 -0
  363. package/src/styles/motion/morph-field.css +229 -0
  364. package/src/styles/paper.css +230 -14
  365. package/src/styles/scroll-choreography.css +135 -78
  366. package/src/styles/segmented-tabs.css +85 -47
  367. package/src/styles/select.css +151 -0
  368. package/src/styles/tokens/color-radius.css +1 -1
  369. package/src/styles/tokens/dark-arm.css +57 -8
  370. package/src/styles/tokens/glass-deep.css +8 -4
  371. package/src/styles/tokens/glass-fx.css +80 -2
  372. package/src/styles/tokens/glass.css +140 -8
  373. package/src/styles/tokens/light-dark.css +2 -2
  374. package/src/styles/tokens/property-regs.css +144 -0
  375. package/src/styles/tokens/scale-paper.css +20 -8
  376. package/src/styles/tokens/scheme-motion.css +92 -157
  377. package/src/styles/tokens/scheme-spring.css +239 -0
  378. package/src/styles/tokens/scroll-tokens.css +15 -15
  379. package/src/styles/tokens/shadow.css +73 -13
  380. package/src/styles/tokens.css +9 -2
  381. package/src/styles/utilities/btn.css +70 -0
  382. package/dist/DialogContent-6JtTB5x2.js +0 -106
  383. package/dist/PagerDots-Cjx96la-.js +0 -98
  384. package/dist/PaperBackdrop-CqwjnfLv.js +0 -31
  385. package/dist/badge-D9XWW4GT.js +0 -53
  386. package/dist/button-5dY1Dvhd.js +0 -125
  387. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -85
  388. package/dist/createCanvasLifecycle-Gh45Ce-p.js +0 -93
  389. package/dist/dockContext-BNfyPLe9.js +0 -17
  390. package/dist/slider-2A0rPn79.js +0 -142
  391. package/dist/springPresets-Ce7OYCm9.js +0 -46
  392. package/dist/useDockCtaReceive-DfFkmgL1.js +0 -82
  393. package/dist/useGpuSubstrate-4pTcp6mX.js +0 -294
  394. package/dist/useLiquidPress-BooG97RY.js +0 -39
  395. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  396. /package/dist/{DialogFooter-9phqcRIS.js → DialogFooter-DoLy0ewI.js} +0 -0
  397. /package/dist/{InstrumentChassis-CxsHSyMj.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  398. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  399. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  400. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  401. /package/dist/{SelectSeparator-C2UGOkXF.js → SelectSeparator-CNRGG7Ew.js} +0 -0
  402. /package/dist/{Separator-DQcwC2TR.js → Separator-Cf9-JFgi.js} +0 -0
  403. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  404. /package/dist/{color-Cs0-oxYL.js → color-B9jZdhJX.js} +0 -0
  405. /package/dist/{compile-nZ1xVYTp.js → compile-INR_tPk_.js} +0 -0
  406. /package/dist/{constants--C2DkLW8.js → constants-BWj7DkMn.js} +0 -0
  407. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  408. /package/dist/{dotMatrixField-D_x9_1qq.js → dotMatrixField-CRO0ZFk4.js} +0 -0
  409. /package/dist/{flow.glsl-B2P7e0MT.js → flow.glsl-DqEGRpl4.js} +0 -0
  410. /package/dist/{math-Eb0w3LqU.js → math-5RcIgCB4.js} +0 -0
  411. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  412. /package/dist/{prng-B-d9eYX8.js → prng-B5tIXTtj.js} +0 -0
  413. /package/dist/{procedural-color.wgsl-m7Zgv35j.js → procedural-color.wgsl-C1Y5PkM6.js} +0 -0
  414. /package/dist/{scrollReader-DI1NWxUw.js → scrollReader-rc3Ns_NM.js} +0 -0
  415. /package/dist/{useControlSize-SH1UmJCi.js → useControlSize-DAZ062x7.js} +0 -0
  416. /package/dist/{useFuzzySearch-DIhcYtcw.js → useFuzzySearch-0fTYOhS4.js} +0 -0
  417. /package/dist/{useGlobalDark-CmjB9E32.js → useGlobalDark-B4HO9LXG.js} +0 -0
  418. /package/dist/{useIntersectionPause-Dbozzjgm.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  419. /package/dist/{useInterval-CNdua40W.js → useInterval-BVUI-sez.js} +0 -0
  420. /package/dist/{useKeyboardShortcuts-BPRp33Im.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  421. /package/dist/{usePointerVelocityField-QLsy3_kv.js → usePointerVelocityField-BrkqZFhj.js} +0 -0
  422. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  423. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  424. /package/dist/{useScrollProgress-c3yxmH6a.js → useScrollProgress-A0M6qRl7.js} +0 -0
  425. /package/dist/{useSortable-BVqlJRBR.js → useSortable-DQV_UNDw.js} +0 -0
  426. /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-Bma3UlKA.js} +0 -0
  427. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  428. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  429. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  430. /package/dist/{vReveal-D9k0jADx.js → vReveal-CT1KtwZA.js} +0 -0
@@ -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,114 +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
- /* BC.W-LIQUID-MORPH — the SCALE FLOOR (the white morph can never paint). A
65
- degenerate `from:0`/`to:0` measurement (the BA-VJS-1 nested-group race)
66
- drives `--dock-morph-ratio` to 0 → `scaleX(0)` at t=0 → the zero-width void
67
- `overflow: clip` blanks (the white/invisible morph, glass-dock-codebase.md
68
- §2.2 fix (2)). Flooring the scale at ~6% bottoms a degenerate ratio at a
69
- thin-but-VISIBLE glass sliver (clipped, but never white), recovered by the
70
- next correct measurement one frame later. A SAFETY NET: a real measurement is
71
- always well above 6%, so the `max()` is inert on the healthy path (the
72
- gestalt of a healthy morph is byte-unchanged). */
73
- --dock-morph-scale: max(
74
- calc(
75
- var(--dock-morph-ratio) +
76
- (1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
77
- ),
78
- 0.06
80
+ --dock-size-scale: clamp(
81
+ 0.06,
82
+ calc(var(--dock-live) / max(var(--dock-expanded-px, 1px), 1px)),
83
+ 1
79
84
  );
80
- /* The box RESERVES its settled `to` footprint — a single layout solve, NOT
81
- the live scalar calc. The transform composites over it.
82
- BC.W-LIQUID-MORPH — the RESERVE FLOOR: `max(var(--dock-morph-to),
83
- var(--dock-morph-min))` so a `to:0` measurement reserves the collapsed-pill
84
- minimum (~44px), never a zero-width box (the white morph root). Inert above
85
- the floor on every healthy measurement. */
86
- inline-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
87
- transform: scaleX(var(--dock-morph-scale));
88
- transform-origin: left center;
85
+ transform-origin: center center;
89
86
  will-change: transform;
90
87
  }
91
88
 
92
- /* BC.W-DOCK-ROOT-MORPH — the ROOT box rides the scalar (THE snap fix). The inner
93
- `.dock-layers` above reserves its settled `to` + morphs via `scaleX()` (paint-
94
- only), so the root `.glass-dock` (inline-flex) shrink-wraps to that reserved full
95
- `to` and SNAPS on frame 0 while the inner scales smoothly — yet the gate + the
96
- page reflow both read the ROOT box. The orchestrator (dockMorphContext.ts)
97
- measures + writes the root's own `--dock-root-morph-{from,to}` px span; this
98
- drives the morph-axis size as a `calc()` of the SAME `--dock-morph-t` scalar the
99
- spring glides — NOT a `transition: width` (proof:no-layout-animation stays GREEN;
100
- a `calc()` over the scalar is not a transition). The span is armed inline ONLY by
101
- the outer collapse↔expand swap; a nested-only pane-swap leaves it unset → the
102
- fallback-less `var()` invalidates the rule → the box returns to its at-rest
103
- shrink-wrap (the inert path). Horizontal morphs `inline-size`, vertical morphs
104
- `block-size` (matching the orchestrator's `morphAxisProp` axis pick). */
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. */
105
95
  .glass-dock[data-morphing]:not(.vertical) {
106
- inline-size: calc(
107
- var(--dock-root-morph-from) +
108
- (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
109
- var(--dock-morph-t, 0)
110
- );
96
+ inline-size: var(--dock-expanded-px);
111
97
  }
112
98
  .glass-dock[data-morphing].vertical {
113
- block-size: calc(
114
- var(--dock-root-morph-from) +
115
- (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
116
- var(--dock-morph-t, 0)
117
- );
118
- }
119
-
120
- /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
121
- BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
122
- measures/writes the same `--dock-morph-from/to` span on the block axis
123
- (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
124
- vertical→`block-size`).
125
- BB.W-DOCK-MORPH-FAMILY (a)/(b) — the vertical box reserves its settled `to`
126
- BLOCK footprint + composites a `scaleY()` over it on the SAME `--dock-morph-t`
127
- scalar (the inverse axis of the horizontal `scaleX`), `transform-origin` at the
128
- block-start pinned edge. NO live-scalar `block-size` calc → no per-frame
129
- relayout on the vertical axis either. */
130
- .glass-dock.vertical[data-morphing] .dock-layers {
131
- inline-size: auto;
132
- /* BC.W-LIQUID-MORPH — the vertical RESERVE FLOOR (the inverse axis twin of the
133
- horizontal floor above): a `to:0` block measurement reserves the collapsed-pill
134
- minimum, never a zero-height void. Inert above the floor on every healthy read. */
135
- block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
136
- transform: scaleY(var(--dock-morph-scale));
137
- transform-origin: center top;
138
- will-change: transform;
139
- }
140
-
141
- /* A vertical inner group morphs the BLOCK axis — the same settled-footprint
142
- reserve + `scaleY()` composite over it. */
143
- .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
144
- inline-size: auto;
145
- /* BC.W-LIQUID-MORPH — the nested vertical group's reserve is floored too. */
146
- block-size: max(var(--dock-morph-to), var(--dock-morph-min, 2.75rem));
147
- transform: scaleY(var(--dock-morph-scale));
148
- transform-origin: center top;
149
- will-change: transform;
99
+ block-size: var(--dock-expanded-px);
150
100
  }
151
101
 
152
102
  /* The inner DockLayerGroup stack has no collapsed/expanded class, so its
@@ -326,7 +276,10 @@
326
276
  .glass-dock[data-morphing] .dock-layer-item-host.is-active > * {
327
277
  --dock-stagger-window: var(--dock-stagger-window-size, 0.55);
328
278
  --dock-stagger-onset: 0;
329
- 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(
330
283
  0,
331
284
  calc(
332
285
  (var(--dock-expand-t, 1) - var(--dock-stagger-onset)) /
@@ -334,11 +287,14 @@
334
287
  ),
335
288
  1
336
289
  );
337
- translate: 0
338
- calc(
339
- (1 - clamp(0, calc((var(--dock-expand-t, 1) - var(--dock-stagger-onset)) / var(--dock-stagger-window)), 1)) *
340
- var(--dock-stagger-rise, 4px)
341
- );
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;
342
298
  }
343
299
 
344
300
  /* AX.W02 — per-child onsets off the ONE `--dock-stagger-step` token. Each
@@ -353,26 +309,34 @@
353
309
  collapse this to a single declaration, but it is not yet Baseline across
354
310
  Safari/Firefox — the token-keyed nth-child set is the cross-engine form, and
355
311
  the magic ladder is gone either way.) */
356
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(2),
357
- .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 *) {
358
326
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 1);
359
327
  }
360
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(3),
361
- .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 *) {
362
333
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 2);
363
334
  }
364
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(4),
365
- .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) {
366
338
  --dock-stagger-onset: calc(var(--dock-stagger-step) * 3);
367
339
  }
368
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(5),
369
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(5) {
370
- --dock-stagger-onset: calc(var(--dock-stagger-step) * 4);
371
- }
372
- .glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(n + 6),
373
- .glass-dock[data-morphing] .dock-layer-item-host.is-active > *:nth-child(n + 6) {
374
- --dock-stagger-onset: calc(var(--dock-stagger-step) * 5);
375
- }
376
340
 
377
341
  /* AW.W2 — the at-rest clip-lift moved to `.expanded:not([data-morphing])` /
378
342
  `.always-expanded:not([data-morphing])` (the clip-shell block at the top).
@@ -109,10 +109,17 @@
109
109
  .dock-morph-bridge-plate--vertical {
110
110
  width: var(--dock-bridge-v-w, 3.25rem);
111
111
  height: var(--dock-bridge-v-h, 16rem);
112
- /* the block-axis inset travel: 0 → (half the reserved height − half the width)
113
- so the necked silhouette is ~a circle (the width) at t=0.5. */
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;
114
120
  --dock-bridge-v-neck: calc(
115
121
  (var(--dock-bridge-v-h, 16rem) - var(--dock-bridge-v-w, 3.25rem)) / 2 *
122
+ var(--morph-neck-frac) *
116
123
  clamp(0, calc(var(--dock-morph-t, 0) * 2), 1)
117
124
  );
118
125
  clip-path: inset(
@@ -136,8 +143,14 @@
136
143
  /* the inline-axis inset travel: (half the reserved width − half the height) at
137
144
  t=0.5 → 0 at t=1, so the necked silhouette is ~a circle (the height) at the
138
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;
139
151
  --dock-bridge-h-neck: calc(
140
152
  (var(--dock-bridge-h-w, 18rem) - var(--dock-bridge-h-h, 3.25rem)) / 2 *
153
+ var(--morph-neck-frac) *
141
154
  (1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1))
142
155
  );
143
156
  clip-path: inset(
@@ -76,8 +76,20 @@
76
76
  --dock-reveal-blur: 0px; /* resting: CRISP — no own-pixel self-blur */
77
77
  }
78
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))));
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 */
87
+ filter: blur(
88
+ calc(
89
+ var(--dock-reveal-blur) *
90
+ clamp(0, calc((0.5 - var(--dock-expand-t, 1)) / 0.5), 1)
91
+ )
92
+ );
81
93
  }
82
94
 
83
95
  /* The morphing root chrome — background / border-color interpolate between the
@@ -94,7 +106,8 @@
94
106
  .glass-dock:not(.vertical) {
95
107
  /* AY.W-A11Y-PERF O-1 / AZ.W-ADAPTIVE-AUTO Arm 1 — BOTH morph endpoints compose
96
108
  the W55 oklab adaptive tint so the self-engage darken (the unconditional
97
- `: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
98
111
  `--glass-tint-source`/`--glass-tint-strength`) reaches the LIVE
99
112
  horizontal dock surface in BOTH the expanded AND the COLLAPSED look (this
100
113
  0,3,0 morph interp OVERRIDES the 0,1,0 shell.css bg, so the tint must be
@@ -326,6 +339,27 @@
326
339
  margin-inline-start: 0;
327
340
  }
328
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
+
329
363
  /* AW.W3 — the collapsed-hover scale rides the unified dock spring vocabulary.
330
364
  The `scale var(--dock-motion-resize)` arm was added to the `.glass-dock`
331
365
  root transition above, so this hover scale settles on the SAME spring curve
@@ -383,117 +417,14 @@
383
417
  box-shadow var(--duration-fast) var(--ease-standard);
384
418
  }
385
419
 
386
- /* AQ.W3 §W3.1b — open-descendant surface response. When a dock-hosted
387
- trigger (`[data-state="open"]`) is open, the dock root holds its elevated
388
- read natively (no consumer JS). Idempotent with `[data-held]` above (same
389
- floating paint, different trigger). Decorative; `:has()` Baseline Widely. */
390
- .glass-dock:has([data-state="open"]) {
391
- /* AX.W55 — same oklab tint wrapper as `[data-held]` (zero-delta at rest). */
392
- background: color-mix(
393
- in oklab,
394
- var(--glass-bg-floating, var(--glass-bg-resting)),
395
- var(--glass-tint-source) var(--glass-tint-strength)
396
- );
397
- border-color: var(--glass-border-floating, var(--glass-border-resting));
398
- }
399
-
400
- /* ── Adaptive legibility: SELF-ENGAGE the dock over a light backdrop by default
401
- (AZ.W-ADAPTIVE-AUTO Arm 1 — the literal G2 surface; "Glass dock over VERY
402
- LIGHT materials is unreadable, darken DYNAMICALLY like iOS 27") ─────────────
403
- The dock floats over WHATEVER the consumer painted — frequently a light/near-
404
- white app surface (the canonical G2 case the user reported). AY.W-A11Y-PERF
405
- O-1 set `--glass-backdrop: light` on the dock's OWN root (shell.css) intending
406
- a self-darken, but CSS style queries NEVER self-match (the `@container
407
- style()` block below reads an ANCESTOR — verified on Chrome 148), so the
408
- self-declaration was a NO-OP. This `:where(.glass-dock)` rule is the genuine
409
- UNCONDITIONAL self-engage — mirroring the overlay band's `ladder.css:169` —
410
- re-pointing the INHERITING tint tokens DIRECTLY on the dock root so the
411
- shell (`--glass-bg-dock`), chassis-strip, and held/open tiers (which compose
412
- the oklab tint AT THE ELEMENT — the substitution-vs-inheritance-safe targets)
413
- darken toward warm-ink in lockstep. `--dock-fg-on-aurora` re-points to the
414
- warm-ink here too — ONE reconciled path, the foreground twin folded in (it
415
- reaches the dock CONTROLS' glyph/label color). Over a DARK page the darken is
416
- sub-perceptual; a dark-substrate consumer opts out via `--glass-tint-strength:
417
- 0%` on the dock root. The morph-root interp (`.glass-dock:not(.vertical)`
418
- above) stays `color-mix(in srgb …)` for the transition — the adaptive darken
419
- rides its RESTING endpoint (`--glass-bg-dock`), the in-flight morph frames are
420
- sub-perceptual (the ratified resting-endpoint-only default). The muted body
421
- register lifts to the full warm-ink under the engaged plate (the muted L40
422
- tier cannot clear 4.5:1 on a translucent darkened plate — darkening moves the
423
- plate TOWARD muted's own luminance; the low-contrast muted register is
424
- inappropriate over a busy glass plate, so it resolves to the legible dark
425
- ink, which clears ~10:1). */
426
- :where(.glass-dock) {
427
- --glass-tint-source: var(--glass-tint-ink);
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
- );
445
- --dock-fg-on-aurora: var(--glass-tint-ink);
446
- --muted-foreground: var(--foreground);
447
- }
448
-
449
- /* The ancestor-querying `@container` block KEPT — it reaches the DESCENDANT
450
- nested-glass surfaces inside a dock when a consumer marks `--glass-backdrop:
451
- light` on the dock's ancestor (the self-engage above re-points only the dock
452
- root's own inheriting tokens; a consumer's explicit ancestor bucket still
453
- cascades to nested glass through this block). */
454
- @container style(--glass-backdrop: light) {
455
- .glass-dock {
456
- --glass-tint-source: var(--glass-tint-ink);
457
- --glass-tint-strength: var(--glass-tint-strength-aa);
458
- --dock-fg-on-aurora: var(--glass-tint-ink);
459
- }
460
- }
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. */
461
428
 
462
- /* AX.W55 — the `contrast-color()` flip for the dock control foreground (Chrome
463
- 147+/Safari 26+; progressive enhancement, NEVER the load-bearing floor). The
464
- declarative bucket above already carries AA on all engines (it darkens the dock
465
- plate so the warm-dark `--dock-fg-on-aurora` clears ~17:1 over white at the 18%
466
- floor). On a supporting engine `contrast-color()` REFINES the control ink,
467
- anchored on the LIGHT BACKDROP signal (`--card`, the warm-white surface base the
468
- bright bucket implies) — `contrast-color(var(--card))` resolves to the legible
469
- DARK ink. Anchoring on the dark ink instead inverts to white (illegible on the
470
- still-light dock plate), so the anchor is the light surface, matching the rung
471
- refinement in glass.css. The bucket is the floor; this is the native pick. */
472
- @supports (color: contrast-color(white)) {
473
- /* The SELF-ENGAGED dock refinement (the unconditional self-engage above);
474
- progressive enhancement only — the declarative darken is the AA floor. */
475
- :where(.glass-dock) {
476
- --dock-fg-on-aurora: contrast-color(var(--card));
477
- --muted-foreground: contrast-color(var(--card));
478
- }
479
- @container style(--glass-backdrop: light) {
480
- .glass-dock {
481
- --dock-fg-on-aurora: contrast-color(var(--card));
482
- }
483
- }
484
- }
485
429
  }
486
430
 
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
- }