@mkbabb/glass-ui 3.12.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -0,0 +1,562 @@
1
+ /* tokens/offsets-sizing.css
2
+ §9 animation offsets · §10 sizing (control heights, dropdown, carousel, stack-overlap, touch-target floor).
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+ :root {
6
+ /* ═══════════════════════════════════════════════
7
+ §9 ANIMATION OFFSETS
8
+ ═══════════════════════════════════════════════ */
9
+ /* Hover lift offsets */
10
+ --lift-sm: -1px;
11
+ --lift-md: -2px;
12
+ --lift-lg: -4px;
13
+
14
+ /* Layout tokens */
15
+ /* BA.W-FADING-SCROLL — `--fade-scroll-width` is the public edge-fade ramp
16
+ width knob for `<FadingScroll>` (inheriting, retunable on any ancestor;
17
+ SegmentedTabs' `overflow="scroll"` strip overrides it to 0.5rem). It
18
+ SUPERSEDES `--mask-fade-width` (the scroll-BLIND `.scroll-fade-*` static
19
+ masks' knob). `--mask-fade-width` is RETIRE-COORDINATED: it survives this
20
+ wave because the static `.scroll-fade-*` utility blocks survive (so
21
+ W-CONFIG-CHASSIS's C2/C3 configurator columns still render mid-batch); it
22
+ retires in a CLEAN BREAK (no alias) at the orchestrator's Batch-2-close
23
+ commit alongside the static utilities, once C2/C3 have migrated onto the
24
+ primitive. */
25
+ --fade-scroll-width: 1rem;
26
+ --mask-fade-width: 1rem;
27
+ /* J.W3.C — dock content overflow caps. When dock content exceeds
28
+ these dimensions, the inner `.dock-layers` (horizontal) /
29
+ `.glass-dock.vertical` (rail) container scrolls with a
30
+ `.scroll-fade-{x,y}` mask-fade so the boundary feathers rather
31
+ than cliffs. Defaults clamp to 80vw / 80vh capped at sensible
32
+ desktop widths; consumers override per-dock by setting either
33
+ token directly on a `.glass-dock` instance. User findings 1 + 5a. */
34
+ /* AX.W04 — `--dock-max-inline-size` is the canonical inline cap EVERY overflow
35
+ strategy reads: `overflow="scroll"` scrolls past it, and `overflow="wrap"`
36
+ wraps to N rows on the over-cap crossing (the dock shrink-wraps to content,
37
+ `max-inline-size` caps that intrinsic width at this token). The prior
38
+ `--dock-overflow-bp: 640px` viewport-breakpoint token (the magic-640
39
+ snap-back) is DELETED — the wrap is content-driven, not viewport-coupled, so
40
+ there is no breakpoint threshold to name. */
41
+ --dock-max-inline-size: min(80vw, 64rem);
42
+ --dock-max-block-size: min(80vh, 48rem);
43
+
44
+ /* AB.W1.T1 — chassis max-block-size guardrail.
45
+ Maximum block size a centred consumer-app card may consume while
46
+ preserving the inline dock footprint. The recipe subtracts the
47
+ consumer-owned `--dock-footer-space` (dock height + dock inset +
48
+ card-edge inset) and `--page-padding-top` from the dynamic viewport,
49
+ then takes one further rem of breathing room so the card never
50
+ butts the dock — the user mandate is `≥ 1rem visible gap above
51
+ dock`. Both consumer tokens carry safe fallbacks for callers that
52
+ have not declared them.
53
+
54
+ Consumers should shrink internal regions (meter, readout, timeline)
55
+ before falling back to scroll. This token is a guardrail against
56
+ chassis overflow, NOT a license to make the card scroll as the
57
+ default solution; clamp-first / no-scroll-first is the canon.
58
+ See DESIGN.md `## Chassis sizing — dock-adjusted viewport`. */
59
+ --chassis-max-block-size: calc(
60
+ 100dvh
61
+ - var(--dock-footer-space, 5.75rem)
62
+ - var(--page-padding-top, 0rem)
63
+ - 1rem
64
+ );
65
+ /* R0G-2 (AO.W3/W4) — chassis mobile dial-reserve canon. instrument-
66
+ chassis.css's mobile breakpoint reserves the dial's final box from
67
+ frame 0 via these vars (with the same values as inline fallbacks, the
68
+ safety net). Token-first home so the vars resolve canonically. */
69
+ --instrument-dial-min-height-mobile: 24rem;
70
+ --instrument-dial-meter-reserve-mobile: minmax(0, 1fr);
71
+
72
+ --max-width-input: 24rem;
73
+ --input-min-width-sm: 5rem;
74
+ --min-width-input-sm: var(--input-min-width-sm);
75
+ /* AU.W8b.4 — canonical popover width (Combobox list + anchor). Lifts the
76
+ `w-[200px]` arbitrary-value wrap to the `w-popover` @theme utility. */
77
+ --popover-width: 200px;
78
+ /* AZ.R5-4 — the ONE panel inner-padding rung (the consumer-verified "the
79
+ popover/dropdown content reads TIGHT" finding). The floating-panel +
80
+ DropdownMenuContent recipes read THIS token for their inner pad instead of
81
+ the prior hand-set `p-1`/literal, so a consumer retunes every teleported
82
+ menu/panel surface from one override. The comfortable default is `0.375rem`
83
+ (a half-rung over the prior 0.25rem tight floor — comfortable both modes
84
+ without over-padding a dense menu list). PopoverContent keeps its own
85
+ `--panel-padding-roomy` (1rem) for the prose-popover register. */
86
+ --panel-padding: 0.375rem;
87
+ --panel-padding-roomy: 1rem;
88
+ --chart-height-compact: 15rem;
89
+ --chart-height-default: 22.5rem;
90
+ --chart-height-large: 25rem;
91
+ --chart-margin: 1.25rem;
92
+ --paper-texture-size: 200px 200px;
93
+
94
+ /* Border opacity scale */
95
+ --border-opacity-light: 0.15;
96
+ --border-opacity-medium: 0.25;
97
+ --border-opacity-strong: 0.6;
98
+
99
+ /* ═══════════════════════════════════════════════
100
+ §10 SIZING
101
+ ═══════════════════════════════════════════════ */
102
+ /* ── The ONE comfortable-sizing scale doctrine (AX.W51 D18) ──────────────
103
+ `--ui-scale` is the MASTER comfortable-sizing scalar — ONE unitless knob
104
+ (registered @property <number>, inherits:true, default the identity 1)
105
+ every interactive-control magnitude derives through `calc(<base> *
106
+ var(--ui-scale))`, so a single override grows control HEIGHT + PADDING +
107
+ GAP + FONT-SIZE + GLYPH in LOCKSTEP, proportion preserved, no per-component
108
+ hack. The cohorts below (`--control-h-*` heights, `--control-text*` control
109
+ fonts, `--ui-glyph*` glyphs) are its reading surfaces; the CVA bases + the
110
+ `.btn-pill`/`.input-pill` pills consume them.
111
+
112
+ ONE scale system, not three. The dock (`--dock-scale`) and the dropdown
113
+ family (`--dropdown-text`, W50) are SPECIALIZATIONS that read this axis:
114
+ `--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1))` — the
115
+ dock multiplies ON TOP of the global comfort axis (its existing geometry
116
+ `calc` cascade inherits the global axis for free, zero edit). A consumer
117
+ re-tints the whole library's comfort from ONE `:root { --ui-scale: … }`
118
+ override (or a scoped region — a dense data-table sets it lower) — the
119
+ token-first axis.
120
+
121
+ EXCLUDED — the φ-DISPLAY ladder (`--type-display-*` / `--type-title` /
122
+ `--type-heading` / `--type-subheading`): a hero/title is a TYPOGRAPHIC
123
+ identity, NOT a touch target, so it does NOT grow on the comfort/coarse
124
+ axis. Only interactive-CONTROL text rides `--ui-scale`. Containers (card /
125
+ panel radii + paddings) are separate `--radius-*` / `--space-*` axes.
126
+
127
+ The desktop default is the IDENTITY (1) — byte-exact preservation, no
128
+ reflow of shipped consumers. The comfort GROWTH lives at the coarse-pointer
129
+ default (`--ui-coarse-scale`, §below) + the consumer override. The
130
+ WCAG-2.5.5 44px touch floor survives as a `max(…, --control-floor)` clamp
131
+ inside the scaled control-size (the coarse block lifts `--control-floor` to
132
+ `--touch-target`, so a sub-1 scale cannot drop a control under the target).
133
+ Coordinates with W54's `--glass-level` + W55's `--glass-tint-*` — SEPARATE
134
+ axes (size vs material vs legibility); a control is comfortably-sized AND
135
+ glass AND legible, three orthogonal knobs. */
136
+ --ui-scale: 1;
137
+ /* The global coarse-pointer comfort default — the WHOLE library grows ~1.5×
138
+ on touch from ONE place (the @media (pointer: coarse) block at §below lifts
139
+ :root --ui-scale to this). The dock's prior parallel 1.5× becomes the global
140
+ default it now shares. Public library-default identity — a consumer sets
141
+ 1.3 / 1.75 on :root or a scope. */
142
+ --ui-coarse-scale: 1.5;
143
+ /* The control-height cohort — the h-7/h-9/h-10/h-11 register (28/36/40/44px)
144
+ the CVA size rungs encode, each scaled by the master axis. The CVA rungs
145
+ read these via `h-[var(--control-h-*)]` instead of the raw `h-N` literal.
146
+ `--control-floor` is the WCAG-2.5.5 clamp seam (0 at desktop, lifted to
147
+ --touch-target under coarse-pointer); each height is `max(scaled, floor)`. */
148
+ --control-floor: 0px;
149
+ --control-h-xs: max(calc(1.75rem * var(--ui-scale)), var(--control-floor));
150
+ --control-h-sm: max(calc(2.25rem * var(--ui-scale)), var(--control-floor));
151
+ --control-h-md: max(calc(2.5rem * var(--ui-scale)), var(--control-floor));
152
+ --control-h-lg: max(calc(2.75rem * var(--ui-scale)), var(--control-floor));
153
+ /* The control-FONT register (RED 3 — the user's "font too small"). A comfort
154
+ multiplier BETWEEN the static φ-ladder rung and the painted control font,
155
+ so interactive-control text grows on the comfort axis while the φ-DISPLAY
156
+ ladder stays a pure typographic scale (display headings do NOT grow on
157
+ touch). `--control-text` is the workhorse (the `text-sm` register the
158
+ buttons/inputs/triggers carried); `--control-text-sm` is the quieter rung
159
+ (the `text-xs` badge/caption register). W50's `--dropdown-text` IS the
160
+ picker-family specialization of this register.
161
+
162
+ AY.W-SCALE1 — the no-double-vw reconcile: the desktop-fluid viewport base
163
+ lives ONCE in `--type-small` / `--type-caption` (typography.css §scale — a
164
+ gentle `clamp(…vw…)` so the control font grows on a wide display); the
165
+ `--ui-scale` comfort scalar multiplies that FLUID base exactly ONCE HERE. The
166
+ vw term is applied once (in the rung), the comfort factor once (here) — under
167
+ the coarse 1.5× the font grows by the comfort factor ONCE, NOT vw×1.5
168
+ over-scaled. Do NOT inline a second clamp() here, and do NOT multiply the rung
169
+ by --ui-scale at the rung. */
170
+ --control-text: calc(var(--type-small) * var(--ui-scale));
171
+ --control-text-sm: calc(var(--type-caption) * var(--ui-scale));
172
+ /* The control-GLYPH cohort (RED 4 — the glyph grows WITH the box). The
173
+ 1rem/0.875rem control-glyph register the `size-4`/`size-3.5` literals
174
+ encode; the un-sized-<svg> CVA rule reads these via
175
+ `size-[var(--ui-glyph)]`, KEEPING the `:not([class*=size-])` host-sized-icon
176
+ escape intact (an explicit `size-9` still wins). */
177
+ --ui-glyph: calc(1rem * var(--ui-scale));
178
+ --ui-glyph-sm: calc(0.875rem * var(--ui-scale));
179
+
180
+ /* ── The picker-family type-scale (AX.W50 D17) ───────────────────────────
181
+ ONE governed two-rung scale the WHOLE shadcn picker family (Select /
182
+ DropdownMenu / Combobox / ContextMenu / Command / MultiSelect) reads, so the
183
+ family paints at ONE uniform scale instead of the scattered raw
184
+ `text-sm`/`text-xs` Tailwind-literal lottery (item rows at `text-sm`,
185
+ headings/shortcuts at `text-xs`, the two filter inputs at mismatched heights).
186
+ A consumer re-tints the whole family from ONE override.
187
+
188
+ It is a SPECIALIZATION of W51's control-font register (one scale system, not
189
+ three): `--dropdown-text` reads `--control-text` (the comfort-scaled `text-sm`)
190
+ and `--dropdown-text-secondary` reads `--control-text-sm` (the comfort-scaled
191
+ `text-xs`), so the picker family rides the SAME `--ui-scale` comfort axis as
192
+ every other control — a `--ui-scale` bump grows the dropdowns too. A consumer
193
+ wanting the family LARGER than the rest overrides `--dropdown-text` directly
194
+ (e.g. `var(--type-body)`); the override re-resolves every family surface.
195
+
196
+ Scale-contract (which surface reads which rung):
197
+ • PRIMARY (`--dropdown-text`) → item rows, triggers, filter inputs, empties.
198
+ • SECONDARY (`--dropdown-text-secondary`) → section labels, group-headings,
199
+ keyboard shortcuts (the quieter-than-item caption register; resolves the
200
+ witness-2 contradiction — the Select/DropdownMenu/ContextMenu labels
201
+ collapse DOWN to the secondary rung to match the Combobox/Command headings,
202
+ ONE rung for the section-label role family-wide).
203
+ `--dropdown-input-height` unifies the two filter-input heights (Combobox was
204
+ h-10, Command was h-11) onto ONE register — a specialization of W51's
205
+ `--control-h-md` so the picker input scales on the comfort axis with the font. */
206
+ --dropdown-text: var(--control-text);
207
+ --dropdown-text-secondary: var(--control-text-sm);
208
+ --dropdown-input-height: var(--control-h-md);
209
+
210
+ --size-icon-btn: 2.5rem;
211
+ --icon-xs: 0.75rem;
212
+ --icon-sm: 0.875rem;
213
+ --icon-md: 1rem;
214
+ --icon-lg: 1.25rem;
215
+ --icon-xl: 1.5rem;
216
+ /* V.W2 T9 — 32px rung; spinner glyphs (Loader2) + dense table-row buttons.
217
+ Naming follows the radius ladder + Tailwind convention (2xl > xl > xxl) —
218
+ see B6 §2.4 for the naming rationale. */
219
+ --icon-2xl: 2rem;
220
+ /* V.W2 T10 — 40px rung; empty-state hero glyph (DashboardMap MapIcon).
221
+ AI.W5-ζ — rebound from `2.5rem` literal to `var(--size-icon-btn)` so
222
+ the alignment is contractual single-source-of-truth rather than the
223
+ coincidental numerical match noted prior. */
224
+ --icon-3xl: var(--size-icon-btn);
225
+ /* V.W2 T11 — 56px rung; FlowSelector school/home survey-flow picker.
226
+ Largest rung in the icon ladder; reserved for hero-class glyphs. */
227
+ --icon-hero: 3.5rem;
228
+
229
+ /* Golden-ratio spacing rungs — φ² and φ³. Preemptive substrate; W4 hero
230
+ chassis + W5 StoryChassis migration land the consumers. R3 §A row 1.
231
+ The 0..4 rungs are not currently named (consumers reach via
232
+ Tailwind's spacing scale); 5/6 land here because their values fall
233
+ outside the default ladder and the audacious chassis pattern wants
234
+ a named handle. */
235
+ --space-phi-5: 2.618rem; /* φ² */
236
+ --space-phi-6: 4.236rem; /* φ³ */
237
+
238
+ /* Dock geometry — consumers may override locally */
239
+ --dock-h: calc(var(--size-icon-btn) + 0.75rem + 3px);
240
+ --dock-margin: 0.5rem;
241
+ --dock-menubar-reserve: 4rem;
242
+
243
+ /* AX.W45 — the dock geometry multiplier. `--dock-scale` threads the WHOLE
244
+ `.glass-dock[data-density]` geometry cascade (box, padding, gap, tab,
245
+ tile-min, glyph) via `calc(<base> * --dock-scale)`, so a single knob grows
246
+ every dock axis in lockstep. The WCAG 2.5.5 44px floor survives as a `max(…,
247
+ 44px)` clamp INSIDE the scaled control-size.
248
+
249
+ AX.W51 RECONCILE (D18) — `--dock-scale` is RE-HOMED as a SPECIALIZATION of
250
+ the global `--ui-scale` comfort axis: `calc(var(--ui-scale) *
251
+ var(--dock-local-scale, 1))`. The dock now MULTIPLIES on top of the global
252
+ comfort scalar — its whole existing geometry `calc` chain inherits the global
253
+ axis for FREE (zero edit to the density cascade; the reconcile is at this ONE
254
+ definition line). At the desktop identity (`--ui-scale: 1`,
255
+ `--dock-local-scale: 1`) the dock is byte-identical to HEAD. On coarse-pointer
256
+ the GLOBAL `:root { --ui-scale: var(--ui-coarse-scale, 1.5) }` block grows the
257
+ dock WITH the rest of the library — ONE consistent touch scale, not a parallel
258
+ dock-only 1.5×. `--dock-local-scale` is the dock-local EXTRA multiplier
259
+ (default 1): a consumer who wants the dock LARGER than the global comfort sets
260
+ it, and the coarse block lifts it to `--dock-mobile-scale` (default 1, the
261
+ stack-extra) so the dock can grow an extra notch ON TOP of the global coarse
262
+ default. `--dock-mobile-scale` is the public library-default identity
263
+ (presets-in-consumers: a consumer sets 1.3/1.75 on `:root` or a dock scope). */
264
+ --dock-scale: calc(var(--ui-scale) * var(--dock-local-scale, 1));
265
+ --dock-local-scale: 1;
266
+ /* --dock-mobile-scale is the CONSUMER coarse knob — UNSET at :root so the
267
+ dock-layer coarse default (--dock-coarse-scale, below) is the fallback the
268
+ coarse block reads; a consumer setting --dock-mobile-scale on ANY ancestor
269
+ wins the fallback (R5-1 — the knob must reach the geometry cascade, not be
270
+ shadowed by a hard-pin on .glass-dock[data-density]). The coarse block in
271
+ dock/overflow.css RE-DECLARES --dock-scale so the descendant --dock-local-scale
272
+ lift re-flows into it (the substitution-vs-inheritance trap). */
273
+ --dock-mobile-scale: initial;
274
+ /* R5-2 — the dock-layer coarse-register default. The dock is a DENSE chrome strip
275
+ (not a body control), so on touch it floors at a TIGHTER multiplier than the
276
+ global --ui-coarse-scale 1.5 (which painted an ~80px collapsed pill, ~22% too
277
+ big — the slides-consumer R5-2 finding). 0.78 × the 1.5 global ≈ 1.17 effective
278
+ → a ~60px collapsed pill, the WCAG-2.5.5 44px floor held by the
279
+ `max(…, --dock-control-floor)` clamp. The consumer knob --dock-mobile-scale
280
+ overrides this; a consumer who wants the dock to MATCH the global comfort sets
281
+ --dock-mobile-scale: 1. */
282
+ --dock-coarse-scale: 0.78;
283
+ /* Library glyph ownership — `.dock-icon-button > svg` reads this so the dock
284
+ icon glyph scales WITH the box (mirroring `.dark-mode-toggle-button > svg`).
285
+ A consumer-passed explicit lucide size class still WINS (utility layer >
286
+ component layer); this is a DEFAULT, not a ceiling. */
287
+ --dock-icon-glyph: calc(1.25rem * var(--dock-scale));
288
+
289
+ /* AX.W45-TUNE Q1 — the COLLAPSED-pill floor tokens. The collapsed summary
290
+ used to fall to `--dock-layer-height` (the FULL control height, ~2.5rem) for
291
+ its `min-width` with NO block floor, so the shrunken pill read as an
292
+ un-collapsed control row, not a tight proportioned squircle. These two floor
293
+ tokens (referenced by dock.css's `.collapsed .dock-layer--summary` min-size +
294
+ the `--dock-pad-collapsed` morph floor) mint a TIGHT proportioned pill: the
295
+ summary min-size is ≈70% of the full control height (a proportioned dot, not a
296
+ full-row stub — the ratified default), and the collapsed padding is a step
297
+ BELOW the expanded `--dock-padding-block` so the collapsed chrome hugs the
298
+ glyph. The summary carries a SYMMETRIC `min-block-size` (dock.css) keyed to the
299
+ same token so the pill floors on BOTH axes — a squircle, not a stub. Consumers
300
+ retune the pill geometry per-instance via these two handles. */
301
+ /* AY.W-DOCK-NAV B4 — the collapsed pill is a PERFECT CIRCLE (the user's
302
+ "circle, not oval" bar). The diameter is the collapsed-summary min-size on
303
+ BOTH axes; the morph.css `.collapsed .dock-layer--summary` rule LIFTS the
304
+ `.dock-layer` height-lock (`height: var(--dock-layer-height)`) for the
305
+ collapsed summary so the pane is square at this token (the prior oval —
306
+ 38×50, aspect 0.76 — was the locked 40px height against a 28px min-width).
307
+ The 0.85× value is a TIGHT proportioned circle a step below the full control
308
+ (so the collapsed dot reads smaller than an expanded control row) while
309
+ staying large enough that the centred glyph is not cramped. A consumer
310
+ retunes the circle diameter via this one handle. */
311
+ --dock-collapsed-summary-min-size: calc(var(--dock-layer-height, 2.5rem) * 0.85);
312
+ /* AX.W61 — the collapsed padding now threads the ONE `--dock-scale` coarse-pointer
313
+ multiplier DIRECTLY (at HEAD it was a flat 0.25rem off the scale, so the
314
+ collapsed pad alone stayed desktop-sized at the 1.5x mobile scale while the
315
+ box/glyph/min-size grew — a desync the morph then interpolated FROM). The
316
+ summary min-size already threads `--dock-scale` transitively through
317
+ `--dock-layer-height` (itself `calc(* --dock-scale)` at every density rung); this
318
+ lands the collapsed pad on the same thread so the whole collapsed pill scales
319
+ coherently on touch. The 0.25rem base stays the ratified tight floor. */
320
+ --dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
321
+
322
+ /* AX.W45-TUNE Q3/C3 + C5 — the dock-control family reads a real GLASS register
323
+ on hover/active, NOT a same-hue `--card` mix at an alpha adjacent to the dock's
324
+ own `--glass-bg-dock` substrate (a sub-1%-ΔL no-op — the loud Q3 tell: "nothing
325
+ on hover, something on click"). Both legs now point at NAMED glass tiers a
326
+ measurable step ABOVE the dock's 42%-opacity substrate:
327
+ • hover → `--glass-bg-resting` (the 65% glass plate) — the control surface
328
+ WAKES as a brighter glass tier on hover, reading the blurred dock
329
+ substrate through it. The +ΔL above `--glass-bg-dock` is perceptible
330
+ BEFORE click; the specular gleam + scale ride alongside (one register).
331
+ • active → `--glass-bg-floating` (the 80% glass plate) — a tier ABOVE hover,
332
+ the keyframes-dock "selected element reads as glass" model the user
333
+ named (`pass-3:13`): the selected tile is a glass tier that shows the
334
+ substrate through it, NOT the flat `--surface-tint-12` ink wash. The
335
+ active ≠ hover register is the glass-tier step, not an alpha nudge.
336
+ This is a REGISTER change (substrate→glass-tier), not a magnitude knob. The
337
+ per-control `--dock-icon-hover-bg` override still wins if a consumer set it. */
338
+ --dock-control-hover-bg: var(--glass-bg-resting);
339
+ --dock-control-active-bg: var(--glass-bg-floating);
340
+
341
+ /* AX.W45-TUNE C4/C5 — the small-tile specular override. The 40px dock-control
342
+ tile is a fraction of a card's plate, so the global `--glass-specular-size`
343
+ (36% of the plate) blooms a disproportionate disc on a hover/active dock tile
344
+ (the I.W6 finding). The dock controls scope a TIGHTER radius (22%) so the gleam
345
+ wakes as a restrained EDGE-catch on the small tile, not a tile-filling bloom —
346
+ the right resolution of I.W6 (sized-down on the small surface), not turning the
347
+ specular off everywhere. Read by the dock-control `::before` recipe (glass.css)
348
+ via the family-scoped override below; the global card/panel size is untouched. */
349
+ --dock-control-specular-size: 22%;
350
+
351
+ /* AZ.W-DOCK-RAIL — the layer-switcher rail is a HAIRLINE register, not a
352
+ fused tinted gutter. The `--surface-tint-8` filled plate (the "heavy dark
353
+ blob column" R3-1) is RETIRED: `--dock-layer-rail-bg` defaults TRANSPARENT
354
+ so the rail box paints no fill, and the single `--dock-layer-rail-divider`
355
+ hairline becomes the only visible rail edge — a thin rule between the
356
+ switcher column and the dock body (the iOS-grade hairline switcher).
357
+ The hover/active affordance stays a translucent GLASS tint: the active
358
+ indicator reads `--dock-layer-rail-active`, defaulting to the glass-floating
359
+ tier (the keyframes-dock "selected reads as glass" register), NOT a
360
+ saturated `--primary 15%` warm-red mix — the exact accent defers to
361
+ W-REGISTER-IOS's root register (the rail keeps a glass tint here, never
362
+ bakes a brand-red the de-red wave has to undo). */
363
+ --dock-layer-rail-bg: transparent;
364
+ --dock-layer-rail-divider: color-mix(in srgb, var(--border) 40%, transparent);
365
+ --dock-layer-rail-hover: color-mix(in srgb, var(--accent) 30%, transparent);
366
+ --dock-layer-rail-active: var(--glass-bg-floating);
367
+ /* AY.W-DOCK-NAV B6 — the switcher-rail TAB is a COMPACT square, distinct from
368
+ the 40px dock CONTROL. The prior fallback chain (`var(--dock-control-size,
369
+ 1.75rem)`) resolved to the full 40px control, so a 3-tab column rail stood
370
+ ~140px tall — a giant pill of dead space. A dedicated tighter tab size
371
+ (1.75rem = 28px, density-scaled) keeps the rail a compact icon column the
372
+ indicator travels cleanly, and the dock grows only as tall as the rail needs.
373
+ Consumers retune the rail-tab size via this one handle. */
374
+ --dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
375
+
376
+ /* BA.W-DOCK-SECTIONS — the divider-seam rail knobs.
377
+ `--dock-rail-extend-length` (declared in rail-extend.css) was RE-SEMANTICIZED:
378
+ it is no longer a one-way connector length but the SYMMETRIC per-side overrun of
379
+ the seam line (the line's cross-extent = dock extent + 2× the knob, centered on
380
+ the seam). `--dock-rail-retract-stub` is the residual protrusion FRACTION the
381
+ chips leave past the dock edge on collapse (the macOS fan-out "retract INTO the
382
+ rail leaving a slight protrusion"; 0 = fully retracted, 1 = no retract). The
383
+ `--dock-section-zone-gap` is the inter-control rhythm inside a <DockSection> zone
384
+ (defaults to the dock's own `--dock-gap`, so the section grouping adds no box). */
385
+ --dock-rail-retract-stub: 0.35;
386
+ --dock-section-zone-gap: var(--dock-gap, 0.25rem);
387
+
388
+ /* Dock active-state ladder (O.W6 Lane B)
389
+ Token-overridable active paint for `.dock-icon-button`. Promoted
390
+ from hardcoded `background: var(--muted); color: var(--foreground)`
391
+ per bbnf-buddy O11/c R1: 7 `:deep()` escapes at `ToolsLayer.vue`
392
+ redefine bg/color/scale/border/shadow on the active variant; the
393
+ ladder absorbs ~3 of 7 at a stroke. Defaults preserve the prior
394
+ visual contract (no transform, no border, no shadow) — overrides
395
+ take effect per-instance via `:root` or a parent scope, e.g.
396
+ `.tools-layer { --dock-active-scale: 1.2; --dock-active-bg: …; }`.
397
+ ≥ 2-consumer coverage: bbnf-buddy ToolsLayer (override consumer) +
398
+ speedtest dock (default consumer).
399
+
400
+ AX.W45 DK2 — re-pointed off the opaque `--muted` plate onto the glass-
401
+ correct `--dock-control-active-bg` (a translucent tint a ladder step above
402
+ hover), so the icon-button active no longer stamps a solid cream rectangle
403
+ over the dock glass. The O.W6 active-ladder override consumers still retint
404
+ per-instance; only the DEFAULT moved to glass-correct. */
405
+ --dock-active-bg: var(--dock-control-active-bg);
406
+ --dock-active-color: var(--foreground);
407
+ --dock-active-scale: 1;
408
+ --dock-active-border: none;
409
+ --dock-active-shadow: none;
410
+
411
+ /* AZ.W-REGISTER-IOS — the iOS-26/27 SELECTED register, at the ROOT.
412
+ R3-6 retired the brand-red (`--viz-fourier`) interactive register
413
+ (hover/active/selected/pressed) in favour of the iOS-glassy luminance-lift:
414
+ a translucent material-lift plate (`--dock-control-active-bg`, already the
415
+ `--glass-bg-floating` tier — C4-INV-1, UNCHANGED) + a brighter-material
416
+ accent that lifts LUMINANCE, never a saturated brand hue.
417
+
418
+ `--dock-selected-accent` is the SINGLE retint knob for the selected
419
+ affordance: it defaults to a translucent foreground-over-transparent
420
+ "brighter material" lift, so it auto-FLIPS with `--foreground` (dark mode
421
+ resolves a light luminance-lift over the dark plate — the iOS read). The
422
+ rail leading-edge accent BAR (`dock-controls.css` `::before`) consumes it;
423
+ the selected GLYPH stays `--foreground` warm-ink (arm-a — the glyph never
424
+ carries the accent token, only the bar does). A consumer retints the whole
425
+ selected affordance through this ONE token (token-first); red survives only
426
+ as static brand INK (the ℱ wordmark / data-viz strokes / the gold-CTA
427
+ family), never as an interactive register. */
428
+ --dock-selected-accent: color-mix(in oklab, var(--foreground) 14%, transparent);
429
+
430
+ /* AZ.W-REGISTER-IOS — the iOS press-DARKEN. Press today scales only
431
+ (`--scale-press-dock`, C4-INV-4); iOS lands "darken + shrink". This token
432
+ is a tier BELOW resting — `--glass-bg-resting` mixed ~7% toward `--foreground`
433
+ — read on the dock control `:active` alongside the scale-press so a press
434
+ lands the brief glass-darken. Auto-flips with `--foreground`/`--glass-bg-resting`. */
435
+ --dock-control-press-bg: color-mix(
436
+ in oklab,
437
+ var(--glass-bg-resting),
438
+ var(--foreground) 7%
439
+ );
440
+
441
+ /* Q.W3 Lane G (Q-cos-13) — the O.W6 Lane D `--icon-tooltip-hit-area`
442
+ token retired here. IconTooltip no longer owns a wrap-span; the
443
+ slotted child carries its own WCAG 2.5.5 hit-area (interactive
444
+ children via their four-state contract, bare glyphs via a
445
+ `min-h-11 min-w-11` host). No orphaned token left behind. */
446
+
447
+ /* O.W6 Lane D — Dock touch-target floor. Mirrors the IconTooltip
448
+ hit-area but for the dock-control surface. The base value tracks
449
+ the desktop default (`--size-icon-btn`); the
450
+ `@media (pointer: coarse)` block at `dock.css` lifts it to the
451
+ WCAG 2.5.5 floor on touch devices. */
452
+ --dock-touch-target: 2.75rem; /* 44px */
453
+
454
+ /* AQ.W3 §7 — canonical WCAG 2.5.5 (44px) touch-target floor for the
455
+ NON-dock coarse-pointer surfaces (`Button size="icon"`,
456
+ ExpandableContainer triggers, SegmentedTabs responsive mobile trigger). One
457
+ named rung the `@media (pointer: coarse)` block in utilities.css reads,
458
+ retiring the per-consumer one-liner `min-h-[44px]` patches. Equals
459
+ `--dock-touch-target` numerically; kept as a distinct token so the
460
+ dock floor and the general floor can be retuned independently. */
461
+ --touch-target: 2.75rem; /* 44px */
462
+
463
+ /* MetricBadge — stacked variant geometry. The 2-row stacked layout
464
+ (label / value+unit) wants a taller floor than the inline pill so the
465
+ label has breathing room above the baseline pair. T.W2.T2 +
466
+ audit B-spec §3.2 vertical-rhythm table land 42px (2.625rem) as the
467
+ min-height with 6px (0.375rem) block padding. The inline ladder
468
+ keeps its tight defaults via `--metric-badge-min-height` /
469
+ `--metric-badge-padding-block` (declared inline at the
470
+ `.metric-badge` selector). */
471
+ --metric-badge-min-height-stacked: 2.625rem;
472
+ --metric-badge-padding-block-stacked: 0.375rem;
473
+
474
+ /* Configurator — N.W2 Lane A density axis (4 rungs).
475
+ The `comfortable` rung restates the pre-N.W2 baked recipe exactly
476
+ (`gap-1.5 py-2` = 0.375rem / 0.5rem) so unparameterised consumers
477
+ see no visual change. `mobile` halves the vertical breathing room
478
+ for narrow-viewport studios; `spacious` doubles it for settings-
479
+ page hosts. See `<ConfiguratorRow>` scoped CSS for the attribute-
480
+ selector binding. */
481
+ --configurator-row-gap-mobile: 0.25rem; /* 4px — tight */
482
+ --configurator-row-gap-compact: 0.3125rem; /* 5px — slightly tighter */
483
+ --configurator-row-gap-comfortable: 0.375rem; /* 6px — pre-N.W2 default */
484
+ --configurator-row-gap-spacious: 0.75rem; /* 12px — generous */
485
+
486
+ --configurator-row-py-mobile: 0.25rem; /* 4px — tight */
487
+ --configurator-row-py-compact: 0.375rem; /* 6px — slightly tighter */
488
+ --configurator-row-py-comfortable: 0.5rem; /* 8px — pre-N.W2 default */
489
+ --configurator-row-py-spacious: 0.875rem; /* 14px — generous */
490
+
491
+ /* Configurator HIERARCHY VOCABULARY (AZ.W-HIERARCHY — D6-3). The three
492
+ NAMED registers the studios (blob, aurora) inherit instead of a flat
493
+ undifferentiated stack. DISTINCT from the density ladder above (which is
494
+ the per-row CADENCE, not the section/label/preset register).
495
+
496
+ 1. Section register — the <ConfiguratorLayer> label reads as a SECTION,
497
+ not a row: the √φ subheading rung at weight 600, lifting off the prior
498
+ flat `text-small font-semibold`. */
499
+ --configurator-section-size: var(--type-subheading); /* 20.4px — √φ section rung */
500
+ --configurator-section-weight: 600; /* the heading weight */
501
+
502
+ /* AZ.W-BLOB-REDRESS — the SINGLE-COLUMN stage-row FLOOR. Below `lg` the
503
+ Configurator stacks stage-over-aside; a percentage stage height against
504
+ an INDEFINITE auto-row resolves to 0 (the GooBlob hero painted 0×0 on a
505
+ phone). The single-column band's `grid-template-rows` floors the stage
506
+ row at this DEFINITE `minmax(…)` minimum so the percentage resolves;
507
+ the aside row takes the remainder and scrolls internally. */
508
+ --configurator-stage-min: 18rem; /* 288px — the mobile live-specimen stage floor */
509
+
510
+ /* 2. Preset-row PRIMARY-AFFORDANCE lift. The preset picker is the primary
511
+ interaction (C6-10); D6-3's defect is the preset row being spatially
512
+ CRAMPED. This token's binding SEMANTIC is the preset row's SPATIAL
513
+ rhythm — its block-padding / gap, NOT a font-weight — so the preset
514
+ row breathes ABOVE a body ConfiguratorRow. (The `-weight` name follows
515
+ the vocabulary's "register weight" framing; it lands on the padding/gap
516
+ slot of `.configurator-presets`, the heavier spatial cadence.) */
517
+ --configurator-preset-row-weight: 0.625rem; /* 10px — > a body row's 8px py-comfortable */
518
+ --configurator-preset-row-gap: 0.5rem; /* 8px — generous chip gap */
519
+
520
+ /* 3. The DIVIDER register — dark-adaptive (BA.W-CONFIG-CHASSIS.1 / CFG-4).
521
+ The section + inter-row dividers used to be inline `border-border/40` and
522
+ `border-border/30` Tailwind alphas; over the W-DARK-MATERIAL dark
523
+ `glass-floating` plate (a luminous transmissive material, --card L16) those
524
+ near-equal-luminance hairlines effectively VANISHED — "the sections run
525
+ together". This ONE token is consumed by every divider rule (the
526
+ <ConfiguratorLayer> section border, the dividers-prop inter-row border,
527
+ Configurator.vue's aside/preset/footer borders, configurator.css) so the
528
+ divider weight is retuned from a single override.
529
+
530
+ The dark-LIFTING arm is the load-bearing half: the divider must read on
531
+ BOTH plates. On LIGHT it is the resting `--border` warm-neutral at the
532
+ prior ~40% weight; on DARK it LIFTS off `--border` (L34 over the L16 plate
533
+ — too close) toward the `--foreground` warm-ink (L90) at a higher α, so a
534
+ visible luminance step survives the dark glass. `light-dark()` carries the
535
+ arm in ONE declaration (the same :root cascade context as the surface-tint
536
+ family; an engine without `light-dark()` falls back to the dark-arm.css
537
+ `.dark` floor minted in lockstep). The SECTION divider runs a touch
538
+ heavier than the inter-row hairline (a section reads as a section without
539
+ a second heading rung). */
540
+ --configurator-divider: light-dark(
541
+ color-mix(in srgb, var(--border) 55%, transparent),
542
+ color-mix(in srgb, var(--foreground) 22%, transparent)
543
+ );
544
+ --configurator-divider-section: light-dark(
545
+ color-mix(in srgb, var(--border) 70%, transparent),
546
+ color-mix(in srgb, var(--foreground) 30%, transparent)
547
+ );
548
+ /* The optional faint section-header tonal step — a whisper-light warm wash
549
+ behind a <ConfiguratorLayer> section so it reads as a grouped section
550
+ WITHOUT a new heading rung (within the W-HIERARCHY register). Default off
551
+ (transparent) on light where the hairline carries it; a faint
552
+ foreground-over-transparent lift on dark where the divider alone is
553
+ subtle. */
554
+ --configurator-section-tint: light-dark(
555
+ transparent,
556
+ color-mix(in srgb, var(--foreground) 3%, transparent)
557
+ );
558
+
559
+ /* Component font override (consumers override locally) */
560
+ --select-font: inherit;
561
+
562
+ }