@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
@@ -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;
@@ -61,24 +76,72 @@
61
76
  }
62
77
 
63
78
  /*
64
- * Detented (snap-point) sheets fill the viewport height. vaul positions the
65
- * sheet by translating it DOWN by `innerHeight - (fraction * innerHeight)` —
66
- * so for a snap fraction to read as that fraction OF THE VIEWPORT, the sheet's
67
- * top must sit at the viewport top when fully open (offset 0). A `height: auto`
68
- * content sheet would instead translate off-screen. vaul tags the snap case via
69
- * `[data-vaul-snap-points=true]`; we fill height there and let the content
79
+ * BA.W-SURFACE-AXIS — the shared {glass·veil·opaque} surface decoration ON TOP of
80
+ * the `.glass-drawer` recipe. `.glass-drawer` is UNLAYERED (this file), so the
81
+ * `@layer components` `[data-surface]` seam in glass/surface-axis.css would LOSE
82
+ * to it (an unlayered rule always beats a layered one — the AZ.W-DOCK-RAIL
83
+ * cascade-win trap). The fix is the SAME-LAYER carve: these `.glass-drawer[data-
84
+ * surface=…]` rules sit unlayered alongside `.glass-drawer` and win by specificity
85
+ * (attr+class > class), composing the SAME veil/opaque deltas the shared seam
86
+ * declares — NO `glass-drawer`-local recipe fork (they read the same `--veil-*` /
87
+ * `--glass-level` machinery). The `glass` rung is the identity (no rule).
88
+ */
89
+ .glass-drawer[data-surface="veil"] {
90
+ --veil-bg: color-mix(
91
+ in oklab,
92
+ var(--glass-bg-quiet),
93
+ var(--glass-tint-source) var(--glass-tint-strength)
94
+ );
95
+ --veil-blur: var(--glass-blur-quiet);
96
+ background: var(--veil-bg);
97
+ -webkit-backdrop-filter: var(--veil-blur);
98
+
99
+ backdrop-filter: var(--veil-blur);
100
+ -webkit-backdrop-filter: var(--veil-blur);
101
+ border: none;
102
+ box-shadow: none;
103
+ }
104
+
105
+ .glass-drawer[data-surface="opaque"] {
106
+ /* The solid-card escape. The `.glass-drawer` background reads the `:root`-baked
107
+ `--glass-bg-overlay` token (which substitutes `--glass-level` at :root), so a
108
+ per-element `--glass-level: 0` cannot re-resolve it — the substitution-vs-
109
+ inheritance trap (mirrors surface-axis.css). Set the SOLID plate AT THE
110
+ ELEMENT; still flip the level/tint knobs for a nested glass descendant. */
111
+ --glass-level: 0;
112
+ --glass-tint-strength: 0%;
113
+ /* The SOLID --card plate via the house color-mix idiom (solid --card, expressed
114
+ as the cohesion-sanctioned mix the token ladder speaks — NOT the bare
115
+ `var(--card)` the cohesion D1 check forbids for the always-on drawer plate;
116
+ this is the EXPLICIT opt-out behind `surface="opaque"`, not the default). */
117
+ background: color-mix(in srgb, var(--card), transparent 0%);
118
+ -webkit-backdrop-filter: none;
119
+
120
+ backdrop-filter: none;
121
+ -webkit-backdrop-filter: none;
122
+ }
123
+
124
+ /*
125
+ * Detented (snap-point) sheets fill the viewport height. The house engine positions
126
+ * the sheet by translating it along its drag axis by `(1 - --glass-drawer-t) * 100%`
127
+ * (DrawerContent.vue's inline transform) — so for a snap fraction to read as that
128
+ * fraction OF THE VIEWPORT, the sheet's top must sit at the viewport top when fully
129
+ * open (translate 0). A `height: auto` content sheet would instead translate
130
+ * off-screen. The content root tags the multi-detent case via
131
+ * `[data-glass-drawer-snap-points=true]`; we fill height there and let the content
70
132
  * scroll inside.
71
133
  */
72
- .glass-drawer[data-vaul-snap-points="true"] {
134
+ .glass-drawer[data-glass-drawer-snap-points="true"] {
73
135
  height: 100%;
74
136
  max-height: 100%;
75
137
  margin-top: 0;
76
138
  }
77
139
 
78
- /* Live-behind direction variants — vaul tags the root with the drag axis.
79
- Bottom is the default + the F-side pattern; the others ride the same surface
80
- so a top/side live-behind sheet inherits the grammar. */
81
- .glass-drawer[data-vaul-drawer-direction="top"] {
140
+ /* Direction variants — the content root tags itself with the drag axis
141
+ (`data-glass-drawer-direction`). Bottom is the default; the others ride the same
142
+ surface so a top/side sheet inherits the grammar. The side-lens (left/right) is
143
+ the BB-2 full-slide axis — it pins to its edge + fills the cross axis. */
144
+ .glass-drawer[data-glass-drawer-direction="top"] {
82
145
  bottom: auto;
83
146
  top: 0;
84
147
  margin-top: 0;
@@ -88,11 +151,35 @@
88
151
  border-radius: 0 0 var(--radius-panel) var(--radius-panel);
89
152
  }
90
153
 
154
+ .glass-drawer[data-glass-drawer-direction="left"],
155
+ .glass-drawer[data-glass-drawer-direction="right"] {
156
+ inset-inline: auto;
157
+ inset-block: 0;
158
+ height: 100%;
159
+ max-height: 100%;
160
+ width: min(24rem, 92vw);
161
+ margin: 0;
162
+ border: 1px solid var(--glass-border-overlay);
163
+ }
164
+
165
+ .glass-drawer[data-glass-drawer-direction="left"] {
166
+ left: 0;
167
+ border-left: 0;
168
+ border-radius: 0 var(--radius-panel) var(--radius-panel) 0;
169
+ }
170
+
171
+ .glass-drawer[data-glass-drawer-direction="right"] {
172
+ right: 0;
173
+ border-right: 0;
174
+ border-radius: var(--radius-panel) 0 0 var(--radius-panel);
175
+ }
176
+
91
177
  /*
92
178
  * Peek handle — the rounded grip at the top of the sheet. It is the visual
93
- * affordance the user drags to cycle peek → half → full. vaul-vue intensifies
94
- * the grip on `:active` via its own `[data-vaul-handle]` rules when the consumer
95
- * uses `<DrawerHandle>`; this is the glass-ui default grip for the common case.
179
+ * affordance the user drags to cycle peek → half → full. The house snap engine
180
+ * (`useDrawerSnap`) binds the pointer-drag gesture directly on this handle (the
181
+ * `[data-glass-drawer-handle]` element) and flags it `[data-dragging]` while a drag
182
+ * is in flight, so the grip intensifies "live" during the gesture.
96
183
  */
97
184
  .glass-drawer-handle {
98
185
  flex-shrink: 0;
@@ -114,10 +201,11 @@
114
201
  width var(--duration-fast) var(--ease-out);
115
202
  }
116
203
 
117
- /* While the sheet is being dragged vaul exposes the gesture; intensify the grip
118
- so the affordance reads as "live". `:active` covers the pointer-held case for
119
- the default grip; consumers using vaul's `<DrawerHandle>` get its own active
120
- rule in addition. */
204
+ /* While the sheet is being dragged the house engine flags the handle
205
+ `[data-dragging]`; intensify the grip so the affordance reads as "live".
206
+ `:active` covers the pointer-held case + `[data-dragging]` covers the captured
207
+ drag; the hover lift is the rest affordance. */
208
+ .glass-drawer-handle[data-dragging] .glass-drawer-grip,
121
209
  .glass-drawer-handle:active .glass-drawer-grip,
122
210
  .glass-drawer:hover .glass-drawer-grip {
123
211
  opacity: var(--drawer-handle-opacity-active);
@@ -130,7 +218,8 @@
130
218
  * `.glass-drawer-snap-rule` to a separator element inside the sheet; it reads as
131
219
  * the detent boundary line without competing with the content. This is the
132
220
  * "snap-stop visual indicator" the spec asks for, expressed as an opt-in class
133
- * (the detents themselves are positional, owned by vaul; the RULE is the look).
221
+ * (the detents themselves are positional, owned by the house snap engine; the
222
+ * RULE is the look).
134
223
  */
135
224
  .glass-drawer-snap-rule {
136
225
  height: 1px;
@@ -139,8 +228,11 @@
139
228
  background-color: var(--drawer-snap-rule-color);
140
229
  }
141
230
 
142
- /* Reduced-motion — vaul's transform transition is its own; we only suppress the
143
- grip's affordance animation so the handle does not pulse for PRM users. */
231
+ /* Reduced-motion — the house `SpringProgress` snaps the detent deterministically
232
+ under `prefers-reduced-motion: reduce` (its `respectReducedMotion` jumps the
233
+ `--glass-drawer-t` scalar to target in one frame, zero motion frames); here we
234
+ only suppress the grip's affordance animation so the handle does not pulse for
235
+ PRM users. */
144
236
  @media (prefers-reduced-motion: reduce) {
145
237
  .glass-drawer-grip {
146
238
  transition: none;
@@ -0,0 +1,104 @@
1
+ /* feedback-tone.css — the ONE shared tinted-glass tone recipe (BA.W-FEEDBACK-TONE).
2
+
3
+ THE COLLAPSE: Toast, Notification, and Alert each carried an INDEPENDENT tone map
4
+ (the Toast variant map painted SOLID `bg-{success,warning,info,destructive}` opaque
5
+ token plates over a `glass-floating` base; the Notification type map painted
6
+ `bg-<tone>/90` near-opaque slabs; Alert alone was correct in SHAPE — glass-wash plate
7
+ + tone-on-rim — but HARDCODED its `border-<tone>/40` rim per variant). Three tone
8
+ maps, three calibration sites, and TWO of them painted a colored SLAB that occluded
9
+ the backdrop (the R8-12/R8-13 "not glassy at all" defect; the blur track survived but
10
+ was inert behind a 100%-opaque plate).
11
+
12
+ This file mints the tone register ONCE. Every feedback tone reads as COLORED GLASS:
13
+ a tinted-glass wash (the rung bg mixed a BOUNDED % toward the tone, the SAME
14
+ `color-mix(in oklab, <rung bg>, <tint> <strength>)` seam the W55 `--glass-tint-*`
15
+ legibility lift and the `--veil-bg` plate already run — ZERO new compositing path) +
16
+ a tone-keyed rim + a full-chroma glyph. The backdrop STILL shows through (α stays
17
+ translucent, the W2 π floor < ~0.92). The body ink stays `--foreground` /
18
+ `--card-foreground` for legibility (the Alert discipline — body never tone-tinted),
19
+ so the tone is ONE deliberate color event per surface (the AZ.W-SUFFUSE one-color-
20
+ event idiom), never a full-bleed fill.
21
+
22
+ THE ONE KNOB: `--feedback-tone-strength` tints all four tones at once (the bounded
23
+ mix %, the toast-glass §A band). The four tone hues map to the HOUSE tokens
24
+ `--success` / `--warning` / `--info` / `--destructive` (presets-in-consumers — NO new
25
+ colors). A consumer recalibrates the tone weight with ONE override.
26
+
27
+ THE RUNG: the register reads `--feedback-tone-rung` (default the floating-chrome rung
28
+ `--glass-bg-floating`, the Toast/Notification overlay register). Alert RE-POINTS it to
29
+ `--glass-bg-wash` on its own surface (a content panel rides wash, not floating — the
30
+ register difference is correct; only the tone SOURCE unifies, not the rung). The rung
31
+ reads `--glass-bg-*` DIRECTLY (the same tokens W-SURFACE-AXIS's glass arm routes), so
32
+ the tone tint rides ON the glass surface — a re-point, not a fork.
33
+
34
+ THE SUBSTITUTION TRAP (the recurring AX.W55 / dock-scale class): `--feedback-tone-rung`
35
+ resolves the `--glass-bg-floating` token, which BAKES `var(--glass-level)` at its
36
+ `:root` declaration (level=1). A descendant `--glass-level: 0` does NOT re-resolve the
37
+ baked rung — but that is the CORRECT register here: a feedback surface IS translucent
38
+ glass by design; the `opaque`/level-0 escape is W-SURFACE-AXIS's `[data-surface]`
39
+ concern, not a tone-register knob. The tone register composes the tint AT THE ELEMENT
40
+ off the resolved rung, so the `color-mix` re-resolves whenever `--tone`/`--feedback-
41
+ tone-strength`/the rung change (the W55 element-level tint discipline). */
42
+ @layer components {
43
+ :root {
44
+ /* The bounded mix % — the tone wash strength. 18% reads as colored GLASS
45
+ (the backdrop shows through, the silhouette is unmistakably tinted) without
46
+ tipping toward a slab; the toast-glass §A band is ≈12–22%. ONE knob retunes
47
+ all four tones. */
48
+ --feedback-tone-strength: 18%;
49
+ /* The rung the tint mixes over — the floating-chrome register (Toast /
50
+ Notification). Alert re-points it to the wash rung on its own surface. */
51
+ --feedback-tone-rung: var(--glass-bg-floating);
52
+ /* The rim weight — a tone-keyed border, a thin tinted rim (not a loud edge). */
53
+ --feedback-tone-border-strength: 40%;
54
+ }
55
+
56
+ /* ── The parametric register ──────────────────────────────────────────────────
57
+ A surface declares `--tone` (one of the four house tokens) + composes
58
+ `.feedback-tone`; the tinted-glass wash + the tone-keyed rim resolve off the ONE
59
+ recipe. The glyph carries the FULL-chroma tone (`[&>svg]` via the consumer's own
60
+ class, or the `.feedback-tone-glyph` helper below). The `default` (un-toned)
61
+ surface simply omits `.feedback-tone` — the bare glass rung paints.
62
+
63
+ `--tone` has NO `:root` default ON PURPOSE: a `.feedback-tone` surface with no
64
+ `--tone` set would mix the rung toward `initial` (transparent) — a no-op wash, the
65
+ same as the bare rung; this is the safe degenerate, not a paint bug. Every real
66
+ consumer sets `--tone` via its `.feedback-tone-<name>` register. */
67
+ .feedback-tone {
68
+ background: color-mix(
69
+ in oklab,
70
+ var(--feedback-tone-rung),
71
+ var(--tone) var(--feedback-tone-strength)
72
+ );
73
+ border-color: color-mix(
74
+ in oklab,
75
+ transparent,
76
+ var(--tone) var(--feedback-tone-border-strength)
77
+ );
78
+ }
79
+
80
+ /* The four house tone registers — each binds `--tone` to its house token. A surface
81
+ maps its variant/type onto the matching class (Toast `variant` /
82
+ Notification `type` / Alert `variant`); the `error` notification type maps to the
83
+ destructive tone (the three-maps-into-one collapse — `error` IS destructive). */
84
+ .feedback-tone-success {
85
+ --tone: var(--success);
86
+ }
87
+ .feedback-tone-warning {
88
+ --tone: var(--warning);
89
+ }
90
+ .feedback-tone-info {
91
+ --tone: var(--info);
92
+ }
93
+ .feedback-tone-destructive {
94
+ --tone: var(--destructive);
95
+ }
96
+
97
+ /* The glyph helper — the leading status glyph carries the FULL-chroma tone (the one
98
+ color event's saturated note over the tinted wash). A consumer composes it on its
99
+ icon, or reads `var(--tone)` directly in an arbitrary `[&>svg]:text-(--tone)`
100
+ utility. */
101
+ .feedback-tone-glyph {
102
+ color: var(--tone);
103
+ }
104
+ }
@@ -0,0 +1,44 @@
1
+ /* glass/deep.css — BB.W-DEEP-GLASS — the OPT-IN `.glass-deep` decoration.
2
+ *
3
+ * The deep-glass register: the maximal iOS-27 Liquid-Glass tier ABOVE the
4
+ * W-GLASS-CAL calm default (the Apple `saturate(1.8) blur(20px)` family, landed
5
+ * at the budget-clearing 16px / saturate 1.5; tokens/glass-deep.css). `.glass-deep`
6
+ * is the OPT-IN surface — a consumer adds it to a glass surface that wants the
7
+ * thick refractive liquid read (the hero glass, the dock, the CTA); the bare
8
+ * content default is UNCHANGED (the calm default is the user's call).
9
+ *
10
+ * ── The token-substitution model (the `.glass-opaque` precedent) ───────────
11
+ * `.glass-deep` is a DECORATION ON a base `.glass-*` rung, NOT a parallel solid/
12
+ * blur recipe. It mirrors `.glass-opaque` (ladder.css §opaque-escape — which only
13
+ * sets `--glass-level: 0`, a token re-point, never a competing `backdrop-filter`):
14
+ * `.glass-deep` re-points the floating-rung blur token to the deep family
15
+ * (`--glass-blur-floating: var(--glass-blur-deep)`), so the base `.glass-floating`
16
+ * rule's `backdrop-filter: var(--glass-blur-floating)` resolves to the DEEP blur —
17
+ * NO cascade fight, NO base-rule edit, the glass edge/rim/under-shadow + the W55
18
+ * tint axis + the a11y brackets all compose unchanged. The deep tier rides a base
19
+ * rung exactly as `.glass-opaque` does (the CardTier map is `deep →
20
+ * 'glass-floating glass-deep'`).
21
+ *
22
+ * Because the deep blur (glass-deep.css) COMPOSES `var(--glass-level)`, the a11y
23
+ * brackets (`prefers-reduced-transparency: reduce` / `prefers-contrast: more` set
24
+ * `--glass-level: 0` / 0.3 at :root, a11y-fallback.css) reach the deep plate for
25
+ * FREE — the deep blur collapses to blur(0) under reduced-transparency through the
26
+ * SAME level path (the opaque escape). The W55 bright-bucket darken reaches the
27
+ * deep surface by construction too: `.glass-deep` is composed WITH `.glass-floating`,
28
+ * which is already in the W55 `@container style(--glass-backdrop: light)` material
29
+ * group (ladder.css) AND self-engages the overlay-band darken — the deep tier
30
+ * inherits the legibility tint with no selector-list edit.
31
+ *
32
+ * @import-ed in glass.css AFTER ladder.css/surfaces.css (the same @layer components,
33
+ * source-order-after so the token re-point lands beside the rung it rides) and
34
+ * BEFORE the a11y @media brackets (which still win by the :root level re-point).
35
+ */
36
+ @layer components {
37
+ /* The deep decoration: re-point the floating rung's blur token to the deep
38
+ family. The base `.glass-floating` rule (`backdrop-filter:
39
+ var(--glass-blur-floating)`) then paints the deep `blur(16px) saturate(1.5)`
40
+ at `--glass-depth: 1` — the Apple-deep register, opt-in. */
41
+ .glass-deep {
42
+ --glass-blur-floating: var(--glass-blur-deep);
43
+ }
44
+ }