@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
@@ -64,6 +64,36 @@
64
64
  stacking-context guarantee). Covers every dock scale site. */
65
65
  scale: 1;
66
66
  position: relative;
67
+ /* AZ.W-ADAPTIVE-AUTO Arm 1 — the dock self-darkens over light backdrops by
68
+ default via the UNCONDITIONAL `:where(.glass-dock)` self-engage rule in
69
+ dock/morph.css (mirroring the overlay band's `ladder.css:169`): it re-points
70
+ the inheriting `--glass-tint-source`/`--glass-tint-strength` directly on the
71
+ dock root, so the shell + chassis + held/open tiers darken toward warm-ink
72
+ with NO consumer opt-in (a dock floats over arbitrary — frequently light —
73
+ page content). `--glass-backdrop: light` is KEPT here so a consumer's
74
+ DESCENDANT nested-glass inside the dock also reads the bright bucket via the
75
+ ancestor-querying `@container` block in dock/morph.css (CSS style queries
76
+ never self-match, so this declaration alone is inert for the dock's OWN
77
+ plate — the self-engage rule, not this token, darkens the dock). */
78
+ --glass-backdrop: light;
79
+ /* AY.W-A11Y-PERF O-4 — paint containment so the maximal-glass nested
80
+ backdrop-filter sample does not escape the dock box (the standard nested-
81
+ backdrop-cost mitigation; the Button-in-glass-in-dock stack re-samples the
82
+ already-blurred buffer at each level without it). */
83
+ /* BA.W-DOCK-GEOMETRY contain:paint AUDIT verdict (a) — the control-plate
84
+ clearance fix (the `--dock-control-safe-inset` painted-plate inset, scope
85
+ 1) + the scroll-port cross-axis un-clip (scope 2) keep the maximal
86
+ hover/active control plate INSIDE the dock padding box: the inset plate is
87
+ centered in its cell (≥1px slack/side at hover), the cell sits flush at the
88
+ dock content edge, and the `--dock-padding-block` (≈6px) padding holds the
89
+ plate ≥7px clear of the `contain: paint` border-box edge on the block axis.
90
+ So `contain: paint` is the NON-proximate second clip box (the lane's
91
+ `probe-bottomdock-nocontain.png` forced-root probe proved the inner
92
+ scroll-port box was proximate, not this) and it is UNEDITED here — the
93
+ inset + freed cross axis suffice, no containment lift on the control-plate
94
+ band. The π readback (W-DOCK-GEOMETRY-DELTA.md) records the live
95
+ plate-inside-padding margin number that binds this verdict. */
96
+ contain: paint;
67
97
  display: inline-flex;
68
98
  align-items: center;
69
99
  /* AW.W1 — the dock does NOT establish a default inline-size container.
@@ -167,17 +197,33 @@
167
197
  scrolls — the scroll port only engages on real over-cap content. The
168
198
  block-axis morph clip stays `data-morphing`-gated above; this is the
169
199
  AT-REST port only. Consumers set `--dock-max-block-size` per-instance to
170
- anchor the column to the viewport without re-deriving the scroll plumbing. */
171
- .glass-dock.vertical.always-expanded:not([data-morphing]),
172
- .glass-dock.vertical.expanded:not([data-morphing]) {
200
+ anchor the column to the viewport without re-deriving the scroll plumbing.
201
+
202
+ BA.W-DOCK-GEOMETRY (DC-1) — the port is now GATED behind the `dock-scroll-y`
203
+ opt-in (`overflow="scroll"`), NOT unconditional on every `.vertical.
204
+ always-expanded`. THE ROOT: `overflow-y: auto` is a scroll value, and CSS
205
+ Overflow §3 FORCES the sibling `overflow-x: visible` to COMPUTE to `auto` —
206
+ so the F6 pin never survived, and EVERY at-rest vertical dock (even a
207
+ fit-content shell that never scrolls) paid the cross-axis inline clip,
208
+ slicing a control's inset plate left/right (the live π readback measured
209
+ `overflow-x: auto` on the grow-to-fit SidebarDock). A vertical dock that
210
+ genuinely needs the cap+scroll opts IN via `overflow="scroll"` (the
211
+ `.dock-scroll-y` port in overflow.css, the SAME plumbing the F6 comment names);
212
+ a grow-to-fit vertical shell stays `overflow: visible` (line 186) on BOTH axes
213
+ so its inset control plate paints past the track. The fit-content shell pays
214
+ NO cross-axis clip for zero scroll benefit — the goal criterion's "the
215
+ scroll-port cross-axis clip no longer fires on a fit-content shell that never
216
+ scrolls", honored at the geometry root. */
217
+ .glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing]),
218
+ .glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing]) {
173
219
  overflow-x: visible;
174
220
  overflow-y: auto;
175
221
  scrollbar-width: none;
176
222
  overscroll-behavior-y: contain;
177
223
  }
178
224
 
179
- .glass-dock.vertical.always-expanded:not([data-morphing])::-webkit-scrollbar,
180
- .glass-dock.vertical.expanded:not([data-morphing])::-webkit-scrollbar {
225
+ .glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing])::-webkit-scrollbar,
226
+ .glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing])::-webkit-scrollbar {
181
227
  display: none;
182
228
  }
183
229
 
@@ -243,27 +289,42 @@
243
289
  scale var(--dock-motion-resize);
244
290
  }
245
291
 
246
- .glass-dock.variant-rail {
292
+ /* AZ.W-DOCK-TAXONOMY — the vertical dock's surface plate (the prior
293
+ `.variant-rail` block; "rail-ness" is now `orientation="vertical"` + a
294
+ shape/density choice, not a variant). */
295
+ .glass-dock.vertical {
247
296
  padding: var(--dock-rail-padding, var(--dock-padding-inline, 0.5rem));
248
- background: var(--glass-bg-dock, var(--glass-bg-wash));
297
+ /* AZ.W-ADAPTIVE-AUTO Arm 1 — the vertical dock threads the SAME element-level
298
+ oklab tint wrapper the shell base carries (NOT the pre-substituted
299
+ `--glass-bg-dock` token alone, whose inner tint baked at the `:root` 0%
300
+ strength before the `:where(.glass-dock)` self-engage re-points the
301
+ inheriting tint tokens — the substitution-vs-inheritance trap §3a names).
302
+ Wrapping HERE lets the self-engage darken reach the vertical dock's OWN
303
+ plate. Zero-delta at the `0%` rest default (the mix is a no-op =
304
+ byte-identical to the flat dock bg). */
305
+ background: color-mix(
306
+ in oklab,
307
+ var(--glass-bg-dock, var(--glass-bg-wash)),
308
+ var(--glass-tint-source) var(--glass-tint-strength)
309
+ );
249
310
  border-color: var(--glass-border-dock, var(--glass-border-wash));
250
311
  }
251
312
 
252
- .glass-dock.variant-rail.shape-pill {
313
+ .glass-dock.vertical.shape-pill {
253
314
  border-radius: var(--radius-pill);
254
315
  }
255
316
 
256
- .glass-dock.variant-rail.shape-rounded {
317
+ .glass-dock.vertical.shape-rounded {
257
318
  border-radius: var(--radius-xl);
258
319
  }
259
320
 
260
- /* AW.W3b — horizontal-root shape rules. The `shape-*` class previously bound
261
- ONLY under `.variant-rail`; on a horizontal `variant-dock` the prop silently
262
- no-op'd (the root hardwired `--radius-dock` = `--radius-pill`). These rules
263
- close that documented-but-dead prop — `shape="rounded"` / `shape="card"` now
264
- paint on a horizontal dock. Scoped to `variant-dock:not(.vertical)` so the
265
- rail + instrument-strip variants (which own their own radius) are untouched. */
266
- .glass-dock.variant-dock:not(.vertical).shape-rounded {
321
+ /* AW.W3b — horizontal-root shape rules. The `shape-*` class once bound ONLY under
322
+ the vertical surface; on a horizontal dock the prop silently no-op'd (the root
323
+ hardwired `--radius-dock` = `--radius-pill`). These rules close that
324
+ documented-but-dead prop — `shape="rounded"` / `shape="card"` now paint on a
325
+ horizontal dock. Scoped to `:not(.vertical)` so the vertical dock (which owns
326
+ its own radius above) is untouched. */
327
+ .glass-dock:not(.vertical).shape-rounded {
267
328
  border-radius: var(--radius-xl);
268
329
  }
269
330
 
@@ -275,7 +336,7 @@
275
336
  prior two discrete `.shape-card` / `.shape-card.collapsed` rules + their
276
337
  reliance on the deleted `border-radius var(--dock-motion-resize)` transition
277
338
  are RETIRED for this single interpolation. */
278
- .glass-dock.variant-dock:not(.vertical).shape-card {
339
+ .glass-dock:not(.vertical).shape-card {
279
340
  border-radius: calc(
280
341
  var(--radius-pill) +
281
342
  (var(--dock-card-radius) - var(--radius-pill)) *
@@ -295,80 +356,18 @@
295
356
  condition tests the LITERAL `superellipse(2)` (a `var()` is not evaluable in
296
357
  an `@supports` query) — the same Chrome-139 feature the token resolves to. */
297
358
  @supports (corner-shape: superellipse(2)) {
298
- .glass-dock.variant-dock:not(.vertical).shape-card {
359
+ .glass-dock:not(.vertical).shape-card {
299
360
  corner-shape: var(--corner-shape-bigdock);
300
361
  }
301
362
  }
302
363
 
303
- /* AJ-W1-δ — `instrument-strip` variant (per G-AJ-D7 Path 1).
304
- *
305
- * The speedtest survey cockpit's vertical rail needs chassis-strip
306
- * aesthetics, not the dock-rail's stadium-pill chrome. Adopts the
307
- * surface vocabulary of the `<InstrumentChassis>` family so the
308
- * strip reads as a journey-station slot — the same surface the
309
- * speedtest + complete + thankyou stations ride.
310
- *
311
- * The variant intentionally inherits the rail variant's vertical
312
- * layout (orientation: vertical; flex-direction: column) — the
313
- * orientation + fitContent computeds in GlassDock.vue branch on
314
- * `variant === "instrument-strip"` alongside the existing rail
315
- * branch. Only the surface vocabulary changes vs the rail:
316
- * - Border-radius drops from `--radius-pill` to `--radius-card`
317
- * (matches `<InstrumentChassis> { border-radius: var(--radius-card) }`).
318
- * - Background plate routes through `--glass-bg-chassis` (0.28α
319
- * per tokens.css §V) instead of `--glass-bg-wash`.
320
- * - Border routes through `--glass-border-quiet` to match the
321
- * chassis primitive's at-rest stroke.
322
- * - Box-shadow routes through `--glass-shadow-quiet` plus the
323
- * inset-bottom hairline matching the chassis primitive
324
- * (instrument-chassis.css:42-45).
325
- *
326
- * The `.shape-pill` / `.shape-rounded` class hooks are still emitted
327
- * by the template but no rule binds them under
328
- * `.variant-instrument-strip` — chassis-strip carries ONE canonical
329
- * border-radius (`--radius-card`), per the chassis family. */
330
- .glass-dock.variant-instrument-strip {
331
- padding: var(
332
- --dock-instrument-strip-padding,
333
- var(--dock-padding-inline, 0.75rem)
334
- );
335
- /* AX.W55 — the chassis-strip threads the SAME oklab tint wrapper the five
336
- rungs + the dock shell (--glass-bg-dock) carry, so the adaptive darken
337
- reaches it. Zero-delta at the `0%` rest default (the mix is 0% toward the
338
- source = byte-identical to the flat `var(--glass-bg-chassis)`); it only
339
- activates under the bright bucket below. */
340
- background: color-mix(
341
- in oklab,
342
- var(--glass-bg-chassis, var(--glass-bg-wash)),
343
- var(--glass-tint-source) var(--glass-tint-strength)
344
- );
345
- border: 1px solid var(--glass-border-quiet, var(--glass-border-resting));
346
- border-radius: var(--radius-card);
347
- box-shadow:
348
- var(--glass-shadow-quiet, var(--shadow-dock)),
349
- inset 0 -0.5px 0 0 rgb(0 0 0 / 0.06);
350
- }
351
-
352
- /* Engraved-bezel inner stroke — matches `<InstrumentChassis>::before`
353
- * (instrument-chassis.css:85-93). The chassis-strip silhouette without
354
- * this stroke reads as a flat plate; with it the strip reads as the
355
- * polished sleeve of an instrument-panel module. The `::before`
356
- * z-index sits above the chassis backdrop but below the slotted
357
- * content (the MetricBadge stack), matching the chassis primitive's
358
- * z-order. The host `.glass-dock` is already `position: relative`. */
359
- .glass-dock.variant-instrument-strip::before {
360
- content: "";
361
- position: absolute;
362
- inset: 0.5px;
363
- border-radius: calc(var(--radius-card) - 0.5px);
364
- border: 1px solid var(--surface-tint-4);
365
- pointer-events: none;
366
- z-index: 1;
367
- }
368
-
369
- .dark .glass-dock.variant-instrument-strip::before {
370
- border-color: var(--surface-tint-6);
371
- }
364
+ /* AZ.W-DOCK-TAXONOMY — the `instrument-strip` chassis-strip variant is RETIRED
365
+ (the ≥2-consumer bar). It carried the vocabulary of the InstrumentRail
366
+ component RETIRED at AY W-IC1; with the `variant` discriminant gone and no
367
+ live `variant="instrument-strip"` call-site in src/ or demo/, the chassis
368
+ paint has zero consumers. The cross-repo speedtest SurveyResultDock cockpit
369
+ re-pins in its own migration (recorded in MIGRATION.md). A consumer needing
370
+ the chassis surface composes `<InstrumentChassis>` directly. */
372
371
 
373
372
  .glass-dock:where(.fixed) {
374
373
  z-index: var(--z-dock);
@@ -426,32 +425,20 @@
426
425
  margin-block-start: var(--dock-layer-gap, 0.375rem);
427
426
  }
428
427
 
429
- /* AX.W45-TUNE C7 — the VERTICAL three-region body. The vertical dock's default
430
- slot is now wrapped in a structural `.dock-layers` column (parity with the
431
- horizontal morph-region container) instead of a bare slot. A vertical dock is
432
- always-expanded (no width morph), so this `.dock-layers` is NOT the grid-stacked
433
- crossfade pair the horizontal `.dock-layers` is — it is a single column stack
434
- carrying the dock's `--dock-layer-gap` rhythm so authored item groups +
435
- `<DockSeparator>` rules read with the correct vertical cadence. The base
436
- `.dock-layers { display: grid }` is re-pointed to a column flex here (the
437
- vertical body is content-stacked, not pane-stacked). */
438
- .glass-dock.vertical .dock-layer--vertical-body {
439
- display: flex;
428
+ /* AZ.W-DOCK-TAXONOMY (move 2) — the VERTICAL dock's layer panes lay their content
429
+ out as a COLUMN. The dock body is now the SAME orientation-agnostic
430
+ `.dock-layers` full/summary morph pair the horizontal dock uses (the prior
431
+ static `.dock-layer--vertical-body` single-stack RETIRED — a vertical dock now
432
+ collapses its block axis too). The base `.dock-layer { display: flex;
433
+ align-items: center }` is row by default; here the full/summary panes flip to a
434
+ stretched column stack carrying the dock's `--dock-layer-gap` rhythm, so
435
+ authored item groups + `<DockSeparator>` rules read with the correct vertical
436
+ cadence. The block-axis morph aperture is owned by `.dock-layers` (layers.css —
437
+ `.glass-dock.vertical[data-morphing] .dock-layers` morphs `block-size`). */
438
+ .glass-dock.vertical .dock-layer {
440
439
  flex-direction: column;
441
440
  align-items: stretch;
442
441
  gap: var(--dock-layer-gap, 0.375rem);
443
442
  min-width: 0;
444
443
  }
445
-
446
- /* The OPTIONAL trailing `#collapsed` section (the vertical analogue of the
447
- horizontal summary pane) — a persistent secondary group below a structural
448
- `<DockSeparator>`, sharing the column's gap rhythm. Renders only when the
449
- consumer authors a `#collapsed` slot (GlassDock.vue guards it), so a vertical
450
- dock with no collapsed slot keeps the prior single-stack body. */
451
- .glass-dock.vertical .dock-layer--vertical-section {
452
- display: flex;
453
- flex-direction: column;
454
- align-items: stretch;
455
- gap: var(--dock-layer-gap, 0.375rem);
456
- }
457
444
  }
@@ -0,0 +1,109 @@
1
+ /* dock-controls/dark-mode-toggle.css — the `.dark-mode-toggle-button` control
2
+ family (AZ.W-CARVE partial 2 of 5; carved out of dock-controls.css).
3
+
4
+ The standalone toggle sizes (sm/md/lg/control) + the IN-DOCK glyph-inset
5
+ contract (AY.W-DOCK-CHROME §2 / AX.W06 USF-2 — the toggle glyph routes through
6
+ `--dock-control-glyph-size` so it is optically uniform with the nav glyphs when
7
+ docked). Opens its OWN `@layer components`; @import-ed after icon-button.css. */
8
+
9
+ @layer components {
10
+ .dark-mode-toggle-button {
11
+ width: var(--dark-mode-toggle-size, 2.25rem);
12
+ height: var(--dark-mode-toggle-size, 2.25rem);
13
+ min-width: var(--dark-mode-toggle-size, 2.25rem);
14
+ min-height: var(--dark-mode-toggle-size, 2.25rem);
15
+ max-width: var(--dark-mode-toggle-size, 2.25rem);
16
+ max-height: var(--dark-mode-toggle-size, 2.25rem);
17
+ aspect-ratio: 1;
18
+ padding: var(--dark-mode-toggle-padding, 0.375rem);
19
+ transition:
20
+ opacity var(--dock-motion-standard),
21
+ background-color var(--dock-motion-standard),
22
+ box-shadow var(--dock-motion-fast);
23
+
24
+ & > svg {
25
+ width: 100%;
26
+ height: 100%;
27
+ max-width: 100%;
28
+ max-height: 100%;
29
+ }
30
+
31
+ &:hover,
32
+ &:focus {
33
+ background: var(--surface-tint-10);
34
+ opacity: 1;
35
+ outline: none;
36
+ }
37
+
38
+ &:focus-visible {
39
+ box-shadow: var(--focus-ring-shadow);
40
+ }
41
+
42
+ &[data-size="sm"] {
43
+ --dark-mode-toggle-size: 1.75rem;
44
+ --dark-mode-toggle-padding: 0.25rem;
45
+ }
46
+
47
+ &[data-size="md"] {
48
+ --dark-mode-toggle-size: 2.25rem;
49
+ --dark-mode-toggle-padding: 0.375rem;
50
+ }
51
+
52
+ &[data-size="lg"] {
53
+ --dark-mode-toggle-size: 2.75rem;
54
+ --dark-mode-toggle-padding: 0.5rem;
55
+ }
56
+
57
+ &[data-size="control"] {
58
+ --dark-mode-toggle-size: var(--control-size, 2.25rem);
59
+ --dark-mode-toggle-padding: var(--control-icon-padding, 0.375rem);
60
+ }
61
+ }
62
+
63
+ .dark-mode-toggle-button[data-size="dock"],
64
+ .glass-dock
65
+ .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not(
66
+ [data-size="control"]
67
+ ) {
68
+ --dark-mode-toggle-size: var(--dock-control-size, var(--size-icon-btn));
69
+ /* AY.W-DOCK-CHROME §2 — the in-dock toggle GLYPH insets to the nav-glyph
70
+ register. The toggle SVG carries `h-full w-full` (the utility layer, which
71
+ BEATS the component-layer `> svg { width: --dock-control-glyph-size }` rule
72
+ below), so the glyph fills whatever the PADDED box leaves. Prior the in-dock
73
+ padding fell to `var(--dock-icon-padding, 0)` (the token is never defined →
74
+ 0 pad → the glyph filled the whole 40px box edge-to-edge, ~2.5× the 16-20px
75
+ nav glyphs — the user's "too large" read). Pad the box by HALF the box↔glyph
76
+ difference so the `h-full` SVG lands at exactly `--dock-icon-glyph` (the
77
+ `--dock-scale`-keyed size the nav icons paint) — optically UNIFORM with the
78
+ nav glyphs through the utility-win path, not fighting it. */
79
+ --dark-mode-toggle-padding: calc(
80
+ (
81
+ var(--dock-control-size, var(--size-icon-btn)) -
82
+ var(--dock-icon-glyph, 1.25rem)
83
+ ) / 2
84
+ );
85
+ }
86
+
87
+ /* AX.W06 USF-2 — the dock-control optical-size contract. The
88
+ DarkModeToggle renders its OWN internal SVG `h-full w-full` (it bypasses
89
+ the `--dock-icon-glyph`-sized `> svg` slot the `.dock-icon-button` family
90
+ uses), so IN-DOCK it filled the whole control box edge-to-edge (~2.5× the
91
+ nav glyphs) — `--dock-icon-padding` is NEVER DEFINED, so the
92
+ `--dark-mode-toggle-padding: var(--dock-icon-padding, 0)` above fell to the
93
+ `0` fallback and zero padding let the SVG fill the box. Route the in-dock
94
+ toggle glyph through `--dock-control-glyph-size` (the ONE size the whole
95
+ dock-control family reads, default = `--dock-icon-glyph`, the same
96
+ `--dock-scale`-keyed glyph the nav icons paint), so the toggle is optically
97
+ UNIFORM with the nav glyphs WHEN DOCKED. The `h-full w-full` SVG stays
98
+ correct for the STANDALONE DarkModeToggle sizes (no `.glass-dock`
99
+ ancestor); this rule is scoped to the in-dock path only. Machine-checked by
100
+ the dock-control optical-parity gate, not eyeballed. */
101
+ .glass-dock
102
+ .dark-mode-toggle-button:not([data-size="sm"]):not([data-size="lg"]):not(
103
+ [data-size="control"]
104
+ )
105
+ > svg {
106
+ width: var(--dock-control-glyph-size, var(--dock-icon-glyph, 1.25rem));
107
+ height: var(--dock-control-glyph-size, var(--dock-icon-glyph, 1.25rem));
108
+ }
109
+ }
@@ -0,0 +1,143 @@
1
+ /* dock-controls/icon-button.css — the `.dock-icon-button` control family
2
+ (AZ.W-CARVE partial 1 of 5; carved out of dock-controls.css).
3
+
4
+ The base rule (size/radius/legibility colour/transition), the glass icon-hover
5
+ fill (AT.W7-dock-b / AX.W45 DK2), the iOS press DARKEN-plus-shrink
6
+ (AZ.W-REGISTER-IOS), the focus + active-paint cohort (O.W6 Lane B), the
7
+ library-owned glyph sizing (AX.W45 D15), + the `--compact` size override.
8
+
9
+ Opens its OWN `@layer components` (same layer as the carve siblings) so the
10
+ carve is cascade-isomorphic. @import-ed after the shared `:where()` group at
11
+ the dock-controls.css root. */
12
+
13
+ @layer components {
14
+ .dock-icon-button {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ flex-shrink: 0;
19
+ /* AQ.W3 §W3.2 identity base */
20
+ scale: 1;
21
+ width: var(--dock-control-size, var(--size-icon-btn));
22
+ height: var(--dock-control-size, var(--size-icon-btn));
23
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The HIT
24
+ BOX stays the full `--dock-control-size` (the WCAG 2.5.5 touch floor on
25
+ the CELL), while the inset padding + `background-clip: content-box`
26
+ insets the PAINTED plate within it: the hover/active fill paints only the
27
+ content box (the cell minus the inset on every side), so the maximal
28
+ hover (×1.1) / active circle clears the cross-axis clip edge with ≥1px
29
+ margin — the lozenge dies at the plate diameter, not at the clip box. The
30
+ inset falls back to the prior `--dock-icon-padding` (0) when no dock
31
+ ancestor sets `--dock-control-safe-inset` (a standalone icon button). */
32
+ padding: var(--dock-icon-padding, var(--dock-control-safe-inset, 0));
33
+ cursor: pointer;
34
+ border: none;
35
+ background: transparent;
36
+ background-clip: content-box;
37
+ border-radius: var(--dock-control-radius, var(--radius-pill));
38
+ /* Foreground base routes through `--dock-fg-on-aurora` (defaults to
39
+ `--foreground`, byte-identical to before) so a consumer floating the
40
+ dock over an aurora can lift contrast per-backdrop. The muted icon
41
+ weight mixes that base down with `--opacity-icon-muted`. */
42
+ color: color-mix(
43
+ in srgb,
44
+ var(--dock-fg-on-aurora, var(--foreground))
45
+ calc(var(--opacity-icon-muted) * 100%),
46
+ transparent
47
+ );
48
+ outline: none;
49
+ transition:
50
+ background-color var(--dock-motion-fast),
51
+ color var(--dock-motion-fast),
52
+ /* AT.W7-dock-b — `scale` carries the press micro-feedback spring
53
+ (transform-scoped only; the surface fades stay on the flat ease). */
54
+ scale var(--dock-press-spring),
55
+ opacity var(--dock-motion-fast),
56
+ /* The box-shadow fade now carries ONLY the focus-visible ring (shared
57
+ `:focus-visible` group in dock.css) + the active-state
58
+ `--dock-active-shadow` — the AX.W09-retired hover `--glass-highlight`
59
+ specular no longer rides it. */
60
+ box-shadow var(--dock-motion-fast);
61
+
62
+ /* AT.W7-dock-b — glass icon-hover. The icon-button hover reads as a glass
63
+ surface, not a flat `--muted` plate: a translucent card-tinted fill is
64
+ the hover affordance. A consumer retunes the fill via `--dock-icon-hover-bg`.
65
+
66
+ AX.W09 — the dock control's SECOND specular (the `--glass-highlight`
67
+ hover box-shadow, AT.W7-dock-b) is RETIRED. The dock-icon-button is a
68
+ member of the unified `.glass-material` group (glass.css), so the moving
69
+ `::before` catch-light is now its SOLE specular owner — one light per
70
+ surface (the §0 "excise or fail" discipline). Stacking the
71
+ `--glass-highlight` inset box-shadow on the most-hovered, slides-floated
72
+ surface was the worst-offending double-light blowout; the card-tinted
73
+ hover fill carries the affordance without a second catch-light, and
74
+ dropping it also removes the `:not(:focus-visible)` specular-vs-ring
75
+ juggle. */
76
+ /* AX.W45 DK2 — the hover reads the FAMILY token `--dock-control-hover-bg`
77
+ (the per-control `--dock-icon-hover-bg` still wins if a consumer set it),
78
+ so the whole dock-control family shares ONE glass-translucent hover fill.
79
+ One source per state across icon/tab/picker (no four-vocabulary drift). */
80
+ &:hover:not(:disabled) {
81
+ background: var(
82
+ --dock-icon-hover-bg,
83
+ var(--dock-control-hover-bg)
84
+ );
85
+ color: var(--btn-hover-color, var(--foreground));
86
+ scale: var(--scale-hover-dock);
87
+ }
88
+
89
+ /* AZ.W-REGISTER-IOS — the iOS press DARKEN-plus-shrink. Press lands the
90
+ glass-darken (`--dock-control-press-bg`, a tier below resting) alongside
91
+ the existing scale-press, so a tap reads "darken + shrink" (C4-INV-4 was
92
+ scale-only). Token-first — a consumer retunes via `--dock-control-press-bg`. */
93
+ &:active:not(:disabled) {
94
+ background: var(--dock-control-press-bg);
95
+ scale: var(--scale-press-dock);
96
+ }
97
+
98
+ &:focus:not(:focus-visible) {
99
+ box-shadow: none;
100
+ outline: none;
101
+ }
102
+
103
+ /* O.W6 Lane B — token-ladder active paint. Defaults match the prior
104
+ hardcoded recipe (--muted bg + --foreground color, no transform / border
105
+ / shadow). Consumers override the active variant via the
106
+ `--dock-active-{bg,color,scale,border,shadow}` cohort scoped to a parent
107
+ (e.g. bbnf-buddy `ToolsLayer.vue` audacious active treatment) — no
108
+ `:deep()` escapes required. See tokens.css §10 (dock geometry block). */
109
+ &:is(.is-active, .active, [aria-expanded="true"], [aria-pressed="true"]) {
110
+ background: var(--dock-active-bg);
111
+ color: var(--dock-active-color);
112
+ scale: var(--dock-active-scale);
113
+ border: var(--dock-active-border);
114
+ box-shadow: var(--dock-active-shadow);
115
+ }
116
+ }
117
+
118
+ /* focus-visible ring + disabled paint hoisted to the shared `:where()`
119
+ group in dock.css. The box-shadow fade transition lives on the base
120
+ `.dock-icon-button` rule (it carries the focus-ring + active-shadow fade
121
+ since AX.W09 retired the hover `--glass-highlight` specular), so no
122
+ per-state transition override is needed. */
123
+
124
+ /* AX.W45 D15 — LIBRARY GLYPH OWNERSHIP. The dock icon-button now sizes its glyph
125
+ (mirroring `.dark-mode-toggle-button > svg`), so the glyph scales WITH the box
126
+ on the `--dock-scale` multiplier instead of swimming at a fixed consumer size.
127
+ `--dock-icon-glyph: calc(1.25rem * var(--dock-scale))` (tokens.css) rides the
128
+ multiplier — at 1.5× the glyph is 30px in a 60px box, the desktop proportion.
129
+ A consumer passing an explicit lucide size class still WINS (utility layer >
130
+ component layer) — a DEFAULT, not a ceiling, matching the `.dock-tab-button`
131
+ font-size precedent. */
132
+ .dock-icon-button > svg {
133
+ width: var(--dock-icon-glyph, 1.25rem);
134
+ height: var(--dock-icon-glyph, 1.25rem);
135
+ }
136
+
137
+ .dock-icon-button--compact {
138
+ width: var(--dock-compact-control-size, auto);
139
+ height: var(--dock-compact-control-size, auto);
140
+ min-width: var(--dock-compact-control-min-width, 0);
141
+ padding: var(--dock-compact-control-padding, 0.25rem);
142
+ }
143
+ }