@mkbabb/glass-ui 3.1.1 → 3.3.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 (337) hide show
  1. package/dist/{CardFooter-CSGcJkqa.js → CardFooter-C390imy7.js} +3 -3
  2. package/dist/{CollapsibleContent-CVMOcYlV.js → CollapsibleContent-cauTbZEM.js} +1 -1
  3. package/dist/{CommandShortcut-DWT19a2Y.js → CommandShortcut-BiVyqipe.js} +7 -6
  4. package/dist/{ContextMenuSubContent-gAFxJ-qi.js → ContextMenuSubContent-DrWkXKQP.js} +4 -4
  5. package/dist/DataTable-FfkaAg2z.js +465 -0
  6. package/dist/DialogContent-IQ8_BRrC.js +100 -0
  7. package/dist/{DialogFooter-ClrNEOVU.js → DialogFooter-Er0wA3K6.js} +2 -2
  8. package/dist/{DiscoGlyph-C3JfMnRV.js → DiscoGlyph-BaZ8OawK.js} +1 -1
  9. package/dist/{GlyphFace-BRS8vUb7.js → GlyphFace-B_7vOmYn.js} +1 -1
  10. package/dist/HoverPopover-DTSYkJtw.js +96 -0
  11. package/dist/{IconTooltip-BkaA7tZ2.js → IconTooltip-BTyYn4mr.js} +1 -1
  12. package/dist/Input-CU9CNKmo.js +52 -0
  13. package/dist/{MetricBadge-DmAihkXd.js → MetricBadge-BlrdbOGN.js} +2 -2
  14. package/dist/{Notification-OqIpADml.js → Notification-DP_ApJLo.js} +3 -3
  15. package/dist/{NumberFieldContent-DTH9gb_N.js → NumberFieldContent-iOTQ5rGO.js} +9 -5
  16. package/dist/{PopoverContent-EiklFrna.js → PopoverContent-B8WtJECb.js} +1 -1
  17. package/dist/Progress-DjM86vfb.js +254 -0
  18. package/dist/{ScrollingText-BFd0i2zJ.js → ScrollingText-P9o_DuMn.js} +2 -2
  19. package/dist/{SelectScrollDownButton-Dth8-wXQ.js → SelectScrollDownButton-BGn3rjs9.js} +12 -11
  20. package/dist/TabsIndicator-DA0x9gPr.js +97 -0
  21. package/dist/{Toaster-Bjlunvq4.js → Toaster-DdhMKfus.js} +1 -1
  22. package/dist/{ToggleGroupItem-OesUouE7.js → ToggleGroupItem-gyXj998A.js} +37 -40
  23. package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
  24. package/dist/animated-digit.js +3 -3
  25. package/dist/api/index.d.ts +2 -0
  26. package/dist/api.js +1 -1
  27. package/dist/aurora.js +471 -320
  28. package/dist/badge.js +1 -1
  29. package/dist/{button-C0aHmBbt.js → button-Ckn3eDfB.js} +27 -22
  30. package/dist/button.js +1 -1
  31. package/dist/card.js +1 -1
  32. package/dist/carousel.js +6 -6
  33. package/dist/{check-dwgetki8.js → check-CdkxGxXJ.js} +1 -1
  34. package/dist/{chevron-down-DILQA1t6.js → chevron-down-pBY8sYfV.js} +1 -1
  35. package/dist/{chevron-right-fS7fal2t.js → chevron-right-BjeKC22V.js} +1 -1
  36. package/dist/{chevron-up-BtYjYQOS.js → chevron-up-DBeNHUm1.js} +1 -1
  37. package/dist/collapsible.js +1 -1
  38. package/dist/color-rkK4RMx2.js +33 -0
  39. package/dist/color.d.ts +1 -0
  40. package/dist/color.js +2 -0
  41. package/dist/command.js +1 -1
  42. package/dist/compile-DVgAxagk.js +106 -0
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
  44. package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
  45. package/dist/components/custom/aurora/composables/color.d.ts +42 -16
  46. package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
  47. package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
  48. package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
  51. package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
  52. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
  53. package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
  54. package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +3 -6
  55. package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
  56. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
  59. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
  60. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/index.d.ts +4 -3
  62. package/dist/components/custom/configurator/Configurator.vue.d.ts +26 -0
  63. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
  64. package/dist/components/custom/configurator/density.d.ts +3 -8
  65. package/dist/components/custom/configurator/index.d.ts +1 -1
  66. package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
  67. package/dist/components/custom/dock/DockIconButton.vue.d.ts +15 -4
  68. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
  69. package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -13
  70. package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
  71. package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
  72. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
  73. package/dist/components/custom/dock/index.d.ts +1 -0
  74. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  75. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  76. package/dist/components/custom/glyph-face/keys.d.ts +3 -29
  77. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
  78. package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
  79. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
  80. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
  81. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
  82. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
  83. package/dist/components/custom/goo-blob/index.d.ts +7 -0
  84. package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
  85. package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
  86. package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
  87. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
  88. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
  89. package/dist/components/custom/goo-blob/types.d.ts +77 -0
  90. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
  91. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
  92. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
  93. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
  94. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
  95. package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
  96. package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
  97. package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
  98. package/dist/components/custom/sortable-list/context.d.ts +2 -3
  99. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
  100. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
  101. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
  102. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
  103. package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
  104. package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
  105. package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
  106. package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
  107. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
  108. package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
  109. package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
  110. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
  111. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  112. package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
  113. package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
  114. package/dist/components/ui/avatar/index.d.ts +1 -1
  115. package/dist/components/ui/badge/index.d.ts +2 -2
  116. package/dist/components/ui/button/Button.vue.d.ts +3 -1
  117. package/dist/components/ui/button/index.d.ts +2 -2
  118. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  119. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  120. package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
  121. package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
  122. package/dist/components/ui/command/Command.vue.d.ts +3 -3
  123. package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
  124. package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
  125. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
  126. package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
  127. package/dist/components/ui/input/Input.vue.d.ts +19 -1
  128. package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
  129. package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
  130. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
  131. package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
  132. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
  133. package/dist/components/ui/progress/index.d.ts +5 -2
  134. package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
  135. package/dist/components/ui/select/Select.vue.d.ts +2 -2
  136. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  137. package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
  138. package/dist/components/ui/sheet/index.d.ts +1 -1
  139. package/dist/components/ui/slider/index.d.ts +12 -11
  140. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  141. package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
  142. package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
  143. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  144. package/dist/components/ui/toggle/index.d.ts +1 -1
  145. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
  146. package/dist/composables/color/index.d.ts +49 -0
  147. package/dist/composables/context/createContext.d.ts +56 -0
  148. package/dist/composables/context/index.d.ts +1 -0
  149. package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
  150. package/dist/composables/dark/index.d.ts +3 -0
  151. package/dist/composables/dark/useGlobalDark.d.ts +19 -2
  152. package/dist/composables/dom/index.d.ts +1 -3
  153. package/dist/composables/dom/useClipboard.d.ts +35 -12
  154. package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
  155. package/dist/composables/dom/useTextHighlight.d.ts +40 -0
  156. package/dist/composables/glass/webgl/compile.d.ts +15 -0
  157. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
  159. package/dist/composables/motion/core/index.d.ts +2 -1
  160. package/dist/composables/motion/index.d.ts +1 -1
  161. package/dist/composables/motion/useCountup.d.ts +29 -0
  162. package/dist/composables/motion/usePrioritizedTask.d.ts +41 -0
  163. package/dist/composables/motion/vReveal.d.ts +2 -0
  164. package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
  165. package/dist/composables/sortable/dragController.d.ts +44 -0
  166. package/dist/composables/sortable/dropResolver.d.ts +34 -0
  167. package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
  168. package/dist/composables/sortable/index.d.ts +1 -1
  169. package/dist/composables/sortable/touchGate.d.ts +26 -0
  170. package/dist/composables/sortable/transitionTiming.d.ts +50 -0
  171. package/dist/composables/sortable/types.d.ts +133 -0
  172. package/dist/composables/sortable/useSortable.d.ts +25 -140
  173. package/dist/configurator.js +1 -1
  174. package/dist/confirm-dialog.js +3 -3
  175. package/dist/context-menu.js +2 -2
  176. package/dist/controls.js +5 -5
  177. package/dist/createContext-DBMGRlx4.js +25 -0
  178. package/dist/dark.d.ts +2 -1
  179. package/dist/dark.js +9 -2
  180. package/dist/data-table.js +1 -1
  181. package/dist/dialog.js +2 -2
  182. package/dist/disco-glyph.js +1 -1
  183. package/dist/dock.js +410 -254
  184. package/dist/dockContext-spUj_-E5.js +9 -0
  185. package/dist/dom.js +6 -5
  186. package/dist/{dropdown-menu-BvRUamNs.js → dropdown-menu-EFjl5iKo.js} +4 -4
  187. package/dist/dropdown-menu.js +1 -1
  188. package/dist/expandable-container.js +28 -22
  189. package/dist/fonts/README.md +21 -0
  190. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  191. package/dist/forms.js +70 -61
  192. package/dist/glass-carousel.js +59 -52
  193. package/dist/glass-panel.js +2 -2
  194. package/dist/glass-ui.css +1 -1
  195. package/dist/glass-ui.js +159 -254
  196. package/dist/glyph-face.js +2 -2
  197. package/dist/goo-blob.d.ts +1 -0
  198. package/dist/goo-blob.js +538 -0
  199. package/dist/header-ribbon.js +3 -3
  200. package/dist/hover-card.js +1 -1
  201. package/dist/hover-popover.js +1 -1
  202. package/dist/icon-tooltip.js +1 -1
  203. package/dist/index.d.ts +1 -0
  204. package/dist/instrument-chassis.js +1 -1
  205. package/dist/instrument-rail.js +1 -1
  206. package/dist/keyboard.js +1 -1
  207. package/dist/keys-BFoma9vm.js +9 -0
  208. package/dist/label.js +1 -1
  209. package/dist/labeled-field.js +57 -39
  210. package/dist/metric-badge.js +1 -1
  211. package/dist/metric-stack.js +1 -1
  212. package/dist/{minimize-2-LsCJ_eNt.js → minimize-2-BP27-qBY.js} +1 -1
  213. package/dist/motion-core.js +154 -135
  214. package/dist/motion.js +63 -15
  215. package/dist/notification.js +1 -1
  216. package/dist/number-field.js +1 -1
  217. package/dist/paper-backdrop.js +1 -1
  218. package/dist/popover.js +1 -1
  219. package/dist/{presets-a-D93K1S.js → presets-1OhFpaIC.js} +5 -5
  220. package/dist/prng-Bz_1Tydc.js +15 -0
  221. package/dist/progress.js +2 -2
  222. package/dist/pulse.js +1 -1
  223. package/dist/reactive.js +2 -2
  224. package/dist/responsive-tabs.js +38 -32
  225. package/dist/scrolling-text.js +1 -1
  226. package/dist/{search-DBAiUABx.js → search-DBG8qaRs.js} +1 -1
  227. package/dist/search.js +153 -149
  228. package/dist/select.js +3 -3
  229. package/dist/separator.js +1 -1
  230. package/dist/{sheet-CukNDezz.js → sheet-CQYYrkr9.js} +3 -3
  231. package/dist/sheet.js +1 -1
  232. package/dist/{slider-DJvHkTRe.js → slider-BOh8ycfZ.js} +8 -12
  233. package/dist/slider.js +1 -1
  234. package/dist/sortable-list.js +37 -39
  235. package/dist/stacked-icons.js +2 -2
  236. package/dist/styles/animations.css +1 -1
  237. package/dist/styles/cards.css +1 -1
  238. package/dist/styles/components.css +45 -0
  239. package/dist/styles/dock-controls.css +486 -0
  240. package/dist/styles/dock.css +325 -431
  241. package/dist/styles/fonts.css +25 -0
  242. package/dist/styles/glass-specular-track.css +154 -0
  243. package/dist/styles/glass.css +74 -2
  244. package/dist/styles/index.css +25 -2
  245. package/dist/styles/instrument-chassis.css +11 -4
  246. package/dist/styles/theme.css +73 -21
  247. package/dist/styles/tokens.css +282 -140
  248. package/dist/styles/typography.css +14 -8
  249. package/dist/styles/utilities.css +92 -8
  250. package/dist/styles/view-transition.css +10 -4
  251. package/dist/switch.js +1 -1
  252. package/dist/tabs.js +148 -106
  253. package/dist/timeline.js +220 -159
  254. package/dist/toast.js +1 -1
  255. package/dist/toggle-group.js +1 -1
  256. package/dist/tokens.d.ts +1 -1
  257. package/dist/tooltip.js +1 -1
  258. package/dist/typewriter.js +1 -1
  259. package/dist/{useAnimatedNumber-DKQYVB7s.js → useAnimatedNumber-BF6r64lA.js} +1 -1
  260. package/dist/useClipboard-D8vFyRCa.js +97 -0
  261. package/dist/useConfiguratorState-DUtC1jxr.js +276 -0
  262. package/dist/useGlobalDark-CWiaCoEw.js +34 -0
  263. package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
  264. package/dist/useSortable-DnyGXKKY.js +246 -0
  265. package/dist/useTextHighlight-Dmtofpk2.js +72 -0
  266. package/dist/{useTouchGate-D9Zvrzyc.js → useTouchGate-CS5Csc2h.js} +1 -1
  267. package/dist/{useViewTransition-DYIK6Gzb.js → useViewTransition-D4ssvnXZ.js} +5 -3
  268. package/dist/utils/index.d.ts +2 -1
  269. package/dist/utils/platformSupport.d.ts +8 -0
  270. package/dist/utils/prng.d.ts +4 -0
  271. package/dist/vReveal-u2wSG2El.js +35 -0
  272. package/dist/watercolor-dot.d.ts +1 -0
  273. package/dist/watercolor-dot.js +129 -0
  274. package/dist/{x-q7pJa83X.js → x-C4pz9nbD.js} +1 -1
  275. package/package.json +110 -16
  276. package/src/fonts/README.md +21 -0
  277. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  278. package/src/styles/animations.css +1 -1
  279. package/src/styles/cards.css +1 -1
  280. package/src/styles/dock-controls.css +486 -0
  281. package/src/styles/dock.css +325 -431
  282. package/src/styles/fonts.css +25 -0
  283. package/src/styles/glass-specular-track.css +154 -0
  284. package/src/styles/glass.css +74 -2
  285. package/src/styles/index.css +21 -2
  286. package/src/styles/instrument-chassis.css +11 -4
  287. package/src/styles/theme.css +73 -21
  288. package/src/styles/tokens.css +282 -140
  289. package/src/styles/typography.css +14 -8
  290. package/src/styles/utilities.css +92 -8
  291. package/src/styles/view-transition.css +10 -4
  292. package/dist/DataTable-R8-Zidms.js +0 -460
  293. package/dist/DialogContent-2fALDSvc.js +0 -93
  294. package/dist/HoverPopover-CWFCfLx3.js +0 -96
  295. package/dist/Input-DDpFn568.js +0 -30
  296. package/dist/Progress-FApA9fm_.js +0 -126
  297. package/dist/UnderlineTabs-DAWMLmJG.js +0 -37
  298. package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
  299. package/dist/composables/dom/useBreakpoint.d.ts +0 -38
  300. package/dist/composables/dom/useIdleReady.d.ts +0 -63
  301. package/dist/composables/dom/useViewportReady.d.ts +0 -87
  302. package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
  303. package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
  304. package/dist/composables/motion/useStagger.d.ts +0 -50
  305. package/dist/dockContext-D5NZCWJs.js +0 -16
  306. package/dist/keys-CaTQS-vx.js +0 -11
  307. package/dist/useConfiguratorState-CtRBE0m_.js +0 -268
  308. package/dist/useGlobalDark-B0WvLJE3.js +0 -24
  309. package/dist/useIdleReady-Cmkhm03v.js +0 -162
  310. package/dist/useIntersectionPause-IY2CwPQb.js +0 -39
  311. package/dist/useSortable-Cq2Y1JLO.js +0 -175
  312. /package/dist/{ContextMenuContent-otjFIu8v.js → ContextMenuContent-De01_83g.js} +0 -0
  313. /package/dist/{HoverCardContent-DaGrgJBO.js → HoverCardContent-ICfIMZX1.js} +0 -0
  314. /package/dist/{InstrumentChassis-CnHTMxds.js → InstrumentChassis-DaHIZCqy.js} +0 -0
  315. /package/dist/{InstrumentRail-C6dEbi8E.js → InstrumentRail-B0qqLFN0.js} +0 -0
  316. /package/dist/{Label-DJty89bp.js → Label-CZk-3nTc.js} +0 -0
  317. /package/dist/{ModalOverlay-iWiAgbYH.js → ModalOverlay-B_CBtqcE.js} +0 -0
  318. /package/dist/{PaperBackdrop-CeZ-w0R0.js → PaperBackdrop-D_YZW47j.js} +0 -0
  319. /package/dist/{SelectGroup-DdR4tdDY.js → SelectGroup-CMdoCjRE.js} +0 -0
  320. /package/dist/{SelectSeparator-CXm_hlqA.js → SelectSeparator-CaJnPF3_.js} +0 -0
  321. /package/dist/{Separator-D8AUMhxY.js → Separator-C2XtAXRp.js} +0 -0
  322. /package/dist/{Switch-Cr1t_F_U.js → Switch-x8n6husW.js} +0 -0
  323. /package/dist/{TooltipProvider-DE78vbEP.js → TooltipProvider-D-JrSqDu.js} +0 -0
  324. /package/dist/{_plugin-vue_export-helper-Dq1MygBL.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  325. /package/dist/{badge-x46my_Fo.js → badge-Cl6JZ1B7.js} +0 -0
  326. /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
  327. /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
  328. /package/dist/{constants-DwBwnG8N.js → constants-DsCdlK9I.js} +0 -0
  329. /package/dist/{createLucideIcon-Bn9a1b70.js → createLucideIcon-DuDoe_ra.js} +0 -0
  330. /package/dist/{menuItemVariants-BsbGNq9C.js → menuItemVariants-C2QlXqT3.js} +0 -0
  331. /package/dist/{useGlassRenderer-Ds-nmrGz.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
  332. /package/dist/{useInterval-DVgGUf_y.js → useInterval-CHVYFpXV.js} +0 -0
  333. /package/dist/{useKeyboardShortcuts-Dpw_RUcB.js → useKeyboardShortcuts-BQfnAHHW.js} +0 -0
  334. /package/dist/{useResizeObserver-Cg9npuM3.js → useResizeObserver-DX-STszm.js} +0 -0
  335. /package/dist/{useSpringMount-Cfk1XK1R.js → useSpringMount-CnizvZGm.js} +0 -0
  336. /package/dist/{useTimer-NAaj9zNq.js → useTimer-DGgoxTXL.js} +0 -0
  337. /package/dist/{useUserInvalidAria-DVu1eTXG.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
@@ -19,7 +19,11 @@
19
19
  ) {
20
20
  --dock-motion-fast: var(--duration-fast) var(--ease-standard);
21
21
  --dock-motion-standard: var(--duration-normal) var(--ease-standard);
22
- --dock-motion-resize: var(--duration-normal) var(--spring-snappy);
22
+ /* AT.W6-dock-c — the FLIP-fallback timing. `--dock-resize-spring` (the
23
+ `--spring-snappy` linear()) is the single source curve the native
24
+ View-Transition path ALSO consumes, so the morph is timing-identical
25
+ across engines. */
26
+ --dock-motion-resize: var(--duration-normal) var(--dock-resize-spring);
23
27
  }
24
28
 
25
29
  /* Shared four-state contract — the focus-visible ring + disabled paint are
@@ -64,6 +68,15 @@
64
68
  position: relative;
65
69
  display: inline-flex;
66
70
  align-items: center;
71
+ /* AV.W16 TW3 — the dock establishes an inline-size container named
72
+ `dock` so its descendants (the label glyph, the density rules)
73
+ read the dock's OWN box, not the viewport. This makes the dock
74
+ portable into a 320px sidebar: the label compresses off the
75
+ dock's box width, not `@media`. A consumer that sets the
76
+ `containerName` prop overrides the name via inline style (the
77
+ explicit container-query opt-in); the default `dock` name backs
78
+ the built-in label/density container reads below. */
79
+ container: dock / inline-size;
67
80
  border-radius: var(--radius-dock);
68
81
  white-space: nowrap;
69
82
  max-inline-size: var(--dock-max-inline-size);
@@ -71,18 +84,19 @@
71
84
  background: var(--glass-bg-dock, var(--glass-bg-resting));
72
85
  backdrop-filter: var(--dock-surface-blur);
73
86
  border: 1.5px solid var(--glass-border-dock, var(--glass-border-resting));
74
- box-shadow: var(--shadow-dock-override, var(--shadow-dock));
75
- }
76
-
77
- /* T.W2.T1 — `overflow: hidden` is the default shell, but the
78
- container-query host path (`<GlassDock containerName="…">`) must
79
- allow descendants to wrap and report intrinsic widths past the
80
- padding box. Inline-style on the SFC sets `overflow: visible` for
81
- that path; this rule grants the default clip to every dock that
82
- is NOT a container-query host. The `data-container-name` attribute
83
- is the structural marker (set by the SFC when `containerName` is
84
- passed). */
85
- .glass-dock:not([data-container-name]) {
87
+ /* AV.W15 M3 — the full-perimeter `--glass-edge-light` rim rides as the
88
+ leading inset layer of the dock shadow stack (the navigation-band
89
+ silhouette catch-light, distinct from the top-only highlight). */
90
+ box-shadow: var(--glass-edge-light), var(--shadow-dock-override, var(--shadow-dock));
91
+ }
92
+
93
+ /* `overflow: hidden` is the clip shell for every dock. AT.W7-dock-a
94
+ folded out the prior `containerName` clip-lift (the container-query
95
+ opt-in is orthogonal it no longer silently changes the clip), so the
96
+ clip applies universally and the `.expanded` / `.always-expanded` /
97
+ `.dock-overflow-wrap` states lift it back to `visible` where they need to
98
+ grow. A consumer wanting multi-line content opts into `overflow="wrap"`. */
99
+ .glass-dock {
86
100
  overflow: hidden;
87
101
  }
88
102
 
@@ -92,10 +106,22 @@
92
106
  --dock-control-size: var(--dock-density-compact-control-size, 2rem);
93
107
  --dock-layer-height: var(--dock-density-compact-layer-height, 2rem);
94
108
  --dock-layer-gap: var(--dock-density-compact-gap, 0.25rem);
95
- --dock-trigger-padding-block: var(--dock-density-compact-trigger-padding-block, 0.1875rem);
96
- --dock-trigger-padding-inline: var(--dock-density-compact-trigger-padding-inline, 0.4375rem);
97
- --dock-tab-padding-block: var(--dock-density-compact-tab-padding-block, 0.3125rem);
98
- --dock-tab-padding-inline: var(--dock-density-compact-tab-padding-inline, 0.625rem);
109
+ --dock-trigger-padding-block: var(
110
+ --dock-density-compact-trigger-padding-block,
111
+ 0.1875rem
112
+ );
113
+ --dock-trigger-padding-inline: var(
114
+ --dock-density-compact-trigger-padding-inline,
115
+ 0.4375rem
116
+ );
117
+ --dock-tab-padding-block: var(
118
+ --dock-density-compact-tab-padding-block,
119
+ 0.3125rem
120
+ );
121
+ --dock-tab-padding-inline: var(
122
+ --dock-density-compact-tab-padding-inline,
123
+ 0.625rem
124
+ );
99
125
  --dock-tab-h: 32px;
100
126
  }
101
127
 
@@ -107,10 +133,22 @@
107
133
  --dock-control-size: var(--dock-density-comfortable-control-size, 2.5rem);
108
134
  --dock-layer-height: var(--dock-density-comfortable-layer-height, 2.5rem);
109
135
  --dock-layer-gap: var(--dock-density-comfortable-gap, 0.375rem);
110
- --dock-trigger-padding-block: var(--dock-density-comfortable-trigger-padding-block, 0.25rem);
111
- --dock-trigger-padding-inline: var(--dock-density-comfortable-trigger-padding-inline, 0.5rem);
112
- --dock-tab-padding-block: var(--dock-density-comfortable-tab-padding-block, 0.4375rem);
113
- --dock-tab-padding-inline: var(--dock-density-comfortable-tab-padding-inline, 0.75rem);
136
+ --dock-trigger-padding-block: var(
137
+ --dock-density-comfortable-trigger-padding-block,
138
+ 0.25rem
139
+ );
140
+ --dock-trigger-padding-inline: var(
141
+ --dock-density-comfortable-trigger-padding-inline,
142
+ 0.5rem
143
+ );
144
+ --dock-tab-padding-block: var(
145
+ --dock-density-comfortable-tab-padding-block,
146
+ 0.4375rem
147
+ );
148
+ --dock-tab-padding-inline: var(
149
+ --dock-density-comfortable-tab-padding-inline,
150
+ 0.75rem
151
+ );
114
152
  --dock-tab-h: 38px;
115
153
  }
116
154
 
@@ -120,10 +158,22 @@
120
158
  --dock-control-size: var(--dock-density-spacious-control-size, 2.75rem);
121
159
  --dock-layer-height: var(--dock-density-spacious-layer-height, 2.75rem);
122
160
  --dock-layer-gap: var(--dock-density-spacious-gap, 0.5rem);
123
- --dock-trigger-padding-block: var(--dock-density-spacious-trigger-padding-block, 0.375rem);
124
- --dock-trigger-padding-inline: var(--dock-density-spacious-trigger-padding-inline, 0.625rem);
125
- --dock-tab-padding-block: var(--dock-density-spacious-tab-padding-block, 0.5rem);
126
- --dock-tab-padding-inline: var(--dock-density-spacious-tab-padding-inline, 0.875rem);
161
+ --dock-trigger-padding-block: var(
162
+ --dock-density-spacious-trigger-padding-block,
163
+ 0.375rem
164
+ );
165
+ --dock-trigger-padding-inline: var(
166
+ --dock-density-spacious-trigger-padding-inline,
167
+ 0.625rem
168
+ );
169
+ --dock-tab-padding-block: var(
170
+ --dock-density-spacious-tab-padding-block,
171
+ 0.5rem
172
+ );
173
+ --dock-tab-padding-inline: var(
174
+ --dock-density-spacious-tab-padding-inline,
175
+ 0.875rem
176
+ );
127
177
  --dock-tab-h: 44px;
128
178
  }
129
179
 
@@ -137,25 +187,43 @@
137
187
  --dock-control-size: var(--dock-density-audacious-control-size, 4rem);
138
188
  --dock-layer-height: var(--dock-density-audacious-layer-height, 4rem);
139
189
  --dock-layer-gap: var(--dock-density-audacious-gap, 0.875rem);
140
- --dock-trigger-padding-block: var(--dock-density-audacious-trigger-padding-block, 0.625rem);
141
- --dock-trigger-padding-inline: var(--dock-density-audacious-trigger-padding-inline, 1rem);
142
- --dock-tab-padding-block: var(--dock-density-audacious-tab-padding-block, 0.5rem);
143
- --dock-tab-padding-inline: var(--dock-density-audacious-tab-padding-inline, 1.5rem);
190
+ --dock-trigger-padding-block: var(
191
+ --dock-density-audacious-trigger-padding-block,
192
+ 0.625rem
193
+ );
194
+ --dock-trigger-padding-inline: var(
195
+ --dock-density-audacious-trigger-padding-inline,
196
+ 1rem
197
+ );
198
+ --dock-tab-padding-block: var(
199
+ --dock-density-audacious-tab-padding-block,
200
+ 0.5rem
201
+ );
202
+ --dock-tab-padding-inline: var(
203
+ --dock-density-audacious-tab-padding-inline,
204
+ 1.5rem
205
+ );
144
206
  --dock-tab-min-height: var(--dock-density-audacious-tab-min-height, 3.5rem);
145
207
  --dock-tab-h: var(--dock-density-audacious-tab-min-height, 3.5rem);
146
208
  }
147
209
 
148
- /* Density-audacious mobile carve at narrow viewports the audacious-dock
149
- label glyphs compress so the chrome doesn't overflow its host
150
- (≤14px at <480, 15px at 480719). Consumer dock label spans bind
151
- `font-size: var(--dock-label-size)` (typography.css `.dock-label`). */
152
- @media (max-width: 479px) {
153
- .glass-dock[data-density="audacious"] {
210
+ /* Density-audacious narrow-box carve (AV.W16 TW3) when the dock's OWN
211
+ box is narrow the audacious-dock label glyphs compress so the chrome
212
+ doesn't overflow its host (≤14px below 30rem, 15px 3045rem). Keyed off
213
+ the dock's `dock` inline-size container (established on `.glass-dock`
214
+ above) rather than the viewport — so a dock dropped into a 320px
215
+ sidebar compresses its label off ITS box, not the page width. The var
216
+ is set on the `.dock-label` descendant (which reads it via
217
+ `font-size: var(--dock-label-size)`, typography.css). Thresholds keep
218
+ the prior 479/719px viewport cadence as box widths (30rem ≈ 480px,
219
+ 45rem ≈ 720px at the 16px root). */
220
+ @container dock (max-width: 29.9375rem) {
221
+ .glass-dock[data-density="audacious"] .dock-label {
154
222
  --dock-label-size: 14px;
155
223
  }
156
224
  }
157
- @media (min-width: 480px) and (max-width: 719px) {
158
- .glass-dock[data-density="audacious"] {
225
+ @container dock (min-width: 30rem) and (max-width: 44.9375rem) {
226
+ .glass-dock[data-density="audacious"] .dock-label {
159
227
  --dock-label-size: 15px;
160
228
  }
161
229
  }
@@ -192,7 +260,7 @@
192
260
  }
193
261
 
194
262
  /* Vertical rails grow-to-fit + clamp, no scroll: descendants wrap to
195
- multiple rows (opt-in via `dock-wrap`) or clamp via
263
+ multiple rows (opt-in via `overflow="wrap"`) or clamp via
196
264
  `--dock-max-block-size`; the cap fails visibly rather than masking
197
265
  overflow as a scroll affordance. No edge-fade mask — a rail that never
198
266
  scrolls has nothing to feather. */
@@ -262,7 +330,10 @@
262
330
  * `.variant-instrument-strip` — chassis-strip carries ONE canonical
263
331
  * border-radius (`--radius-card`), per the chassis family. */
264
332
  .glass-dock.variant-instrument-strip {
265
- padding: var(--dock-instrument-strip-padding, var(--dock-padding-inline, 0.75rem));
333
+ padding: var(
334
+ --dock-instrument-strip-padding,
335
+ var(--dock-padding-inline, 0.75rem)
336
+ );
266
337
  background: var(--glass-bg-chassis, var(--glass-bg-wash));
267
338
  border: 1px solid var(--glass-border-quiet, var(--glass-border-resting));
268
339
  border-radius: var(--radius-card);
@@ -305,7 +376,10 @@
305
376
  }
306
377
 
307
378
  .glass-dock.collapsed .dock-layer--summary {
308
- min-width: var(--dock-collapsed-summary-min-size, var(--dock-layer-height, 2.5rem));
379
+ min-width: var(
380
+ --dock-collapsed-summary-min-size,
381
+ var(--dock-layer-height, 2.5rem)
382
+ );
309
383
  justify-content: center;
310
384
  }
311
385
 
@@ -383,15 +457,43 @@
383
457
  transition: width var(--dock-motion-resize);
384
458
  }
385
459
 
460
+ /* AV.W9.0 — the AU.W8b native container-morph arm (the `@supports` block that
461
+ opted the subtree into auto-to-length width interpolation and declared the
462
+ active layer's destination width as intrinsic) is RETIRED. It was never made
463
+ mutually exclusive with the `SpringProgress` FLIP driver in
464
+ `useLayerTransition.ts`: on Chrome 129+ the native arm interpolated
465
+ `.dock-layers` width on the browser's own clock WHILE the spring wrote inline
466
+ `width` per frame — a dual-driver race over the SAME property that cancelled
467
+ the morph and froze the dock at runtime (born-RED under
468
+ `proof:dock-animation-live`). One authority per concern: the size morph now
469
+ has exactly ONE driver on every engine — the `SpringProgress` FLIP path above
470
+ (`:382`), or the orthogonal View-Transitions path inside
471
+ `startViewTransition` (which owns size + crossfade as a single browser-side
472
+ mutation and never touches inline width). Neither coexists with a CSS-native
473
+ intrinsic-width destination, so the race is gone. This re-expresses the
474
+ `e8380d7` "one driver owns the morph" invariant on the modern
475
+ FLIP+spring(+VT) architecture. */
476
+
386
477
  /* Horizontal dock content grows visibly when the active layer's natural
387
478
  width exceeds the content area (grow-to-fit; consumers needing wrap opt
388
- into `dock-wrap`). No edge-fade mask — content never clips or scrolls,
479
+ into `overflow="wrap"`). No edge-fade mask — content never clips or scrolls,
389
480
  so a feather has nothing to feather and only bleeds a stray ramp onto
390
481
  the edge controls. */
391
- .glass-dock.expanded:not(.dock-wrap) > .dock-layers {
482
+ .glass-dock.expanded:not(.dock-overflow-wrap) > .dock-layers {
392
483
  overflow-x: visible;
393
484
  }
394
485
 
486
+ /* AU.W8b-visibility-fork — the 3-state active/inactive/leaving visibility
487
+ contract below is LOAD-BEARING (the a11y-006 bite-anchor). A later refactor
488
+ greps for this marker so the semantics are not collapsed: the inactive layer
489
+ leaves the hit-test tree (`visibility:hidden`), the leaving layer stays
490
+ painted-but-untouchable through its fade (`visibility:visible` +
491
+ `pointer-events:none`), and the active layer shows IMMEDIATELY (`visibility
492
+ 0s`, no fade-in delay). The hand-rolled 3-state fork below is now the SOLE
493
+ visibility authority on every engine — AV.W9.1 retired the native
494
+ discrete-visibility arm that used to second-drive it, so one owner governs
495
+ visibility (one owner governs size, one owns opacity). */
496
+
395
497
  /* ── Layer crossfade + hit-test contract (shared) ──────────────────
396
498
  Two dock-layer surfaces stack on a 1/1 CSS grid and crossfade:
397
499
  `.dock-layer` (GlassDock's built-in collapsed↔expanded pair) and
@@ -409,12 +511,21 @@
409
511
  flow, so the FLIP width measurement in `useLayerTransition` still
410
512
  reads its geometry (`display:none` would zero it). The delayed
411
513
  `visibility` transition holds a leaving layer `visible` for the
412
- length of the opacity crossfade, then flips it `hidden`. */
514
+ length of the opacity crossfade, then flips it `hidden`.
515
+
516
+ AU.W2 — the opacity-lockstep fold (slides-F P0, the "not iOS-smooth"
517
+ report). The layer fade rides `--dock-motion-resize` (the SAME duration +
518
+ spring the container morph runs at, `:189`/`:216`/`:385`) — NOT the faster
519
+ `--dock-motion-fast` (0.2s). Before, the host faded in 0.2s while the
520
+ container morphed in 0.3s: a 100ms-apart settle (the items appeared to lag
521
+ the pill). Now the fade and the morph settle in lockstep. The matched
522
+ `visibility` hold extends to `--duration-normal` so the leaving layer stays
523
+ paintable for the FULL (now longer) crossfade. */
413
524
  .dock-layer,
414
525
  .dock-layer-item-host {
415
526
  transition:
416
- opacity var(--dock-motion-fast),
417
- visibility 0s linear var(--duration-fast);
527
+ opacity var(--dock-motion-resize),
528
+ visibility 0s linear var(--duration-normal);
418
529
  }
419
530
 
420
531
  .dock-layer:not(.layer-active),
@@ -429,9 +540,12 @@
429
540
  opacity: 1;
430
541
  visibility: visible;
431
542
  pointer-events: auto;
432
- /* The active layer shows immediately — no deferred `visibility`. */
543
+ /* The active layer shows immediately — no deferred `visibility`. AU.W2:
544
+ the opacity rides `--dock-motion-resize` (lockstep with the container
545
+ morph), but the `visibility 0s` stays immediate (the `:434` rule
546
+ governs — the active layer must paint at once, no fade-in delay). */
433
547
  transition:
434
- opacity var(--dock-motion-fast),
548
+ opacity var(--dock-motion-resize),
435
549
  visibility 0s;
436
550
  }
437
551
 
@@ -445,6 +559,19 @@
445
559
  pointer-events: none;
446
560
  }
447
561
 
562
+ /* AV.W9.1 — the AU.W8b native discrete-visibility arm (the second `@supports`
563
+ block that expressed the 3-state contract as one discrete transition over
564
+ opacity + visibility with a `@starting-style` entry anchor) is RETIRED. It
565
+ was a THIRD opacity/visibility authority overlapping the hand-rolled 3-state
566
+ fork above and the spring's settle — three owners for one concern. With the
567
+ native size arm gone (W9.0), opacity now has ONE owner everywhere: the
568
+ `opacity var(--dock-motion-resize)` crossfade on `.dock-layer{,-item-host}`
569
+ (the AU.W2 lockstep token — kept), and visibility has ONE owner: the delayed
570
+ `visibility 0s linear var(--duration-normal)` hold of the
571
+ `AU.W8b-visibility-fork` 3-state fallback above (the a11y-006 bite-anchor,
572
+ LOAD-BEARING). One authority per concern: size = spring/VT, opacity = the
573
+ CSS crossfade, visibility = the delayed-hold fork. */
574
+
448
575
  /* ── Base layout — distinct per surface ─────────────────────────── */
449
576
  .dock-layer {
450
577
  display: flex;
@@ -489,33 +616,90 @@
489
616
  overflow-y: visible;
490
617
  }
491
618
 
492
- .glass-dock.dock-wrap {
619
+ /* ── Scroll-on-overflow opt-in (GlassDock `overflow="scroll"`) ───────
620
+ The default contract grows-to-fit then overflows visibly past the
621
+ axis cap. `overflow="scroll"` instead makes the dock the scroll port
622
+ on its layout axis, pairing the existing cap with a hidden-scrollbar
623
+ scroll region so over-cap content stays reachable. The rounded pill
624
+ masks the scroll edge; both axes keep their cap. */
625
+
626
+ /* Inline axis (horizontal docks). The active layer becomes the scroll
627
+ port: `min-width: 0` releases the flex item's `min-content` floor so
628
+ it can shrink under the clamped `.dock-layers` track, then `overflow-x:
629
+ auto` scrolls its over-cap content. `.dock-layers` must KEEP clipping
630
+ so the pill's rounded edge masks the scroll boundary — hence the
631
+ grow-mode `overflow-x: visible` (`.dock-layers`, above) is overridden
632
+ back to `hidden` here. */
633
+ .glass-dock.dock-scroll-x.expanded:not(.dock-overflow-wrap) > .dock-layers {
634
+ overflow-x: hidden;
635
+ }
636
+
637
+ .glass-dock.dock-scroll-x .dock-layer--full {
638
+ min-width: 0;
639
+ overflow-x: auto;
640
+ scrollbar-width: none;
641
+ /* Trap the inline-scroll momentum at the dock's own boundary so a
642
+ wheel/trackpad gesture that bottoms out the pill does NOT chain into
643
+ scrolling the page behind it (the dock is a self-contained scroll
644
+ port, not a window into the route scroller). */
645
+ overscroll-behavior-x: contain;
646
+ }
647
+
648
+ .glass-dock.dock-scroll-x .dock-layer--full::-webkit-scrollbar {
649
+ display: none;
650
+ }
651
+
652
+ /* Block axis (vertical rails). The root keeps its `max-block-size` cap
653
+ and scrolls its over-cap children — cap + scroll is the correct
654
+ pairing the grow-mode contract split apart. Ties the
655
+ `.vertical.always-expanded` visible default on specificity and wins on
656
+ source order. */
657
+ .glass-dock.vertical.dock-scroll-y {
658
+ overflow-y: auto;
659
+ scrollbar-width: none;
660
+ /* Same momentum-trap as the inline port — a rail that bottoms out must
661
+ not chain its remaining wheel delta into the page scroller behind it. */
662
+ overscroll-behavior-y: contain;
663
+ }
664
+
665
+ .glass-dock.vertical.dock-scroll-y::-webkit-scrollbar {
666
+ display: none;
667
+ }
668
+
669
+ /* ── `overflow="wrap"` recipe (the `.dock-overflow-wrap` hook) ────────
670
+ Parallel to the `.dock-scroll-{x,y}` hooks the `overflow="scroll"`
671
+ member emits: the `overflow="wrap"` enum member emits this class. (The
672
+ prior `wrap` boolean's hook is retired — clean break, no alias.)
673
+ Expanded content wraps to multiple rows; the pill narrows to the
674
+ viewport gutter and snaps back to a single nowrap row past
675
+ `--dock-overflow-bp` (the `@media` at the tail). */
676
+ .glass-dock.dock-overflow-wrap {
493
677
  white-space: normal;
494
678
  border-radius: var(--radius-2xl);
495
679
  max-width: var(--dock-wrap-max-width);
496
- padding:
497
- var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
680
+ padding: var(--dock-wrap-padding-block, var(--dock-padding-block, 0.375rem))
498
681
  var(--dock-wrap-padding-inline, 0.625rem);
499
682
  }
500
683
 
501
- .glass-dock.dock-wrap .dock-layer--full {
684
+ .glass-dock.dock-overflow-wrap .dock-layer--full {
502
685
  flex-wrap: wrap;
503
686
  justify-content: center;
504
687
  height: auto;
505
688
  min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
506
- gap: var(--dock-wrap-row-gap, 0.25rem) var(--dock-wrap-column-gap, var(--dock-layer-gap, 0.375rem));
689
+ gap: var(--dock-wrap-row-gap, 0.25rem)
690
+ var(--dock-wrap-column-gap, var(--dock-layer-gap, 0.375rem));
507
691
  }
508
692
 
509
- .glass-dock.dock-wrap .dock-layer--summary {
693
+ .glass-dock.dock-overflow-wrap .dock-layer--summary {
510
694
  height: auto;
511
695
  min-height: var(--dock-wrap-layer-min-height, var(--dock-layer-height, 2rem));
512
696
  }
513
697
 
514
- .glass-dock.dock-wrap .dock-separator {
698
+ .glass-dock.dock-overflow-wrap .dock-separator {
515
699
  display: none;
516
700
  }
517
701
 
518
- .glass-dock.dock-wrap.collapsed {
702
+ .glass-dock.dock-overflow-wrap.collapsed {
519
703
  border-radius: var(--radius-pill);
520
704
  white-space: nowrap;
521
705
  max-width: none;
@@ -583,7 +767,16 @@
583
767
  border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
584
768
  }
585
769
 
770
+ /* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
771
+ `.dock-layer-tab-indicator` (the reka TabsIndicator) now carries the
772
+ active affordance; the rail is `position: relative` so the indicator's
773
+ absolute placement is rail-local. */
774
+ .dock-layer-rail {
775
+ position: relative;
776
+ }
777
+
586
778
  .dock-layer-rail .dock-layer-tab {
779
+ position: relative;
587
780
  display: inline-flex;
588
781
  align-items: center;
589
782
  justify-content: center;
@@ -596,6 +789,8 @@
596
789
  cursor: pointer;
597
790
  font: inherit;
598
791
  font-size: 0.75rem;
792
+ /* The tab glyph rides above the travelling indicator backplate. */
793
+ z-index: 1;
599
794
  transition:
600
795
  background var(--dock-motion-fast),
601
796
  color var(--dock-motion-fast);
@@ -606,11 +801,47 @@
606
801
  color: var(--foreground);
607
802
  }
608
803
 
609
- .dock-layer-rail .dock-layer-tab.is-active {
610
- background: color-mix(in srgb, var(--primary) 15%, transparent);
804
+ /* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
805
+ `data-state="active"` + `aria-selected="true"`); the per-button active
806
+ BACKGROUND is RETIRED — the travelling indicator carries that affordance. */
807
+ .dock-layer-rail .dock-layer-tab[data-state="active"] {
611
808
  color: var(--primary);
612
809
  }
613
810
 
811
+ /* AU.W8.4 — the dock control focus-ring contract does not cover
812
+ `.dock-layer-tab` (the rail tab is not in the `.dock-icon-button` family).
813
+ The roving tabindex means only the active tab is in the tab order; a
814
+ focus-visible tab paints the shared dock ring. */
815
+ .dock-layer-rail [role="tab"]:focus-visible {
816
+ box-shadow: var(--focus-ring-shadow);
817
+ outline: none;
818
+ }
819
+
820
+ /* AU.W8.4 — the travelling indicator (reka TabsIndicator). reka computes
821
+ `--reka-tabs-indicator-position` + `--reka-tabs-indicator-size` from the
822
+ active tab's geometry; the indicator morphs between tabs riding
823
+ `--dock-motion-resize` (= `--spring-dock` after AU.W8.2) — NOT a hardcoded
824
+ `--spring-snappy`. It paints the active-tab backplate the per-button
825
+ `.is-active` background used to. */
826
+ .dock-layer-rail .dock-layer-tab-indicator {
827
+ position: absolute;
828
+ left: 0;
829
+ top: 0;
830
+ height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
831
+ width: var(--reka-tabs-indicator-size);
832
+ transform: translateX(var(--reka-tabs-indicator-position));
833
+ border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
834
+ background: color-mix(in srgb, var(--primary) 15%, transparent);
835
+ transition:
836
+ width var(--dock-motion-resize),
837
+ transform var(--dock-motion-resize);
838
+ pointer-events: none;
839
+ }
840
+
841
+ /* For a vertical rail the indicator travels along the inline axis still
842
+ (the horizontal-always keyboard decision keeps the indicator inline);
843
+ reka's position var resolves to the active tab offset regardless. */
844
+
614
845
  .dock-layer-stack {
615
846
  position: relative;
616
847
  display: grid;
@@ -656,75 +887,14 @@
656
887
  height: max-content;
657
888
  }
658
889
 
659
- .dock-icon-button {
660
- display: inline-flex;
661
- align-items: center;
662
- justify-content: center;
663
- flex-shrink: 0;
664
- /* AQ.W3 §W3.2 identity base */
665
- scale: 1;
666
- width: var(--dock-control-size, var(--size-icon-btn));
667
- height: var(--dock-control-size, var(--size-icon-btn));
668
- padding: var(--dock-icon-padding, 0);
669
- cursor: pointer;
670
- border: none;
671
- background: transparent;
672
- border-radius: var(--dock-control-radius, var(--radius-pill));
673
- color: color-mix(in srgb, var(--foreground) calc(var(--opacity-icon-muted) * 100%), transparent);
674
- outline: none;
675
- transition:
676
- background-color var(--dock-motion-fast),
677
- color var(--dock-motion-fast),
678
- scale var(--dock-motion-fast),
679
- opacity var(--dock-motion-fast);
680
- }
681
-
682
- .dock-icon-button--compact {
683
- width: var(--dock-compact-control-size, auto);
684
- height: var(--dock-compact-control-size, auto);
685
- min-width: var(--dock-compact-control-min-width, 0);
686
- padding: var(--dock-compact-control-padding, 0.25rem);
687
- }
688
-
689
- .dock-icon-button:hover:not(:disabled) {
690
- background: var(--muted);
691
- color: var(--btn-hover-color, var(--foreground));
692
- scale: var(--scale-hover-dock);
693
- }
694
-
695
- .dock-icon-button:active:not(:disabled) {
696
- scale: var(--scale-press-dock);
697
- }
698
-
699
- .dock-icon-button:focus:not(:focus-visible) {
700
- box-shadow: none;
701
- outline: none;
702
- }
703
-
704
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
705
- group at the top; this rule adds only the box-shadow fade transition. */
706
- .dock-icon-button:focus-visible {
707
- transition:
708
- background-color var(--dock-motion-fast),
709
- color var(--dock-motion-fast),
710
- scale var(--dock-motion-fast),
711
- opacity var(--dock-motion-fast),
712
- box-shadow var(--dock-motion-fast);
713
- }
714
-
715
- /* O.W6 Lane B — token-ladder active paint. Defaults match the prior
716
- hardcoded recipe (--muted bg + --foreground color, no transform / border
717
- / shadow). Consumers override the active variant via the
718
- `--dock-active-{bg,color,scale,border,shadow}` cohort scoped to a parent
719
- (e.g. bbnf-buddy `ToolsLayer.vue` audacious active treatment) — no
720
- `:deep()` escapes required. See tokens.css §10 (dock geometry block). */
721
- .dock-icon-button:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
722
- background: var(--dock-active-bg);
723
- color: var(--dock-active-color);
724
- scale: var(--dock-active-scale);
725
- border: var(--dock-active-border);
726
- box-shadow: var(--dock-active-shadow);
727
- }
890
+ /* AU.W8b.3 — the five dock CONTROL families (.dock-icon-button,
891
+ .dark-mode-toggle-button, .dock-tab-button + tiers, the
892
+ .dock-select-trigger / .dock-dropdown-trigger pair, and the coarse-pointer
893
+ per-button touch floor) carved out to dock-controls.css (imported directly
894
+ after this file in index.css, same @layer components). dock.css keeps the
895
+ shell / density / grain / layer-crossfade contract + the shared
896
+ cross-control four-state comma-groups (the :focus-visible / :disabled groups
897
+ + the motion-token :where() group above). */
728
898
 
729
899
  /* J.W3.B — `.dock-popover` substrate + `pop-up-*` / `pop-down-*`
730
900
  Vue Transition keyframes retired. Hover-driven dock popovers
@@ -733,325 +903,42 @@
733
903
  `popover-animate` motion vocabulary. Click-anchored popovers
734
904
  (no dock-keep semantics) compose `<Popover>` directly. */
735
905
 
736
- .dark-mode-toggle-button {
737
- width: var(--dark-mode-toggle-size, 2.25rem);
738
- height: var(--dark-mode-toggle-size, 2.25rem);
739
- min-width: var(--dark-mode-toggle-size, 2.25rem);
740
- min-height: var(--dark-mode-toggle-size, 2.25rem);
741
- max-width: var(--dark-mode-toggle-size, 2.25rem);
742
- max-height: var(--dark-mode-toggle-size, 2.25rem);
743
- aspect-ratio: 1;
744
- padding: var(--dark-mode-toggle-padding, 0.375rem);
745
- transition:
746
- opacity var(--dock-motion-standard),
747
- background-color var(--dock-motion-standard),
748
- box-shadow var(--dock-motion-fast);
749
- }
750
-
751
- .dark-mode-toggle-button > svg {
752
- width: 100%;
753
- height: 100%;
754
- max-width: 100%;
755
- max-height: 100%;
756
- }
757
-
758
- .dark-mode-toggle-button:hover,
759
- .dark-mode-toggle-button:focus {
760
- background: var(--surface-tint-10);
761
- opacity: 1;
762
- outline: none;
763
- }
764
-
765
- .dark-mode-toggle-button:focus-visible {
766
- box-shadow: var(--focus-ring-shadow);
767
- }
768
-
769
- .dark-mode-toggle-button[data-size="sm"] {
770
- --dark-mode-toggle-size: 1.75rem;
771
- --dark-mode-toggle-padding: 0.25rem;
772
- }
773
-
774
- .dark-mode-toggle-button[data-size="md"] {
775
- --dark-mode-toggle-size: 2.25rem;
776
- --dark-mode-toggle-padding: 0.375rem;
777
- }
778
-
779
- .dark-mode-toggle-button[data-size="lg"] {
780
- --dark-mode-toggle-size: 2.75rem;
781
- --dark-mode-toggle-padding: 0.5rem;
782
- }
783
-
784
- .dark-mode-toggle-button[data-size="control"] {
785
- --dark-mode-toggle-size: var(--control-size, 2.25rem);
786
- --dark-mode-toggle-padding: var(--control-icon-padding, 0.375rem);
787
- }
788
-
789
- .dark-mode-toggle-button[data-size="dock"],
790
- .glass-dock .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not([data-size="control"]) {
791
- --dark-mode-toggle-size: var(--dock-control-size, var(--size-icon-btn));
792
- --dark-mode-toggle-padding: var(--dock-icon-padding, 0);
793
- }
794
-
795
- .dock-tab-button {
796
- display: inline-flex;
797
- align-items: center;
798
- flex-shrink: 0;
799
- /* P.W4 Lane B inline-absorb: the `--dock-tab-h` density-keyed height
800
- knob (parallel to DockIconButton's --dock-control-size) merged
801
- here from the prior DockTabButton.vue scoped style block. The
802
- density rungs that set `--dock-tab-h` per tier live in this same
803
- file (the `.glass-dock[data-density="…"]` blocks above) — Q.W3
804
- Lane A consolidated them out of utilities.css, closing the
805
- cascade-order split-brain. When a parent <GlassDock density="…">
806
- sets `--dock-tab-h`, the tab-button reserves that row even when
807
- the glyph + padding sum would ride lower. Falls through to
808
- `--dock-tab-min-height` (kept for audacious-tier callers) and
809
- finally to `auto`. R3-spec / audit-E P0-3. */
810
- min-height: var(--dock-tab-h, var(--dock-tab-min-height, auto));
811
- padding-inline: var(--dock-tab-padding-inline, 0.75rem);
812
- padding-block: var(--dock-tab-padding-block, 0.375rem);
813
- border: none;
814
- background: transparent;
815
- border-radius: var(--dock-control-radius, var(--radius-pill));
816
- /* Default font-size carries through to text-only tab content; consumers
817
- wrapping content in an explicit type utility (e.g. `text-hero`,
818
- `text-display`) on an inner <span> win because Tailwind v4 ships
819
- @utility blocks in @layer utilities, which ranks above @layer
820
- components — so this declaration is a fallback, not a ceiling. */
821
- font-size: var(--type-small);
822
- line-height: 1;
823
- color: var(--muted-foreground);
824
- text-decoration: none;
825
- cursor: pointer;
826
- white-space: nowrap;
827
- outline: none;
828
- /* AQ.W3 §W3.2 identity base */
829
- scale: 1;
830
- transition:
831
- background-color var(--dock-motion-fast),
832
- color var(--dock-motion-fast),
833
- scale var(--dock-motion-fast);
834
- }
835
-
836
- .dock-tab-button:hover:not(:disabled) {
837
- background: var(--surface-tint-8);
838
- color: var(--foreground);
839
- }
840
-
841
- .dock-tab-button:active:not(:disabled) {
842
- scale: var(--scale-press-dock);
843
- }
844
-
845
- .dock-tab-button:focus:not(:focus-visible) {
846
- box-shadow: none;
847
- }
848
-
849
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
850
- group at the top. */
851
-
852
- .dock-tab-button:is(.is-active, .active, [aria-current="page"], [aria-pressed="true"]) {
853
- background: var(--surface-tint-10);
854
- color: var(--foreground);
855
- }
856
-
857
- /* Tier — primary ────────────────────────────────────────────
858
- *
859
- * Per W2.7 §9, §12, §13, §17. The primary tier composes three at-rest
860
- * marks (top-highlight, bottom under-shadow, baseline glass) with three
861
- * disco accents on hover (specular swap, sparkle sweep, disco-grain).
862
- *
863
- * Reservation: disco fires on hover only. At rest the button reads as
864
- * a Vignelli-restrained composed glass surface. The `--phase-color`
865
- * cascade (provided by `<InstrumentChassis>` via `data-phase`) tints
866
- * the disco-grain radial only on hover; idle is neutral.
867
- *
868
- * K.W6 Lane B — the canonical disco-grain + sparkle-sweep + specular
869
- * recipe lifted to `@utility btn-audacious` (utilities.css). The Vue
870
- * <DockTabButton> attaches `btn-audacious` automatically when the
871
- * consumer passes `data-tier="primary"`. The dock-local rules below
872
- * are STRICTLY the dock extension: structural shell (padding, base
873
- * surface tint, min-height) + phase-tint extensions (hover radial
874
- * uses `--phase-color`, plus the `[data-phase]` `::before` halo).
875
- */
876
- .dock-tab-button[data-tier="primary"] {
877
- --dock-tab-min-height: 4rem;
878
- padding-inline: 1.5rem;
879
- background:
880
- color-mix(in srgb, var(--card) 60%, transparent);
881
- color: var(--foreground);
882
- }
883
-
884
- /* Phase-tint hover override — same disco-grain composition as
885
- * `btn-audacious`, but the radial uses `--phase-color` (instrument-
886
- * cluster axis) instead of the canonical `--primary`. The `--paper-
887
- * clean-texture` overlay and `--glass-specular` shadow stack are
888
- * inherited from the underlying `btn-audacious` utility. */
889
- .dock-tab-button[data-tier="primary"]:hover:not(:disabled) {
890
- --glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
891
- background-image:
892
- var(--paper-clean-texture),
893
- radial-gradient(
894
- ellipse at 30% 30%,
895
- color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent),
896
- transparent 70%
897
- );
898
- background-blend-mode: overlay, normal;
899
- background-size: var(--paper-texture-size), auto;
900
- }
901
-
902
- /* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
903
- *
904
- * The inner `<GlyphFace>` halo (`.glyph-face-backplate { inset: -25% }`)
905
- * gets clipped by the pill's `overflow: hidden`; the halo never escapes
906
- * the inner glyph wrapper. This `::before` lifts the phase-tint to the
907
- * pill itself so the glow composes with the whole CTA. Scoped to
908
- * active phases — at idle / ready the pill stays neutral and inherits
909
- * the W2.7 reservation ("disco fires on hover only"). */
910
- .dock-tab-button[data-tier="primary"][data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
911
- content: "";
912
- position: absolute;
913
- inset: 0;
914
- border-radius: inherit;
915
- background: radial-gradient(
916
- ellipse at 30% 30%,
917
- color-mix(in srgb, var(--phase-color, var(--foreground)) 18%, transparent) 0%,
918
- transparent 70%
919
- );
920
- pointer-events: none;
921
- z-index: -1;
922
- opacity: 1;
923
- transition: opacity var(--duration-fast) var(--ease-standard);
924
- }
925
-
926
- /* Tier — secondary ──────────────────────────────────────────
927
- *
928
- * Companion to `data-tier="primary"`. Carries the same edge-light +
929
- * edge-shadow skeu vocabulary at quieter weight: no disco accent, no
930
- * sparkle, no curvature radial. Composes for icon-button consumers
931
- * (chassis ActionCluster, SettingsCog) where the surface needs a
932
- * glass-tier read but not the audacious primary punch. Per P.W1.B
933
- * audit-C §3 — closes the four bare `<DockIconButton>` consumer sites
934
- * (cog + back + retake + stop) without redefining the family.
935
- */
936
- .dock-tab-button[data-tier="secondary"],
937
- .dock-icon-button[data-tier="secondary"] {
938
- background: color-mix(in srgb, var(--card) 50%, transparent);
939
- border: 1px solid var(--glass-border-quiet);
940
- box-shadow:
941
- var(--border-hairline),
942
- var(--glass-highlight);
943
- }
944
-
945
- .dock-tab-button[data-tier="secondary"]:hover:not(:disabled),
946
- .dock-icon-button[data-tier="secondary"]:hover:not(:disabled) {
947
- background: color-mix(in srgb, var(--card) 65%, transparent);
948
- box-shadow:
949
- var(--glass-specular),
950
- 0 0.5px 0 0 rgb(0 0 0 / 0.06);
951
- }
952
-
953
- .dock-select-trigger,
954
- .dock-dropdown-trigger {
955
- display: inline-flex;
956
- align-items: center;
957
- justify-content: center;
958
- flex-shrink: 0;
959
- /* AQ.W3 §W3.2 identity base */
960
- scale: 1;
961
- gap: var(--dock-trigger-gap, 0.25rem);
962
- min-height: var(--dock-trigger-min-height, auto);
963
- padding:
964
- var(--dock-trigger-padding-block, 0.25rem)
965
- var(--dock-trigger-padding-inline, 0.5rem);
966
- white-space: nowrap;
967
- cursor: pointer;
968
- border: none;
969
- background: transparent;
970
- border-radius: var(--dock-control-radius, var(--radius-pill));
971
- color: color-mix(in srgb, var(--foreground) calc(var(--opacity-icon-muted) * 100%), transparent);
972
- outline: none;
973
- transition:
974
- background-color var(--dock-motion-fast),
975
- color var(--dock-motion-fast),
976
- scale var(--dock-motion-fast),
977
- opacity var(--dock-motion-fast);
978
- }
979
-
980
- .dock-select-trigger:hover:not(:disabled),
981
- .dock-dropdown-trigger:hover:not(:disabled) {
982
- background: var(--muted);
983
- color: var(--btn-hover-color, var(--foreground));
984
- }
985
-
986
- .dock-dropdown-trigger:hover:not(:disabled) {
987
- scale: var(--scale-hover-dock);
988
- }
989
-
990
- .dock-select-trigger:active:not(:disabled),
991
- .dock-dropdown-trigger:active:not(:disabled) {
992
- scale: var(--scale-press-dock);
993
- }
994
-
995
- .dock-select-trigger:focus:not(:focus-visible),
996
- .dock-dropdown-trigger:focus:not(:focus-visible) {
997
- box-shadow: none;
998
- outline: none;
999
- }
1000
-
1001
- /* focus-visible ring + disabled paint hoisted to the shared `:where()`
1002
- group at the top; this rule adds only the box-shadow fade transition. */
1003
- .dock-select-trigger:focus-visible,
1004
- .dock-dropdown-trigger:focus-visible {
1005
- transition:
1006
- background-color var(--dock-motion-fast),
1007
- color var(--dock-motion-fast),
1008
- scale var(--dock-motion-fast),
1009
- opacity var(--dock-motion-fast),
1010
- box-shadow var(--dock-motion-fast);
1011
- }
1012
-
1013
- .dock-select-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]),
1014
- .dock-dropdown-trigger:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
1015
- background: var(--muted);
1016
- color: var(--foreground);
1017
- }
1018
-
1019
- .dock-select-trigger__chevron {
1020
- width: var(--dock-trigger-icon-size, 0.75rem);
1021
- height: var(--dock-trigger-icon-size, 0.75rem);
1022
- flex-shrink: 0;
1023
- opacity: 0.5;
1024
- /* Individual-transform identity base (AQ.W3 §W3.2) — `rotate:` longhand
1025
- for family consistency (not a stacking-context hazard: child glyph). */
1026
- rotate: 0deg;
1027
- transition: rotate var(--dock-motion-fast);
1028
- }
1029
-
1030
- .dock-select-trigger[data-state="open"] .dock-select-trigger__chevron {
1031
- rotate: 180deg;
1032
- }
1033
-
1034
- @media (min-width: 640px) {
1035
- .glass-dock.dock-wrap {
906
+ /* The `overflow="wrap"` desktop snap-back. Past the overflow breakpoint a
907
+ wrap-mode dock reverts from the narrow multi-row pill to a single nowrap
908
+ row. The breakpoint is the named token `--dock-overflow-bp` (tokens.css §9
909
+ Layout) — its single source-of-record. A `var()` cannot drive a
910
+ media-query feature in Baseline CSS, so this one `@media` realizes the
911
+ token's value; there is no longer a bare unexplained magic number — the
912
+ threshold lives under one name and is documented at its mint.
913
+ AV.W16 TW3 — KEPT as `@media` (not converted to `@container`): the wrap
914
+ dock is `max-width: calc(100vw - gutter)` — it spans the VIEWPORT by
915
+ contract, so the snap-back is genuinely viewport-semantic. The dock
916
+ establishes its own `dock` container and cannot self-query that
917
+ container for a rule on the dock root; the descendant-readable
918
+ label/density rules above are the container-query candidates. */
919
+ @media (min-width: 640px /* = var(--dock-overflow-bp) */) {
920
+ .glass-dock.dock-overflow-wrap {
1036
921
  white-space: nowrap;
1037
922
  border-radius: var(--radius-pill);
1038
923
  max-width: none;
1039
- padding:
1040
- var(--dock-wrap-desktop-padding-block, var(--dock-padding-block, 0.375rem))
924
+ padding: var(
925
+ --dock-wrap-desktop-padding-block,
926
+ var(--dock-padding-block, 0.375rem)
927
+ )
1041
928
  var(--dock-wrap-desktop-padding-inline, 0.75rem);
1042
929
  }
1043
930
 
1044
- .glass-dock.dock-wrap .dock-layer--full {
931
+ .glass-dock.dock-overflow-wrap .dock-layer--full {
1045
932
  flex-wrap: nowrap;
1046
933
  height: var(--dock-layer-height, 2.5rem);
1047
934
  gap: var(--dock-wrap-desktop-gap, var(--dock-layer-gap, 0.25rem));
1048
935
  }
1049
936
 
1050
- .glass-dock.dock-wrap .dock-layer--summary {
937
+ .glass-dock.dock-overflow-wrap .dock-layer--summary {
1051
938
  height: var(--dock-layer-height, 2.5rem);
1052
939
  }
1053
940
 
1054
- .glass-dock.dock-wrap .dock-separator {
941
+ .glass-dock.dock-overflow-wrap .dock-separator {
1055
942
  display: block;
1056
943
  }
1057
944
  }
@@ -1081,5 +968,12 @@
1081
968
  --dock-control-size: var(--dock-touch-target, 2.75rem);
1082
969
  --size-icon-btn: var(--dock-touch-target, 2.75rem);
1083
970
  }
971
+
972
+ /* S-2 — the in-dock floor above lifts the control-SIZE token (shell /
973
+ width-math), which only reaches a DockIconButton that has a
974
+ `.glass-dock` ancestor. The companion button-level floor (the
975
+ `.dock-icon-button:not(--compact)` `min-{block,inline}-size` that
976
+ reaches a STANDALONE DockIconButton with no dock wrapper) moved to
977
+ dock-controls.css with the rest of the control family (AU.W8b.3). */
1084
978
  }
1085
979
  }