@mkbabb/glass-ui 3.11.2 → 3.13.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 (360) hide show
  1. package/dist/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
  5. package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
  7. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
  8. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
  9. package/dist/MetricBadge-C9QMz1KT.js +79 -0
  10. package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
  11. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
  12. package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
  13. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
  14. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
  15. package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
  16. package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
  17. package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
  18. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
  19. package/dist/animated-digit.js +2 -2
  20. package/dist/api/index.d.ts +5 -2
  21. package/dist/api.js +2 -2
  22. package/dist/aurora.js +69 -69
  23. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
  26. package/dist/button.js +1 -1
  27. package/dist/card.js +1 -1
  28. package/dist/carousel.js +8 -8
  29. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  30. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  31. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  32. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  33. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  34. package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
  35. package/dist/color.js +1 -1
  36. package/dist/command.js +1 -1
  37. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  38. package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
  39. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  40. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  41. package/dist/components/custom/aurora/index.d.ts +1 -1
  42. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  43. package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
  44. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  45. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  46. package/dist/components/custom/constellation/constants.d.ts +61 -0
  47. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  48. package/dist/components/custom/constellation/constellationField.d.ts +116 -149
  49. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  50. package/dist/components/custom/constellation/index.d.ts +5 -2
  51. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  52. package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
  53. package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
  54. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  55. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  56. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  57. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  58. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  59. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  60. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  61. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  62. package/dist/components/custom/dock/constants.d.ts +48 -0
  63. package/dist/components/custom/dock/index.d.ts +3 -0
  64. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
  65. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  66. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  67. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  68. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  69. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  70. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  71. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
  72. package/dist/components/custom/goo-blob/constants.d.ts +52 -0
  73. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  74. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  75. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  76. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  77. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  78. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  79. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  80. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  81. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  82. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  83. package/dist/components/custom/tabs/constants.d.ts +12 -0
  84. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
  85. package/dist/components/custom/underline/index.d.ts +2 -0
  86. package/dist/components/custom/underline/types.d.ts +56 -0
  87. package/dist/components/ui/card/Card.vue.d.ts +15 -3
  88. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  89. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  90. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  91. package/dist/components/ui/slider/index.d.ts +22 -19
  92. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  93. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  94. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  95. package/dist/components/ui/toggle/index.d.ts +1 -1
  96. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  97. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  98. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  99. package/dist/composables/color/index.d.ts +12 -0
  100. package/dist/composables/dark/index.d.ts +1 -1
  101. package/dist/composables/dark/useGlobalDark.d.ts +1 -21
  102. package/dist/composables/glass/index.d.ts +0 -1
  103. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  104. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  105. package/dist/composables/motion/core/index.d.ts +1 -1
  106. package/dist/composables/motion/curves.d.ts +48 -0
  107. package/dist/composables/motion/index.d.ts +2 -0
  108. package/dist/composables/motion/springPresets.d.ts +33 -0
  109. package/dist/composables/motion/suite.d.ts +2 -0
  110. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  111. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  112. package/dist/configurator.js +1 -1
  113. package/dist/confirm-dialog.js +2 -2
  114. package/dist/constellation.js +336 -222
  115. package/dist/context-menu.js +2 -2
  116. package/dist/controls.js +47 -13
  117. package/dist/dark.d.ts +1 -1
  118. package/dist/dark.js +1 -1
  119. package/dist/data-table.js +1 -1
  120. package/dist/dialog.js +2 -2
  121. package/dist/dock.js +705 -365
  122. package/dist/dockContext-BegmJVmx.js +17 -0
  123. package/dist/dom.js +5 -5
  124. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
  125. package/dist/dropdown-menu.js +1 -1
  126. package/dist/expandable-container.js +39 -80
  127. package/dist/forms.js +5 -5
  128. package/dist/fourier-field.js +134 -99
  129. package/dist/fourier-math.js +2 -2
  130. package/dist/glass-panel.js +86 -20
  131. package/dist/glass-ui.css +1 -1
  132. package/dist/glass-ui.js +222 -212
  133. package/dist/goo-blob.js +243 -212
  134. package/dist/hover-card.js +1 -1
  135. package/dist/hover-popover.js +1 -1
  136. package/dist/icon-tooltip.js +1 -1
  137. package/dist/index.d.ts +1 -3
  138. package/dist/instrument-chassis.js +1 -1
  139. package/dist/keyboard.js +1 -1
  140. package/dist/label.js +1 -1
  141. package/dist/labeled-field.js +28 -18
  142. package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
  143. package/dist/metric-badge.js +1 -1
  144. package/dist/metric-cell.js +25 -21
  145. package/dist/metric-stack.js +35 -34
  146. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  147. package/dist/motion-core.js +32 -137
  148. package/dist/motion-curves.d.ts +1 -0
  149. package/dist/motion-curves.js +130 -0
  150. package/dist/motion.js +38 -37
  151. package/dist/notification.js +1 -1
  152. package/dist/number-field.js +1 -1
  153. package/dist/paper-backdrop.js +1 -1
  154. package/dist/popover.js +1 -1
  155. package/dist/{presets-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
  156. package/dist/progress.js +1 -1
  157. package/dist/reactive.js +2 -2
  158. package/dist/scrolling-text.js +1 -1
  159. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  160. package/dist/search.js +9 -9
  161. package/dist/select.js +3 -3
  162. package/dist/separator.js +1 -1
  163. package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
  164. package/dist/sheet.js +1 -1
  165. package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
  166. package/dist/slider.js +1 -1
  167. package/dist/sortable-list.js +2 -2
  168. package/dist/springPresets--YdWTHtm.js +40 -0
  169. package/dist/stacked-icons.js +6 -6
  170. package/dist/styles/animations.css +29 -114
  171. package/dist/styles/cards.css +55 -0
  172. package/dist/styles/components.css +4 -1
  173. package/dist/styles/configurator.css +42 -0
  174. package/dist/styles/dock/layer-group.css +83 -25
  175. package/dist/styles/dock/layers.css +23 -1
  176. package/dist/styles/dock/morph-bridge.css +123 -0
  177. package/dist/styles/dock/morph.css +175 -45
  178. package/dist/styles/dock/overflow.css +51 -1
  179. package/dist/styles/dock/rail-extend.css +300 -0
  180. package/dist/styles/dock/shell.css +63 -105
  181. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  182. package/dist/styles/dock-controls/icon-button.css +133 -0
  183. package/dist/styles/dock-controls/tab-button.css +202 -0
  184. package/dist/styles/dock-controls/touch-floor.css +94 -0
  185. package/dist/styles/dock-controls/triggers.css +128 -0
  186. package/dist/styles/dock-controls.css +30 -595
  187. package/dist/styles/dock.css +2 -0
  188. package/dist/styles/drawer.css +2 -0
  189. package/dist/styles/floating-panel.css +17 -0
  190. package/dist/styles/glass/a11y-fallback.css +245 -0
  191. package/dist/styles/glass/ladder.css +337 -0
  192. package/dist/styles/glass/material.css +238 -0
  193. package/dist/styles/glass/progress-rail.css +78 -0
  194. package/dist/styles/glass/squircle.css +66 -0
  195. package/dist/styles/glass/surfaces.css +306 -0
  196. package/dist/styles/glass-refract.css +2 -0
  197. package/dist/styles/glass.css +31 -1188
  198. package/dist/styles/hover-popover.css +2 -0
  199. package/dist/styles/index.css +28 -14
  200. package/dist/styles/instrument-chassis.css +4 -0
  201. package/dist/styles/paper.css +2 -68
  202. package/dist/styles/segmented-tabs.css +275 -0
  203. package/dist/styles/theme/bridges.css +337 -0
  204. package/dist/styles/theme/dark.css +7 -0
  205. package/dist/styles/theme/literals.css +94 -0
  206. package/dist/styles/theme/radius.css +95 -0
  207. package/dist/styles/theme.css +26 -529
  208. package/dist/styles/tokens/color-radius.css +260 -0
  209. package/dist/styles/tokens/dark-arm.css +200 -0
  210. package/dist/styles/tokens/glass.css +440 -0
  211. package/dist/styles/tokens/light-dark.css +158 -0
  212. package/dist/styles/tokens/offsets-sizing.css +500 -0
  213. package/dist/styles/tokens/property-regs.css +169 -0
  214. package/dist/styles/tokens/scale-paper.css +366 -0
  215. package/dist/styles/tokens/scheme-motion.css +334 -0
  216. package/dist/styles/tokens/shadow.css +166 -0
  217. package/dist/styles/tokens.css +22 -2360
  218. package/dist/styles/typography.css +75 -21
  219. package/dist/styles/utilities/a11y-overrides.css +140 -0
  220. package/dist/styles/utilities/animate.css +26 -0
  221. package/dist/styles/utilities/base.css +365 -0
  222. package/dist/styles/utilities/btn.css +401 -0
  223. package/dist/styles/utilities/components.css +317 -0
  224. package/dist/styles/utilities.css +19 -1291
  225. package/dist/styles/view-transition.css +0 -51
  226. package/dist/switch.js +1 -1
  227. package/dist/tabs.js +91 -82
  228. package/dist/timeline.js +1 -1
  229. package/dist/toast.js +1 -1
  230. package/dist/toggle-group.js +1 -1
  231. package/dist/tooltip.js +1 -1
  232. package/dist/underline.d.ts +1 -0
  233. package/dist/underline.js +85 -0
  234. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
  235. package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
  236. package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
  237. package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
  238. package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
  239. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
  240. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  241. package/dist/useSpringMount-CI2jOstM.js +108 -0
  242. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
  243. package/dist/utils/coalesceMetric.d.ts +29 -0
  244. package/dist/utils/index.d.ts +1 -0
  245. package/dist/vReveal-CqaCz_mC.js +44 -0
  246. package/dist/watercolor-dot.js +11 -9
  247. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  248. package/package.json +78 -58
  249. package/src/styles/animations.css +29 -114
  250. package/src/styles/cards.css +53 -0
  251. package/src/styles/configurator.css +42 -0
  252. package/src/styles/dock/layer-group.css +83 -25
  253. package/src/styles/dock/layers.css +23 -1
  254. package/src/styles/dock/morph-bridge.css +123 -0
  255. package/src/styles/dock/morph.css +175 -45
  256. package/src/styles/dock/overflow.css +51 -1
  257. package/src/styles/dock/rail-extend.css +300 -0
  258. package/src/styles/dock/shell.css +63 -105
  259. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  260. package/src/styles/dock-controls/icon-button.css +133 -0
  261. package/src/styles/dock-controls/tab-button.css +202 -0
  262. package/src/styles/dock-controls/touch-floor.css +94 -0
  263. package/src/styles/dock-controls/triggers.css +128 -0
  264. package/src/styles/dock-controls.css +30 -595
  265. package/src/styles/dock.css +2 -0
  266. package/src/styles/floating-panel.css +15 -0
  267. package/src/styles/glass/a11y-fallback.css +245 -0
  268. package/src/styles/glass/ladder.css +337 -0
  269. package/src/styles/glass/material.css +238 -0
  270. package/src/styles/glass/progress-rail.css +78 -0
  271. package/src/styles/glass/squircle.css +66 -0
  272. package/src/styles/glass/surfaces.css +306 -0
  273. package/src/styles/glass.css +31 -1188
  274. package/src/styles/index.css +28 -14
  275. package/src/styles/paper.css +2 -68
  276. package/src/styles/segmented-tabs.css +271 -0
  277. package/src/styles/theme/bridges.css +337 -0
  278. package/src/styles/theme/dark.css +7 -0
  279. package/src/styles/theme/literals.css +94 -0
  280. package/src/styles/theme/radius.css +95 -0
  281. package/src/styles/theme.css +26 -529
  282. package/src/styles/tokens/color-radius.css +260 -0
  283. package/src/styles/tokens/dark-arm.css +200 -0
  284. package/src/styles/tokens/glass.css +440 -0
  285. package/src/styles/tokens/light-dark.css +158 -0
  286. package/src/styles/tokens/offsets-sizing.css +500 -0
  287. package/src/styles/tokens/property-regs.css +169 -0
  288. package/src/styles/tokens/scale-paper.css +366 -0
  289. package/src/styles/tokens/scheme-motion.css +334 -0
  290. package/src/styles/tokens/shadow.css +166 -0
  291. package/src/styles/tokens.css +22 -2360
  292. package/src/styles/typography.css +75 -21
  293. package/src/styles/utilities/a11y-overrides.css +140 -0
  294. package/src/styles/utilities/animate.css +26 -0
  295. package/src/styles/utilities/base.css +365 -0
  296. package/src/styles/utilities/btn.css +401 -0
  297. package/src/styles/utilities/components.css +317 -0
  298. package/src/styles/utilities.css +19 -1291
  299. package/src/styles/view-transition.css +0 -51
  300. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  301. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  302. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  303. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  304. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  305. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  306. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  307. package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
  308. package/dist/components/custom/handmark/brush.d.ts +0 -242
  309. package/dist/components/custom/handmark/freehand.d.ts +0 -69
  310. package/dist/components/custom/handmark/geometry.d.ts +0 -50
  311. package/dist/components/custom/handmark/index.d.ts +0 -21
  312. package/dist/components/custom/handmark/ink.d.ts +0 -11
  313. package/dist/components/custom/handmark/texture.d.ts +0 -39
  314. package/dist/components/custom/handmark/types.d.ts +0 -53
  315. package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
  316. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  317. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  318. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  319. package/dist/deck-progress.d.ts +0 -1
  320. package/dist/deck-progress.js +0 -2
  321. package/dist/dockContext-BKeIMmNk.js +0 -9
  322. package/dist/handmark.d.ts +0 -1
  323. package/dist/handmark.js +0 -663
  324. package/dist/instrument-rail.d.ts +0 -1
  325. package/dist/instrument-rail.js +0 -2
  326. package/dist/styles/instrument-rail.css +0 -127
  327. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  328. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  329. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  330. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  331. package/dist/vReveal-zUIQk-rJ.js +0 -53
  332. package/src/styles/instrument-rail.css +0 -127
  333. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
  334. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
  335. /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
  336. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  337. /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
  338. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
  339. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
  340. /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
  341. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
  342. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
  343. /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
  344. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  345. /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
  346. /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
  347. /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
  348. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  349. /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
  350. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  351. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
  352. /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
  353. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
  354. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
  355. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
  356. /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
  357. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
  358. /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
  359. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
  360. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
@@ -10,9 +10,12 @@
10
10
  * `.dock-layer-item-host` pane.
11
11
  *
12
12
  * NOTE: this `.dock-layer-rail` is the LAYER-SWITCHER rail inside a
13
- * `<DockLayerGroup>` — distinct from the `GlassDock variant="rail"` navigation
14
- * column (dock/shell.css + dock-controls.css) and the `<InstrumentRail>` cockpit
15
- * chassis (instrument-rail). The three share the noun, not the architecture.
13
+ * `<DockLayerGroup>` — the in-dock switcher tab strip. AZ.W-DOCK-TAXONOMY
14
+ * de-overloaded the "rail" noun: the `GlassDock variant="rail"` vertical-nav
15
+ * variant is GONE (a vertical nav column is now `orientation="vertical"`), and
16
+ * `<InstrumentRail>` retired at AY W-IC1. `.dock-layer-rail` is the ONLY surviving
17
+ * "rail" in the dock band; the noun is otherwise free (reserved for the
18
+ * W-RAIL-EXTEND beyond-dock facility).
16
19
  *
17
20
  * @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
18
21
  * carve is isomorphic (same layer, same source order → ZERO visual delta). */
@@ -87,38 +90,59 @@
87
90
  flex-direction: column-reverse;
88
91
  }
89
92
 
90
- /* AX.W45 DK8 — the rail gets its OWN surface plate. Previously the rail was a
91
- bare bordered gutter (a hairline `border-right`, no background), so its
92
- `--primary 15%` indicator + `--accent 40%` hover were tuned against an absent
93
- plate (the "bg's not right"). The `--dock-layer-rail-bg` rung (a quiet
94
- `--surface-tint-8` default, consumer-overridable) gives the rail a finished
95
- glass-quiet surface; the hover/active affordance reads the `--dock-layer-rail-
96
- {hover,active}` tokens, so the whole rail ladder is tunable from §10. */
93
+ /* AZ.W-DOCK-RAIL — the rail is a HAIRLINE register, not a fused plate. The
94
+ AX.W45 `--surface-tint-8` filled plate + `--radius-md` rounded background
95
+ (the "heavy dark blob column" R3-1) are RETIRED: the rail box paints NO fill
96
+ (`--dock-layer-rail-bg` defaults transparent at §sizing) and carries no
97
+ rounded plate background. The single `border-right` hairline — re-keyed to
98
+ the tunable `--dock-layer-rail-divider` token — is the only visible rail
99
+ edge: a thin rule between the switcher column and the dock body. The
100
+ hover/active affordance reads the `--dock-layer-rail-{hover,active}` glass
101
+ tints, so the whole rail ladder is tunable from §sizing. */
97
102
  .dock-layer-rail {
98
103
  display: flex;
99
104
  flex-direction: column;
100
105
  flex-shrink: 0;
106
+ /* AY.W-DOCK-NAV B6 — `align-self: start` (not the group's `stretch`
107
+ default) so the column rail reports its OWN intrinsic content height
108
+ (the stacked tabs) to the group's cross-axis sizing rather than being
109
+ stretched to the group's content-row height. Under `stretch` the rail's
110
+ height resolved to the group height, which was the single content-row
111
+ height — circular: the rail's 3 tall tabs overflowed a 40px rail and the
112
+ lower tabs + the indicator fell below the dock floor (the B6 break). With
113
+ `align-self: start` the rail demands its natural column height, the group
114
+ grows to it, and the dock grows to contain the whole rail. The
115
+ `min-height: max-content` belt makes the demand explicit — a row-flex
116
+ child's cross-size can otherwise resolve to the (smaller) container row
117
+ height even under `align-self: start`; `max-content` floors the rail at
118
+ its stacked-tab content height so the chain (group → pane → dock) grows
119
+ to fit. */
120
+ align-self: start;
121
+ min-height: max-content;
101
122
  gap: var(--dock-layer-rail-gap, 0.125rem);
102
123
  padding: var(--dock-layer-rail-padding, 0.125rem);
103
- background: var(--dock-layer-rail-bg, var(--surface-tint-8));
104
- border-radius: var(--dock-layer-rail-radius, var(--radius-md));
105
- border-right: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
124
+ background: var(--dock-layer-rail-bg, transparent);
125
+ border-right: 1px solid
126
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
106
127
  }
107
128
 
108
129
  .dock-layer-group.vertical .dock-layer-rail {
109
130
  flex-direction: row;
110
131
  border-right: none;
111
- border-bottom: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
132
+ border-bottom: 1px solid
133
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
112
134
  }
113
135
 
114
136
  .dock-layer-group.horizontal.rail-end .dock-layer-rail {
115
137
  border-right: none;
116
- border-left: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
138
+ border-left: 1px solid
139
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
117
140
  }
118
141
 
119
142
  .dock-layer-group.vertical.rail-end .dock-layer-rail {
120
143
  border-bottom: none;
121
- border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
144
+ border-top: 1px solid
145
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
122
146
  }
123
147
 
124
148
  /* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
@@ -134,12 +158,27 @@
134
158
  display: inline-flex;
135
159
  align-items: center;
136
160
  justify-content: center;
161
+ /* AY.W-DOCK-NAV B6 — `flex-shrink: 0` so the stacked tabs in the column rail
162
+ hold their full size and the rail demands its natural content height (no
163
+ tab squish). With the rail's `align-self: start` this makes the rail report
164
+ its true column height to the group's cross-axis sizing, growing the dock
165
+ to contain all the tabs + the travelling indicator (the B6 un-clip). */
166
+ flex-shrink: 0;
137
167
  width: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
138
168
  height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
139
169
  border: 0;
140
170
  border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
141
171
  background: transparent;
142
- color: var(--muted-foreground);
172
+ /* AZ.W-DOCK-RAIL — the rest glyph lifts OFF the low-contrast
173
+ `--muted-foreground` (which read sub-AA over the now-hairline transparent
174
+ backdrop) to the nav-glyph contrast register: a strong warm-ink tint of
175
+ the dock foreground (`--dock-fg-on-aurora` → `--foreground`), tempered to
176
+ ~78% for the unselected read while staying ≥4.5:1 over the dock substrate.
177
+ The selected tab flips to the full register below. */
178
+ color: var(
179
+ --dock-layer-rail-glyph,
180
+ color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) 78%, transparent)
181
+ );
143
182
  cursor: pointer;
144
183
  font: inherit;
145
184
  font-size: 0.75rem;
@@ -150,19 +189,34 @@
150
189
  color var(--dock-motion-fast);
151
190
  }
152
191
 
192
+ /* AZ.W-DOCK-RAIL — floor the rail glyph. The `size-4` (16px) icon class on the
193
+ lucide component does not survive the column inline-flex: with no concrete
194
+ `width`/`flex-shrink`, the un-floored SVG collapsed to a 4px sliver
195
+ (F2-R3-1). This rule floors BOTH axes to 1rem (16px) and pins
196
+ `flex-shrink: 0` so the glyph never re-squishes inside the flex tab. */
197
+ .dock-layer-rail .dock-layer-tab svg {
198
+ width: 1rem;
199
+ height: 1rem;
200
+ flex-shrink: 0;
201
+ }
202
+
153
203
  .dock-layer-rail .dock-layer-tab:hover {
154
204
  background: var(
155
205
  --dock-layer-rail-hover,
156
- color-mix(in srgb, var(--accent) 40%, transparent)
206
+ color-mix(in srgb, var(--accent) 30%, transparent)
157
207
  );
158
- color: var(--foreground);
208
+ color: var(--dock-fg-on-aurora, var(--foreground));
159
209
  }
160
210
 
161
211
  /* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
162
212
  `data-state="active"` + `aria-selected="true"`); the per-button active
163
- BACKGROUND is RETIRED — the travelling indicator carries that affordance. */
213
+ BACKGROUND is RETIRED — the travelling indicator carries that affordance.
214
+ AZ.W-DOCK-RAIL — the selected glyph reads the full warm-ink register (the
215
+ nav-glyph contrast canon), deferring the exact accent to W-REGISTER-IOS's
216
+ root via `--dock-rail-active-accent` (defaults to the dock foreground, NOT
217
+ a saturated brand `--primary`). */
164
218
  .dock-layer-rail .dock-layer-tab[data-state="active"] {
165
- color: var(--primary);
219
+ color: var(--dock-rail-active-accent, var(--dock-fg-on-aurora, var(--foreground)));
166
220
  }
167
221
 
168
222
  /* AU.W8.4 — the dock control focus-ring contract does not cover
@@ -204,10 +258,14 @@
204
258
  height: var(--reka-tabs-indicator-size);
205
259
  transform: translateY(var(--reka-tabs-indicator-position));
206
260
  border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
207
- background: var(
208
- --dock-layer-rail-active,
209
- color-mix(in srgb, var(--primary) 15%, transparent)
210
- );
261
+ /* AZ.W-DOCK-RAIL — the travelling indicator paints the glass-register
262
+ `--dock-layer-rail-active` (defaults to `--glass-bg-floating`, the
263
+ "selected reads as glass" register). The inline fallback is the SAME
264
+ glass tier — NOT the saturated `--primary 15%` warm-red mix the prior
265
+ register baked. The baked-plate utilities the reka `<TabsIndicator>`
266
+ wrapper used to render are suppressed via `:surface="false"` in
267
+ DockLayerGroup.vue, so THIS token rule is the sole paint. */
268
+ background: var(--dock-layer-rail-active, var(--glass-bg-floating));
211
269
  transition:
212
270
  width var(--duration-fast) var(--spring-snappy),
213
271
  height var(--duration-fast) var(--spring-snappy),
@@ -60,6 +60,18 @@
60
60
  inline-size: var(--dock-morph-size);
61
61
  }
62
62
 
63
+ /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
64
+ BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
65
+ measures/writes the same `--dock-morph-from/to` span on the block axis
66
+ (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
67
+ vertical→`block-size`), so the CSS lands the scalar on `block-size` and lets the
68
+ inline axis stay intrinsic. This is the wiring that gives a collapsible vertical
69
+ dock the height-morph the mandate names. */
70
+ .glass-dock.vertical[data-morphing] .dock-layers {
71
+ inline-size: auto;
72
+ block-size: var(--dock-morph-size);
73
+ }
74
+
63
75
  /* A vertical inner group morphs the BLOCK axis — the same span lands on
64
76
  block-size, and the inline axis stays intrinsic. */
65
77
  .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
@@ -196,9 +208,19 @@
196
208
  block-axis morph reveals a column) is NOT forced onto one nowrap row — the
197
209
  vertical group's active host block-sizes to `height: max-content` below
198
210
  (the AP.W3 column treatment, KEPT). */
211
+ /* AY.W-DOCK-NAV B6 — the height is a FLOOR (`min-height`), not a fixed lock. A
212
+ single-row content pane's intrinsic height already equals
213
+ `--dock-layer-height` (the controls + line-height sum to it), so `min-height`
214
+ is byte-identical for the common case. But a horizontal dock hosting a COLUMN
215
+ switcher-rail (`<DockLayerGroup>` with `show-rail`) lays the rail out as a
216
+ stack of tabs taller than one row — the prior fixed `height` clipped the
217
+ rail's lower tabs + the active indicator BELOW the dock floor (the B6 "no rail
218
+ line / broken" read, measured: 2 of 3 tabs clipped). The floor lets the pane
219
+ block-size to the rail's natural column height so the dock grows to contain
220
+ the whole rail. The cross axis keeps `nowrap`. */
199
221
  .glass-dock:not(.vertical) .dock-layer {
200
222
  white-space: nowrap;
201
- height: var(--dock-layer-height, 2.5rem);
223
+ min-height: var(--dock-layer-height, 2.5rem);
202
224
  }
203
225
 
204
226
  .dock-layer.is-active {
@@ -0,0 +1,123 @@
1
+ /* dock/morph-bridge.css — the AZ.W-MORPH-SHOWCASE metaball-teardrop bridge (H4 arm a).
2
+ *
3
+ * The net-new CSS SVG-goo filter that hides the V↔H dock topology jump-cut. The
4
+ * fleet's Arch B picks "the existing goo-blob mounted behind the docks OR a net-new
5
+ * CSS SVG-goo filter … the implementation picks per perf/browser." This wave picks the
6
+ * CSS SVG-goo filter — the M5-DETERMINISTIC choice: the bridge has NO free-running
7
+ * `uTime` (the goo-blob's three wall-clock channels would RED the M5 scalar-binding
8
+ * clause), NO WebGL pass at all (so the HG5 frame budget clears trivially — zero shader
9
+ * frames), and its teardrop aspect is a PURE function of `--dock-morph-t`. The classic
10
+ * gooey-CSS trick: blur two plates so their alpha bleeds together, then threshold the
11
+ * blurred alpha back to a sharp edge (feColorMatrix on the A channel) so the merge
12
+ * reads as one amorphous metaball silhouette.
13
+ *
14
+ * The bridge is DECORATIVE only (the contained-creature constraint — it hosts no dock
15
+ * children; the real DOM docks crossfade UNDER it). It paints BEHIND the two docks and
16
+ * fully occludes the reflow at the `t≈0.5` midpoint where both plates are at their
17
+ * dimmest.
18
+ *
19
+ * Determinism (HG4/M5): every animated axis below is `f(var(--dock-morph-t))` (the ONE
20
+ * inheriting scalar the morph spring writes) or `f(var(--stretch))` (the scalar's
21
+ * DERIVATIVE the liquid-flex squish writes) — NEVER a CSS animation/transition with its
22
+ * own clock. A frame captured at a given `--dock-morph-t` is byte-reproducible. */
23
+
24
+ @layer components {
25
+ /* The bridge host — sits absolutely behind the two docks, isolation-safe so the
26
+ goo filter does not leak onto siblings. The two plates inside it are merged by
27
+ the SVG goo filter referenced via `filter: url(#…)`. */
28
+ .dock-morph-bridge {
29
+ position: absolute;
30
+ inset: 0;
31
+ display: grid;
32
+ place-items: center;
33
+ pointer-events: none;
34
+ z-index: 0;
35
+ /* The goo: blur-then-threshold the child plates' alpha. The filter id is
36
+ authored once in the showcase SFC (a hidden <svg><filter>); the consumer
37
+ binds it here. `isolation: isolate` keeps the blur/threshold scoped to the
38
+ plates, not the page behind. */
39
+ isolation: isolate;
40
+ /* Under reduced motion the bridge is hidden — the morph snaps (no teardrop). */
41
+ opacity: var(--dock-bridge-opacity, 1);
42
+ }
43
+
44
+ /* The goo container the filter applies to — only the plates inside it merge.
45
+ SCOPED to a TIGHT centered box just larger than the max plate footprint (NOT
46
+ inset:0 over the whole stage) so the per-frame `feGaussianBlur` repaint covers
47
+ a small region, not the full stage — the morph frame budget (HG5) clears. The
48
+ box is sized off the morph spans (the consumer passes --dock-bridge-h-w /
49
+ --dock-bridge-v-h); `contain: paint` clips the filter work to it. */
50
+ .dock-morph-bridge-goo {
51
+ position: absolute;
52
+ top: 50%;
53
+ left: 50%;
54
+ translate: -50% -50%;
55
+ width: calc(var(--dock-bridge-h-w, 18rem) + 2.5rem);
56
+ height: calc(var(--dock-bridge-v-h, 16rem) + 2.5rem);
57
+ display: grid;
58
+ place-items: center;
59
+ contain: layout paint;
60
+ filter: var(--dock-bridge-goo-filter, none);
61
+ }
62
+
63
+ /* A bridge plate — a warm-glass capsule. TWO plates: one tracks the vertical dock
64
+ footprint (tall capsule), one the horizontal (wide capsule); both shrink toward
65
+ the shared center as the morph crosses the midpoint so the blur fuses them into
66
+ ONE teardrop. The size + corner radius are `f(--dock-morph-t)`; the
67
+ volume-preserving squish reads `--stretch` (the scalar derivative). */
68
+ .dock-morph-bridge-plate {
69
+ position: absolute;
70
+ /* The warm-cream gel body — the metaball-teardrop fill (a soft radial so the
71
+ blur threshold reads a domed droplet, not a flat slab). */
72
+ background: radial-gradient(
73
+ 120% 120% at 50% 38%,
74
+ var(--glass-bg-floating, color-mix(in oklab, var(--card), white 8%)) 0%,
75
+ var(--glass-bg-resting, var(--card)) 62%,
76
+ color-mix(in oklab, var(--card), var(--foreground) 6%) 100%
77
+ );
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;
83
+ }
84
+
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. */
88
+ .dock-morph-bridge-plate--vertical {
89
+ 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)
95
+ );
96
+ opacity: calc(1 - clamp(0, calc((var(--dock-morph-t, 0) - 0.5) * 2), 1));
97
+ /* squish Y on travel (the tall plate stretches along its collapse axis) */
98
+ scale: calc(1 / var(--stretch, 1)) var(--stretch, 1);
99
+ }
100
+
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. */
104
+ .dock-morph-bridge-plate--horizontal {
105
+ 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)
109
+ );
110
+ opacity: clamp(0, calc(var(--dock-morph-t, 0) * 2), 1);
111
+ /* squish X on travel (the wide plate stretches along its growth axis) */
112
+ scale: var(--stretch, 1) calc(1 / var(--stretch, 1));
113
+ }
114
+
115
+ /* PRM — the bridge is removed; the morph snaps to the target dock (the spring's
116
+ respectReducedMotion jumps the scalar 0→1 in one frame, the docks land at their
117
+ endpoints, the goo teardrop never paints). */
118
+ @media (prefers-reduced-motion: reduce) {
119
+ .dock-morph-bridge {
120
+ --dock-bridge-opacity: 0;
121
+ }
122
+ }
123
+ }
@@ -54,18 +54,41 @@
54
54
 
55
55
  /* The morphing root chrome — background / border-color interpolate between the
56
56
  collapsed and expanded endpoints on the ONE `--dock-expand-t` scalar. Scoped
57
- to the horizontal `variant-dock` (the rail / instrument-strip variants own
58
- their own surface vocabulary and do not collapse↔expand). The two color axes
59
- blend in srgb (the house mix the token ladder speaks). The `.collapsed`
60
- discrete bg/border declarations are RETIRED — this block is the single
61
- authority, and at rest `--dock-expand-t` resolves to the class endpoint (0
62
- collapsed / 1 expanded) so the resting look is exact. */
63
- .glass-dock.variant-dock:not(.vertical) {
57
+ to the horizontal dock (`:not(.vertical)`) — the inline-axis aperture morph;
58
+ a vertical dock collapses its BLOCK axis (the summary/full FLIP from the
59
+ orchestrator) and reads its own surface plate (shell.css `.glass-dock.vertical`).
60
+ The two color axes blend in srgb (the house mix the token ladder speaks). The
61
+ `.collapsed` discrete bg/border declarations are RETIRED — this block is the
62
+ single authority, and at rest `--dock-expand-t` resolves to the class endpoint
63
+ (0 collapsed / 1 expanded) so the resting look is exact.
64
+ AZ.W-DOCK-TAXONOMY — the `variant-dock` class is gone; `.glass-dock:not(.vertical)`
65
+ IS the horizontal dock now (no second-way to express orientation). */
66
+ .glass-dock:not(.vertical) {
67
+ /* AY.W-A11Y-PERF O-1 / AZ.W-ADAPTIVE-AUTO Arm 1 — BOTH morph endpoints compose
68
+ the W55 oklab adaptive tint so the self-engage darken (the unconditional
69
+ `:where(.glass-dock)` rule below re-points the element-level
70
+ `--glass-tint-source`/`--glass-tint-strength`) reaches the LIVE
71
+ horizontal dock surface in BOTH the expanded AND the COLLAPSED look (this
72
+ 0,3,0 morph interp OVERRIDES the 0,1,0 shell.css bg, so the tint must be
73
+ applied HERE — and the COLLAPSED endpoint `--glass-bg-wash` must carry it too,
74
+ else a collapsed dock over light paints the un-darkened wash and the plate
75
+ vanishes — the C5-2 ΔL≈0.01 collapse, re-surfaced on the collapsed endpoint).
76
+ The srgb transition mix between the two TINTED endpoints is preserved (the
77
+ in-flight morph frames are sub-perceptual); at the `0%` rest default both
78
+ inner oklab mixes are no-ops so this is byte-identical to today. */
64
79
  background: color-mix(
65
80
  in srgb,
66
- var(--glass-bg-dock, var(--glass-bg-resting))
81
+ color-mix(
82
+ in oklab,
83
+ var(--glass-bg-dock, var(--glass-bg-resting)),
84
+ var(--glass-tint-source) var(--glass-tint-strength)
85
+ )
67
86
  calc(var(--dock-expand-t, 1) * 100%),
68
- var(--glass-bg-wash)
87
+ color-mix(
88
+ in oklab,
89
+ var(--glass-bg-wash),
90
+ var(--glass-tint-source) var(--glass-tint-strength)
91
+ )
69
92
  );
70
93
  border-color: color-mix(
71
94
  in srgb,
@@ -78,18 +101,40 @@
78
101
  /* The padding morph is split out + scoped `:not(.dock-overflow-wrap)` so the
79
102
  wrap variant's own padding rules (W04 territory — `.dock-overflow-wrap` +
80
103
  its `@media` snap-back) are NOT clobbered by this higher-specificity longhand.
81
- Padding interpolates linearly between the collapsed floor and the expanded
82
- block/inline padding on the same `--dock-expand-t` scalar. */
83
- .glass-dock.variant-dock:not(.vertical):not(.dock-overflow-wrap) {
84
- --dock-pad-collapsed: var(
85
- --dock-collapsed-padding,
86
- var(--dock-padding-block, 0.375rem)
87
- );
88
- padding-block: calc(
89
- var(--dock-pad-collapsed) +
90
- (var(--dock-padding-block, 0.375rem) - var(--dock-pad-collapsed)) *
91
- var(--dock-expand-t, 1)
104
+
105
+ AY.W-DOCK-CHROME §1 — the LAYOUT-ISOLATION fix: the collapse↔expand morph is
106
+ an INLINE-WIDTH aperture by contract ("horizontal docks animate width"), so
107
+ the BLOCK axis MUST be invariant across the morph — otherwise the dock's
108
+ outer height shrinks ~4px on collapse (the collapsed-pad 0.25rem vs the
109
+ expanded pad-block 0.375rem, ×2) and, because a free-floating / inline dock
110
+ sits in normal flow (`display:inline-flex`), that height delta REFLOWS its
111
+ siblings — the page content jumped as the dock animated (the user's 13:27
112
+ audit item 1). The fix holds `padding-block` PINNED at the expanded value in
113
+ BOTH states (no `--dock-expand-t` interpolation on the block axis) so the
114
+ outer block-size is constant; ONLY `padding-inline` morphs to tighten the
115
+ collapsed pill inline. The collapsed circle is unaffected — its diameter is
116
+ owned by the summary pane's own symmetric `block-size` + `aspect-ratio:1`
117
+ (the `.collapsed .dock-layer--summary` rule below), CENTRED on the dock's
118
+ stable-height plate by the root `align-items:center`, not by the root pad. So
119
+ the morph reflows NOTHING vertically: 0px container-height delta. */
120
+ .glass-dock:not(.vertical):not(.dock-overflow-wrap) {
121
+ /* The collapsed inline-pad endpoint is the EXPANDED block pad (max'd with the
122
+ consumer `--dock-collapsed-padding` handle) so the height-pinned collapsed
123
+ pill is SYMMETRIC → a clean circle at the `--radius-dock` 9999px. The block
124
+ axis is pinned to the expanded pad (below), so matching the inline collapsed
125
+ endpoint to it keeps the box square (the B4 "symmetric collapsed padding
126
+ keeps the pill a circle" intent, preserved through the §1 height-pin). The
127
+ `max()` lets a consumer set `--dock-collapsed-padding` LARGER for a looser
128
+ pill but never SMALLER than the block pad (which would re-introduce the
129
+ narrower-than-tall oval the height-pin would otherwise leave). */
130
+ --dock-pad-collapsed: max(
131
+ var(--dock-padding-block, 0.375rem),
132
+ var(--dock-collapsed-padding, 0px)
92
133
  );
134
+ /* block padding is INVARIANT — the expanded value, both states (the
135
+ layout-isolation contract above): the inline aperture morphs, the block
136
+ axis is pinned so the outer height never changes → 0px container reflow. */
137
+ padding-block: var(--dock-padding-block, 0.375rem);
93
138
  padding-inline: calc(
94
139
  var(--dock-pad-collapsed) +
95
140
  (var(--dock-padding-inline, 0.5rem) - var(--dock-pad-collapsed)) *
@@ -110,14 +155,17 @@
110
155
  box-shadow: var(--shadow-dock-override, var(--shadow-dock-collapsed));
111
156
  }
112
157
 
113
- /* AX.W45-TUNE Q1 — the collapsed summary floors on BOTH axes off the SAME
114
- `--dock-collapsed-summary-min-size` token (now MINTED in tokens.css §10 as a
115
- tight ≈0.7× of the full control height). The prior rule floored ONLY
116
- `min-width` and let the token fall to `--dock-layer-height` (the full control
117
- height) — so the collapsed pill read as a full-row stub, not a proportioned
118
- squircle. Adding the symmetric `min-block-size` makes the collapsed pill a
119
- tight square-ish dot the consumer's glyph sits centred in (the proportioned-
120
- pill target the user's Q1 named). */
158
+
159
+ /* AY.W-DOCK-NAV B4 — the collapsed summary is a PERFECT CIRCLE. The `.dock-layer`
160
+ base rule (`.glass-dock:not(.vertical) .dock-layer`) locks `height:
161
+ var(--dock-layer-height)` (40px) on EVERY layer including the summary; against
162
+ the 0.85× `--dock-collapsed-summary-min-size` min-width that made the pane
163
+ 40h × 30w — an oval (the user's "circle, not oval"). This rule (1) LIFTS the
164
+ height-lock so the summary block-sizes to the SAME token its width floors at,
165
+ and (2) floors both axes to that ONE token, so the collapsed pane is a square
166
+ and the root's symmetric collapsed padding keeps the pill a circle. The glyph
167
+ sits centred on both axes. The `aspect-ratio: 1` belt-and-braces guarantees
168
+ 1:1 even if a consumer's collapsed-slot content is wider than the floor. */
121
169
  .glass-dock.collapsed .dock-layer--summary {
122
170
  min-width: var(
123
171
  --dock-collapsed-summary-min-size,
@@ -127,6 +175,15 @@
127
175
  --dock-collapsed-summary-min-size,
128
176
  var(--dock-layer-height, 2.5rem)
129
177
  );
178
+ block-size: var(
179
+ --dock-collapsed-summary-min-size,
180
+ var(--dock-layer-height, 2.5rem)
181
+ );
182
+ height: var(
183
+ --dock-collapsed-summary-min-size,
184
+ var(--dock-layer-height, 2.5rem)
185
+ );
186
+ aspect-ratio: 1;
130
187
  justify-content: center;
131
188
  }
132
189
 
@@ -146,17 +203,62 @@
146
203
  --dock-expand-t: var(--dock-morph-t);
147
204
  }
148
205
 
206
+ /* AY.W-DOCK-NAV B15 — the EMPTY-collapsed-summary trap. A dock with a
207
+ `#persistent` control but NO `#collapsed` slot (the overview first-section
208
+ dock) still renders a `.dock-layer--summary` pane that floors to the circle
209
+ min-width — so collapsed it read as a WIDE pill: the persistent Home glyph on
210
+ the LEFT + an empty circle of dead space on the RIGHT (the measured 84×50
211
+ oval). Expanding then grew the content INTO that right-side void, so the
212
+ morph read "from the right" not center-out (the user's B15). When the summary
213
+ slot is EMPTY (`:not(:has(*))`), collapse it to zero width + no floor so the
214
+ persistent control stands alone as the collapsed circle, and the morph grows
215
+ symmetrically about the persistent. An empty Vue `#collapsed` slot renders
216
+ ZERO child nodes (no whitespace text node either), so `:empty` matches it
217
+ exactly — and a flat `:empty` avoids the nested-`:has()` form Lightning CSS
218
+ drops. An authored `#collapsed` slot (non-empty summary) keeps its circle
219
+ pill. */
220
+ .glass-dock.collapsed .dock-layer--summary:empty {
221
+ min-width: 0;
222
+ inline-size: 0;
223
+ padding: 0;
224
+ margin: 0;
225
+ border: 0;
226
+ }
227
+
228
+ /* The persistent control IS the collapsed pill in the empty-summary case — drop
229
+ the inter-region gap so the collapsed circle is exactly the persistent box. */
230
+ .glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent
231
+ + .dock-layers {
232
+ margin-inline-start: 0;
233
+ }
234
+
149
235
  /* AW.W3 — the collapsed-hover scale rides the unified dock spring vocabulary.
150
236
  The `scale var(--dock-motion-resize)` arm was added to the `.glass-dock`
151
237
  root transition above, so this hover scale settles on the SAME spring curve
152
238
  the expand morph uses — a collapsed→hover→expand gesture is one continuous
153
239
  spring, not a `scale`-ease handed off to the width-spring. The hover scale
154
240
  and the press squish (`--scale-press-dock`) are now one register on the dock
155
- surface. */
241
+ surface.
242
+
243
+ AZ.W-DOCK-FLICKER — the `scale` arm is GATED on `:not([data-morphing])` (the
244
+ collapse-onset scale-pop fix, C2-2). `.collapsed` flips on SYNCHRONOUSLY when
245
+ a hovered dock begins collapsing, but the box is still painted at EXPANDED
246
+ width for the morph's leading frames (the `onSwap` pin + 1-rAF measure-defer
247
+ in dockMorphContext.ts). The bare `.collapsed:hover { scale: 1.1 }` multiplied
248
+ that transient ~535px box, painting a ±24-34px right-edge pop (the user's
249
+ "flashing"). Scoping the SCALE to `:not([data-morphing])` makes the +1.1 lift
250
+ apply ONLY at rest (the box is the 54px circle then) — during `[data-morphing]`
251
+ the hover scale is inert, mirroring the shipped `--dock-expand-t`
252
+ `[data-morphing]` precedent above (morph.css:46-53). The surface arms
253
+ (background/border/shadow) stay on the bare `:hover` (they don't multiply
254
+ geometry, so a hovered collapse keeps its hover read without the pop). */
156
255
  .glass-dock.collapsed:hover {
157
256
  background: var(--glass-bg-wash);
158
257
  border-color: var(--glass-border-floating);
159
258
  box-shadow: var(--shadow-dock-override, var(--shadow-dock));
259
+ }
260
+
261
+ .glass-dock.collapsed:hover:not([data-morphing]) {
160
262
  scale: var(--dock-collapsed-hover-scale);
161
263
  }
162
264
 
@@ -200,22 +302,44 @@
200
302
  border-color: var(--glass-border-floating, var(--glass-border-resting));
201
303
  }
202
304
 
203
- /* ── Adaptive legibility: the dock over a light backdrop (AX.W55 — the literal
204
- G2 surface; "Glass dock over VERY LIGHT materials is unreadable") ──────────
205
- The dock is the surface the user reported unreadable over light content. Its
206
- shell (`--glass-bg-dock`), chassis-strip, and held/open tiers all now read the
207
- SAME oklab tint seam the five rungs use, so this ONE bucket block — set when a
208
- consumer marks `--glass-backdrop: light` on the dock's ancestor — lifts every
209
- dock surface toward ink in lockstep. The tint tokens are INHERITING, so
210
- re-pointing them on the `.glass-dock` root re-resolves every nested surface +
211
- cascades to the dock CONTROLS (which read `--dock-fg-on-aurora` for their
212
- foreground); `--dock-fg-on-aurora` re-points to the warm-ink here so the
213
- control glyphs/labels clear AA over the now-darkened plate — ONE reconciled
214
- path, the foreground twin folded INTO the probe, not a third fork. The
215
- morph-root interp (`.variant-dock:not(.vertical)` above) stays `color-mix(in
216
- srgb …)` for the transition; the adaptive darken rides its RESTING endpoint
217
- (`--glass-bg-dock`, which carries the tint) — the in-flight morph frames are
218
- sub-perceptual (the ratified resting-endpoint-only default). */
305
+ /* ── Adaptive legibility: SELF-ENGAGE the dock over a light backdrop by default
306
+ (AZ.W-ADAPTIVE-AUTO Arm 1 — the literal G2 surface; "Glass dock over VERY
307
+ LIGHT materials is unreadable, darken DYNAMICALLY like iOS 27") ─────────────
308
+ The dock floats over WHATEVER the consumer painted — frequently a light/near-
309
+ white app surface (the canonical G2 case the user reported). AY.W-A11Y-PERF
310
+ O-1 set `--glass-backdrop: light` on the dock's OWN root (shell.css) intending
311
+ a self-darken, but CSS style queries NEVER self-match (the `@container
312
+ style()` block below reads an ANCESTOR — verified on Chrome 148), so the
313
+ self-declaration was a NO-OP. This `:where(.glass-dock)` rule is the genuine
314
+ UNCONDITIONAL self-engage — mirroring the overlay band's `ladder.css:169` —
315
+ re-pointing the INHERITING tint tokens DIRECTLY on the dock root so the
316
+ shell (`--glass-bg-dock`), chassis-strip, and held/open tiers (which compose
317
+ the oklab tint AT THE ELEMENT — the substitution-vs-inheritance-safe targets)
318
+ darken toward warm-ink in lockstep. `--dock-fg-on-aurora` re-points to the
319
+ warm-ink here too — ONE reconciled path, the foreground twin folded in (it
320
+ reaches the dock CONTROLS' glyph/label color). Over a DARK page the darken is
321
+ sub-perceptual; a dark-substrate consumer opts out via `--glass-tint-strength:
322
+ 0%` on the dock root. The morph-root interp (`.glass-dock:not(.vertical)`
323
+ above) stays `color-mix(in srgb …)` for the transition — the adaptive darken
324
+ rides its RESTING endpoint (`--glass-bg-dock`), the in-flight morph frames are
325
+ sub-perceptual (the ratified resting-endpoint-only default). The muted body
326
+ register lifts to the full warm-ink under the engaged plate (the muted L40
327
+ tier cannot clear 4.5:1 on a translucent darkened plate — darkening moves the
328
+ plate TOWARD muted's own luminance; the low-contrast muted register is
329
+ inappropriate over a busy glass plate, so it resolves to the legible dark
330
+ ink, which clears ~10:1). */
331
+ :where(.glass-dock) {
332
+ --glass-tint-source: var(--glass-tint-ink);
333
+ --glass-tint-strength: var(--glass-tint-strength-aa);
334
+ --dock-fg-on-aurora: var(--glass-tint-ink);
335
+ --muted-foreground: var(--foreground);
336
+ }
337
+
338
+ /* The ancestor-querying `@container` block KEPT — it reaches the DESCENDANT
339
+ nested-glass surfaces inside a dock when a consumer marks `--glass-backdrop:
340
+ light` on the dock's ancestor (the self-engage above re-points only the dock
341
+ root's own inheriting tokens; a consumer's explicit ancestor bucket still
342
+ cascades to nested glass through this block). */
219
343
  @container style(--glass-backdrop: light) {
220
344
  .glass-dock {
221
345
  --glass-tint-source: var(--glass-tint-ink);
@@ -235,6 +359,12 @@
235
359
  still-light dock plate), so the anchor is the light surface, matching the rung
236
360
  refinement in glass.css. The bucket is the floor; this is the native pick. */
237
361
  @supports (color: contrast-color(white)) {
362
+ /* The SELF-ENGAGED dock refinement (the unconditional self-engage above);
363
+ progressive enhancement only — the declarative darken is the AA floor. */
364
+ :where(.glass-dock) {
365
+ --dock-fg-on-aurora: contrast-color(var(--card));
366
+ --muted-foreground: contrast-color(var(--card));
367
+ }
238
368
  @container style(--glass-backdrop: light) {
239
369
  .glass-dock {
240
370
  --dock-fg-on-aurora: contrast-color(var(--card));