@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
@@ -141,128 +141,13 @@
141
141
  100% { background-position: -200% 0; }
142
142
  }
143
143
 
144
- /* ── Gold ONE-SHOT round-trip: the pressed seal (E7c — the to-AND-fro) ──────────
145
- *
146
- * A seal is PRESSED, catches the light ONCE, and RECEDES — a full ease-IN-AND-OUT
147
- * envelope, not a fire-and-yank. The defect this replaces: `.text-gilt` used the
148
- * infinite `gold-shimmer-slide` (`1 forwards`), which HELD its gilt terminal frame
149
- * forever, and the consumer ripped the class off on a `setTimeout` — but the gold
150
- * gradient lives in `background-image`, which no transition covers, so it SNAPPED
151
- * off in one frame.
152
- *
153
- * This keyframe owns the WHOLE envelope and RESOLVES TO THE RESTING INK — there is
154
- * nothing left to yank when it ends:
155
- * - `-webkit-text-fill-color` (and `color`) ride from the figure's OWN ink
156
- * (`currentColor` — the consumer's data-pole green/red) → `transparent` (the
157
- * gilt gradient shows through `background-clip:text`) → back to `currentColor`.
158
- * So the gilt FADES UP and FADES DOWN; at 0% and 100% the figure paints its own
159
- * ink and the gradient is occluded — the resting state, by construction.
160
- * - `background-position` slides the gradient across through the same window.
161
- * No `forwards` is needed (the final keyframe IS rest), so on completion the class
162
- * may simply stop mattering — the snap is structurally impossible. */
163
- @keyframes gold-shimmer-pulse {
164
- 0% {
165
- background-position: 150% 0;
166
- color: currentColor;
167
- -webkit-text-fill-color: currentColor;
168
- }
169
- 25% {
170
- color: transparent;
171
- -webkit-text-fill-color: transparent;
172
- }
173
- 75% {
174
- color: transparent;
175
- -webkit-text-fill-color: transparent;
176
- }
177
- 100% {
178
- background-position: -150% 0;
179
- color: currentColor;
180
- -webkit-text-fill-color: currentColor;
181
- }
182
- }
183
-
184
- /* ── Crayon-wipe: the scroll-scrubbed draw-on (D6.c M1) ──────────────────────
185
- *
186
- * The bidirectional, scroll-scrubbed DRAW-ON of a hand-mark (the crayon/pen
187
- * underline, a drawn rule). The wipe is a `clip-path: inset()` of the LEFT edge
188
- * only — the mark draws from inset(0 100% 0 0) (fully clipped from the right, so
189
- * NOTHING shows) to inset(0) (fully revealed) — so the underline DRAWS as the
190
- * figure scrolls into view and UN-DRAWS as it scrolls back up. `clip-path` is the
191
- * compositor-eligible, FILTER-STABLE wipe (the medium's grain `feTurbulence`
192
- * rasters ONCE and is untouched by the clip — the cardinal "no per-frame raster"
193
- * discipline ds2-motion-field M1 names): clip-path animates on the compositor and
194
- * never re-runs the static filter, unlike a `stroke-dashoffset` draw under the
195
- * grain filter (which re-rasters per frame). The grammar mirrors scroll-driven.css
196
- * (the `view()`/`scroll()` timeline home): the keyframe lives here (the shared
197
- * @keyframes register); a consumer binds it to a NAMED `view-timeline` so the
198
- * draw-on SCRUBS bidirectionally with scroll (forward → draws, back → un-draws),
199
- * never a one-shot. The `.crayon-wipe` utility below is the binding.
200
- *
201
- * The keyframe itself is timeline-agnostic — it is equally a load-clock draw-on
202
- * (bound to a keyframes.js Sequence) or a scroll scrub (bound to a view-timeline).
203
- * The DEFAULT consumer is the scroll scrub (the figure-item underline drawing into
204
- * the lower third), hence the utility's `view()` binding.
205
- *
206
- * Reduced-motion: the utility (NOT the keyframe) gates — under PRM the mark is SET
207
- * to inset(0) (fully drawn, never animated), the correct degrade for a permanent
208
- * structural draw (information parity: the underline is present, just not drawn).
144
+ /* ── Sparkle sweep RETIRED (BA.W-GLASS-CAL, H2a) ──
145
+ * The `@keyframes sparkle-sweep` + its reduced-motion stub are DELETED with the
146
+ * disco recipe family — the `btn-audacious` ::after star (its sole consumer) is
147
+ * gone, and the dock-tab primary tier collapsed onto the calm glass register.
148
+ * The `Complete!` celebratory shimmer rides its OWN keyframes (gold-shimmer-slide
149
+ * / shimmer above), never sparkle-sweep.
209
150
  */
210
- @keyframes crayon-wipe {
211
- from {
212
- /* clipped from the RIGHT by 100% → the mark is fully hidden (nothing
213
- drawn yet); the left edge is the pen-tip about to move right. */
214
- clip-path: inset(0 100% 0 0);
215
- }
216
- to {
217
- /* fully revealed — the mark is wholly drawn. */
218
- clip-path: inset(0 0 0 0);
219
- }
220
- }
221
-
222
- /* ── .crayon-wipe — bind the wipe to a scroll view-timeline (D6.c M1) ──────────
223
- * The scroll-scrubbed draw-on utility. A consumer puts `.crayon-wipe` on a
224
- * hand-mark surface (the underline span, a drawn rule) and the mark draws/un-draws
225
- * as it scrolls through its OWN `view()` timeline — a bidirectional scrub, free,
226
- * off the main thread. The animation is `paused` with `animation-timeline: view()`
227
- * so the scroll position IS the playhead (the native scroll-driven model — the
228
- * timeline drives the frame, time does not). The named timeline is overridable
229
- * (`--crayon-wipe-timeline`, default the element's own `view()`) so a consumer can
230
- * scrub off a SHARED beat timeline (the §--beat-tl the atlas scroll-driven.css
231
- * names) instead of the per-element view — that is the "named view-timeline so a
232
- * consumer scrubs a draw-on bidirectionally" contract.
233
- *
234
- * @supports-gated + PRM-OUTER-gated, mirroring scroll-driven.css exactly: the
235
- * whole binding sits under `prefers-reduced-motion: no-preference`, so under PRM
236
- * the animation never attaches and the mark renders in its terminal `inset(0)`
237
- * (fully-drawn) state — the static-draw degrade. The draw range is `entry`-keyed
238
- * (the mark draws as it ENTERS the lower viewport), tunable via
239
- * `--crayon-wipe-range-{start,end}`. */
240
- @media (prefers-reduced-motion: no-preference) {
241
- @supports ((animation-timeline: view()) and (animation-range: entry)) {
242
- .crayon-wipe {
243
- animation: crayon-wipe auto linear both;
244
- animation-timeline: var(--crayon-wipe-timeline, view(block));
245
- animation-range: var(--crayon-wipe-range-start, entry 0%)
246
- var(--crayon-wipe-range-end, cover 35%);
247
- }
248
- }
249
- }
250
-
251
- /* ── Sparkle sweep: TOMBSTONE (D6.b — the disco-star excision) ──
252
- *
253
- * @deprecated 3.10 — DELETE in 3.11. The four-point `✦` star sweep was the one
254
- * garish gesture in the library; the user named it for removal ("remove the disco
255
- * star from all glass-ui elements"). Every in-tree consumer is re-homed: the
256
- * `btn-audacious` hover affirmation now rides the specular catch-light alone; the
257
- * gold-CTA rides the `btn-gold-bg-sweep` metal-catch; the chassis `complete`
258
- * celebration re-homes to the `.text-gilt` one-shot (utilities.css). The keyframe
259
- * body is EMPTIED rather than deleted for ONE minor so any out-of-tree consumer
260
- * (the slides decks) fails SOFT — a no-op animation, not an unknown-animation
261
- * error. The `--duration-sparkle` token is `@deprecated` alongside (tokens.css).
262
- * Full delete (this block + the token + the theme bridge) lands in 3.11. */
263
- @keyframes sparkle-sweep {
264
- /* intentionally empty — tombstoned, see deprecation note above */
265
- }
266
151
 
267
152
  /* ── Pulse dot bounce: dots variant of <Pulse> ──
268
153
  *
@@ -430,7 +315,11 @@
430
315
  opacity: 0;
431
316
  scale: var(--top-layer-enter-scale, 0.96);
432
317
  transition-property: opacity, scale, display, overlay;
433
- transition-duration: var(--duration-normal);
318
+ /* BA.W-GLASS-CAL Unit 3 — the enter rides the bouncy spring's OWN settle
319
+ clock (`--spring-bouncy-duration`, the 2%-band envelope settle) rather
320
+ than the generic `--duration-normal`, so the emphatic dialog/popover
321
+ entrance bounce reads fully instead of being clipped at 0.3s. */
322
+ transition-duration: var(--spring-bouncy-duration);
434
323
  transition-timing-function: var(--spring-bouncy);
435
324
  transition-behavior: allow-discrete;
436
325
  }
@@ -451,16 +340,27 @@
451
340
  * exists for `showModal()` dialogs, NOT `[popover]` (popovers are
452
341
  * non-modal — correct, no scrim). */
453
342
  dialog.glass-top-layer::backdrop {
454
- background-color: hsl(var(--background) / 0);
343
+ /* AZ.W-ADAPTIVE-AUTO A5-1 — the modal-scrim dim is the house alpha-derivative
344
+ `color-mix(in srgb, var(--background) Npct, transparent)`, NOT the invalid
345
+ `hsl(var(--background) / α)` double-wrap (`--background` is a complete
346
+ `hsl()` color = `hsl(48 12% 98%)`, so `hsl(hsl(…)/α)` evaluates to nothing
347
+ and the dim silently did not paint). The `in srgb` axis only — the
348
+ `--surface-tint-*` house family + the `in oklab` glass tint axis are
349
+ untouched. */
350
+ background-color: color-mix(in srgb, var(--background) 0%, transparent);
455
351
  backdrop-filter: blur(var(--top-layer-backdrop-blur, 8px));
456
352
  transition: display var(--duration-normal) allow-discrete,
457
353
  overlay var(--duration-normal) allow-discrete,
458
354
  background-color var(--duration-normal) var(--ease-standard);
459
355
  }
460
356
  dialog.glass-top-layer[open]::backdrop {
461
- background-color: hsl(var(--background) / var(--top-layer-backdrop-dim, 0.5));
357
+ background-color: color-mix(
358
+ in srgb,
359
+ var(--background) calc(var(--top-layer-backdrop-dim, 0.5) * 100%),
360
+ transparent
361
+ );
462
362
  @starting-style {
463
- background-color: hsl(var(--background) / 0);
363
+ background-color: color-mix(in srgb, var(--background) 0%, transparent);
464
364
  }
465
365
  }
466
366
  }
@@ -46,3 +46,56 @@
46
46
  box-shadow: var(--shadow-cartoon-lg);
47
47
  }
48
48
  }
49
+
50
+ /* ── Veil surface decoration (R5-7) ──────────────────────────────
51
+ The text-legibility PLATE register, ratified by three slides sites (the
52
+ deck cover subtitle / standfirst / closer lede). Conceptually the W55
53
+ adaptive-legibility tint applied as a LOCAL plate: a translucent glass
54
+ fill + blur that darkens content-on-glass over a busy/bright backdrop so
55
+ text clears AA, but with the BOXED look STRIPPED — no border, no rim, no
56
+ highlight (the user's read: the border+rim "reads as a dividing line on a
57
+ text plate"). It is the `surface` sibling of `cartoon` — a decoration-only
58
+ utility, NOT a tier of its own.
59
+
60
+ It routes the glass MATERIAL through the `--glass-*` ladder (`--veil-bg`
61
+ defaults to the `quiet` rung's adaptive-tint mix, `--veil-blur` to the
62
+ quiet blur), so the glass-cohesion model sees a sanctioned glass register
63
+ (the level knob scales the blur; the W55 bright-bucket darkens the fill via
64
+ the same inheriting tint axis the rung already reads). What it carries on TOP
65
+ of a bare rung is the THREE veil deltas, each a `--veil-*` knob a consumer
66
+ retunes:
67
+
68
+ border : none (--veil-border, the dividing-line strip)
69
+ shadow : none (--veil-shadow, the rim/highlight strip)
70
+ feather : none (default) (--veil-feather — an OPTIONAL radial mask that
71
+ fades the plate edges into the backdrop; off by default so the
72
+ plate is a clean rectangle, on when a consumer wants the
73
+ soft-edged "bleed into the page" text-plate look)
74
+
75
+ <Card surface="veil"> selects it; `--veil-bg`/`--veil-blur` ride the same
76
+ `--glass-*` rungs as the ladder, so one `--glass-level` / `--glass-backdrop`
77
+ override retunes it in lockstep with every other glass surface. */
78
+ @utility veil-surface {
79
+ /* The glass material — routed through the `--glass-*` ladder so the
80
+ cohesion model reads a sanctioned glass register, and the W55 adaptive
81
+ darken (the inheriting `--glass-tint-*` axis) + the `--glass-level` clarity
82
+ knob reach the plate with NO veil-local recipe. Defaults to the `quiet`
83
+ rung; a consumer re-points `--veil-bg`/`--veil-blur` to any other rung. */
84
+ --veil-bg: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength));
85
+ --veil-blur: var(--glass-blur-quiet);
86
+ /* The three veil deltas over a bare rung — each overridable. */
87
+ --veil-border: none;
88
+ --veil-shadow: none;
89
+ --veil-feather: none;
90
+
91
+ background: var(--veil-bg);
92
+ backdrop-filter: var(--veil-blur);
93
+ border: var(--veil-border);
94
+ box-shadow: var(--veil-shadow);
95
+ /* The optional radial feather — a `mask-image` only painted when
96
+ `--veil-feather` is set to a gradient (default `none` = no mask = a clean
97
+ rectangle). `mask-image: none` is the identity, so the default plate is
98
+ unmasked. `mask-image` Baseline 2023-12 — a non-supporting engine ignores
99
+ it and keeps the clean rectangle. */
100
+ mask-image: var(--veil-feather);
101
+ }
@@ -0,0 +1,77 @@
1
+ /* configurator.css — the Configurator HIERARCHY VOCABULARY (AZ.W-HIERARCHY, D6-3).
2
+ *
3
+ * The Configurator is the controls chassis the blob + aurora studios compose;
4
+ * this partial lands the three NAMED hierarchy registers ONCE so every studio
5
+ * INHERITS a vocabulary (section weight / label register / control rhythm)
6
+ * rather than a flat undifferentiated stack. The token definitions live in
7
+ * tokens/offsets-sizing.css (`--configurator-section-*`, `--configurator-preset-row-*`);
8
+ * this file is where the classes that CONSUME them paint.
9
+ *
10
+ * Cascade rung: imported AFTER utilities.css so the `.configurator-section-label`
11
+ * size/weight overrides the prior flat `text-small font-semibold` register, and
12
+ * the `.configurator-presets` block-padding override wins over the `py-2`
13
+ * Tailwind utility on the preset-row wrapper.
14
+ */
15
+
16
+ /* 1. Section register — the <ConfiguratorLayer> header label reads as a SECTION
17
+ * (√φ subheading, 20.4px / 600), NOT a row. Replaces the flat
18
+ * `text-small font-semibold text-foreground` span (D6-3: "section labels read
19
+ * flat + undifferentiated"). The two tokens are retunable on the cascade so a
20
+ * host can scale the whole section register from one override. */
21
+ .configurator-section-label {
22
+ font-family: var(--font-text);
23
+ font-size: var(--configurator-section-size);
24
+ line-height: var(--type-leading-body);
25
+ font-weight: var(--configurator-section-weight);
26
+ letter-spacing: var(--type-tracking-tight);
27
+ color: var(--foreground);
28
+ }
29
+
30
+ /* 2. Preset-row PRIMARY-AFFORDANCE lift — the preset picker is the primary
31
+ * interaction, so its row breathes ABOVE a body ConfiguratorRow. The token
32
+ * drives the SPATIAL rhythm (block-padding + the chip gap), NOT a font-weight
33
+ * (D6-3: "the preset row is tight"). `.configurator-presets` ships
34
+ * `px-3 py-2` from Tailwind; this rule lifts the block padding to the
35
+ * `--configurator-preset-row-weight` floor (10px > the 8px body py) and sets
36
+ * the inner chip-list gap to `--configurator-preset-row-gap`. */
37
+ .configurator-presets {
38
+ padding-block: var(--configurator-preset-row-weight);
39
+ }
40
+ .configurator-presets [role="tablist"] {
41
+ gap: var(--configurator-preset-row-gap);
42
+ }
43
+
44
+ /* 3. The DIVIDER register — dark-adaptive (BA.W-CONFIG-CHASSIS.1, CFG-4). The
45
+ * section + inter-row dividers were inline `border-border/40` / `/30` Tailwind
46
+ * alphas that VANISHED over the W-DARK-MATERIAL dark glass-floating plate
47
+ * ("the sections run together"). They now read the ONE dark-adaptive
48
+ * --configurator-divider{,-section} token (minted in tokens/offsets-sizing.css
49
+ * with a light-dark() arm + the dark-arm.css `.dark` floor) so a visible
50
+ * luminance step survives BOTH plates. These rules paint only the COLOR; the
51
+ * `border-b`/`border-t` WIDTH stays on the Tailwind utilities in the SFCs.
52
+ *
53
+ * Cascade: configurator.css imports after utilities.css, and these element-
54
+ * targeting selectors override the Tailwind `border-color` default the dropped
55
+ * `border-border/N` utilities used to set (the utilities are GONE from the SFC
56
+ * class lists, so there is no competing utility to lose to). The faint section
57
+ * tonal step (--configurator-section-tint, default transparent on light) reads
58
+ * behind a <ConfiguratorLayer> so a section reads as a section without a second
59
+ * heading rung. */
60
+ .configurator-layer {
61
+ border-color: var(--configurator-divider-section);
62
+ background-color: var(--configurator-section-tint);
63
+ }
64
+ .configurator-layer-body[data-dividers] > * + * {
65
+ border-color: var(--configurator-divider);
66
+ }
67
+
68
+ /* The Configurator.vue chrome dividers (the aside top rule, the preset-row +
69
+ * footer separators) read the inter-row divider token — the SAME dark-adaptive
70
+ * register, so the whole instrument's hairline grammar lifts in lockstep. The
71
+ * SFC drops the inline `border-border/40` from these elements; this rule paints
72
+ * the color. */
73
+ .configurator-aside,
74
+ .configurator-presets,
75
+ .configurator-footer {
76
+ border-color: var(--configurator-divider);
77
+ }
@@ -39,6 +39,19 @@
39
39
  calc(var(--dock-density-compact-layer-height, 2rem) * var(--dock-scale)),
40
40
  var(--dock-control-floor, 0px)
41
41
  );
42
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The
43
+ painted control plate floors a notch BELOW its track cell so the maximal
44
+ hover (×--scale-hover-dock 1.1) / active silhouette stays inside the
45
+ cross-axis clip box with ≥1px margin (the lozenge dies at the plate
46
+ diameter, not at the clip edge). The inset is a per-SIDE fraction of the
47
+ control size (0.1 → an 80%-of-cell painted plate, the iOS-26 inset
48
+ register), so it scales with EVERY density rung in lockstep AND rides the
49
+ `--dock-scale` coarse multiplier transitively through --dock-control-size.
50
+ The control families route it through `padding` + `background-clip:
51
+ content-box`, so the HIT BOX stays the full --dock-control-size (the WCAG
52
+ 2.5.5 44px floor stays on the CELL, never the inset plate) while the
53
+ PAINTED plate insets within it. */
54
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
42
55
  --dock-layer-gap: calc(
43
56
  var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
44
57
  );
@@ -87,6 +100,8 @@
87
100
  ),
88
101
  var(--dock-control-floor, 0px)
89
102
  );
103
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
104
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
90
105
  --dock-layer-gap: calc(
91
106
  var(--dock-density-comfortable-gap, 0.375rem) * var(--dock-scale)
92
107
  );
@@ -131,6 +146,8 @@
131
146
  ),
132
147
  var(--dock-control-floor, 0px)
133
148
  );
149
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
150
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
134
151
  --dock-layer-gap: calc(
135
152
  var(--dock-density-spacious-gap, 0.5rem) * var(--dock-scale)
136
153
  );
@@ -174,6 +191,8 @@
174
191
  calc(var(--dock-density-audacious-layer-height, 4rem) * var(--dock-scale)),
175
192
  var(--dock-control-floor, 0px)
176
193
  );
194
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
195
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
177
196
  --dock-layer-gap: calc(
178
197
  var(--dock-density-audacious-gap, 0.875rem) * var(--dock-scale)
179
198
  );
@@ -10,9 +10,12 @@
10
10
  * `.dock-layer-item-host` pane.
11
11
  *
12
12
  * NOTE: this `.dock-layer-rail` is the LAYER-SWITCHER rail inside a
13
- * `<DockLayerGroup>` — distinct from the `GlassDock variant="rail"` navigation
14
- * column (dock/shell.css + dock-controls.css) and the `<InstrumentRail>` cockpit
15
- * chassis (instrument-rail). The three share the noun, not the architecture.
13
+ * `<DockLayerGroup>` — the in-dock switcher tab strip. AZ.W-DOCK-TAXONOMY
14
+ * de-overloaded the "rail" noun: the `GlassDock variant="rail"` vertical-nav
15
+ * variant is GONE (a vertical nav column is now `orientation="vertical"`), and
16
+ * `<InstrumentRail>` retired at AY W-IC1. `.dock-layer-rail` is the ONLY surviving
17
+ * "rail" in the dock band; the noun is otherwise free (reserved for the
18
+ * W-RAIL-EXTEND beyond-dock facility).
16
19
  *
17
20
  * @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
18
21
  * carve is isomorphic (same layer, same source order → ZERO visual delta). */
@@ -87,38 +90,59 @@
87
90
  flex-direction: column-reverse;
88
91
  }
89
92
 
90
- /* AX.W45 DK8 — the rail gets its OWN surface plate. Previously the rail was a
91
- bare bordered gutter (a hairline `border-right`, no background), so its
92
- `--primary 15%` indicator + `--accent 40%` hover were tuned against an absent
93
- plate (the "bg's not right"). The `--dock-layer-rail-bg` rung (a quiet
94
- `--surface-tint-8` default, consumer-overridable) gives the rail a finished
95
- glass-quiet surface; the hover/active affordance reads the `--dock-layer-rail-
96
- {hover,active}` tokens, so the whole rail ladder is tunable from §10. */
93
+ /* AZ.W-DOCK-RAIL — the rail is a HAIRLINE register, not a fused plate. The
94
+ AX.W45 `--surface-tint-8` filled plate + `--radius-md` rounded background
95
+ (the "heavy dark blob column" R3-1) are RETIRED: the rail box paints NO fill
96
+ (`--dock-layer-rail-bg` defaults transparent at §sizing) and carries no
97
+ rounded plate background. The single `border-right` hairline — re-keyed to
98
+ the tunable `--dock-layer-rail-divider` token — is the only visible rail
99
+ edge: a thin rule between the switcher column and the dock body. The
100
+ hover/active affordance reads the `--dock-layer-rail-{hover,active}` glass
101
+ tints, so the whole rail ladder is tunable from §sizing. */
97
102
  .dock-layer-rail {
98
103
  display: flex;
99
104
  flex-direction: column;
100
105
  flex-shrink: 0;
106
+ /* AY.W-DOCK-NAV B6 — `align-self: start` (not the group's `stretch`
107
+ default) so the column rail reports its OWN intrinsic content height
108
+ (the stacked tabs) to the group's cross-axis sizing rather than being
109
+ stretched to the group's content-row height. Under `stretch` the rail's
110
+ height resolved to the group height, which was the single content-row
111
+ height — circular: the rail's 3 tall tabs overflowed a 40px rail and the
112
+ lower tabs + the indicator fell below the dock floor (the B6 break). With
113
+ `align-self: start` the rail demands its natural column height, the group
114
+ grows to it, and the dock grows to contain the whole rail. The
115
+ `min-height: max-content` belt makes the demand explicit — a row-flex
116
+ child's cross-size can otherwise resolve to the (smaller) container row
117
+ height even under `align-self: start`; `max-content` floors the rail at
118
+ its stacked-tab content height so the chain (group → pane → dock) grows
119
+ to fit. */
120
+ align-self: start;
121
+ min-height: max-content;
101
122
  gap: var(--dock-layer-rail-gap, 0.125rem);
102
123
  padding: var(--dock-layer-rail-padding, 0.125rem);
103
- background: var(--dock-layer-rail-bg, var(--surface-tint-8));
104
- border-radius: var(--dock-layer-rail-radius, var(--radius-md));
105
- border-right: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
124
+ background: var(--dock-layer-rail-bg, transparent);
125
+ border-right: 1px solid
126
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
106
127
  }
107
128
 
108
129
  .dock-layer-group.vertical .dock-layer-rail {
109
130
  flex-direction: row;
110
131
  border-right: none;
111
- border-bottom: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
132
+ border-bottom: 1px solid
133
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
112
134
  }
113
135
 
114
136
  .dock-layer-group.horizontal.rail-end .dock-layer-rail {
115
137
  border-right: none;
116
- border-left: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
138
+ border-left: 1px solid
139
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
117
140
  }
118
141
 
119
142
  .dock-layer-group.vertical.rail-end .dock-layer-rail {
120
143
  border-bottom: none;
121
- border-top: 1px solid color-mix(in srgb, var(--border) 30%, transparent);
144
+ border-top: 1px solid
145
+ var(--dock-layer-rail-divider, color-mix(in srgb, var(--border) 40%, transparent));
122
146
  }
123
147
 
124
148
  /* AU.W8.4 — the rail is a reka-ui Tabs contract. The travelling
@@ -134,12 +158,27 @@
134
158
  display: inline-flex;
135
159
  align-items: center;
136
160
  justify-content: center;
161
+ /* AY.W-DOCK-NAV B6 — `flex-shrink: 0` so the stacked tabs in the column rail
162
+ hold their full size and the rail demands its natural content height (no
163
+ tab squish). With the rail's `align-self: start` this makes the rail report
164
+ its true column height to the group's cross-axis sizing, growing the dock
165
+ to contain all the tabs + the travelling indicator (the B6 un-clip). */
166
+ flex-shrink: 0;
137
167
  width: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
138
168
  height: var(--dock-layer-tab-size, var(--dock-control-size, 1.75rem));
139
169
  border: 0;
140
170
  border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
141
171
  background: transparent;
142
- color: var(--muted-foreground);
172
+ /* AZ.W-DOCK-RAIL — the rest glyph lifts OFF the low-contrast
173
+ `--muted-foreground` (which read sub-AA over the now-hairline transparent
174
+ backdrop) to the nav-glyph contrast register: a strong warm-ink tint of
175
+ the dock foreground (`--dock-fg-on-aurora` → `--foreground`), tempered to
176
+ ~78% for the unselected read while staying ≥4.5:1 over the dock substrate.
177
+ The selected tab flips to the full register below. */
178
+ color: var(
179
+ --dock-layer-rail-glyph,
180
+ color-mix(in srgb, var(--dock-fg-on-aurora, var(--foreground)) 78%, transparent)
181
+ );
143
182
  cursor: pointer;
144
183
  font: inherit;
145
184
  font-size: 0.75rem;
@@ -150,19 +189,34 @@
150
189
  color var(--dock-motion-fast);
151
190
  }
152
191
 
192
+ /* AZ.W-DOCK-RAIL — floor the rail glyph. The `size-4` (16px) icon class on the
193
+ lucide component does not survive the column inline-flex: with no concrete
194
+ `width`/`flex-shrink`, the un-floored SVG collapsed to a 4px sliver
195
+ (F2-R3-1). This rule floors BOTH axes to 1rem (16px) and pins
196
+ `flex-shrink: 0` so the glyph never re-squishes inside the flex tab. */
197
+ .dock-layer-rail .dock-layer-tab svg {
198
+ width: 1rem;
199
+ height: 1rem;
200
+ flex-shrink: 0;
201
+ }
202
+
153
203
  .dock-layer-rail .dock-layer-tab:hover {
154
204
  background: var(
155
205
  --dock-layer-rail-hover,
156
- color-mix(in srgb, var(--accent) 40%, transparent)
206
+ color-mix(in srgb, var(--accent) 30%, transparent)
157
207
  );
158
- color: var(--foreground);
208
+ color: var(--dock-fg-on-aurora, var(--foreground));
159
209
  }
160
210
 
161
211
  /* AU.W8.4 — KEEP the active glyph tint on the selected tab (reka emits
162
212
  `data-state="active"` + `aria-selected="true"`); the per-button active
163
- BACKGROUND is RETIRED — the travelling indicator carries that affordance. */
213
+ BACKGROUND is RETIRED — the travelling indicator carries that affordance.
214
+ AZ.W-DOCK-RAIL — the selected glyph reads the full warm-ink register (the
215
+ nav-glyph contrast canon), deferring the exact accent to W-REGISTER-IOS's
216
+ root via `--dock-rail-active-accent` (defaults to the dock foreground, NOT
217
+ a saturated brand `--primary`). */
164
218
  .dock-layer-rail .dock-layer-tab[data-state="active"] {
165
- color: var(--primary);
219
+ color: var(--dock-rail-active-accent, var(--dock-fg-on-aurora, var(--foreground)));
166
220
  }
167
221
 
168
222
  /* AU.W8.4 — the dock control focus-ring contract does not cover
@@ -204,10 +258,14 @@
204
258
  height: var(--reka-tabs-indicator-size);
205
259
  transform: translateY(var(--reka-tabs-indicator-position));
206
260
  border-radius: var(--dock-layer-tab-radius, var(--radius-sm));
207
- background: var(
208
- --dock-layer-rail-active,
209
- color-mix(in srgb, var(--primary) 15%, transparent)
210
- );
261
+ /* AZ.W-DOCK-RAIL — the travelling indicator paints the glass-register
262
+ `--dock-layer-rail-active` (defaults to `--glass-bg-floating`, the
263
+ "selected reads as glass" register). The inline fallback is the SAME
264
+ glass tier — NOT the saturated `--primary 15%` warm-red mix the prior
265
+ register baked. The baked-plate utilities the reka `<TabsIndicator>`
266
+ wrapper used to render are suppressed via `:surface="false"` in
267
+ DockLayerGroup.vue, so THIS token rule is the sole paint. */
268
+ background: var(--dock-layer-rail-active, var(--glass-bg-floating));
211
269
  transition:
212
270
  width var(--duration-fast) var(--spring-snappy),
213
271
  height var(--duration-fast) var(--spring-snappy),
@@ -60,6 +60,18 @@
60
60
  inline-size: var(--dock-morph-size);
61
61
  }
62
62
 
63
+ /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
64
+ BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
65
+ measures/writes the same `--dock-morph-from/to` span on the block axis
66
+ (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
67
+ vertical→`block-size`), so the CSS lands the scalar on `block-size` and lets the
68
+ inline axis stay intrinsic. This is the wiring that gives a collapsible vertical
69
+ dock the height-morph the mandate names. */
70
+ .glass-dock.vertical[data-morphing] .dock-layers {
71
+ inline-size: auto;
72
+ block-size: var(--dock-morph-size);
73
+ }
74
+
63
75
  /* A vertical inner group morphs the BLOCK axis — the same span lands on
64
76
  block-size, and the inline axis stays intrinsic. */
65
77
  .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
@@ -196,9 +208,19 @@
196
208
  block-axis morph reveals a column) is NOT forced onto one nowrap row — the
197
209
  vertical group's active host block-sizes to `height: max-content` below
198
210
  (the AP.W3 column treatment, KEPT). */
211
+ /* AY.W-DOCK-NAV B6 — the height is a FLOOR (`min-height`), not a fixed lock. A
212
+ single-row content pane's intrinsic height already equals
213
+ `--dock-layer-height` (the controls + line-height sum to it), so `min-height`
214
+ is byte-identical for the common case. But a horizontal dock hosting a COLUMN
215
+ switcher-rail (`<DockLayerGroup>` with `show-rail`) lays the rail out as a
216
+ stack of tabs taller than one row — the prior fixed `height` clipped the
217
+ rail's lower tabs + the active indicator BELOW the dock floor (the B6 "no rail
218
+ line / broken" read, measured: 2 of 3 tabs clipped). The floor lets the pane
219
+ block-size to the rail's natural column height so the dock grows to contain
220
+ the whole rail. The cross axis keeps `nowrap`. */
199
221
  .glass-dock:not(.vertical) .dock-layer {
200
222
  white-space: nowrap;
201
- height: var(--dock-layer-height, 2.5rem);
223
+ min-height: var(--dock-layer-height, 2.5rem);
202
224
  }
203
225
 
204
226
  .dock-layer.is-active {