@mkbabb/glass-ui 3.13.0 → 4.0.1

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 (507) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
  8. package/dist/DialogContent-DcKK8k9i.js +103 -0
  9. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/FadingScroll-DI6hQhT9.js +76 -0
  11. package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/IconChip-BTD-nay5.js +55 -0
  14. package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
  17. package/dist/Notification-VUwexFUf.js +43 -0
  18. package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
  19. package/dist/PopoverContent-DL7E6vJP.js +127 -0
  20. package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
  21. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
  23. package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
  24. package/dist/Toaster-Bw4xR8xV.js +274 -0
  25. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  26. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  27. package/dist/animated-digit.js +2 -2
  28. package/dist/api/index.d.ts +16 -8
  29. package/dist/api/types-extra.d.ts +6 -0
  30. package/dist/api.js +2 -2
  31. package/dist/aurora.js +888 -230
  32. package/dist/badge.js +1 -1
  33. package/dist/border-progress.d.ts +1 -0
  34. package/dist/border-progress.js +106 -0
  35. package/dist/button-DYCUa-tH.js +126 -0
  36. package/dist/button.js +1 -1
  37. package/dist/canvas.js +2 -2
  38. package/dist/card.js +2 -2
  39. package/dist/carousel.d.ts +1 -1
  40. package/dist/carousel.js +90 -151
  41. package/dist/collapsible.js +1 -1
  42. package/dist/color-swatch.d.ts +1 -0
  43. package/dist/color-swatch.js +47 -0
  44. package/dist/color.js +1 -1
  45. package/dist/command.js +1 -1
  46. package/dist/compile-CQEFRTmx.js +19 -0
  47. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  48. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  51. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  52. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  53. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  54. package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
  55. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
  56. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  59. package/dist/components/custom/aurora/index.d.ts +3 -2
  60. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  61. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  62. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  63. package/dist/components/custom/border-progress/index.d.ts +4 -0
  64. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  65. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  66. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  67. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  68. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  69. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  70. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  71. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  72. package/dist/components/custom/concentric/constants.d.ts +43 -0
  73. package/dist/components/custom/concentric/index.d.ts +5 -0
  74. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  75. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  76. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  77. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  78. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  79. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  80. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  81. package/dist/components/custom/constellation/index.d.ts +1 -1
  82. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  83. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  84. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  85. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  86. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  87. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  88. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  89. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  90. package/dist/components/custom/dock/constants.d.ts +35 -0
  91. package/dist/components/custom/dock/index.d.ts +2 -0
  92. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  93. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  94. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  95. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  96. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  97. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  98. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  99. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  100. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  101. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  102. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  103. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  104. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  105. package/dist/components/custom/easing/constants.d.ts +28 -0
  106. package/dist/components/custom/easing/index.d.ts +3 -0
  107. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  108. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  109. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  110. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  111. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  112. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
  113. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  114. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  115. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  116. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  117. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
  118. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  119. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  120. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
  121. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  122. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  123. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  124. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  125. package/dist/components/custom/handmark/brush.d.ts +269 -0
  126. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  127. package/dist/components/custom/handmark/constants.d.ts +39 -0
  128. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  129. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  130. package/dist/components/custom/handmark/index.d.ts +27 -0
  131. package/dist/components/custom/handmark/ink.d.ts +11 -0
  132. package/dist/components/custom/handmark/texture.d.ts +39 -0
  133. package/dist/components/custom/handmark/types.d.ts +62 -0
  134. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  135. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  136. package/dist/components/custom/icon-chip/types.d.ts +82 -0
  137. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
  138. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  139. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  140. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  141. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  142. package/dist/components/custom/spa-view/index.d.ts +2 -0
  143. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
  144. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  145. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  146. package/dist/components/custom/tabs/constants.d.ts +9 -3
  147. package/dist/components/custom/tabs/index.d.ts +1 -1
  148. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
  149. package/dist/components/ui/_shared/index.d.ts +2 -0
  150. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  151. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  152. package/dist/components/ui/badge/index.d.ts +1 -1
  153. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  154. package/dist/components/ui/button/index.d.ts +2 -2
  155. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  156. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  157. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  158. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  159. package/dist/components/ui/card/index.d.ts +2 -0
  160. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  161. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  162. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  163. package/dist/components/ui/carousel/index.d.ts +0 -1
  164. package/dist/components/ui/command/Command.vue.d.ts +4 -1
  165. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  167. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
  168. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  169. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  170. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  171. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  172. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  173. package/dist/components/ui/drawer/constants.d.ts +45 -0
  174. package/dist/components/ui/drawer/index.d.ts +23 -15
  175. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  176. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  177. package/dist/components/ui/index.d.ts +1 -1
  178. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  179. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  180. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  181. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  183. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  184. package/dist/components/ui/sheet/index.d.ts +1 -1
  185. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  186. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  187. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  188. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  189. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  190. package/dist/composables/dark/index.d.ts +1 -1
  191. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  192. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  193. package/dist/composables/glass/index.d.ts +5 -2
  194. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  195. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  196. package/dist/composables/glass/vSpecular.d.ts +2 -0
  197. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  198. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  199. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  200. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  201. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  202. package/dist/composables/motion/core/index.d.ts +1 -0
  203. package/dist/composables/motion/index.d.ts +4 -0
  204. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  205. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  206. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  207. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  208. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  209. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  210. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  211. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  212. package/dist/concentric.d.ts +1 -0
  213. package/dist/concentric.js +562 -0
  214. package/dist/configurator.js +3 -2
  215. package/dist/confirm-dialog.js +22 -24
  216. package/dist/constellation.js +93 -95
  217. package/dist/context-menu.js +3 -3
  218. package/dist/controls.js +10 -4
  219. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  220. package/dist/dark.d.ts +1 -1
  221. package/dist/dark.js +1 -1
  222. package/dist/data-table.js +1 -1
  223. package/dist/dialog.js +2 -2
  224. package/dist/dock.js +738 -442
  225. package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
  226. package/dist/dom.js +5 -5
  227. package/dist/dot-flow-field.d.ts +1 -0
  228. package/dist/dot-flow-field.js +604 -0
  229. package/dist/drawer.d.ts +1 -0
  230. package/dist/drawer.js +380 -0
  231. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
  232. package/dist/dropdown-menu.js +1 -1
  233. package/dist/easing.d.ts +1 -0
  234. package/dist/easing.js +463 -0
  235. package/dist/expandable-container.js +45 -38
  236. package/dist/fading-scroll.d.ts +1 -0
  237. package/dist/fading-scroll.js +2 -0
  238. package/dist/focus-scope.d.ts +1 -0
  239. package/dist/focus-scope.js +23 -0
  240. package/dist/forms.js +7 -7
  241. package/dist/fourier-field.js +135 -122
  242. package/dist/fourier-math.js +2 -2
  243. package/dist/glass-panel.js +39 -36
  244. package/dist/glass-ui.css +1 -1
  245. package/dist/glass-ui.js +154 -362
  246. package/dist/goo-blob.js +838 -227
  247. package/dist/handmark.d.ts +1 -0
  248. package/dist/handmark.js +707 -0
  249. package/dist/header-ribbon.js +1 -1
  250. package/dist/hover-card.js +1 -1
  251. package/dist/hover-popover.js +1 -1
  252. package/dist/icon-chip.d.ts +1 -0
  253. package/dist/icon-chip.js +2 -0
  254. package/dist/icon-tooltip.js +1 -1
  255. package/dist/index.d.ts +3 -3
  256. package/dist/instrument-chassis.js +1 -1
  257. package/dist/keyboard.js +1 -1
  258. package/dist/label.js +1 -1
  259. package/dist/labeled-field.js +6 -6
  260. package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
  261. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
  262. package/dist/metric-badge.js +1 -1
  263. package/dist/metric-cell.js +25 -22
  264. package/dist/metric-stack.js +4 -8
  265. package/dist/motion-core.js +36 -35
  266. package/dist/motion-curves.js +1 -1
  267. package/dist/motion.js +157 -55
  268. package/dist/notification.js +1 -1
  269. package/dist/number-field.js +1 -1
  270. package/dist/pager-dots.d.ts +1 -0
  271. package/dist/pager-dots.js +91 -0
  272. package/dist/paper-backdrop.js +1 -1
  273. package/dist/popover.js +1 -1
  274. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  275. package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  276. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  277. package/dist/progress.js +1 -1
  278. package/dist/pulse.js +1 -1
  279. package/dist/reactive.js +2 -2
  280. package/dist/scrolling-text.js +1 -1
  281. package/dist/search.js +10 -12
  282. package/dist/select.js +3 -3
  283. package/dist/separator.js +1 -1
  284. package/dist/sheet-tZMg0E0w.js +218 -0
  285. package/dist/sheet.js +1 -1
  286. package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +3 -3
  289. package/dist/spa-view.d.ts +1 -0
  290. package/dist/spa-view.js +46 -0
  291. package/dist/styles/animations.css +40 -31
  292. package/dist/styles/border-progress.css +109 -0
  293. package/dist/styles/cards.css +76 -0
  294. package/dist/styles/components.css +1 -1
  295. package/dist/styles/configurator.css +35 -0
  296. package/dist/styles/critical-partition.mjs +140 -0
  297. package/dist/styles/critical.css +12 -0
  298. package/dist/styles/deferred.css +31 -0
  299. package/dist/styles/dock/density.css +64 -0
  300. package/dist/styles/dock/layers.css +54 -30
  301. package/dist/styles/dock/morph.css +124 -7
  302. package/dist/styles/dock/overflow.css +31 -2
  303. package/dist/styles/dock/rail-extend.css +168 -71
  304. package/dist/styles/dock/section.css +59 -0
  305. package/dist/styles/dock/shell.css +83 -16
  306. package/dist/styles/dock-controls/icon-button.css +11 -1
  307. package/dist/styles/dock-controls/tab-button.css +24 -83
  308. package/dist/styles/dock-controls/triggers.css +7 -0
  309. package/dist/styles/dock.css +38 -3
  310. package/dist/styles/drawer.css +127 -35
  311. package/dist/styles/feedback-tone.css +104 -0
  312. package/dist/styles/glass/deep.css +44 -0
  313. package/dist/styles/glass/ladder.css +154 -52
  314. package/dist/styles/glass/material.css +78 -15
  315. package/dist/styles/glass/reveal.css +136 -0
  316. package/dist/styles/glass/rim.css +100 -0
  317. package/dist/styles/glass/surface-axis.css +113 -0
  318. package/dist/styles/glass/surfaces.css +189 -15
  319. package/dist/styles/glass-refract.css +96 -44
  320. package/dist/styles/glass-specular-track.css +7 -0
  321. package/dist/styles/glass.css +8 -2
  322. package/dist/styles/hover-popover.css +7 -6
  323. package/dist/styles/icon-chip.css +211 -0
  324. package/dist/styles/index.css +78 -4
  325. package/dist/styles/instrument-chassis.css +107 -2
  326. package/dist/styles/menu.css +127 -0
  327. package/dist/styles/scroll-choreography.css +300 -0
  328. package/dist/styles/segmented-tabs.css +188 -86
  329. package/dist/styles/select.css +50 -0
  330. package/dist/styles/theme/bridges.css +22 -1
  331. package/dist/styles/theme/literals.css +11 -2
  332. package/dist/styles/theme/radius.css +6 -1
  333. package/dist/styles/tokens/color-radius.css +40 -13
  334. package/dist/styles/tokens/dark-arm.css +200 -20
  335. package/dist/styles/tokens/glass-deep.css +75 -0
  336. package/dist/styles/tokens/glass-fx.css +333 -0
  337. package/dist/styles/tokens/glass.css +95 -315
  338. package/dist/styles/tokens/light-dark.css +64 -22
  339. package/dist/styles/tokens/offsets.css +116 -0
  340. package/dist/styles/tokens/on-glass-fg.css +39 -0
  341. package/dist/styles/tokens/property-regs.css +130 -10
  342. package/dist/styles/tokens/scale-paper.css +155 -84
  343. package/dist/styles/tokens/scheme-motion.css +102 -46
  344. package/dist/styles/tokens/scroll-tokens.css +123 -0
  345. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  346. package/dist/styles/tokens.css +9 -3
  347. package/dist/styles/transitions.css +7 -7
  348. package/dist/styles/typography/scale.css +153 -0
  349. package/dist/styles/typography/semantic.css +220 -0
  350. package/dist/styles/typography/utilities.css +174 -0
  351. package/dist/styles/typography.css +23 -507
  352. package/dist/styles/utilities/a11y-overrides.css +33 -4
  353. package/dist/styles/utilities/animate.css +27 -24
  354. package/dist/styles/utilities/base-misc.css +255 -0
  355. package/dist/styles/utilities/base.css +100 -138
  356. package/dist/styles/utilities/btn.css +21 -202
  357. package/dist/styles/utilities/metal.css +189 -0
  358. package/dist/styles/utilities.css +14 -7
  359. package/dist/styles/view-transition.css +4 -1
  360. package/dist/switch.js +1 -1
  361. package/dist/tabs.js +275 -191
  362. package/dist/timeline.js +2 -2
  363. package/dist/toast.js +1 -1
  364. package/dist/toggle-chip.js +3 -1
  365. package/dist/toggle-group.js +1 -1
  366. package/dist/tooltip.js +1 -1
  367. package/dist/typewriter.js +1 -1
  368. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
  369. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  370. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  371. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  372. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  373. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  374. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  375. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
  376. package/dist/useSpring-C0jyvEJB.js +40 -0
  377. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  378. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  379. package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
  380. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
  381. package/dist/vReveal-Czsb7zQC.js +10 -0
  382. package/dist/vSpecular-CQFmLNzA.js +68 -0
  383. package/dist/vendor-CKmzio-i.js +226 -0
  384. package/dist/watercolor-dot.js +12 -5
  385. package/package.json +193 -25
  386. package/src/styles/animations.css +40 -31
  387. package/src/styles/border-progress.css +109 -0
  388. package/src/styles/cards.css +76 -0
  389. package/src/styles/configurator.css +35 -0
  390. package/src/styles/critical-partition.mjs +140 -0
  391. package/src/styles/dock/density.css +64 -0
  392. package/src/styles/dock/layers.css +54 -30
  393. package/src/styles/dock/morph.css +124 -7
  394. package/src/styles/dock/overflow.css +31 -2
  395. package/src/styles/dock/rail-extend.css +168 -71
  396. package/src/styles/dock/section.css +59 -0
  397. package/src/styles/dock/shell.css +83 -16
  398. package/src/styles/dock-controls/icon-button.css +11 -1
  399. package/src/styles/dock-controls/tab-button.css +24 -83
  400. package/src/styles/dock-controls/triggers.css +7 -0
  401. package/src/styles/dock.css +38 -3
  402. package/src/styles/drawer.css +123 -35
  403. package/src/styles/feedback-tone.css +104 -0
  404. package/src/styles/glass/deep.css +44 -0
  405. package/src/styles/glass/ladder.css +154 -52
  406. package/src/styles/glass/material.css +78 -15
  407. package/src/styles/glass/reveal.css +136 -0
  408. package/src/styles/glass/rim.css +100 -0
  409. package/src/styles/glass/surface-axis.css +113 -0
  410. package/src/styles/glass/surfaces.css +189 -15
  411. package/src/styles/glass-refract.css +96 -44
  412. package/src/styles/glass-specular-track.css +7 -0
  413. package/src/styles/glass.css +8 -2
  414. package/src/styles/hover-popover.css +7 -6
  415. package/src/styles/icon-chip.css +211 -0
  416. package/src/styles/index.css +78 -4
  417. package/src/styles/instrument-chassis.css +107 -2
  418. package/src/styles/menu.css +127 -0
  419. package/src/styles/scroll-choreography.css +300 -0
  420. package/src/styles/segmented-tabs.css +184 -84
  421. package/src/styles/select.css +50 -0
  422. package/src/styles/theme/bridges.css +22 -1
  423. package/src/styles/theme/literals.css +11 -2
  424. package/src/styles/theme/radius.css +6 -1
  425. package/src/styles/tokens/color-radius.css +40 -13
  426. package/src/styles/tokens/dark-arm.css +200 -20
  427. package/src/styles/tokens/glass-deep.css +75 -0
  428. package/src/styles/tokens/glass-fx.css +333 -0
  429. package/src/styles/tokens/glass.css +95 -315
  430. package/src/styles/tokens/light-dark.css +64 -22
  431. package/src/styles/tokens/offsets.css +116 -0
  432. package/src/styles/tokens/on-glass-fg.css +39 -0
  433. package/src/styles/tokens/property-regs.css +130 -10
  434. package/src/styles/tokens/scale-paper.css +155 -84
  435. package/src/styles/tokens/scheme-motion.css +102 -46
  436. package/src/styles/tokens/scroll-tokens.css +123 -0
  437. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  438. package/src/styles/tokens.css +9 -3
  439. package/src/styles/transitions.css +7 -7
  440. package/src/styles/typography/scale.css +153 -0
  441. package/src/styles/typography/semantic.css +220 -0
  442. package/src/styles/typography/utilities.css +174 -0
  443. package/src/styles/typography.css +23 -507
  444. package/src/styles/utilities/a11y-overrides.css +33 -4
  445. package/src/styles/utilities/animate.css +27 -24
  446. package/src/styles/utilities/base-misc.css +255 -0
  447. package/src/styles/utilities/base.css +100 -138
  448. package/src/styles/utilities/btn.css +21 -202
  449. package/src/styles/utilities/metal.css +189 -0
  450. package/src/styles/utilities.css +14 -7
  451. package/src/styles/view-transition.css +4 -1
  452. package/dist/CardAction-Cj2eycQ2.js +0 -157
  453. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  454. package/dist/Notification-DdwNxIrI.js +0 -100
  455. package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
  456. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  457. package/dist/TabsList-Dttss653.js +0 -105
  458. package/dist/Toaster-D6q4HtXu.js +0 -263
  459. package/dist/button-ChXMfsud.js +0 -81
  460. package/dist/check-njhk-vfu.js +0 -7
  461. package/dist/chevron-down-DKkxb4VV.js +0 -7
  462. package/dist/chevron-right-CPXbqQQz.js +0 -7
  463. package/dist/chevron-up-n_24SqI-.js +0 -7
  464. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  465. package/dist/components/custom/underline/index.d.ts +0 -2
  466. package/dist/components/custom/underline/types.d.ts +0 -56
  467. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  468. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  469. package/dist/minimize-2-BV31Ob_h.js +0 -38
  470. package/dist/search-BSGrf2Sk.js +0 -12
  471. package/dist/sheet-1fChZjtw.js +0 -214
  472. package/dist/underline.d.ts +0 -1
  473. package/dist/underline.js +0 -85
  474. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  475. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  476. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  477. package/dist/useSpringMount-CI2jOstM.js +0 -108
  478. package/dist/vReveal-CqaCz_mC.js +0 -44
  479. package/dist/x-BUwTKe50.js +0 -10
  480. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
  481. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  482. /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
  483. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
  484. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  485. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
  486. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
  487. /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
  488. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  489. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  490. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  491. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  492. /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
  493. /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
  494. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  495. /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
  496. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  497. /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
  498. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  499. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  500. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  501. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  502. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  503. /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
  504. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
  505. /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
  506. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
  507. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
@@ -80,7 +80,39 @@
80
80
  backdrop-filter sample does not escape the dock box (the standard nested-
81
81
  backdrop-cost mitigation; the Button-in-glass-in-dock stack re-samples the
82
82
  already-blurred buffer at each level without it). */
83
- contain: paint;
83
+ /* BA.W-DOCK-GEOMETRY contain:paint AUDIT verdict (a) — the control-plate
84
+ clearance fix (the `--dock-control-safe-inset` painted-plate inset, scope
85
+ 1) + the scroll-port cross-axis un-clip (scope 2) keep the maximal
86
+ hover/active control plate INSIDE the dock padding box: the inset plate is
87
+ centered in its cell (≥1px slack/side at hover), the cell sits flush at the
88
+ dock content edge, and the `--dock-padding-block` (≈6px) padding holds the
89
+ plate ≥7px clear of the `contain: paint` border-box edge on the block axis.
90
+ So the `paint` clip axis is the NON-proximate second clip box (the lane's
91
+ `probe-bottomdock-nocontain.png` forced-root probe proved the inner
92
+ scroll-port box was proximate, not this) and the `paint` axis is RETAINED
93
+ here — the inset + freed cross axis suffice, no containment LIFT on the
94
+ control-plate band. (BB.W-PERF-PRODUCER A′-4 widens the value to
95
+ `contain: layout style paint` — the restyle-scope axes ALONGSIDE the paint
96
+ clip box, see below — but never lifts `paint`.) The π readback
97
+ (W-DOCK-GEOMETRY-DELTA.md) records the live plate-inside-padding margin
98
+ number that binds this verdict. */
99
+ /* BB.W-PERF-PRODUCER A′-4 — the `--dock-morph-t` restyle-scope narrowing.
100
+ The per-frame morph scalar write recomputes the inheriting `calc()` group
101
+ across the dock subtree (dock.css's 10-selector `:where()` consumers); add
102
+ the `layout` + `style` containment axes so a scalar write recomputes
103
+ layout/style WITHIN the dock subtree, not up the document (the value.js A′-4
104
+ ~13fps restyle-cost trace). RECONCILED with the existing axes: `paint`
105
+ (above, the BA.W-DOCK-GEOMETRY clip box) composes — `contain: layout style
106
+ paint` is the union, NEVER `size` (which `container-type: inline-size` carries
107
+ as `inline-size` ONLY on the OPT-IN `containerName` host below; the default
108
+ free-floating dock must stay shrink-to-fit, so `size`/`inline-size` is
109
+ DELIBERATELY excluded here — adding it would re-introduce the 3.3.0 sliver
110
+ regression the §99 comment documents). The morph-axis `overflow: clip`
111
+ (the reveal aperture) + the `.glass-dock-frame` rail-escape are UNAFFECTED:
112
+ `layout`/`style` containment scopes RECALC, it does not establish a paint
113
+ clip beyond the already-present `paint` axis. The `DOCK_SPRING` clock is
114
+ byte-fenced (the value.js letter) — this is restyle COST, not a re-tune. */
115
+ contain: layout style paint;
84
116
  display: inline-flex;
85
117
  align-items: center;
86
118
  /* AW.W1 — the dock does NOT establish a default inline-size container.
@@ -184,17 +216,33 @@
184
216
  scrolls — the scroll port only engages on real over-cap content. The
185
217
  block-axis morph clip stays `data-morphing`-gated above; this is the
186
218
  AT-REST port only. Consumers set `--dock-max-block-size` per-instance to
187
- anchor the column to the viewport without re-deriving the scroll plumbing. */
188
- .glass-dock.vertical.always-expanded:not([data-morphing]),
189
- .glass-dock.vertical.expanded:not([data-morphing]) {
219
+ anchor the column to the viewport without re-deriving the scroll plumbing.
220
+
221
+ BA.W-DOCK-GEOMETRY (DC-1) — the port is now GATED behind the `dock-scroll-y`
222
+ opt-in (`overflow="scroll"`), NOT unconditional on every `.vertical.
223
+ always-expanded`. THE ROOT: `overflow-y: auto` is a scroll value, and CSS
224
+ Overflow §3 FORCES the sibling `overflow-x: visible` to COMPUTE to `auto` —
225
+ so the F6 pin never survived, and EVERY at-rest vertical dock (even a
226
+ fit-content shell that never scrolls) paid the cross-axis inline clip,
227
+ slicing a control's inset plate left/right (the live π readback measured
228
+ `overflow-x: auto` on the grow-to-fit SidebarDock). A vertical dock that
229
+ genuinely needs the cap+scroll opts IN via `overflow="scroll"` (the
230
+ `.dock-scroll-y` port in overflow.css, the SAME plumbing the F6 comment names);
231
+ a grow-to-fit vertical shell stays `overflow: visible` (line 186) on BOTH axes
232
+ so its inset control plate paints past the track. The fit-content shell pays
233
+ NO cross-axis clip for zero scroll benefit — the goal criterion's "the
234
+ scroll-port cross-axis clip no longer fires on a fit-content shell that never
235
+ scrolls", honored at the geometry root. */
236
+ .glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing]),
237
+ .glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing]) {
190
238
  overflow-x: visible;
191
239
  overflow-y: auto;
192
240
  scrollbar-width: none;
193
241
  overscroll-behavior-y: contain;
194
242
  }
195
243
 
196
- .glass-dock.vertical.always-expanded:not([data-morphing])::-webkit-scrollbar,
197
- .glass-dock.vertical.expanded:not([data-morphing])::-webkit-scrollbar {
244
+ .glass-dock.vertical.dock-scroll-y.always-expanded:not([data-morphing])::-webkit-scrollbar,
245
+ .glass-dock.vertical.dock-scroll-y.expanded:not([data-morphing])::-webkit-scrollbar {
198
246
  display: none;
199
247
  }
200
248
 
@@ -244,16 +292,19 @@
244
292
  shell above; the cross axis stays visible there. */
245
293
  padding: var(--dock-padding-block, 0.375rem);
246
294
  border-radius: var(--radius-dock);
247
- /* AX.W01 — a vertical rail is ALWAYS-EXPANDED (no collapse↔expand morph),
248
- so its root padding/background/border-color never morph; the prior
249
- `padding/background/border-color var(--dock-motion-*)` transition arms
250
- are DELETED (a residual root CSS-transition on the morph-chrome props is
251
- the second-clock smell the single-scalar rebuild retires). The block-axis
252
- (height) morph is owned by the inner `.dock-layer-stack` / DockLayerGroup
253
- via the `--dock-morph-t` scalar (the size `calc()` above), never a CSS
254
- transition here. KEPT: the DECORATIVE hover-scale + press-squish (the
255
- individual `scale`/`transform`) and the box-shadow fade — these are
256
- interaction polish on the static rail, NOT the morph. */
295
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the stale "a vertical rail is ALWAYS-EXPANDED
296
+ (no collapse↔expand morph)" assumption is RETIRED (it was false since
297
+ vertical-collapse shipped: `alwaysExpanded` defaults FALSE, so a vertical
298
+ dock genuinely collapses its `block-size`). The vertical plate's
299
+ bg/border/padding/radius now MORPH on the SAME `--dock-expand-t` scalar
300
+ the horizontal chrome rides (the morph.css `.glass-dock.vertical` interp +
301
+ padding axis-inverse + the radius arm below) — the chrome follows the
302
+ box-size morph, no discrete snap. NO root CSS-transition on the morph-
303
+ chrome props is re-added (a `transition: padding/background/border-color`
304
+ arm is the second-clock smell the single-scalar rebuild forbids — the
305
+ `--dock-expand-t` interp is the single authority). KEPT: the DECORATIVE
306
+ hover-scale + press-squish (the individual `scale`/`transform`) and the
307
+ box-shadow fade — interaction polish on the rail, NOT the morph chrome. */
257
308
  transition:
258
309
  box-shadow var(--dock-motion-standard),
259
310
  transform var(--dock-motion-resize),
@@ -289,6 +340,22 @@
289
340
  border-radius: var(--radius-xl);
290
341
  }
291
342
 
343
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL big-dock CARD radius MORPHS on the
344
+ SAME `--dock-expand-t` scalar the horizontal `.shape-card` rides (the radius
345
+ arm of the vertical chrome un-gate; it lives in shell.css beside the horizontal
346
+ arm, not morph.css). `--radius-pill` at expand-t 0 (collapsed), the finite
347
+ `--dock-card-radius` at expand-t 1 (expanded) — the radius follows the box-size
348
+ block morph, no discrete snap. The static `.shape-pill`/`.shape-rounded` rest
349
+ radii above are the rest endpoints for those shapes; this is the card shape's
350
+ interpolated radius (mirroring the horizontal `:not(.vertical).shape-card`). */
351
+ .glass-dock.vertical.shape-card {
352
+ border-radius: calc(
353
+ var(--radius-pill) +
354
+ (var(--dock-card-radius) - var(--radius-pill)) *
355
+ var(--dock-expand-t, 1)
356
+ );
357
+ }
358
+
292
359
  /* AW.W3b — horizontal-root shape rules. The `shape-*` class once bound ONLY under
293
360
  the vertical surface; on a horizontal dock the prop silently no-op'd (the root
294
361
  hardwired `--radius-dock` = `--radius-pill`). These rules close that
@@ -20,10 +20,20 @@
20
20
  scale: 1;
21
21
  width: var(--dock-control-size, var(--size-icon-btn));
22
22
  height: var(--dock-control-size, var(--size-icon-btn));
23
- padding: var(--dock-icon-padding, 0);
23
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The HIT
24
+ BOX stays the full `--dock-control-size` (the WCAG 2.5.5 touch floor on
25
+ the CELL), while the inset padding + `background-clip: content-box`
26
+ insets the PAINTED plate within it: the hover/active fill paints only the
27
+ content box (the cell minus the inset on every side), so the maximal
28
+ hover (×1.1) / active circle clears the cross-axis clip edge with ≥1px
29
+ margin — the lozenge dies at the plate diameter, not at the clip box. The
30
+ inset falls back to the prior `--dock-icon-padding` (0) when no dock
31
+ ancestor sets `--dock-control-safe-inset` (a standalone icon button). */
32
+ padding: var(--dock-icon-padding, var(--dock-control-safe-inset, 0));
24
33
  cursor: pointer;
25
34
  border: none;
26
35
  background: transparent;
36
+ background-clip: content-box;
27
37
  border-radius: var(--dock-control-radius, var(--radius-pill));
28
38
  /* Foreground base routes through `--dock-fg-on-aurora` (defaults to
29
39
  `--foreground`, byte-identical to before) so a consumer floating the
@@ -2,10 +2,10 @@
2
2
  (AZ.W-CARVE partial 3 of 5; carved out of dock-controls.css).
3
3
 
4
4
  The base rule (density-keyed height knob, padding, glass hover/active/press
5
- cohort), the PRIMARY tier (the dock extension over `@utility btn-audacious` —
6
- structural shell + the `--phase-color` disco-grain hover radial + the
7
- `[data-phase]` backplate halo), and the SECONDARY tier (the quieter
8
- edge-light/edge-shadow cross-control comma-group over tab + icon button).
5
+ cohort), the PRIMARY tier (the structural shell — taller min-height + wider
6
+ padding + a stronger base tint; the disco grain/halo RETIRED at BA.W-GLASS-CAL,
7
+ it now inherits the base glass hover register), and the SECONDARY tier (the
8
+ quieter edge-light/edge-shadow cross-control comma-group over tab + icon button).
9
9
  Opens its OWN `@layer components`; @import-ed after dark-mode-toggle.css. */
10
10
 
11
11
  @layer components {
@@ -29,6 +29,14 @@
29
29
  padding-block: var(--dock-tab-padding-block, 0.375rem);
30
30
  border: none;
31
31
  background: transparent;
32
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The tab's
33
+ OWN padding already insets a content box within the row-locked border box;
34
+ `background-clip: content-box` realizes that as a PAINTED-plate inset, so
35
+ the hover (×1.1) / active pill clears the cross-axis clip edge with margin
36
+ — the same plate-inset-within-cell principle the icon-button consumes via
37
+ `--dock-control-safe-inset`. The text + min-height keep the box at the row;
38
+ only the painted fill insets (no box growth, no glyph reflow). */
39
+ background-clip: content-box;
32
40
  border-radius: var(--dock-control-radius, var(--radius-pill));
33
41
  /* Default font-size carries through to text-only tab content; consumers
34
42
  wrapping content in an explicit type utility (e.g. `text-hero`,
@@ -86,91 +94,24 @@
86
94
 
87
95
  /* Tier — primary ────────────────────────────────────────────
88
96
  *
89
- * Per W2.7 §9, §12, §13, §17. The primary tier composes three at-rest
90
- * marks (top-highlight, bottom under-shadow, baseline glass) with three
91
- * disco accents on hover (specular swap, sparkle sweep, disco-grain).
92
- *
93
- * Reservation: disco fires on hover only. At rest the button reads as
94
- * a Vignelli-restrained composed glass surface. The `--phase-color`
95
- * cascade (provided by `<InstrumentChassis>` via `data-phase`) tints
96
- * the disco-grain radial only on hover; idle is neutral.
97
- *
98
- * K.W6 Lane B — the canonical disco-grain + sparkle-sweep + specular
99
- * recipe lifted to `@utility btn-audacious` (utilities.css). The Vue
100
- * <DockTabButton> attaches `btn-audacious` automatically when the
101
- * consumer passes `data-tier="primary"`. The dock-local rules below
102
- * are STRICTLY the dock extension: structural shell (padding, base
103
- * surface tint, min-height) + phase-tint extensions (hover radial
104
- * uses `--phase-color`, plus the `[data-phase]` `::before` halo).
97
+ * BA.W-GLASS-CAL (H2a) — the disco COLLAPSED. The primary tier was a SECOND
98
+ * disco surface: it composed `@utility btn-audacious` (auto-attached by
99
+ * <DockTabButton> on `data-tier="primary"`) PLUS a dock-local phase-grain
100
+ * (the `--glass-grain-opacity-disco` + `--paper-clean-texture`/`--phase-color`
101
+ * radial hover) PLUS a `[data-phase]` `::before` rest-halo. With the disco
102
+ * retired, the primary tier keeps ONLY its STRUCTURAL shell (taller min-height,
103
+ * wider padding, the slightly-stronger base tint that distinguishes it from the
104
+ * secondary tier) and inherits the plain de-red'd dock-control glass hover
105
+ * register from the base `.dock-tab-button` rule above (bg → `--dock-control-
106
+ * hover-bg`, scale → `--scale-hover-dock`, the specular gleam — the SAME register
107
+ * `.dock-icon-button` speaks). No grain, no phase-radial, no rest-halo. The
108
+ * <DockTabButton> auto-attach of `btn-audacious` is removed (the utility is gone).
105
109
  */
106
110
  .dock-tab-button[data-tier="primary"] {
107
111
  --dock-tab-min-height: 4rem;
108
112
  padding-inline: 1.5rem;
109
113
  background: color-mix(in srgb, var(--card) 60%, transparent);
110
114
  color: var(--foreground);
111
-
112
- /* Phase-tint hover override — same disco-grain composition as
113
- * `btn-audacious`, but the radial uses `--phase-color` (instrument-
114
- * cluster axis) instead of the canonical `--primary`. The `--paper-
115
- * clean-texture` overlay and `--glass-specular` shadow stack are
116
- * inherited from the underlying `btn-audacious` utility. */
117
- /* AX.W52 D19 — the phase-tint hover radial DEMOTED: the prior
118
- * `ellipse at 30% 30%` at 18% was a loud top-LEFT corner hotspot. Toned to
119
- * 8% and the anchor shifted off the hard corner toward a softer top-biased
120
- * ellipse (`40% 25%`) with a tighter `transparent 55%` falloff, so it reads
121
- * as a surface lift rather than a corner glow — the disco hover identity
122
- * survives, the egregious corner bloom does not. */
123
- &:hover:not(:disabled) {
124
- --glass-grain-opacity: var(--glass-grain-opacity-disco, 0.08);
125
- background-image:
126
- var(--paper-clean-texture),
127
- radial-gradient(
128
- ellipse at 40% 25%,
129
- color-mix(
130
- in srgb,
131
- var(--phase-color, var(--foreground)) 8%,
132
- transparent
133
- ),
134
- transparent 55%
135
- );
136
- background-blend-mode: overlay, normal;
137
- background-size: var(--paper-texture-size), auto;
138
- }
139
-
140
- /* Q.W3.A.4 — phase-tint backplate halo at the pill wrapper.
141
- *
142
- * An inner glyph wrapper's own halo would be clipped by the pill's
143
- * `overflow: hidden` and never escape the glyph box. This `::before`
144
- * lifts the phase-tint to the pill itself so the glow composes with the
145
- * whole CTA. Scoped to active phases — at idle / ready the pill stays
146
- * neutral and inherits the W2.7 reservation ("disco fires on hover
147
- * only"). */
148
- /* AX.W52 D19 — the REST phase-halo `::before` (fires during a speedtest run
149
- * on the most prominent dock control) DEMOTED on the same axis as the hover
150
- * radial: 18%→8%, the hard `30% 30%` corner shifted to a softer `40% 25%`
151
- * top-biased ellipse with a tighter `transparent 55%` falloff, and the
152
- * `opacity: 1` dropped to 0.5 so the persistent run-time halo is a subtle
153
- * surface lift, not a corner bloom that washes the pill for the whole run. */
154
- &[data-phase]:not([data-phase="ready"]):not([data-phase="idle"])::before {
155
- content: "";
156
- position: absolute;
157
- inset: 0;
158
- border-radius: inherit;
159
- background: radial-gradient(
160
- ellipse at 40% 25%,
161
- color-mix(
162
- in srgb,
163
- var(--phase-color, var(--foreground)) 8%,
164
- transparent
165
- )
166
- 0%,
167
- transparent 55%
168
- );
169
- pointer-events: none;
170
- z-index: -1;
171
- opacity: 0.5;
172
- transition: opacity var(--duration-fast) var(--ease-standard);
173
- }
174
115
  }
175
116
 
176
117
  /* Tier — secondary ──────────────────────────────────────────
@@ -26,6 +26,13 @@
26
26
  cursor: pointer;
27
27
  border: none;
28
28
  background: transparent;
29
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). As on the
30
+ tab button: the trigger's OWN padding insets a content box within the
31
+ row-locked border box, and `background-clip: content-box` realizes that
32
+ as a PAINTED-plate inset so the hover (×1.1) / open pill clears the
33
+ cross-axis clip edge — the same plate-inset-within-cell principle the
34
+ icon-button consumes via `--dock-control-safe-inset`. No box growth. */
35
+ background-clip: content-box;
29
36
  border-radius: var(--dock-control-radius, var(--radius-pill));
30
37
  /* Shares the dock-icon-button legibility base (`--dock-fg-on-aurora`). */
31
38
  color: color-mix(
@@ -41,6 +41,7 @@
41
41
  @import "./dock/layer-group.css";
42
42
  @import "./dock/overflow.css";
43
43
  @import "./dock/rail-extend.css";
44
+ @import "./dock/section.css";
44
45
  @import "./dock/morph-bridge.css";
45
46
 
46
47
  /* AX.W01 — the SINGLE morph scalar. `useLayerTransition` writes it once per frame
@@ -66,6 +67,38 @@
66
67
  initial-value: 0;
67
68
  }
68
69
 
70
+ /* BB.W-DOCK-MORPH-FAMILY (e) — the `@property`-registered dock-scale axis. The
71
+ dock-scale cascade is `--dock-scale: calc(var(--ui-scale) * var(--dock-local-scale,
72
+ 1))` (tokens/sizing.css). UNregistered, that `calc()` substitutes ONCE at `:root`
73
+ against the `:root` identity `--dock-local-scale: 1`, so a consumer-scope
74
+ `--dock-local-scale` override is INHERITED but never RE-EVALUATED — the dock keeps
75
+ `--dock-scale: calc(1 * 1)` and stays at the unscaled base (the 3rd recurrence of
76
+ the AX.W55 substitution-vs-inheritance trap; the documented-but-broken `:root`
77
+ preset). Registering `--dock-local-scale` as an INHERITING `@property <number>`
78
+ makes a registered inheriting custom property re-substitute PER-ELEMENT, so a
79
+ `--dock-local-scale` override on ANY dock scope re-evaluates the `calc()` at that
80
+ scope and threads the whole geometry cascade (box·pad·gap·tab·tile·glyph) down in
81
+ lockstep — the `:root` preset made real (the `@property --dock-morph-t` house
82
+ idiom above is the precedent). `--dock-scale` itself is ALSO registered (the
83
+ derived axis) so its `calc()` re-resolves per-element when `--dock-local-scale`
84
+ shifts. ADDITIVE ONLY: `initial-value: 1` is the identity, so at the default
85
+ `--dock-local-scale: 1` the resolved `--dock-scale` is byte-IDENTICAL to HEAD (no
86
+ rung re-tune); the `@media (pointer: coarse)` re-declare (overflow.css) STAYS the
87
+ `:root`-equivalent re-resolve, and this registration is the complementary
88
+ non-`:root`-scope thread. DOCK_SPRING is untouched (this is a token registration,
89
+ not a clock). */
90
+ @property --dock-local-scale {
91
+ syntax: "<number>";
92
+ inherits: true;
93
+ initial-value: 1;
94
+ }
95
+
96
+ @property --dock-scale {
97
+ syntax: "<number>";
98
+ inherits: true;
99
+ initial-value: 1;
100
+ }
101
+
69
102
  @layer components {
70
103
  :where(
71
104
  .glass-dock,
@@ -81,10 +114,12 @@
81
114
  --dock-motion-fast: var(--duration-fast) var(--ease-standard);
82
115
  --dock-motion-standard: var(--duration-normal) var(--ease-standard);
83
116
  /* AT.W6-dock-c — the FLIP-fallback timing. `--dock-resize-spring` (the
84
- `--spring-snappy` linear()) is the single source curve the native
117
+ `--spring-dock` linear()) is the single source curve the native
85
118
  View-Transition path ALSO consumes, so the morph is timing-identical
86
- across engines. */
87
- --dock-motion-resize: var(--duration-normal) var(--dock-resize-spring);
119
+ across engines. BA.W-GLASS-CAL Unit 3 — the duration leg re-times off
120
+ the generic `--duration-normal` (0.3s) onto `--spring-dock-duration`
121
+ (0.28s, the dock spring's OWN 2%-band envelope settle). */
122
+ --dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);
88
123
  }
89
124
 
90
125
  /* Shared four-state contract — the focus-visible ring + disabled paint are
@@ -1,21 +1,35 @@
1
1
  /*
2
- * drawer.css — Detented bottom-sheet grammar (AN.W3).
2
+ * drawer.css — Detented bottom-sheet grammar (AN.W3; BB.W-DRAWER-ABROGATE).
3
3
  *
4
- * vaul-vue owns the snap math (the spring transform between snap-points, the
5
- * drag-resistance overshoot, the `data-vaul-*` state attributes). glass-ui owns
6
- * the LOOK: the glass sheet surface, the rounded peek handle, the snap-stop
7
- * indicator rules, and the drag-resistance feel-tuning. This file is the
8
- * substrate so a consumer mounting `<Drawer mode="live-behind">` does not
9
- * re-author the three detents from scratch.
4
+ * THE HOUSE owns the snap math end-to-end now (vaul-vue ABROGATED). The Drawer
5
+ * family composes the reka `DialogRoot`/`DialogPortal`/`DialogContent` headless
6
+ * substrate (the SAME vueuse-free substrate every other compound wrapper binds),
7
+ * and the snap settle is driven by ONE house `SpringProgress` on the `DRAWER_SNAP`
8
+ * register (`useDrawerSnap.ts`, the §6 dock-morph `linear()` clock — NOT a bespoke
9
+ * `cubic-bezier(.32,.72,0,1)` transition; that was vaul's). The engine writes the
10
+ * `--glass-drawer-t` snap-fraction scalar (0 = closed/offscreen, 1 = the fullest
11
+ * detent) the content root reads as its translate; this file owns the LOOK: the
12
+ * glass sheet surface, the rounded peek handle, the snap-stop indicator rules, and
13
+ * the detent-fill geometry. This file is the substrate so a consumer mounting
14
+ * `<Drawer mode="live-behind">` does not re-author the three detents from scratch.
10
15
  *
11
16
  * Token-first — every visual axis reads a custom property. Consumers retune
12
17
  * the sheet by overriding the rungs below, never by editing this file.
13
18
  */
14
19
 
20
+ /* The snap-fraction scalar the house `useDrawerSnap` engine writes per frame. The
21
+ * content root's inline `transform` reads it (DrawerContent.vue) — typed so the
22
+ * default (1 = fully open) keeps a no-snap content-sized sheet seated open. */
23
+ @property --glass-drawer-t {
24
+ syntax: "<number>";
25
+ inherits: false;
26
+ initial-value: 1;
27
+ }
28
+
15
29
  :root {
16
30
  /* Detent grammar knobs — overridable per-consumer */
17
31
  --drawer-handle-w: 2.25rem;
18
- --drawer-handle-h: 0.3125rem; /* 5px — vaul's hit-target rhythm */
32
+ --drawer-handle-h: 0.3125rem; /* 5px — the iOS grip hit-target rhythm */
19
33
  --drawer-handle-color: var(--muted-foreground);
20
34
  --drawer-handle-opacity: 0.45;
21
35
  --drawer-handle-opacity-active: 0.85;
@@ -23,14 +37,15 @@
23
37
  }
24
38
 
25
39
  /*
26
- * The sheet surface. Replaces the prior inline-Tailwind triplet on
27
- * DrawerContent.vue so the glass tier + the snap transform feel live in one
40
+ * The sheet surface. The glass tier + the snap-translate feel live in one
28
41
  * token-driven place. The fixed/inset/z-index layout stays here too.
29
42
  *
30
- * NOTE: vaul-vue sets `transition: transform .5s cubic-bezier(.32,.72,0,1)` and
31
- * `touch-action: none` on `[data-vaul-drawer]` from its injected stylesheet —
32
- * that IS the drag-resistance spring curve. We do NOT override `transition` so
33
- * the snap feel is preserved; we layer border-radius + glass surface on top.
43
+ * NOTE: the snap motion is the house `useDrawerSnap` `SpringProgress` writing
44
+ * `--glass-drawer-t`, which the content root's inline `transform` reads (the §6
45
+ * doctrine — ONE motion vocabulary, no `transition: transform` curve injected on
46
+ * `[data-glass-drawer]`). `touch-action: none` on the handle keeps the drag gesture
47
+ * from scrolling the page. We layer border-radius + glass surface on top of the
48
+ * spring-driven translate.
34
49
  */
35
50
  .glass-drawer {
36
51
  position: fixed;
@@ -59,24 +74,68 @@
59
74
  }
60
75
 
61
76
  /*
62
- * Detented (snap-point) sheets fill the viewport height. vaul positions the
63
- * sheet by translating it DOWN by `innerHeight - (fraction * innerHeight)` —
64
- * so for a snap fraction to read as that fraction OF THE VIEWPORT, the sheet's
65
- * top must sit at the viewport top when fully open (offset 0). A `height: auto`
66
- * content sheet would instead translate off-screen. vaul tags the snap case via
67
- * `[data-vaul-snap-points=true]`; we fill height there and let the content
77
+ * BA.W-SURFACE-AXIS — the shared {glass·veil·opaque} surface decoration ON TOP of
78
+ * the `.glass-drawer` recipe. `.glass-drawer` is UNLAYERED (this file), so the
79
+ * `@layer components` `[data-surface]` seam in glass/surface-axis.css would LOSE
80
+ * to it (an unlayered rule always beats a layered one — the AZ.W-DOCK-RAIL
81
+ * cascade-win trap). The fix is the SAME-LAYER carve: these `.glass-drawer[data-
82
+ * surface=…]` rules sit unlayered alongside `.glass-drawer` and win by specificity
83
+ * (attr+class > class), composing the SAME veil/opaque deltas the shared seam
84
+ * declares — NO `glass-drawer`-local recipe fork (they read the same `--veil-*` /
85
+ * `--glass-level` machinery). The `glass` rung is the identity (no rule).
86
+ */
87
+ .glass-drawer[data-surface="veil"] {
88
+ --veil-bg: color-mix(
89
+ in oklab,
90
+ var(--glass-bg-quiet),
91
+ var(--glass-tint-source) var(--glass-tint-strength)
92
+ );
93
+ --veil-blur: var(--glass-blur-quiet);
94
+ background: var(--veil-bg);
95
+ backdrop-filter: var(--veil-blur);
96
+ -webkit-backdrop-filter: var(--veil-blur);
97
+ border: none;
98
+ box-shadow: none;
99
+ }
100
+
101
+ .glass-drawer[data-surface="opaque"] {
102
+ /* The solid-card escape. The `.glass-drawer` background reads the `:root`-baked
103
+ `--glass-bg-overlay` token (which substitutes `--glass-level` at :root), so a
104
+ per-element `--glass-level: 0` cannot re-resolve it — the substitution-vs-
105
+ inheritance trap (mirrors surface-axis.css). Set the SOLID plate AT THE
106
+ ELEMENT; still flip the level/tint knobs for a nested glass descendant. */
107
+ --glass-level: 0;
108
+ --glass-tint-strength: 0%;
109
+ /* The SOLID --card plate via the house color-mix idiom (solid --card, expressed
110
+ as the cohesion-sanctioned mix the token ladder speaks — NOT the bare
111
+ `var(--card)` the cohesion D1 check forbids for the always-on drawer plate;
112
+ this is the EXPLICIT opt-out behind `surface="opaque"`, not the default). */
113
+ background: color-mix(in srgb, var(--card), transparent 0%);
114
+ backdrop-filter: none;
115
+ -webkit-backdrop-filter: none;
116
+ }
117
+
118
+ /*
119
+ * Detented (snap-point) sheets fill the viewport height. The house engine positions
120
+ * the sheet by translating it along its drag axis by `(1 - --glass-drawer-t) * 100%`
121
+ * (DrawerContent.vue's inline transform) — so for a snap fraction to read as that
122
+ * fraction OF THE VIEWPORT, the sheet's top must sit at the viewport top when fully
123
+ * open (translate 0). A `height: auto` content sheet would instead translate
124
+ * off-screen. The content root tags the multi-detent case via
125
+ * `[data-glass-drawer-snap-points=true]`; we fill height there and let the content
68
126
  * scroll inside.
69
127
  */
70
- .glass-drawer[data-vaul-snap-points="true"] {
128
+ .glass-drawer[data-glass-drawer-snap-points="true"] {
71
129
  height: 100%;
72
130
  max-height: 100%;
73
131
  margin-top: 0;
74
132
  }
75
133
 
76
- /* Live-behind direction variants — vaul tags the root with the drag axis.
77
- Bottom is the default + the F-side pattern; the others ride the same surface
78
- so a top/side live-behind sheet inherits the grammar. */
79
- .glass-drawer[data-vaul-drawer-direction="top"] {
134
+ /* Direction variants — the content root tags itself with the drag axis
135
+ (`data-glass-drawer-direction`). Bottom is the default; the others ride the same
136
+ surface so a top/side sheet inherits the grammar. The side-lens (left/right) is
137
+ the BB-2 full-slide axis — it pins to its edge + fills the cross axis. */
138
+ .glass-drawer[data-glass-drawer-direction="top"] {
80
139
  bottom: auto;
81
140
  top: 0;
82
141
  margin-top: 0;
@@ -86,11 +145,35 @@
86
145
  border-radius: 0 0 var(--radius-panel) var(--radius-panel);
87
146
  }
88
147
 
148
+ .glass-drawer[data-glass-drawer-direction="left"],
149
+ .glass-drawer[data-glass-drawer-direction="right"] {
150
+ inset-inline: auto;
151
+ inset-block: 0;
152
+ height: 100%;
153
+ max-height: 100%;
154
+ width: min(24rem, 92vw);
155
+ margin: 0;
156
+ border: 1px solid var(--glass-border-overlay);
157
+ }
158
+
159
+ .glass-drawer[data-glass-drawer-direction="left"] {
160
+ left: 0;
161
+ border-left: 0;
162
+ border-radius: 0 var(--radius-panel) var(--radius-panel) 0;
163
+ }
164
+
165
+ .glass-drawer[data-glass-drawer-direction="right"] {
166
+ right: 0;
167
+ border-right: 0;
168
+ border-radius: var(--radius-panel) 0 0 var(--radius-panel);
169
+ }
170
+
89
171
  /*
90
172
  * Peek handle — the rounded grip at the top of the sheet. It is the visual
91
- * affordance the user drags to cycle peek → half → full. vaul-vue intensifies
92
- * the grip on `:active` via its own `[data-vaul-handle]` rules when the consumer
93
- * uses `<DrawerHandle>`; this is the glass-ui default grip for the common case.
173
+ * affordance the user drags to cycle peek → half → full. The house snap engine
174
+ * (`useDrawerSnap`) binds the pointer-drag gesture directly on this handle (the
175
+ * `[data-glass-drawer-handle]` element) and flags it `[data-dragging]` while a drag
176
+ * is in flight, so the grip intensifies "live" during the gesture.
94
177
  */
95
178
  .glass-drawer-handle {
96
179
  flex-shrink: 0;
@@ -112,10 +195,11 @@
112
195
  width var(--duration-fast) var(--ease-out);
113
196
  }
114
197
 
115
- /* While the sheet is being dragged vaul exposes the gesture; intensify the grip
116
- so the affordance reads as "live". `:active` covers the pointer-held case for
117
- the default grip; consumers using vaul's `<DrawerHandle>` get its own active
118
- rule in addition. */
198
+ /* While the sheet is being dragged the house engine flags the handle
199
+ `[data-dragging]`; intensify the grip so the affordance reads as "live".
200
+ `:active` covers the pointer-held case + `[data-dragging]` covers the captured
201
+ drag; the hover lift is the rest affordance. */
202
+ .glass-drawer-handle[data-dragging] .glass-drawer-grip,
119
203
  .glass-drawer-handle:active .glass-drawer-grip,
120
204
  .glass-drawer:hover .glass-drawer-grip {
121
205
  opacity: var(--drawer-handle-opacity-active);
@@ -128,7 +212,8 @@
128
212
  * `.glass-drawer-snap-rule` to a separator element inside the sheet; it reads as
129
213
  * the detent boundary line without competing with the content. This is the
130
214
  * "snap-stop visual indicator" the spec asks for, expressed as an opt-in class
131
- * (the detents themselves are positional, owned by vaul; the RULE is the look).
215
+ * (the detents themselves are positional, owned by the house snap engine; the
216
+ * RULE is the look).
132
217
  */
133
218
  .glass-drawer-snap-rule {
134
219
  height: 1px;
@@ -137,8 +222,11 @@
137
222
  background-color: var(--drawer-snap-rule-color);
138
223
  }
139
224
 
140
- /* Reduced-motion — vaul's transform transition is its own; we only suppress the
141
- grip's affordance animation so the handle does not pulse for PRM users. */
225
+ /* Reduced-motion — the house `SpringProgress` snaps the detent deterministically
226
+ under `prefers-reduced-motion: reduce` (its `respectReducedMotion` jumps the
227
+ `--glass-drawer-t` scalar to target in one frame, zero motion frames); here we
228
+ only suppress the grip's affordance animation so the handle does not pulse for
229
+ PRM users. */
142
230
  @media (prefers-reduced-motion: reduce) {
143
231
  .glass-drawer-grip {
144
232
  transition: none;