@mkbabb/glass-ui 3.11.2 → 3.13.0

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