@mkbabb/glass-ui 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
  4. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
  7. package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
  8. package/dist/DialogFooter-9phqcRIS.js +80 -0
  9. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  10. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  11. package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
  12. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
  13. package/dist/Input-Cg9DF62r.js +57 -0
  14. package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
  15. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  16. package/dist/PagerDots-Cjx96la-.js +98 -0
  17. package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
  18. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
  19. package/dist/Separator-DQcwC2TR.js +44 -0
  20. package/dist/Switch-B8RscmRu.js +49 -0
  21. package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
  22. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
  23. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  24. package/dist/animated-digit.js +1 -1
  25. package/dist/api/index.d.ts +15 -32
  26. package/dist/api/types-extra.d.ts +31 -0
  27. package/dist/api.js +1 -1
  28. package/dist/aurora.js +579 -251
  29. package/dist/border-progress.js +49 -57
  30. package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
  31. package/dist/button.js +1 -1
  32. package/dist/canvas.js +2 -3
  33. package/dist/card.js +1 -1
  34. package/dist/carousel.js +20 -20
  35. package/dist/color-Cs0-oxYL.js +116 -0
  36. package/dist/color.js +2 -2
  37. package/dist/command.js +1 -1
  38. package/dist/completion-seal.d.ts +1 -0
  39. package/dist/completion-seal.js +89 -0
  40. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  41. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  42. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  43. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  44. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
  45. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  46. package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
  47. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  48. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  50. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  51. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  52. package/dist/components/custom/border-progress/index.d.ts +1 -1
  53. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  54. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  55. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  56. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  57. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +7 -0
  58. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
  59. package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
  60. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
  61. package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
  62. package/dist/components/custom/concentric/constants.d.ts +30 -6
  63. package/dist/components/custom/concentric/index.d.ts +2 -2
  64. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  65. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  66. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  67. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  68. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  69. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  70. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  71. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  72. package/dist/components/custom/constellation/constants.d.ts +33 -0
  73. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  74. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  75. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  76. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  77. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  78. package/dist/components/custom/constellation/index.d.ts +5 -5
  79. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  80. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  81. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  82. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  83. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  84. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  85. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  86. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  87. package/dist/components/custom/deck/constants.d.ts +14 -0
  88. package/dist/components/custom/deck/index.d.ts +8 -0
  89. package/dist/components/custom/dock/DockIconButton.vue.d.ts +12 -0
  90. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  91. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  92. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +80 -0
  93. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  94. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  95. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  96. package/dist/components/custom/dock/constants.d.ts +18 -14
  97. package/dist/components/custom/dock/index.d.ts +5 -2
  98. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  99. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
  100. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
  101. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  102. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
  103. package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
  104. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  105. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  106. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
  107. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
  108. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  109. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  110. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  111. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  112. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  113. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  114. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  115. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  116. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  117. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  118. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  119. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  120. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
  121. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  122. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  123. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  124. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +40 -37
  125. package/dist/components/custom/fourier-field/constants.d.ts +61 -4
  126. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  127. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  128. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  129. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  130. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  131. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  132. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  133. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  134. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  135. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  136. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  137. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  138. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  139. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  140. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  141. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  142. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  143. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  144. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  145. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  146. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  147. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  148. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  149. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  150. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  151. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  152. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  153. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  154. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  155. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  156. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  157. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  158. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  159. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  160. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  161. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  162. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  163. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  164. package/dist/components/custom/search/index.d.ts +2 -0
  165. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  166. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  167. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  168. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  169. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  170. package/dist/components/custom/split-chars/index.d.ts +1 -0
  171. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  172. package/dist/components/custom/tabs/constants.d.ts +20 -2
  173. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
  174. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  175. package/dist/components/ui/_shared/index.d.ts +2 -0
  176. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  177. package/dist/components/ui/button/index.d.ts +1 -1
  178. package/dist/components/ui/card/Card.vue.d.ts +45 -0
  179. package/dist/components/ui/card/index.d.ts +1 -1
  180. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  181. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  182. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  183. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  184. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  185. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  186. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  187. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  188. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  189. package/dist/components/ui/select/SelectContent.vue.d.ts +3 -0
  190. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  191. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  192. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  193. package/dist/composables/color/index.d.ts +2 -0
  194. package/dist/composables/color/useAccentTone.d.ts +34 -0
  195. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  196. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  197. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  198. package/dist/composables/glass/webgpu/index.d.ts +1 -1
  199. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
  200. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
  201. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  202. package/dist/composables/motion/core/index.d.ts +3 -0
  203. package/dist/composables/motion/scrollReader.d.ts +25 -0
  204. package/dist/composables/motion/springPresets.d.ts +20 -1
  205. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  206. package/dist/composables/motion/useDockCtaReceive.d.ts +31 -6
  207. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  208. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  209. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  210. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  211. package/dist/composables/sidebar/index.d.ts +4 -1
  212. package/dist/composables/sidebar/types.d.ts +68 -3
  213. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  214. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  215. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  216. package/dist/composables/virtual/index.d.ts +4 -0
  217. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  218. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  219. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  220. package/dist/concentric.js +495 -221
  221. package/dist/configurator.js +2 -2
  222. package/dist/confirm-dialog.js +62 -47
  223. package/dist/constellation.js +635 -235
  224. package/dist/context-menu.js +2 -2
  225. package/dist/controls.js +1 -1
  226. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  227. package/dist/dark.js +1 -1
  228. package/dist/data-table.js +1 -1
  229. package/dist/deck.d.ts +1 -0
  230. package/dist/deck.js +105 -0
  231. package/dist/dialog.js +4 -3
  232. package/dist/dock.js +602 -458
  233. package/dist/dot-flow-field.js +580 -290
  234. package/dist/dot-matrix.d.ts +1 -0
  235. package/dist/dot-matrix.js +630 -0
  236. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  237. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
  238. package/dist/dropdown-menu.js +1 -1
  239. package/dist/easing.js +188 -176
  240. package/dist/expandable-container.js +42 -20
  241. package/dist/fading-scroll.js +1 -1
  242. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  243. package/dist/forms.js +62 -60
  244. package/dist/fourier-field.js +825 -178
  245. package/dist/fourier-math.js +1 -1
  246. package/dist/glass-ui.css +1 -1
  247. package/dist/glass-ui.js +145 -104
  248. package/dist/goo-blob.js +171 -1228
  249. package/dist/goo-dot-matrix.d.ts +1 -0
  250. package/dist/goo-dot-matrix.js +591 -0
  251. package/dist/handmark.js +1 -1
  252. package/dist/hover-card.js +1 -1
  253. package/dist/hover-popover.js +1 -1
  254. package/dist/icon-chip.js +1 -1
  255. package/dist/icon-tooltip.js +1 -1
  256. package/dist/index.d.ts +2 -0
  257. package/dist/instrument-chassis.js +1 -1
  258. package/dist/keyboard.js +1 -1
  259. package/dist/labeled-field.js +70 -60
  260. package/dist/metric-cell.js +1 -1
  261. package/dist/metric-stack.js +11 -2
  262. package/dist/motion-core.js +54 -32
  263. package/dist/motion-curves.js +11 -1
  264. package/dist/motion.js +46 -111
  265. package/dist/notification.js +1 -1
  266. package/dist/number-field.js +1 -1
  267. package/dist/pager-dots.js +2 -91
  268. package/dist/paper-backdrop.js +1 -1
  269. package/dist/paper-grid.d.ts +1 -0
  270. package/dist/paper-grid.js +788 -0
  271. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  272. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
  273. package/dist/progress.js +1 -1
  274. package/dist/pulse.js +1 -1
  275. package/dist/reactive.js +1 -1
  276. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
  277. package/dist/scrollReader-DI1NWxUw.js +42 -0
  278. package/dist/scrolling-text.js +1 -1
  279. package/dist/search.js +160 -304
  280. package/dist/select.js +3 -3
  281. package/dist/selectable-chip.d.ts +1 -0
  282. package/dist/selectable-chip.js +65 -0
  283. package/dist/separator.js +1 -1
  284. package/dist/{sheet-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
  285. package/dist/sheet.js +1 -1
  286. package/dist/sidebar.js +216 -114
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +1 -1
  289. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  290. package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
  291. package/dist/styles/animations.css +13 -3
  292. package/dist/styles/cards.css +69 -0
  293. package/dist/styles/completion-seal.css +131 -0
  294. package/dist/styles/components.css +2 -3
  295. package/dist/styles/configurator.css +55 -0
  296. package/dist/styles/critical-partition.mjs +33 -11
  297. package/dist/styles/deferred.css +2 -0
  298. package/dist/styles/dock/cta-seat.css +87 -0
  299. package/dist/styles/dock/density.css +153 -0
  300. package/dist/styles/dock/layers.css +55 -7
  301. package/dist/styles/dock/morph-bridge.css +54 -18
  302. package/dist/styles/dock/morph.css +41 -33
  303. package/dist/styles/dock/overflow.css +12 -0
  304. package/dist/styles/dock/search.css +68 -0
  305. package/dist/styles/dock/shape.css +124 -0
  306. package/dist/styles/dock/shell.css +23 -5
  307. package/dist/styles/dock/stack-rail.css +264 -0
  308. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  309. package/dist/styles/dock-controls/icon-button.css +14 -0
  310. package/dist/styles/dock.css +11 -1
  311. package/dist/styles/glass/accent-tone.css +66 -0
  312. package/dist/styles/glass/control-surfaces.css +167 -0
  313. package/dist/styles/glass/ladder.css +67 -17
  314. package/dist/styles/glass/rim.css +19 -9
  315. package/dist/styles/glass/surfaces.css +69 -148
  316. package/dist/styles/glass.css +10 -0
  317. package/dist/styles/index.css +15 -0
  318. package/dist/styles/scroll-chrome.css +123 -0
  319. package/dist/styles/scroll-driven.css +38 -0
  320. package/dist/styles/segmented-tabs.css +50 -14
  321. package/dist/styles/theme/bridges.css +22 -0
  322. package/dist/styles/theme/radius.css +18 -1
  323. package/dist/styles/tokens/color-radius.css +13 -3
  324. package/dist/styles/tokens/dark-arm.css +39 -6
  325. package/dist/styles/tokens/glass-deep.css +28 -3
  326. package/dist/styles/tokens/glass-fx.css +44 -1
  327. package/dist/styles/tokens/glass.css +91 -31
  328. package/dist/styles/tokens/light-dark.css +1 -1
  329. package/dist/styles/tokens/offsets.css +27 -0
  330. package/dist/styles/tokens/property-regs.css +133 -0
  331. package/dist/styles/tokens/scale-paper.css +73 -29
  332. package/dist/styles/tokens/scheme-motion.css +44 -6
  333. package/dist/styles/tokens/sizing-config.css +110 -0
  334. package/dist/styles/tokens/sizing.css +55 -104
  335. package/dist/styles/tokens.css +5 -0
  336. package/dist/styles/typography/semantic.css +18 -5
  337. package/dist/styles/utilities/a11y-overrides.css +20 -5
  338. package/dist/styles/utilities/base-misc.css +52 -0
  339. package/dist/styles/utilities/btn.css +14 -3
  340. package/dist/styles/utilities/components.css +31 -6
  341. package/dist/styles/utilities/metal.css +26 -0
  342. package/dist/switch.js +1 -1
  343. package/dist/tabs.js +8 -8
  344. package/dist/timeline.js +1 -1
  345. package/dist/toast.js +1 -1
  346. package/dist/toggle-chip.js +10 -10
  347. package/dist/toggle-group.js +1 -1
  348. package/dist/tooltip.js +1 -1
  349. package/dist/typewriter.js +1 -1
  350. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  351. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  352. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
  353. package/dist/useControlSize-SH1UmJCi.js +9 -0
  354. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  355. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
  356. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  357. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  358. package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
  359. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  360. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  361. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
  362. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  363. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  364. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  365. package/dist/virtual.d.ts +1 -0
  366. package/dist/virtual.js +225 -0
  367. package/dist/watercolor-dot.js +116 -73
  368. package/package.json +127 -7
  369. package/src/styles/animations.css +13 -3
  370. package/src/styles/cards.css +69 -0
  371. package/src/styles/completion-seal.css +131 -0
  372. package/src/styles/configurator.css +55 -0
  373. package/src/styles/critical-partition.mjs +33 -11
  374. package/src/styles/dock/cta-seat.css +87 -0
  375. package/src/styles/dock/density.css +153 -0
  376. package/src/styles/dock/layers.css +55 -7
  377. package/src/styles/dock/morph-bridge.css +54 -18
  378. package/src/styles/dock/morph.css +41 -33
  379. package/src/styles/dock/overflow.css +12 -0
  380. package/src/styles/dock/search.css +68 -0
  381. package/src/styles/dock/shape.css +124 -0
  382. package/src/styles/dock/shell.css +23 -5
  383. package/src/styles/dock/stack-rail.css +264 -0
  384. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  385. package/src/styles/dock-controls/icon-button.css +14 -0
  386. package/src/styles/dock.css +11 -1
  387. package/src/styles/glass/accent-tone.css +66 -0
  388. package/src/styles/glass/control-surfaces.css +167 -0
  389. package/src/styles/glass/ladder.css +67 -17
  390. package/src/styles/glass/rim.css +19 -9
  391. package/src/styles/glass/surfaces.css +69 -148
  392. package/src/styles/glass.css +10 -0
  393. package/src/styles/index.css +15 -0
  394. package/src/styles/scroll-chrome.css +123 -0
  395. package/src/styles/scroll-driven.css +38 -0
  396. package/src/styles/segmented-tabs.css +50 -14
  397. package/src/styles/theme/bridges.css +22 -0
  398. package/src/styles/theme/radius.css +18 -1
  399. package/src/styles/tokens/color-radius.css +13 -3
  400. package/src/styles/tokens/dark-arm.css +39 -6
  401. package/src/styles/tokens/glass-deep.css +28 -3
  402. package/src/styles/tokens/glass-fx.css +44 -1
  403. package/src/styles/tokens/glass.css +91 -31
  404. package/src/styles/tokens/light-dark.css +1 -1
  405. package/src/styles/tokens/offsets.css +27 -0
  406. package/src/styles/tokens/property-regs.css +133 -0
  407. package/src/styles/tokens/scale-paper.css +73 -29
  408. package/src/styles/tokens/scheme-motion.css +44 -6
  409. package/src/styles/tokens/sizing-config.css +110 -0
  410. package/src/styles/tokens/sizing.css +55 -104
  411. package/src/styles/tokens.css +5 -0
  412. package/src/styles/typography/semantic.css +18 -5
  413. package/src/styles/utilities/a11y-overrides.css +20 -5
  414. package/src/styles/utilities/base-misc.css +52 -0
  415. package/src/styles/utilities/btn.css +14 -3
  416. package/src/styles/utilities/components.css +31 -6
  417. package/src/styles/utilities/metal.css +26 -0
  418. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  419. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  420. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  421. package/dist/Input-h9v5LeXf.js +0 -55
  422. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  423. package/dist/Separator-pKF0oA4M.js +0 -37
  424. package/dist/Switch-CwYNf8bo.js +0 -47
  425. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  426. package/dist/color-DweYl7pE.js +0 -86
  427. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  428. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  429. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  430. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  431. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  432. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  433. package/dist/styles/dock/rail-extend.css +0 -397
  434. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  435. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  436. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  437. package/src/styles/dock/rail-extend.css +0 -397
  438. /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
  439. /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
  440. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  441. /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  442. /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
  443. /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
  444. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
  445. /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
  446. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  447. /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
  448. /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
  449. /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.js} +0 -0
  450. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  451. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  452. /package/dist/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
  453. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  454. /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  455. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  456. /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
  457. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  458. /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
  459. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -0,0 +1,87 @@
1
+ /* dock/cta-seat.css — the `[data-cta-pending]` CTA-receive landing SEAT (BC.W-AX-DOCK-
2
+ * CTA-SEAT; the speedtest-AX BC-W2 + BC-W3 fold).
3
+ *
4
+ * THE MOVE. `useDockCtaReceive` (the BB.B2 morph half) flies an EXTERNAL CTA onto a
5
+ * dock control's rect; this partial makes the control it lands on a SEAT that was
6
+ * visibly RESERVED for it. While the CTA is in flight (or pending), the target dock
7
+ * control carries `data-cta-pending` (written by `setPending()` on the
8
+ * `useDockCtaReceive` return): the control shows a quiet dim GHOST (a placeholder
9
+ * awaiting its arrival) AND reserves its resting footprint from frame 0 so the dock
10
+ * box does NOT jump when the CTA lands. On `clearPending()` (the default hand-off
11
+ * fires it as the CTA lands) the attribute is removed and the seat REVEALS its real
12
+ * content with a plain `transition: opacity` FLIP.
13
+ *
14
+ * THE NO-BOX-JUMP (T2). The reserve is a STATIC `min-inline-size`/`min-block-size`
15
+ * keyed off `--dock-control-size`/`--dock-layer-height` (the control's resting box) —
16
+ * a ONE-TIME reservation set the instant `setPending()` fires, NEVER an animated
17
+ * dimension (the W-DESKTOP-RESERVE static-frame-0 precedent). The dock's shrink-wrap
18
+ * is already at the seated width, so the CTA lands into an already-sized hole; the box
19
+ * never grows on reveal. `proof:no-layout-animation` holds — no `transition: width`/
20
+ * animated min-* anywhere here.
21
+ *
22
+ * THE FLIP REVEAL (T3). The seat is a CONTENT swap on an already-sized box, NOT a box
23
+ * morph — so the reveal is a PLAIN `transition: opacity` on the `--ease-out`
24
+ * no-overshoot register (a content reveal must not overshoot — W-MOTION-CANON P2). It
25
+ * does NOT ride the dock collapse/expand morph-stagger (`--dock-expand-t`/the child
26
+ * stagger); re-using the morph clock would read as a janky stagger-restart on a
27
+ * content reveal.
28
+ *
29
+ * RECT-DRIVEN, LAYOUT-AGNOSTIC (Gate-1 Q5). The seat targets `[data-cta-pending]` on
30
+ * ANY dock control — it makes NO assumption about a skip-arrow affordance (a
31
+ * consumer-side functional skip control that may or may not be present). The reserve
32
+ * is the control's own resting footprint; the seat works with or without arrows.
33
+ *
34
+ * COMPOSITOR-ONLY. `setPending`/`clearPending` toggle the data attribute; this partial
35
+ * paints with `opacity` + the static reserve. No layout property is animated. The
36
+ * `--cta-seat-*` knobs are the consumer retune seam.
37
+ *
38
+ * @import-ed by dock.css in the dock partial cascade, in the SAME `@layer components`. */
39
+
40
+ @layer components {
41
+ /* The armed seat — the control is RESERVED. The static min-*-size locks the resting
42
+ footprint from frame 0 (the no-box-jump); the dim opacity is the placeholder
43
+ ghost awaiting the CTA's arrival. The `transition: opacity` is declared HERE (not
44
+ only on the cleared state) so the GHOST→content reveal is a smooth fade in BOTH
45
+ directions on the SAME compositor-safe register — the box is already sized, only
46
+ the opacity moves. */
47
+ [data-cta-pending] {
48
+ /* The STATIC resting-geometry reserve (T2) — a one-time min-*-size off the
49
+ control's own resting box. NEVER transitioned (an animated dimension
50
+ CLS-storms — the proof:no-layout-animation floor). */
51
+ min-inline-size: var(--dock-control-size, var(--size-icon-btn));
52
+ min-block-size: var(
53
+ --dock-layer-height,
54
+ var(--dock-control-size, var(--size-icon-btn))
55
+ );
56
+
57
+ /* The dim GHOST placeholder — the control awaits its arrival (T3). */
58
+ opacity: var(--cta-seat-ghost-opacity, 0.35);
59
+
60
+ /* The FLIP reveal register — a PLAIN opacity transition on --ease-out
61
+ (no-overshoot). Default duration tracks the snappy spring envelope so the
62
+ reveal reads as the same family as the morph that lands the CTA. */
63
+ transition: opacity
64
+ var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
65
+ var(--ease-out);
66
+ }
67
+
68
+ /* The seated CONTENT also dims while pending — the icon/label is the thing that
69
+ fades back in on reveal. Direct-child targeting keeps the seat layout-agnostic
70
+ (it does not name a control class — Q5). */
71
+ [data-cta-pending] > * {
72
+ opacity: var(--cta-seat-ghost-opacity, 0.35);
73
+ transition: opacity
74
+ var(--cta-seat-reveal-duration, var(--spring-snappy-duration))
75
+ var(--ease-out);
76
+ }
77
+
78
+ /* PRM — the reveal is an INSTANT opacity swap (the vestibular floor; the seat snaps
79
+ to its content, zero transition frames). The reserve is unchanged (it is static,
80
+ not a motion). The gesture completes; the animation is off. */
81
+ @media (prefers-reduced-motion: reduce) {
82
+ [data-cta-pending],
83
+ [data-cta-pending] > * {
84
+ transition: none;
85
+ }
86
+ }
87
+ }
@@ -33,6 +33,65 @@
33
33
  consumers). NEVER re-point this AT --dock-control-safe-inset (the de-overload). */
34
34
  :root {
35
35
  --dock-content-safe-inset: var(--dock-rail-extend-length, 2.5rem);
36
+
37
+ /* ── BC.W-DOCK-ARBITRARY — the arbitrary-shape morph tokens ─────────────────
38
+ The dock morph is no longer locked to circle↔pill. The shape is now a SCALAR
39
+ PARAMETER: a `--dock-shape-from`/`--dock-shape-to` corner-radius pair the chrome
40
+ radius arm interpolates on `--dock-morph-t`, an OPT-IN `--dock-shape-clip-from`/
41
+ `--dock-shape-clip-to` clip-path silhouette pair (compositor-only, no layout),
42
+ and a `--dock-morph-max-stretch` squish cap. The library DEFAULTS preserve the
43
+ collapsed-perfect-circle ↔ expanded-pill identity (CLAUDE.md `aspect-ratio: 1` +
44
+ `--radius-dock` 9999px), so the common case needs no consumer override; a consumer
45
+ sets these to morph to an arbitrary silhouette (a wide bar, a teardrop, a tall
46
+ rail). Clean break (MEMORY: no backwards compat) — the prior hardcoded circle/pill
47
+ endpoints become these token DEFAULTS, no `--dock-radius-legacy`. */
48
+
49
+ /* The corner profile span — the `from`-radius (the collapsed perfect circle, a
50
+ 9999px pill that rounds the height-pinned square into a circle) ↔ the `to`-radius
51
+ (the expanded pill, `--radius-dock`). Consumer-targetable: set either to any
52
+ radius to morph to an arbitrary corner profile. */
53
+ --dock-shape-from: var(--radius-dock, 9999px);
54
+ --dock-shape-to: var(--radius-dock, 9999px);
55
+
56
+ /* The arbitrary-silhouette span — an OPT-IN `clip-path` pair (a compositor property,
57
+ NO layout). DEFAULT-OFF: `none`/`none` means the rectangle/pill morph (the common
58
+ case) needs no clip. A consumer opts into a teardrop/blob silhouette by setting the
59
+ clip-from/to to two `inset()`/`path()`/`shape()` values the morph LERPS between on
60
+ `--dock-morph-t`. */
61
+ --dock-shape-clip-from: none;
62
+ --dock-shape-clip-to: none;
63
+
64
+ /* The squish cap — the LOW volume-preserving `--stretch` ceiling for the shape-morph
65
+ deformation, mirroring the tab-indicator's iOS-segmented register (the
66
+ `DEFAULT_INDICATOR_MAX_STRETCH` 1.08). A fast morph swells the plate then caps —
67
+ a lively settle, never a taffy-pull. */
68
+ --dock-morph-max-stretch: 1.08;
69
+
70
+ /* ── BC.W-LIQUID-MORPH — the reserve floor (the white morph can never paint) ──
71
+ The morph box reserves `inline-size`/`block-size: max(var(--dock-morph-to),
72
+ var(--dock-morph-min))` (layers.css). A degenerate `to:0` measurement (the
73
+ BA-VJS-1 nested-group race, glass-dock-codebase.md §2.2) would otherwise reserve
74
+ a ZERO-width footprint → `overflow: clip` blanks the content → the white/invisible
75
+ morph the user reports. The floor seats it at the collapsed-pill minimum (~44px,
76
+ the WCAG touch floor / `--dock-control-floor`), so a missed measurement degrades to
77
+ "visible at the floor," never "white." A SAFETY NET: on every healthy measurement
78
+ the `max()` resolves to the real `to` (inert above the floor); it fires ONLY on the
79
+ degenerate race. Density-scaled, riding `--dock-scale` transitively. */
80
+ --dock-morph-min: max(2.75rem, var(--dock-control-floor, 0px));
81
+
82
+ /* ── BC.W-DOCK-SEARCH — the collapse-on-scroll trigger-points ─────────────────
83
+ The dock-search optional shrink-on-scroll (composing useScrollChrome — the
84
+ native dual-path reader, persistent-default) reads these two tunable px
85
+ trigger-points: the shrink BEGINS at `--dock-search-shrink-start` of scroll and
86
+ reaches the compact form at `--dock-search-shrink-end` (the words
87
+ `scrollInflectionPoint` generalized into dock-scoped tokens). They ride
88
+ `--dock-scale` transitively (a coarse-pointer dock's trigger-points scale with
89
+ its geometry), and a consumer retunes the inflection in ONE write. NOTE the
90
+ PERSISTENT default — these are inert unless the consumer opts in via
91
+ `collapseOnScroll`; the morph itself NEVER fires on a passive scroll (the
92
+ iOS-27 lesson — the scroll path is the distinct compositor shrink). */
93
+ --dock-search-shrink-start: calc(0rem * var(--dock-scale));
94
+ --dock-search-shrink-end: calc(7.25rem * var(--dock-scale));
36
95
  }
37
96
 
38
97
  @layer components {
@@ -246,6 +305,91 @@
246
305
  );
247
306
  }
248
307
 
308
+ /* ── BC.W-AX-DOCK-COCKPIT — the `cockpit` geometry PRESET ─────────────────────
309
+ The tight instrument-cockpit register: a FIXED `2.75rem` control floor (the
310
+ Gate-1 Q6 fixed value — NOT a range) with COMPACT-tight chrome (the tightest
311
+ padding/gap/tile-pad, distinct from `spacious`'s LOOSE chrome at the SAME
312
+ 2.75rem control). It closes the dock-oversize chronic (speedtest A-9): a
313
+ consumer opts into a dense, proportioned instrument strip — `2.75rem` control,
314
+ compact chrome, the label tracking the control by `--dock-label-ratio` (so the
315
+ label never reads OVERSIZE on the tight pill).
316
+
317
+ It is a NAMED preset, NOT a 5th density rung — the density axis stays FOUR rungs
318
+ (`proof:dock-unify`'s density census is unaffected). The preset is a geometry
319
+ OVERRIDE composing WITH a `data-density` base: `[data-preset="cockpit"]` wins the
320
+ control-size/layer-height/chrome by source-order (this block comes AFTER the rungs),
321
+ so a `<GlassDock data-density="comfortable" data-preset="cockpit">` resolves the
322
+ cockpit geometry. An ancestor `[data-preset="cockpit"]` scope re-declares these
323
+ tokens too (the substitution-vs-inheritance discipline) so descendant docks inherit.
324
+
325
+ The control floor rides the SAME `* var(--dock-scale)` thread + the `max(…,
326
+ --dock-control-floor)` WCAG 2.5.5 clamp as the rungs — the cockpit is tight, but
327
+ the coarse-pointer touch target NEVER drops below the 44px floor. */
328
+ .glass-dock[data-preset="cockpit"] {
329
+ /* The FIXED 2.75rem control floor (Q6) — the cockpit register, riding
330
+ `--dock-scale` + the 44px clamp. NOT a `clamp(2.5rem, …, 3rem)` range. */
331
+ --dock-control-size: max(
332
+ calc(2.75rem * var(--dock-scale)),
333
+ var(--dock-control-floor, 0px)
334
+ );
335
+ --dock-layer-height: max(
336
+ calc(2.75rem * var(--dock-scale)),
337
+ var(--dock-control-floor, 0px)
338
+ );
339
+ /* The TIGHT chrome — the COMPACT-rung tightness (the cockpit is a dense
340
+ instrument strip, NOT the spacious loosening). This is the distinction
341
+ from `spacious` (same control, LOOSE chrome). */
342
+ --dock-padding-block: calc(
343
+ var(--dock-density-compact-padding-block, 0.25rem) * var(--dock-scale)
344
+ );
345
+ --dock-padding-inline: calc(
346
+ var(--dock-density-compact-padding-inline, 0.375rem) * var(--dock-scale)
347
+ );
348
+ --dock-layer-gap: calc(
349
+ var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
350
+ );
351
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset, in lockstep with
352
+ the rungs (the 10%-per-side painted-plate inset). */
353
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
354
+ --dock-tile-min: calc(
355
+ var(--dock-control-size) + var(--dock-tile-pad, 1rem) * var(--dock-scale)
356
+ );
357
+ --dock-trigger-padding-block: calc(
358
+ var(--dock-density-compact-trigger-padding-block, 0.1875rem) *
359
+ var(--dock-scale)
360
+ );
361
+ --dock-trigger-padding-inline: calc(
362
+ var(--dock-density-compact-trigger-padding-inline, 0.4375rem) *
363
+ var(--dock-scale)
364
+ );
365
+ --dock-tab-padding-block: calc(
366
+ var(--dock-density-compact-tab-padding-block, 0.3125rem) *
367
+ var(--dock-scale)
368
+ );
369
+ --dock-tab-padding-inline: calc(
370
+ var(--dock-density-compact-tab-padding-inline, 0.625rem) *
371
+ var(--dock-scale)
372
+ );
373
+ --dock-tab-h: calc(32px * var(--dock-scale));
374
+ /* The cockpit-tight label ratio — the label reads EVEN tighter relative to
375
+ its control than the `:root` default (the A-9 close). The `dock-label`
376
+ font-size is `calc(--dock-control-size * --dock-label-ratio)`; the cockpit
377
+ tunes the ratio DOWN so a 2.75rem cockpit control carries a label sized for
378
+ the dense strip, not the comfortable-default proportion. */
379
+ --dock-label-ratio: 0.42;
380
+ /* RE-RESOLVE the density-painted glyph tokens against the cockpit
381
+ `--dock-layer-height` (the same substitution-vs-inheritance trap the
382
+ `.glass-dock[data-density]` re-resolve below fixes — a `[data-preset]`
383
+ scope paints its OWN `--dock-layer-height`, so the `:root`-derived glyph
384
+ would freeze at the fallback). Identical formula to the density re-resolve;
385
+ only the resolution element moves so the cockpit height flows into the glyph. */
386
+ --dock-icon-glyph: max(
387
+ calc(var(--dock-layer-height) * var(--dock-icon-glyph-ratio)),
388
+ var(--dock-icon-glyph-floor)
389
+ );
390
+ --dock-control-glyph-size: var(--dock-icon-glyph);
391
+ }
392
+
249
393
  /* BB.W-PERF-PRODUCER A′-6 — RE-RESOLVE the glyph token inside the density-painted
250
394
  scope. `--dock-icon-glyph` (offsets-sizing.css) is a RATIO of
251
395
  `--dock-layer-height`, but density.css paints `--dock-layer-height` ONLY on
@@ -265,6 +409,15 @@
265
409
  calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
266
410
  var(--dock-icon-glyph-floor)
267
411
  );
412
+ /* BC.W-DOCK-ENGINE move 3 (the Atlas A-9 fold) — RE-RESOLVE the in-dock
413
+ control-glyph knob against the density-painted `--dock-icon-glyph` (the
414
+ same substitution-vs-inheritance trap as the glyph above: a `:root`-only
415
+ `--dock-control-glyph-size` would freeze at the `:root` glyph while
416
+ `--dock-icon-glyph` lifts per density). Re-declaring it HERE keeps the
417
+ docked dark-toggle glyph + its inset pad on the density axis with the nav
418
+ glyphs. Identical to the `:root` default; only the resolution element
419
+ moves so the density-painted glyph flows in. */
420
+ --dock-control-glyph-size: var(--dock-icon-glyph);
268
421
  }
269
422
 
270
423
  /* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
@@ -61,18 +61,62 @@
61
61
  --dock-morph-ratio: calc(
62
62
  var(--dock-morph-from, 0px) / max(var(--dock-morph-to, 1px), 1px)
63
63
  );
64
- --dock-morph-scale: calc(
65
- var(--dock-morph-ratio) +
66
- (1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
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
67
79
  );
68
80
  /* 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);
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));
71
87
  transform: scaleX(var(--dock-morph-scale));
72
88
  transform-origin: left center;
73
89
  will-change: transform;
74
90
  }
75
91
 
92
+ /* BC.W-DOCK-ROOT-MORPH — the ROOT box rides the scalar (THE snap fix). The inner
93
+ `.dock-layers` above reserves its settled `to` + morphs via `scaleX()` (paint-
94
+ only), so the root `.glass-dock` (inline-flex) shrink-wraps to that reserved full
95
+ `to` and SNAPS on frame 0 while the inner scales smoothly — yet the gate + the
96
+ page reflow both read the ROOT box. The orchestrator (dockMorphContext.ts)
97
+ measures + writes the root's own `--dock-root-morph-{from,to}` px span; this
98
+ drives the morph-axis size as a `calc()` of the SAME `--dock-morph-t` scalar the
99
+ spring glides — NOT a `transition: width` (proof:no-layout-animation stays GREEN;
100
+ a `calc()` over the scalar is not a transition). The span is armed inline ONLY by
101
+ the outer collapse↔expand swap; a nested-only pane-swap leaves it unset → the
102
+ fallback-less `var()` invalidates the rule → the box returns to its at-rest
103
+ shrink-wrap (the inert path). Horizontal morphs `inline-size`, vertical morphs
104
+ `block-size` (matching the orchestrator's `morphAxisProp` axis pick). */
105
+ .glass-dock[data-morphing]:not(.vertical) {
106
+ inline-size: calc(
107
+ var(--dock-root-morph-from) +
108
+ (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
109
+ var(--dock-morph-t, 0)
110
+ );
111
+ }
112
+ .glass-dock[data-morphing].vertical {
113
+ block-size: calc(
114
+ var(--dock-root-morph-from) +
115
+ (var(--dock-root-morph-to) - var(--dock-root-morph-from)) *
116
+ var(--dock-morph-t, 0)
117
+ );
118
+ }
119
+
76
120
  /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
77
121
  BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
78
122
  measures/writes the same `--dock-morph-from/to` span on the block axis
@@ -85,7 +129,10 @@
85
129
  relayout on the vertical axis either. */
86
130
  .glass-dock.vertical[data-morphing] .dock-layers {
87
131
  inline-size: auto;
88
- block-size: var(--dock-morph-to);
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));
89
136
  transform: scaleY(var(--dock-morph-scale));
90
137
  transform-origin: center top;
91
138
  will-change: transform;
@@ -95,7 +142,8 @@
95
142
  reserve + `scaleY()` composite over it. */
96
143
  .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
97
144
  inline-size: auto;
98
- block-size: var(--dock-morph-to);
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));
99
147
  transform: scaleY(var(--dock-morph-scale));
100
148
  transform-origin: center top;
101
149
  will-change: transform;
@@ -76,36 +76,72 @@
76
76
  color-mix(in oklab, var(--card), var(--foreground) 6%) 100%
77
77
  );
78
78
  border-radius: 999px;
79
- /* The volume-preserving teardrop squish — stretch along the travel axis,
80
- compress reciprocally. Reads `--stretch` (the liquid-flex derivative). The
81
- vertical plate squishes on Y, the horizontal on X (set per-plate below). */
82
- will-change: width, height, transform;
79
+ /* BC.W-GLASS-GLOW-FIX (Atlas A-8 root, CANDIDATE 4) — BOUND the 120%×120% radial
80
+ to the plate box. The gradient SIZE (120%) reaches past the plate's content box
81
+ so the domed droplet would over-paint were the silhouette ever un-clipped;
82
+ `overflow: clip` keeps the radial fill inside the teardrop silhouette (the
83
+ `border-radius: 999px` capsule), so the oversized radial can NEVER paint a giant
84
+ cream blob past the plate. The domed-droplet read is PRESERVED — the radial still
85
+ fills the plate; only the past-bounds escape is killed. Defensive, structural,
86
+ zero visual change (the border-radius already clips the fill — this makes the
87
+ bound explicit so the leak-class gate holds). */
88
+ overflow: clip;
89
+ /* BC.W-LIQUID-MORPH — the teardrop silhouette is the COMPOSITOR `clip-path`
90
+ inset (NOT a per-frame `width`/`height` — the layout-jank root, glass-dock-
91
+ codebase.md §2.2 fix (3)). Each plate RESERVES its MAX footprint (a single
92
+ layout solve, the settled box) and the silhouette necks via a `clip-path:
93
+ inset()` interpolated on `--dock-morph-t`. The volume-preserving squish reads
94
+ `--stretch` (the liquid-flex derivative) on `scale`. NO `width`/`height`
95
+ animation — only `clip-path`/`scale`/`opacity` (compositor/paint), so the
96
+ CDP Layout track stays FLAT across the morph (proof:no-layout-animation +
97
+ proof:liquid-morph M4). will-change promotes the compositor channels ONLY. */
98
+ will-change: clip-path, transform, opacity;
83
99
  }
84
100
 
85
- /* The VERTICAL plate — a tall capsule (the t=0 silhouette). It collapses its height
86
- toward the center as t: 0 → 0.5, where it has merged into the teardrop. Width is
87
- the dock's inline footprint; height interpolates full → a thin neck. */
101
+ /* The VERTICAL plate — a tall capsule (the t=0 silhouette). It RESERVES its full
102
+ tall footprint (a one-time layout solve, NOT a per-frame height lerp) and necks
103
+ its silhouette toward the center via a `clip-path: inset()` whose block insets
104
+ GROW as t: 0 → 0.5 (the tall capsule collapses to a thin neck at the midpoint
105
+ where the goo merges, gone by t=1). `--dock-bridge-v-neck` is the inset travel:
106
+ 0 at t=0 (full height shows) → ~half the reserved height by t=0.5 (necked to a
107
+ circle ~the width). The box footprint is static; the clip carves the silhouette
108
+ on the compositor. */
88
109
  .dock-morph-bridge-plate--vertical {
89
110
  width: var(--dock-bridge-v-w, 3.25rem);
90
- /* full height at t=0, necking to ~the width (a circle) by t=0.5, gone by t=1 */
91
- height: calc(
92
- var(--dock-bridge-v-h, 16rem) *
93
- (1 - clamp(0, var(--dock-morph-t, 0), 1)) +
94
- var(--dock-bridge-v-w, 3.25rem) * clamp(0, var(--dock-morph-t, 0), 1)
111
+ height: var(--dock-bridge-v-h, 16rem);
112
+ /* the block-axis inset travel: 0 → (half the reserved height − half the width)
113
+ so the necked silhouette is ~a circle (the width) at t=0.5. */
114
+ --dock-bridge-v-neck: calc(
115
+ (var(--dock-bridge-v-h, 16rem) - var(--dock-bridge-v-w, 3.25rem)) / 2 *
116
+ clamp(0, calc(var(--dock-morph-t, 0) * 2), 1)
117
+ );
118
+ clip-path: inset(
119
+ var(--dock-bridge-v-neck) 0 var(--dock-bridge-v-neck) 0 round 999px
95
120
  );
96
121
  opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
97
122
  /* squish Y on travel (the tall plate stretches along its collapse axis) */
98
123
  scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
99
124
  }
100
125
 
101
- /* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It grows its width
102
- from the center as t: 0.5 → 1. Height is the dock's block footprint; width
103
- interpolates a thin neck → full. */
126
+ /* The HORIZONTAL plate — a wide capsule (the t=1 silhouette). It RESERVES its full
127
+ wide footprint (a one-time layout solve) and grows its silhouette from the center
128
+ via a `clip-path: inset()` whose inline insets SHRINK as t: 0.5 → 1 (a thin neck
129
+ at the midpoint → the full wide bar at t=1). `--dock-bridge-h-neck` is the inset
130
+ travel: ~half the reserved width − half the height at t=0.5 (necked to a circle)
131
+ → 0 at t=1 (full width shows). NO per-frame width — the clip carves the silhouette
132
+ on the compositor. */
104
133
  .dock-morph-bridge-plate--horizontal {
134
+ width: var(--dock-bridge-h-w, 18rem);
105
135
  height: var(--dock-bridge-h-h, 3.25rem);
106
- width: calc(
107
- var(--dock-bridge-h-h, 3.25rem) * (1 - clamp(0, var(--dock-morph-t, 0), 1)) +
108
- var(--dock-bridge-h-w, 18rem) * clamp(0, var(--dock-morph-t, 0), 1)
136
+ /* the inline-axis inset travel: (half the reserved width − half the height) at
137
+ t=0.5 → 0 at t=1, so the necked silhouette is ~a circle (the height) at the
138
+ midpoint and the full bar at t=1. */
139
+ --dock-bridge-h-neck: calc(
140
+ (var(--dock-bridge-h-w, 18rem) - var(--dock-bridge-h-h, 3.25rem)) / 2 *
141
+ (1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1))
142
+ );
143
+ clip-path: inset(
144
+ 0 var(--dock-bridge-h-neck) 0 var(--dock-bridge-h-neck) round 999px
109
145
  );
110
146
  opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
111
147
  /* squish X on travel (the wide plate stretches along its growth axis) */
@@ -62,25 +62,22 @@
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;
81
- filter: blur(
82
- calc(var(--dock-reveal-blur) * (1 - var(--dock-expand-t, 1)))
83
- );
76
+ --dock-reveal-blur: 0px; /* resting: CRISP — no own-pixel self-blur */
77
+ }
78
+ .glass-dock[data-morphing] {
79
+ --dock-reveal-blur: 3px; /* the transient decongest bloom — mid-morph only */
80
+ filter: blur(calc(var(--dock-reveal-blur) * (1 - var(--dock-expand-t, 1))));
84
81
  }
85
82
 
86
83
  /* The morphing root chrome — background / border-color interpolate between the
@@ -357,6 +354,7 @@
357
354
 
358
355
  .glass-dock.collapsed:hover:not([data-morphing]) {
359
356
  scale: var(--dock-collapsed-hover-scale);
357
+ will-change: transform; /* BC.W-DOCK-ENGINE move 2 — promote the armed-at-rest scale lift */
360
358
  }
361
359
 
362
360
  /* J.W5.C — held-state substrate response.
@@ -427,15 +425,23 @@
427
425
  ink, which clears ~10:1). */
428
426
  :where(.glass-dock) {
429
427
  --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);
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
+ );
439
445
  --dock-fg-on-aurora: var(--glass-tint-ink);
440
446
  --muted-foreground: var(--foreground);
441
447
  }
@@ -479,13 +485,15 @@
479
485
  }
480
486
 
481
487
  /* 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. */
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. */
487
494
  @media (prefers-reduced-motion: reduce) {
488
- .glass-dock {
495
+ .glass-dock,
496
+ .glass-dock[data-morphing] {
489
497
  --dock-reveal-blur: 0px;
490
498
  }
491
499
  }
@@ -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