@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
@@ -0,0 +1,20 @@
1
+ import { type FocusScopeProps } from 'reka-ui';
2
+ declare var __VLS_8: {};
3
+ type __VLS_Slots = {} & {
4
+ default?: (props: typeof __VLS_8) => any;
5
+ };
6
+ declare const __VLS_base: import("vue").DefineComponent<FocusScopeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ mountAutoFocus: (event: Event) => any;
8
+ unmountAutoFocus: (event: Event) => any;
9
+ }, string, import("vue").PublicProps, Readonly<FocusScopeProps> & Readonly<{
10
+ onMountAutoFocus?: ((event: Event) => any) | undefined;
11
+ onUnmountAutoFocus?: ((event: Event) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
14
+ declare const _default: typeof __VLS_export;
15
+ export default _default;
16
+ type __VLS_WithSlots<T, S> = T & {
17
+ new (): {
18
+ $slots: S;
19
+ };
20
+ };
@@ -0,0 +1,2 @@
1
+ export { default as FocusScope } from './FocusScope.vue';
2
+ export type { FocusScopeProps, FocusScopeEmits } from 'reka-ui';
@@ -14,6 +14,7 @@ export * from "./data-table";
14
14
  export * from "./dialog";
15
15
  export * from "./drawer";
16
16
  export * from "./dropdown-menu";
17
+ export * from "./focus-scope";
17
18
  export * from "./hover-card";
18
19
  export * from "./input";
19
20
  export * from "./label";
@@ -32,7 +33,6 @@ export * from "./skeleton";
32
33
  export * from "./slider";
33
34
  export * from "./switch";
34
35
  export * from "./table";
35
- export * from "./tabs";
36
36
  export * from "./tags-input";
37
37
  export * from "./textarea";
38
38
  export * from "./toast";
@@ -1,8 +1,10 @@
1
1
  import { type HTMLAttributes } from 'vue';
2
2
  import { type PopoverContentProps } from 'reka-ui';
3
+ import { type Surface } from '../_shared/useSurfaceAxis';
3
4
  type __VLS_Props = PopoverContentProps & {
4
5
  class?: HTMLAttributes['class'];
5
6
  portal?: boolean;
7
+ surface?: Surface;
6
8
  };
7
9
  declare var __VLS_14: {}, __VLS_23: {};
8
10
  type __VLS_Slots = {} & {
@@ -26,6 +28,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
26
28
  onCloseAutoFocus?: ((event: Event) => any) | undefined;
27
29
  }>, {
28
30
  align: "start" | "center" | "end";
31
+ surface: Surface;
29
32
  sideOffset: number;
30
33
  portal: boolean;
31
34
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -7,8 +7,9 @@ import { type ProgressRootProps } from "reka-ui";
7
7
  * dispatcher routes here for `variant="default"`.
8
8
  *
9
9
  * Token-read parity with the `gradient` variant (AX.W24 F1): the rail/indicator
10
- * colour read `--progress-track`/`--progress-fill` (fallbacks `var(--secondary)`/
11
- * `var(--primary)`) as Tailwind arbitrary properties — `bg-[var(--token,…)]` /
10
+ * colour read `--progress-track`/`--progress-fill` (fallbacks
11
+ * `var(--progress-track-on-glass)`/`var(--primary)`) as Tailwind arbitrary
12
+ * properties — `bg-[var(--token,…)]` /
12
13
  * `[background:var(--token,…)]` — NOT the `bg-secondary`/`bg-primary` utility
13
14
  * classes. A `bg-primary` utility lives in `@layer utilities`, which ALWAYS
14
15
  * outranks the `@layer components` `.glass-progress-rail` recipe regardless of
@@ -2,9 +2,20 @@ import { type HTMLAttributes } from "vue";
2
2
  import { type ProgressRootProps } from "reka-ui";
3
3
  import { type ProgressSegment } from "./useProgressGeometry";
4
4
  /**
5
- * Sectioned progress variant — the phase-bus (AB.W3.T2). Renders N colour-coded
6
- * cells with gradient seams between siblings; the active cell carries a spring
7
- * fill driven by `activeProgress` and a living catch-light sweep.
5
+ * Sectioned progress variant — the phase-bus (AB.W3.T2; rebuilt on a SINGLE-FILL
6
+ * gradient paint model at BA.W-PROGRESS-GRADIENT). The bar reads as ONE continuous
7
+ * blended liquid filling a frosted recessed glass channel: segment colours hold
8
+ * their identity across their span and blend over short transition zones at the
9
+ * boundaries, the active front carries the single pill cap + catch-light, and
10
+ * pending phases keep their real hue as a faint ghost on the track.
11
+ *
12
+ * The paint is NOT per-cell rectangles. ONE `.progress-sectioned-flow` element
13
+ * spans the cumulative filled extent (`filledExtentPct`, derived off the same
14
+ * `useProgressGeometry` cells[]) and paints ONE `linear-gradient` whose stops are
15
+ * the segment colours (hard stop-pairs hold each hue crisp; short soft zones at
16
+ * the boundaries give the blend). No screen-seam band, no internal pill caps, no
17
+ * dead notch. The pending remainder of the recessed track carries a faint
18
+ * phase-tinted ghost gradient built from the pending cells' own colours.
8
19
  *
9
20
  * The single `modelValue` is NOT the truth here — the per-cell state map is. The
10
21
  * underlying `[role="progressbar"]` reports a numeric `aria-valuenow` derived from
@@ -18,7 +18,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
18
18
  }>, {
19
19
  position: "item-aligned" | "popper";
20
20
  align: "start" | "center" | "end";
21
- collisionPadding: number | Partial<Record<"top" | "right" | "bottom" | "left", number>>;
21
+ collisionPadding: number | Partial<Record<"bottom" | "left" | "right" | "top", number>>;
22
22
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
23
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
24
24
  declare const _default: typeof __VLS_export;
@@ -2,17 +2,40 @@ import { type HTMLAttributes } from 'vue';
2
2
  import { type SelectTriggerProps } from 'reka-ui';
3
3
  type __VLS_Props = SelectTriggerProps & {
4
4
  class?: HTMLAttributes['class'];
5
- /** 'default' = glass bg; 'ghost' = transparent, no border/shadow */
5
+ /** 'default' = the shared control REST surface (BA.W-SURFACE-AXIS scope 7 —
6
+ * the `.control-surface` register every form control reads at rest, off the
7
+ * prior `glass-wash` gray fork); 'ghost' = transparent, no border/shadow */
6
8
  variant?: 'default' | 'ghost';
7
- /** Height register: 'default' = h-10 (byte-identical), 'sm' = h-9 (compact controls) */
8
- size?: 'sm' | 'default';
9
+ /**
10
+ * The trigger register — a TWO-RANGE axis (BA.W-MENU-GLASS / BA-VJS-4 WO-3):
11
+ * • HEIGHT tiers (`sm` | `default`) ride the `--control-h-*` comfort cohort
12
+ * (h-9 / h-10), byte-identical to today.
13
+ * • FONT-RUNG tiers (`display` | `audacious`) WRITE the shared picker-family
14
+ * `--dropdown-text` token on the Select SCOPE (inline style), so the
15
+ * trigger, the SelectValue, AND the item rows re-resolve at ONE scale off
16
+ * the ONE documented lever (`offsets-sizing.css` — the items read
17
+ * `--dropdown-text` via `menuItemVariants`' `text-dropdown` base). This is
18
+ * the fix for the value.js trigger-only `text-display` desync (a 1.59×
19
+ * trigger/items break): a consumer scaling the picker font reaches for the
20
+ * PROP, which sets the FAMILY token, NOT a trigger-local `text-*` class that
21
+ * leaves the items behind. The font rung carries a height too so the box
22
+ * grows with the type. The height tiers stay; the font rung is ADDITIVE
23
+ * (a consumer who never sets it keeps today's resolved sizes).
24
+ *
25
+ * NOTE on the portal: `<SelectContent>` PORTALS to body, so the inline
26
+ * `--dropdown-text` on the trigger reaches the trigger/value/chevron directly;
27
+ * the items re-resolve when the consumer also threads the rung on the shared
28
+ * Select scope (the documented family lever). For a single self-scaling
29
+ * trigger the rung scales the visible trigger silhouette.
30
+ */
31
+ size?: 'sm' | 'default' | 'display' | 'audacious';
9
32
  };
10
33
  declare var __VLS_8: {};
11
34
  type __VLS_Slots = {} & {
12
35
  default?: (props: typeof __VLS_8) => any;
13
36
  };
14
37
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
- size: "sm" | "default";
38
+ size: "sm" | "default" | "display" | "audacious";
16
39
  variant: "default" | "ghost";
17
40
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
41
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -2,9 +2,15 @@ import { type HTMLAttributes } from 'vue';
2
2
  import { type DialogContentProps } from 'reka-ui';
3
3
  import { type SheetVariants } from '.';
4
4
  import { type SpringPreset } from '../../../composables/motion/useSpringMount';
5
+ import { type Surface } from '../_shared/useSurfaceAxis';
5
6
  interface SheetContentProps extends DialogContentProps {
6
7
  class?: HTMLAttributes['class'];
7
8
  side?: SheetVariants['side'];
9
+ /** Surface decoration register (BA.W-SURFACE-AXIS) — the SHARED
10
+ * {glass·veil·opaque} axis. `glass` (default) renders the floating glass tier
11
+ * sheetVariants already bakes; `veil` overlays the borderless text-legibility
12
+ * plate; `opaque` sets `--glass-level:0` (the solid-card escape). */
13
+ surface?: Surface;
8
14
  /**
9
15
  * Opt into iOS spring-physics entrance via `useSpringMount` (W13). When
10
16
  * truthy, the sheet slides from off-edge via a `useSpring`-driven
@@ -8,6 +8,6 @@ export { default as SheetTitle } from './SheetTitle.vue';
8
8
  export { default as SheetDescription } from './SheetDescription.vue';
9
9
  export { default as SheetFooter } from './SheetFooter.vue';
10
10
  export declare const sheetVariants: (props?: ({
11
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
11
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
12
12
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
13
  export type SheetVariants = VariantProps<typeof sheetVariants>;
@@ -21,12 +21,15 @@ import type { HTMLAttributes } from 'vue';
21
21
  * (opacity-min) — the surface still reads but no longer cycles.
22
22
  */
23
23
  type SkeletonVariant = 'pulse' | 'shimmer' | 'breath';
24
+ type SkeletonSurface = 'glass' | 'opaque';
24
25
  type __VLS_Props = {
25
26
  variant?: SkeletonVariant;
27
+ surface?: SkeletonSurface;
26
28
  class?: HTMLAttributes['class'];
27
29
  };
28
30
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
29
31
  variant: SkeletonVariant;
32
+ surface: SkeletonSurface;
30
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
34
  declare const _default: typeof __VLS_export;
32
35
  export default _default;
@@ -8,13 +8,13 @@ type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_8) => any;
9
9
  };
10
10
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- "update:modelValue": (payload: import("reka-ui").AcceptableInputValue[]) => any;
12
11
  invalid: (payload: import("reka-ui").AcceptableInputValue) => any;
12
+ "update:modelValue": (payload: import("reka-ui").AcceptableInputValue[]) => any;
13
13
  addTag: (payload: import("reka-ui").AcceptableInputValue) => any;
14
14
  removeTag: (payload: import("reka-ui").AcceptableInputValue) => any;
15
15
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
- "onUpdate:modelValue"?: ((payload: import("reka-ui").AcceptableInputValue[]) => any) | undefined;
17
16
  onInvalid?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
17
+ "onUpdate:modelValue"?: ((payload: import("reka-ui").AcceptableInputValue[]) => any) | undefined;
18
18
  onAddTag?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
19
19
  onRemoveTag?: ((payload: import("reka-ui").AcceptableInputValue) => any) | undefined;
20
20
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,18 +1,20 @@
1
1
  import { type HTMLAttributes } from 'vue';
2
2
  import { type ToastRootProps } from 'reka-ui';
3
+ import { type Surface } from '../_shared/useSurfaceAxis';
3
4
  import type { ToastVariant } from './use-toast';
4
5
  interface ToastProps extends ToastRootProps {
5
6
  class?: HTMLAttributes['class'];
6
7
  variant?: ToastVariant;
8
+ surface?: Surface;
7
9
  }
8
10
  declare var __VLS_8: {};
9
11
  type __VLS_Slots = {} & {
10
12
  default?: (props: typeof __VLS_8) => any;
11
13
  };
12
14
  declare const __VLS_base: import("vue").DefineComponent<ToastProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ pause: () => any;
13
16
  "update:open": (value: boolean) => any;
14
17
  escapeKeyDown: (event: KeyboardEvent) => any;
15
- pause: () => any;
16
18
  resume: () => any;
17
19
  swipeStart: (event: {
18
20
  currentTarget: EventTarget & HTMLElement;
@@ -51,9 +53,9 @@ declare const __VLS_base: import("vue").DefineComponent<ToastProps, {}, {}, {},
51
53
  };
52
54
  }>, "currentTarget">) => any;
53
55
  }, string, import("vue").PublicProps, Readonly<ToastProps> & Readonly<{
56
+ onPause?: (() => any) | undefined;
54
57
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
55
58
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
56
- onPause?: (() => any) | undefined;
57
59
  onResume?: (() => any) | undefined;
58
60
  onSwipeStart?: ((event: {
59
61
  currentTarget: EventTarget & HTMLElement;
@@ -93,6 +95,7 @@ declare const __VLS_base: import("vue").DefineComponent<ToastProps, {}, {}, {},
93
95
  }>, "currentTarget">) => any) | undefined;
94
96
  }>, {
95
97
  variant: ToastVariant;
98
+ surface: Surface;
96
99
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
97
100
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
98
101
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,5 @@
1
1
  import type { Component, VNode } from 'vue';
2
+ import type { Surface } from '../_shared/useSurfaceAxis';
2
3
  export type ToastVariant = 'default' | 'destructive' | 'success' | 'warning' | 'info';
3
4
  export interface Toast {
4
5
  id: string;
@@ -6,6 +7,12 @@ export interface Toast {
6
7
  description?: string;
7
8
  action?: Component | VNode;
8
9
  variant?: ToastVariant;
10
+ /**
11
+ * BB.W-SURFACE-AXIS-COMPLETE — the shared {glass·veil·opaque} surface-decoration
12
+ * axis on a queued toast (default `glass`). Forwarded through `Toaster.vue`'s
13
+ * per-toast `v-bind` exactly like `variant`; orthogonal to the tone arm.
14
+ */
15
+ surface?: Surface;
9
16
  /**
10
17
  * Auto-dismiss delay in ms, forwarded to reka-ui's `ToastRoot`. Omit to
11
18
  * inherit the `ToastProvider` default; `Number.POSITIVE_INFINITY` keeps the
@@ -152,6 +159,13 @@ declare function useToast(): {
152
159
  __name?: string | undefined;
153
160
  } | undefined;
154
161
  variant?: ToastVariant
162
+ /**
163
+ * BB.W-SURFACE-AXIS-COMPLETE — the shared {glass·veil·opaque} surface-decoration
164
+ * axis on a queued toast (default `glass`). Forwarded through `Toaster.vue`'s
165
+ * per-toast `v-bind` exactly like `variant`; orthogonal to the tone arm.
166
+ */
167
+ | undefined;
168
+ surface?: Surface
155
169
  /**
156
170
  * Auto-dismiss delay in ms, forwarded to reka-ui's `ToastRoot`. Omit to
157
171
  * inherit the `ToastProvider` default; `Number.POSITIVE_INFINITY` keeps the
@@ -16,8 +16,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
16
16
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
17
17
  }>, {
18
18
  size: "default" | "sm" | "lg" | null;
19
- variant: "default" | "outline" | "card" | null;
20
19
  disabled: boolean;
20
+ variant: "default" | "outline" | "card" | null;
21
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
22
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
23
  declare const _default: typeof __VLS_export;
@@ -1,5 +1,5 @@
1
1
  export { useGlobalDark } from "./useGlobalDark";
2
- export type { UseGlobalDarkOptions } from "./useGlobalDark";
2
+ export type { UseGlobalDarkOptions, UseGlobalDarkReturn, DarkFlipSettledCallback, } from "./useGlobalDark";
3
3
  export { installDarkModeSync } from "./installDarkModeSync";
4
4
  export { darkModeSyncScript, DARK_MODE_STORAGE_KEY } from "./darkModeSyncScript";
5
5
  export type { DarkModeSyncScriptOptions } from "./darkModeSyncScript";
@@ -1,9 +1,15 @@
1
1
  import type { BasicColorSchema } from "@vueuse/core";
2
2
  import { type Ref, type WritableComputedRef } from "vue";
3
+ /**
4
+ * A post-flip settle callback. Receives the dark-mode flag's NEW value. Runs in
5
+ * the single coalesced post-flip task (see `onFlipSettled`).
6
+ */
7
+ export type DarkFlipSettledCallback = (isDark: boolean) => void;
3
8
  /**
4
9
  * The `useGlobalDark` return shape (AW.W15 — named `Use<Name>Return`). The
5
10
  * single shared dark-mode instance: the reactive `isDark` flag, a `toggleDark`
6
- * that optionally suppresses transitions, and the transition-suppression switch.
11
+ * that optionally suppresses transitions, the transition-suppression switch, and
12
+ * the post-flip settle hook (BA.W-ATLAS-RECONCILE A-1 — d6 9467bd16 adopt).
7
13
  */
8
14
  export interface UseGlobalDarkReturn {
9
15
  /** Reactive dark-mode flag (vueuse `useDark` ref — writable). */
@@ -14,6 +20,22 @@ export interface UseGlobalDarkReturn {
14
20
  disableTransitions: Ref<boolean>;
15
21
  /** Configure transition suppression during the dark-mode toggle. */
16
22
  setDisableTransitions: (value: boolean) => void;
23
+ /**
24
+ * BA.W-ATLAS-RECONCILE A-1 — the post-flip SETTLE hook. Register a callback
25
+ * that runs in ONE coalesced task AFTER each dark↔light flip's instant chrome
26
+ * paint, so consumers BATCH N expensive re-theme operations (e.g. the atlas's
27
+ * palette memo + N-chart `merge-setOption` palette tween + aurora
28
+ * re-derivation) into a single beat instead of N watchers firing in N
29
+ * sequential storms on the critical frame. The class toggle is synchronous
30
+ * (chrome flips instantly); the batch drains one frame later via a single
31
+ * `requestAnimationFrame` (an SSR/no-rAF env falls back to a macrotask).
32
+ * EVERY registered callback shares that ONE task — no per-subscriber
33
+ * scheduling. No View Transition is involved anywhere in this path (PRM-safe
34
+ * by construction — a flip is a CSS-class swap, not a DOM mutation to
35
+ * snapshot). Returns an unsubscribe function. Idempotent re-registration of
36
+ * the same callback is a no-op.
37
+ */
38
+ onFlipSettled: (callback: DarkFlipSettledCallback) => () => void;
17
39
  }
18
40
  export interface UseGlobalDarkOptions {
19
41
  /**
@@ -1,6 +1,12 @@
1
1
  import { type MaybeRefOrGetter } from "vue";
2
- /** The suspend reasons that gate the loop. Twins the WebGL substrate's union. */
3
- export type Canvas2DSuspendReason = "tab-hidden" | "off-screen" | "manual";
2
+ /**
3
+ * The suspend reasons that gate the loop. Twins the WebGL substrate's union
4
+ * (`createCanvasLifecycle.CanvasSuspendReason`): the AX.W16 F6 `"off-screen-io"`
5
+ * key is the IntersectionObserver fallback's OWN reason, distinct from the
6
+ * content-visibility path's `"off-screen"`, so the two offscreen detectors never
7
+ * cross-lift each other's suspend.
8
+ */
9
+ export type Canvas2DSuspendReason = "tab-hidden" | "off-screen" | "off-screen-io" | "manual";
4
10
  /** The per-frame hooks a consumer's `setup(ctx)` returns. */
5
11
  export interface Canvas2DFrame {
6
12
  /**
@@ -47,10 +53,11 @@ export interface Canvas2DHandle {
47
53
  }
48
54
  /**
49
55
  * The Canvas2D lifecycle substrate — the park/freeze/dispose twin of
50
- * `useWebGLCanvas`. Returns an imperative {@link Canvas2DHandle} (the same
51
- * handle idiom the WebGL twin uses — an imperative canvas seam is NOT a
52
- * ref-bundle). `useCanvasLifecycle` is the alias-of-record for the
53
- * lifecycle-only framing; both name the same factory.
56
+ * `useWebGLCanvas`, a thin Canvas2D backend over the shared
57
+ * `createCanvasLifecycle` core. Returns an imperative {@link Canvas2DHandle} (the
58
+ * same handle idiom the WebGL twin uses — an imperative canvas seam is NOT a
59
+ * ref-bundle). `useCanvasLifecycle` is the alias-of-record for the lifecycle-only
60
+ * framing; both name the same factory.
54
61
  */
55
62
  export declare function useCanvas2D(options: Canvas2DOptions): Canvas2DHandle;
56
63
  /**
@@ -1,4 +1,7 @@
1
- export { useSpecularTracking } from "./useSpecularTracking";
2
- export type { UseSpecularTracking } from "./useSpecularTracking";
1
+ export { useSpecularTracking, createSpecularWriter, } from "./useSpecularTracking";
2
+ export type { UseSpecularTracking, SpecularWriter, } from "./useSpecularTracking";
3
+ export { vSpecular } from "./vSpecular";
4
+ export { useSpecularPointer } from "./useSpecularPointer";
5
+ export type { UseSpecularPointer } from "./useSpecularPointer";
3
6
  export { useCanvas2D, useCanvasLifecycle, resolveCanvasColor } from "./canvas2d";
4
7
  export type { Canvas2DFrame, Canvas2DHandle, Canvas2DOptions, Canvas2DSuspendReason, } from "./canvas2d";
@@ -0,0 +1,33 @@
1
+ import { ref, type CSSProperties } from "vue";
2
+ /**
3
+ * `useSpecularPointer` — the EVOLUTION of `useSpecularTracking` (BB.W-LENSING). It
4
+ * writes the catch-light POSITION (`--mouse-x`/`--mouse-y`, as today) PLUS the
5
+ * `--specular-angle` channel — the pointer's angle-from-center the EDGE-glint conic
6
+ * sweep reads (the `.glass-material::before` recipe, material.css). The angle feed is
7
+ * what turns the centered disc into a motion-reactive RIM glint (the glass-THICKNESS
8
+ * read); the leaf is the ONE shared specular source the hover/button waves consume.
9
+ *
10
+ * SINGLE-SOURCE (the W-LIQUIDHOVER reconcile, EXTENDED here — NOT a fork). There is
11
+ * exactly ONE position-write core: `createSpecularWriter` (useSpecularTracking.ts) —
12
+ * the rAF-coalesced, cached-PRM, scope-dispose seam. This composable WRAPS that core;
13
+ * the angle is DERIVED in the sink from the SAME `(x, y)` percentage the core already
14
+ * computes (`angle = atan2(y - 50, x - 50)`), so there is NO duplicate
15
+ * `getBoundingClientRect` / `--mouse-x` write — the core owns the layout read + the
16
+ * coordinate math, this leaf only adds the angle derivation onto the existing sink.
17
+ * `useSpecularTracking` (the position-only delivery) STAYS for the bare-position call
18
+ * sites; `useSpecularPointer` is the angle-adding delivery for an edge-glint consumer.
19
+ * Both wrap the ONE core — never two copies of the rAF/PRM/coordinate logic.
20
+ *
21
+ * PRM-aware by construction (the wrapped core skips the write under
22
+ * `prefers-reduced-motion: reduce` — the CSS bracket pins `--specular-x/y` to the
23
+ * centred 50% and `--specular-angle` to its `0deg` static rest). The composable
24
+ * disposes the core (cancel the pending rAF + drop the cached PRM listener) on scope
25
+ * teardown.
26
+ */
27
+ export interface UseSpecularPointer {
28
+ /** Bind to the host element's `:style`. Carries `--mouse-x/--mouse-y` + `--specular-angle`. */
29
+ specularStyle: ReturnType<typeof ref<CSSProperties>>;
30
+ /** Bind to the host's `@pointermove`. Schedules the rAF-coalesced position+angle write (PRM-gated). */
31
+ onPointerMove: (event: PointerEvent) => void;
32
+ }
33
+ export declare function useSpecularPointer(): UseSpecularPointer;
@@ -32,6 +32,13 @@ import { ref, type CSSProperties } from "vue";
32
32
  * W54 maximal-glass every blurred-surface repaint is amortized to the frame, not the
33
33
  * event). The composable cancels the pending rAF + removes the matchMedia listener on
34
34
  * scope dispose (cleanup discipline).
35
+ *
36
+ * BB.W-LIQUIDHOVER — the rAF-coalesce + cached-PRM + cleanup LOGIC is extracted to
37
+ * `createSpecularWriter()`, the SINGLE position-write core. The composable below wraps
38
+ * it for the Vue `:style`-ref case (Card's prop-gated `specular` opt-in); the
39
+ * tier-root auto-arm (`vSpecular`) wraps the SAME core to write directly on the
40
+ * directive host's `el.style` (the zero-wiring delivery). ONE position-write source,
41
+ * TWO deliveries — never a re-pasted handler.
35
42
  */
36
43
  export interface UseSpecularTracking {
37
44
  /** Bind to the host element's `:style`. Carries the `--mouse-x/--mouse-y` write. */
@@ -39,4 +46,17 @@ export interface UseSpecularTracking {
39
46
  /** Bind to the host's `@pointermove`. Schedules the rAF-coalesced position write (PRM-gated). */
40
47
  onPointerMove: (event: PointerEvent) => void;
41
48
  }
49
+ /**
50
+ * The SINGLE position-write core (BB.W-LIQUIDHOVER) — the rAF-coalesced,
51
+ * PRM-aware `--mouse-x/y` write seam, sink-agnostic. `sink(x, y)` receives the
52
+ * percentage position once per animation frame; the composable sinks into its
53
+ * `specularStyle` ref, the `vSpecular` directive sinks into `el.style.setProperty`.
54
+ * Returns the event handler + a `dispose` (cancel the pending rAF + drop the cached
55
+ * PRM listener) so BOTH deliveries share ONE cleanup discipline.
56
+ */
57
+ export interface SpecularWriter {
58
+ onPointerMove: (event: PointerEvent) => void;
59
+ dispose: () => void;
60
+ }
61
+ export declare function createSpecularWriter(sink: (xPct: number, yPct: number) => void): SpecularWriter;
42
62
  export declare function useSpecularTracking(): UseSpecularTracking;
@@ -0,0 +1,2 @@
1
+ import type { ObjectDirective } from "vue";
2
+ export declare const vSpecular: ObjectDirective<HTMLElement, boolean | undefined>;
@@ -0,0 +1 @@
1
+ export declare const CURL_FBM_GLSL = "\nconst float CURL_EPS = 0.012;\n\n// Scalar fbm potential psi \u2014 the host's noise basis, wrapped so the curl operator is\n// basis-agnostic. A host carrying its own fbm defines this as: return fbm(p);\nfloat potentialFBM(vec2 p);\n\n// \u2207\u00D7\u03C8 in 2D \u2014 the divergence-free flow direction. Central finite differences of the\n// scalar potential give the partials; the cross-pairing (\u2202y, \u2212\u2202x) is the 2D curl.\nvec2 curlFBM(vec2 p) {\n float dx = potentialFBM(p + vec2(CURL_EPS, 0.0)) - potentialFBM(p - vec2(CURL_EPS, 0.0));\n float dy = potentialFBM(p + vec2(0.0, CURL_EPS)) - potentialFBM(p - vec2(0.0, CURL_EPS));\n // \u03C8-gradient is (dx, dy)/(2\u00B7eps); the curl rotates it 90\u00B0: (\u2202\u03C8/\u2202y, \u2212\u2202\u03C8/\u2202x).\n vec2 g = vec2(dx, dy) / (2.0 * CURL_EPS);\n return vec2(g.y, -g.x);\n}\n";
@@ -1,3 +1,19 @@
1
+ /**
2
+ * The ONE `getContext("webgl2")` capability probe (BB.W-CI-GREEN — the
3
+ * single-bootstrap rule). A throwaway WebGL2 context is created here, in the
4
+ * substrate (the sole webgl2-creating module per `proof:webgl-substrate-single`),
5
+ * so a consumer feature-detecting WebGL2 / reading the unmasked renderer string
6
+ * NEVER creates a second context of its own. The probe canvas is detached, its
7
+ * context released via `WEBGL_lose_context` under the per-page context cap; the
8
+ * read is one-shot (a mount-time device-tier decision, not a reactive one).
9
+ *
10
+ * Returns the lower-cased `UNMASKED_RENDERER_WEBGL` string (e.g.
11
+ * `"google swiftshader"`), or `null` when WebGL2 / the debug-renderer extension
12
+ * is unavailable or the probe throws — the caller treats `null` as "cannot prove"
13
+ * (the conservative-but-lossy fall-back). SSR-safe (returns `null` with no
14
+ * `document`).
15
+ */
16
+ export declare function probeWebGL2Renderer(): string | null;
1
17
  export type WebGLSuspendReason = "tab-hidden" | "off-screen" | "off-screen-io" | "manual";
2
18
  /** The per-frame hooks a consumer's `setup(gl)` returns. */
3
19
  export interface WebGLCanvasFrame {
@@ -0,0 +1,2 @@
1
+ export { createWebGPUCanvas, supportsWebGPU, type WebGPUCanvasFrame, type WebGPUCanvasHandle, type WebGPUCanvasOptions, type WebGPUSuspendReason, } from "./useWebGPUCanvas";
2
+ export { createGpuSubstrate, type GpuBackend, type GpuSubstrateHandle, type GpuSubstrateOptions, } from "./useGpuSubstrate";
@@ -0,0 +1,54 @@
1
+ import { type WebGLCanvasFrame, type WebGLCanvasOptions } from "../webgl/useWebGLCanvas";
2
+ import { supportsWebGPU, type WebGPUCanvasFrame, type WebGPUCanvasOptions } from "./useWebGPUCanvas";
3
+ export { supportsWebGPU };
4
+ /** Which backend the picker resolved. */
5
+ export type GpuBackend = "webgpu" | "webgl2";
6
+ export interface GpuSubstrateOptions {
7
+ /** `"capture"` → renderAt-only (no auto-loop). Default `"live"`. */
8
+ mode?: "live" | "capture";
9
+ /** Honor `prefers-reduced-motion: reduce` (one static frame then park). Default `true`. */
10
+ respectReducedMotion?: boolean;
11
+ /**
12
+ * The WGSL pipeline builder (the WebGPU primary path). Omitting it forces the
13
+ * WebGL2 fallback even where WebGPU is supported (a viz with no WGSL path yet).
14
+ */
15
+ setupWGPU?: WebGPUCanvasOptions["setup"];
16
+ /** The GLSL program builder (the WebGL2 fallback path — always required). */
17
+ setupGL: WebGLCanvasOptions["setup"];
18
+ /** WebGPU `context.configure` alpha mode (default `"premultiplied"`). */
19
+ alphaMode?: WebGPUCanvasOptions["alphaMode"];
20
+ /** WebGPU adapter/device request options. */
21
+ adapterOptions?: WebGPUCanvasOptions["adapterOptions"];
22
+ deviceDescriptor?: WebGPUCanvasOptions["deviceDescriptor"];
23
+ /** WebGL2 `getContext("webgl2", …)` attributes. */
24
+ contextAttrs?: WebGLCanvasOptions["contextAttrs"];
25
+ /** Surface a device-init / validation failure (the WebGPU path). */
26
+ onInitError?: WebGPUCanvasOptions["onInitError"];
27
+ }
28
+ /**
29
+ * The uniform substrate handle. A viz consumer wires its lifecycle (offscreen pause,
30
+ * pause/resume, pointer-`wake`, capture-`renderAt`) against THIS — identical across the
31
+ * WebGPU and WebGL2 backends. `armAsync` is the start seam (the WebGPU path awaits the
32
+ * device; the WebGL2 path resolves immediately); `arm` is the synchronous twin.
33
+ */
34
+ export interface GpuSubstrateHandle {
35
+ /** The resolved backend (`"webgpu"` where supported + a WGSL path is provided, else `"webgl2"`). */
36
+ readonly backend: GpuBackend;
37
+ /** Acquire the device/context + `setup` + arm the loop. Resolves once armed. */
38
+ armAsync: () => Promise<void>;
39
+ /** Synchronous arm (the WebGL2 path arms immediately; the WebGPU path is a no-op until the device resolves). */
40
+ arm: () => void;
41
+ suspend: (reason?: "tab-hidden" | "off-screen" | "off-screen-io" | "manual") => void;
42
+ resume: (reason?: "tab-hidden" | "off-screen" | "off-screen-io" | "manual") => void;
43
+ wake: () => void;
44
+ renderAt: (timeSec: number) => void;
45
+ dispose: () => void;
46
+ readonly reducedMotion: boolean;
47
+ }
48
+ /**
49
+ * Pick the backend + return the uniform handle. WebGPU-first (`supportsWebGPU()` AND a
50
+ * `setupWGPU` callback is provided); otherwise the WebGL2 fallback. The decision is
51
+ * made ONCE at construction (a mount-time device-tier choice, not a reactive one).
52
+ */
53
+ export declare function createGpuSubstrate(canvas: HTMLCanvasElement, options: GpuSubstrateOptions): GpuSubstrateHandle;
54
+ export type { WebGPUCanvasFrame, WebGLCanvasFrame };