@mkbabb/glass-ui 3.12.0 → 4.0.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 (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -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));
@@ -33,6 +33,15 @@
33
33
  .glass-dock.dock-scroll-x .dock-layer--full {
34
34
  min-width: 0;
35
35
  overflow-x: auto;
36
+ /* BA.W-DOCK-GEOMETRY (DC-1) — PIN the CROSS (block) axis explicitly
37
+ `visible`. A single-axis `overflow-x: auto` makes the OTHER axis compute
38
+ from `visible` to `auto` (the MDN single-axis-clip-degrades caveat), so
39
+ the 40px-tall block axis would clip the 1.1× hover / full active control
40
+ circle top+bottom — the lozenge. Pinning `overflow-y: visible` keeps the
41
+ block axis genuinely un-clipped so a control's inset plate paints past the
42
+ track; the inline scroll port (the real over-cap content axis) is
43
+ untouched. */
44
+ overflow-y: visible;
36
45
  scrollbar-width: none;
37
46
  /* Trap the inline-scroll momentum at the dock's own boundary so a
38
47
  wheel/trackpad gesture that bottoms out the pill does NOT chain into
@@ -52,6 +61,12 @@
52
61
  source order. */
53
62
  .glass-dock.vertical.dock-scroll-y {
54
63
  overflow-y: auto;
64
+ /* BA.W-DOCK-GEOMETRY (DC-1) — PIN the CROSS (inline) axis explicitly
65
+ `visible` (the vertical-dock twin of the horizontal pin above). A
66
+ single-axis `overflow-y: auto` would compute the inline axis from
67
+ `visible` to `auto`, clipping a vertical control's inset plate left+right.
68
+ The block scroll port (the real over-cap axis) is untouched. */
69
+ overflow-x: visible;
55
70
  scrollbar-width: none;
56
71
  /* Same momentum-trap as the inline port — a rail that bottoms out must
57
72
  not chain its remaining wheel delta into the page scroller behind it. */
@@ -193,9 +208,59 @@
193
208
  the floor so the cascade re-resolves at touch scale. */
194
209
  @media (pointer: coarse) {
195
210
  .glass-dock[data-density] {
196
- --dock-local-scale: var(--dock-mobile-scale, 1);
211
+ /* R5-2 — the coarse-register DEFAULT lives in the FALLBACK, NOT a
212
+ hard-pin. The coarse dock painted ~22% too big (the global
213
+ --ui-coarse-scale 1.5 → an ~80px collapsed pill). The dock-layer
214
+ comfort floors at a TIGHTER coarse register than the global --ui-scale
215
+ (the dock is a dense chrome strip, not a body control): --dock-local-scale
216
+ falls back to --dock-coarse-scale (≈0.78; × the 1.5 global = ~1.17
217
+ effective → a ~60px collapsed pill). The consumer knob --dock-mobile-scale
218
+ WINS the fallback when set on ANY ancestor (inherited in, no specificity
219
+ war against this block — the dead-knob trap a hard `--dock-mobile-scale:
220
+ 0.78` here would re-create), so a consumer who wants the dock to MATCH
221
+ the global comfort sets --dock-mobile-scale: 1; one who wants it larger
222
+ sets >1. The touch floor stays held by the `max(…, --dock-control-floor)`
223
+ clamp in every scaled control-size (the lift just below). */
224
+ --dock-local-scale: var(--dock-mobile-scale, var(--dock-coarse-scale, 0.78));
225
+ /* R5-1 — RE-DECLARE --dock-scale HERE so the consumer knob reaches the
226
+ geometry cascade. The :root definition (offsets-sizing.css) computes
227
+ `calc(var(--ui-scale) * var(--dock-local-scale, 1))` AT :root, where
228
+ --dock-local-scale is the frozen identity 1 — custom-property
229
+ SUBSTITUTION resolves --dock-scale once at its declaring element, so
230
+ the descendant --dock-local-scale lift on THIS block never re-flowed
231
+ into it (the AX.W55 substitution-vs-inheritance trap, 3rd recurrence).
232
+ Re-declaring --dock-scale on the SAME element that lifts
233
+ --dock-local-scale makes the var() resolve against the lifted value, so
234
+ the --dock-mobile-scale / --dock-coarse-scale knobs reach every
235
+ `calc(<base> * --dock-scale)` geometry leg. Identical to the :root
236
+ formula by construction. */
237
+ --dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1));
197
238
  --dock-control-floor: var(--dock-touch-target, 2.75rem);
198
239
  --size-icon-btn: var(--dock-touch-target, 2.75rem);
240
+ /* R5-1 SWEEP — the OTHER :root tokens that derive from --dock-scale freeze
241
+ it at the :root value (where --dock-local-scale is the identity 1), so the
242
+ R5-2 dock-local 0.78 register never reaches them: the SAME
243
+ substitution-vs-inheritance trap, one level out. With --dock-scale now
244
+ re-declared ABOVE, RE-RESOLVE each derived token on THIS element so it
245
+ reads the dock-local --dock-scale (else --dock-icon-glyph /
246
+ --dock-collapsed-padding / --dock-layer-tab-size paint at the global 1.5×
247
+ while the density box paints at 1.17× — a desync the R5-2 register would
248
+ introduce). The formulas are IDENTICAL to their :root definitions; only
249
+ the resolution element moves so the lifted --dock-scale flows in. */
250
+ --dock-icon-glyph: calc(1.25rem * var(--dock-scale));
251
+ --dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
252
+ --dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
253
+ /* --dock-collapsed-summary-min-size derives from --dock-layer-height (the
254
+ density-resolved control height on .glass-dock[data-density]) — but its
255
+ :root definition reads --dock-layer-height at :root, where density.css
256
+ never sets it, so it froze at the inline 2.5rem fallback × 0.85 = 34px
257
+ (the pre-existing freeze, independent of R5-2). Re-resolving it HERE reads
258
+ the density-painted --dock-layer-height so the collapsed circle FLOOR
259
+ tracks the dock scale (the "perfect circle" the user named scales on touch
260
+ with the box, not a frozen 34px floor). */
261
+ --dock-collapsed-summary-min-size: calc(
262
+ var(--dock-layer-height, 2.5rem) * 0.85
263
+ );
199
264
  }
200
265
  }
201
266
  }