@mkbabb/glass-ui 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-8whJrLWt.js +268 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
  4. package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
  5. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
  9. package/dist/DialogFooter-9phqcRIS.js +80 -0
  10. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  11. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
  12. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  13. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
  14. package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
  15. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
  16. package/dist/Input-Cg9DF62r.js +57 -0
  17. package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
  18. package/dist/Notification-CphK7AAm.js +43 -0
  19. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  20. package/dist/PagerDots-Cjx96la-.js +98 -0
  21. package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  22. package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
  23. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
  24. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
  25. package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
  26. package/dist/Separator-DQcwC2TR.js +44 -0
  27. package/dist/Switch-B8RscmRu.js +49 -0
  28. package/dist/Toaster-D9qIHjBI.js +274 -0
  29. package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
  30. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +21 -33
  33. package/dist/api/types-extra.d.ts +37 -0
  34. package/dist/api.js +1 -1
  35. package/dist/aurora.js +1231 -260
  36. package/dist/badge.js +1 -1
  37. package/dist/border-progress.d.ts +1 -0
  38. package/dist/border-progress.js +98 -0
  39. package/dist/button-5dY1Dvhd.js +125 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +2 -2
  43. package/dist/carousel.js +93 -110
  44. package/dist/collapsible.js +1 -1
  45. package/dist/color-Cs0-oxYL.js +116 -0
  46. package/dist/color.js +2 -2
  47. package/dist/command.js +1 -1
  48. package/dist/compile-nZ1xVYTp.js +19 -0
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  53. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  55. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  56. package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
  57. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  58. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  59. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
  60. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  61. package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
  62. package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
  63. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  65. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  66. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  67. package/dist/components/custom/aurora/index.d.ts +2 -1
  68. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  69. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  70. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
  71. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  72. package/dist/components/custom/border-progress/index.d.ts +4 -0
  73. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  74. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  75. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  76. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  77. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  78. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
  79. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
  80. package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
  81. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
  82. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  83. package/dist/components/custom/concentric/constants.d.ts +67 -0
  84. package/dist/components/custom/concentric/index.d.ts +5 -0
  85. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  86. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  87. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  88. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  89. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  90. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  91. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  92. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  93. package/dist/components/custom/constellation/constants.d.ts +33 -0
  94. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  95. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  96. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  97. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  98. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  99. package/dist/components/custom/constellation/index.d.ts +5 -5
  100. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  101. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  102. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  103. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  104. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  105. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  106. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  107. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  108. package/dist/components/custom/deck/constants.d.ts +14 -0
  109. package/dist/components/custom/deck/index.d.ts +8 -0
  110. package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
  111. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  112. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  113. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  114. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
  115. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  116. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  117. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  118. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  119. package/dist/components/custom/dock/constants.d.ts +18 -14
  120. package/dist/components/custom/dock/index.d.ts +5 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
  123. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
  124. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
  125. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
  126. package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
  127. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  128. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  129. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
  130. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  131. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  132. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  133. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  134. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  135. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  136. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  137. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  138. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  139. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  140. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  141. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  142. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
  143. package/dist/components/custom/easing/constants.d.ts +28 -0
  144. package/dist/components/custom/easing/index.d.ts +3 -0
  145. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  146. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
  147. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  148. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  149. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  150. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
  151. package/dist/components/custom/fourier-field/constants.d.ts +64 -0
  152. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  153. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  156. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
  158. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  159. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  160. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  161. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  163. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  165. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  167. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  168. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  172. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  173. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  174. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  176. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  177. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  178. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  179. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  180. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  181. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  182. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  183. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  184. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  185. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  186. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  187. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  188. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  189. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  190. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  191. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  192. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  193. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  194. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  195. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  196. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  197. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  198. package/dist/components/custom/search/index.d.ts +2 -0
  199. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  200. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  201. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  202. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  203. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  204. package/dist/components/custom/spa-view/index.d.ts +2 -0
  205. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  206. package/dist/components/custom/split-chars/index.d.ts +1 -0
  207. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
  208. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  209. package/dist/components/custom/tabs/constants.d.ts +20 -2
  210. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
  211. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  212. package/dist/components/ui/_shared/index.d.ts +2 -0
  213. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  214. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  215. package/dist/components/ui/badge/index.d.ts +1 -1
  216. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  217. package/dist/components/ui/button/index.d.ts +2 -2
  218. package/dist/components/ui/card/Card.vue.d.ts +79 -4
  219. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  220. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  221. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  222. package/dist/components/ui/card/index.d.ts +3 -1
  223. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  224. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  225. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  226. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  227. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  228. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  229. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  230. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  231. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  232. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  233. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  234. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  235. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  236. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  237. package/dist/components/ui/drawer/constants.d.ts +45 -0
  238. package/dist/components/ui/drawer/index.d.ts +23 -15
  239. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  240. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  241. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  242. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  243. package/dist/components/ui/index.d.ts +1 -0
  244. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  245. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  246. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  247. package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
  248. package/dist/components/ui/sheet/index.d.ts +1 -1
  249. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  250. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  251. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  252. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  253. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  254. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  255. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  256. package/dist/composables/color/index.d.ts +2 -0
  257. package/dist/composables/color/useAccentTone.d.ts +34 -0
  258. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  259. package/dist/composables/glass/index.d.ts +5 -2
  260. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  261. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  262. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  263. package/dist/composables/glass/vSpecular.d.ts +2 -0
  264. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  265. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  266. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  267. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  268. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  269. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
  270. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
  271. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  272. package/dist/composables/motion/core/index.d.ts +4 -0
  273. package/dist/composables/motion/index.d.ts +4 -0
  274. package/dist/composables/motion/scrollReader.d.ts +25 -0
  275. package/dist/composables/motion/springPresets.d.ts +20 -1
  276. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  277. package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
  278. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  279. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  280. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  281. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  282. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  283. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  284. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  285. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  286. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  287. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  288. package/dist/composables/sidebar/index.d.ts +4 -1
  289. package/dist/composables/sidebar/types.d.ts +68 -3
  290. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  291. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  292. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  293. package/dist/composables/virtual/index.d.ts +4 -0
  294. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  295. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  296. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  297. package/dist/concentric.d.ts +1 -0
  298. package/dist/concentric.js +836 -0
  299. package/dist/configurator.js +3 -2
  300. package/dist/confirm-dialog.js +62 -49
  301. package/dist/constellation.js +635 -235
  302. package/dist/context-menu.js +3 -3
  303. package/dist/controls.js +2 -2
  304. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  305. package/dist/dark.js +1 -1
  306. package/dist/data-table.js +1 -1
  307. package/dist/deck.d.ts +1 -0
  308. package/dist/deck.js +105 -0
  309. package/dist/dialog.js +4 -3
  310. package/dist/dock.js +819 -568
  311. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  312. package/dist/dom.js +5 -5
  313. package/dist/dot-flow-field.d.ts +1 -0
  314. package/dist/dot-flow-field.js +894 -0
  315. package/dist/dot-matrix.d.ts +1 -0
  316. package/dist/dot-matrix.js +630 -0
  317. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  318. package/dist/drawer.d.ts +1 -0
  319. package/dist/drawer.js +380 -0
  320. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
  321. package/dist/dropdown-menu.js +1 -1
  322. package/dist/easing.d.ts +1 -0
  323. package/dist/easing.js +475 -0
  324. package/dist/expandable-container.js +46 -21
  325. package/dist/fading-scroll.js +1 -1
  326. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  327. package/dist/focus-scope.d.ts +1 -0
  328. package/dist/focus-scope.js +23 -0
  329. package/dist/forms.js +65 -63
  330. package/dist/fourier-field.js +831 -172
  331. package/dist/fourier-math.js +1 -1
  332. package/dist/glass-panel.js +2 -2
  333. package/dist/glass-ui.css +1 -1
  334. package/dist/glass-ui.js +187 -338
  335. package/dist/goo-blob.js +241 -692
  336. package/dist/goo-dot-matrix.d.ts +1 -0
  337. package/dist/goo-dot-matrix.js +591 -0
  338. package/dist/handmark.js +2 -2
  339. package/dist/header-ribbon.js +1 -1
  340. package/dist/hover-card.js +1 -1
  341. package/dist/hover-popover.js +1 -1
  342. package/dist/icon-chip.js +1 -1
  343. package/dist/icon-tooltip.js +1 -1
  344. package/dist/index.d.ts +3 -1
  345. package/dist/instrument-chassis.js +1 -1
  346. package/dist/keyboard.js +1 -1
  347. package/dist/label.js +1 -1
  348. package/dist/labeled-field.js +70 -60
  349. package/dist/metric-badge.js +1 -1
  350. package/dist/metric-cell.js +1 -1
  351. package/dist/metric-stack.js +14 -9
  352. package/dist/motion-core.js +58 -36
  353. package/dist/motion-curves.js +11 -1
  354. package/dist/motion.js +90 -53
  355. package/dist/notification.js +1 -1
  356. package/dist/number-field.js +1 -1
  357. package/dist/pager-dots.js +2 -91
  358. package/dist/paper-backdrop.js +1 -1
  359. package/dist/paper-grid.d.ts +1 -0
  360. package/dist/paper-grid.js +788 -0
  361. package/dist/popover.js +1 -1
  362. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  363. package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
  364. package/dist/progress.js +1 -1
  365. package/dist/pulse.js +2 -2
  366. package/dist/reactive.js +1 -1
  367. package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
  368. package/dist/scrollReader-DI1NWxUw.js +42 -0
  369. package/dist/scrolling-text.js +1 -1
  370. package/dist/search.js +162 -308
  371. package/dist/select.js +3 -3
  372. package/dist/selectable-chip.d.ts +1 -0
  373. package/dist/selectable-chip.js +65 -0
  374. package/dist/separator.js +1 -1
  375. package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
  376. package/dist/sheet.js +1 -1
  377. package/dist/sidebar.js +216 -114
  378. package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
  379. package/dist/slider.js +1 -1
  380. package/dist/sortable-list.js +2 -2
  381. package/dist/spa-view.d.ts +1 -0
  382. package/dist/spa-view.js +46 -0
  383. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  384. package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
  385. package/dist/styles/animations.css +46 -12
  386. package/dist/styles/border-progress.css +109 -0
  387. package/dist/styles/cards.css +145 -0
  388. package/dist/styles/completion-seal.css +131 -0
  389. package/dist/styles/components.css +2 -3
  390. package/dist/styles/configurator.css +55 -0
  391. package/dist/styles/critical-partition.mjs +162 -0
  392. package/dist/styles/critical.css +12 -0
  393. package/dist/styles/deferred.css +33 -0
  394. package/dist/styles/dock/cta-seat.css +87 -0
  395. package/dist/styles/dock/density.css +198 -0
  396. package/dist/styles/dock/layers.css +101 -29
  397. package/dist/styles/dock/morph-bridge.css +54 -18
  398. package/dist/styles/dock/morph.css +132 -7
  399. package/dist/styles/dock/overflow.css +28 -2
  400. package/dist/styles/dock/search.css +68 -0
  401. package/dist/styles/dock/shape.css +124 -0
  402. package/dist/styles/dock/shell.css +77 -21
  403. package/dist/styles/dock/stack-rail.css +264 -0
  404. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  405. package/dist/styles/dock-controls/icon-button.css +14 -0
  406. package/dist/styles/dock.css +43 -1
  407. package/dist/styles/drawer.css +81 -35
  408. package/dist/styles/glass/accent-tone.css +66 -0
  409. package/dist/styles/glass/control-surfaces.css +167 -0
  410. package/dist/styles/glass/deep.css +44 -0
  411. package/dist/styles/glass/ladder.css +147 -41
  412. package/dist/styles/glass/material.css +78 -15
  413. package/dist/styles/glass/reveal.css +136 -0
  414. package/dist/styles/glass/rim.css +110 -0
  415. package/dist/styles/glass/surfaces.css +148 -129
  416. package/dist/styles/glass-refract.css +96 -44
  417. package/dist/styles/glass-specular-track.css +7 -0
  418. package/dist/styles/glass.css +13 -0
  419. package/dist/styles/hover-popover.css +7 -6
  420. package/dist/styles/icon-chip.css +77 -15
  421. package/dist/styles/index.css +36 -9
  422. package/dist/styles/instrument-chassis.css +66 -3
  423. package/dist/styles/scroll-choreography.css +300 -0
  424. package/dist/styles/scroll-chrome.css +123 -0
  425. package/dist/styles/scroll-driven.css +38 -0
  426. package/dist/styles/segmented-tabs.css +81 -14
  427. package/dist/styles/theme/bridges.css +33 -0
  428. package/dist/styles/theme/literals.css +11 -2
  429. package/dist/styles/theme/radius.css +24 -2
  430. package/dist/styles/tokens/color-radius.css +13 -3
  431. package/dist/styles/tokens/dark-arm.css +137 -32
  432. package/dist/styles/tokens/glass-deep.css +100 -0
  433. package/dist/styles/tokens/glass-fx.css +376 -0
  434. package/dist/styles/tokens/glass.css +131 -351
  435. package/dist/styles/tokens/light-dark.css +16 -3
  436. package/dist/styles/tokens/offsets.css +143 -0
  437. package/dist/styles/tokens/on-glass-fg.css +39 -0
  438. package/dist/styles/tokens/property-regs.css +260 -0
  439. package/dist/styles/tokens/scale-paper.css +168 -96
  440. package/dist/styles/tokens/scheme-motion.css +114 -38
  441. package/dist/styles/tokens/scroll-tokens.css +123 -0
  442. package/dist/styles/tokens/sizing-config.css +110 -0
  443. package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
  444. package/dist/styles/tokens.css +14 -3
  445. package/dist/styles/typography/semantic.css +26 -13
  446. package/dist/styles/typography/utilities.css +22 -7
  447. package/dist/styles/utilities/a11y-overrides.css +20 -5
  448. package/dist/styles/utilities/animate.css +27 -24
  449. package/dist/styles/utilities/base-misc.css +307 -0
  450. package/dist/styles/utilities/base.css +47 -261
  451. package/dist/styles/utilities/btn.css +17 -4
  452. package/dist/styles/utilities/components.css +31 -6
  453. package/dist/styles/utilities/metal.css +215 -0
  454. package/dist/styles/utilities.css +14 -7
  455. package/dist/switch.js +1 -1
  456. package/dist/tabs.js +220 -107
  457. package/dist/timeline.js +2 -2
  458. package/dist/toast.js +1 -1
  459. package/dist/toggle-chip.js +10 -10
  460. package/dist/toggle-group.js +1 -1
  461. package/dist/tooltip.js +1 -1
  462. package/dist/typewriter.js +2 -2
  463. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  464. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  465. package/dist/useConfiguratorState-4xblKfwd.js +162 -0
  466. package/dist/useControlSize-SH1UmJCi.js +9 -0
  467. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  468. package/dist/useDragMorph-BUgAC-zK.js +102 -0
  469. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  470. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  471. package/dist/useLiquidPress-BooG97RY.js +39 -0
  472. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  473. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  474. package/dist/useSpring-C0jyvEJB.js +40 -0
  475. package/dist/useSpringMount-BWDnKIwh.js +71 -0
  476. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  477. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  478. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  479. package/dist/vSpecular-EX7loENl.js +68 -0
  480. package/dist/vendor-B2qOlYY3.js +239 -0
  481. package/dist/virtual.d.ts +1 -0
  482. package/dist/virtual.js +225 -0
  483. package/dist/watercolor-dot.js +117 -74
  484. package/package.json +252 -28
  485. package/src/styles/animations.css +46 -12
  486. package/src/styles/border-progress.css +109 -0
  487. package/src/styles/cards.css +145 -0
  488. package/src/styles/completion-seal.css +131 -0
  489. package/src/styles/configurator.css +55 -0
  490. package/src/styles/critical-partition.mjs +162 -0
  491. package/src/styles/dock/cta-seat.css +87 -0
  492. package/src/styles/dock/density.css +198 -0
  493. package/src/styles/dock/layers.css +101 -29
  494. package/src/styles/dock/morph-bridge.css +54 -18
  495. package/src/styles/dock/morph.css +132 -7
  496. package/src/styles/dock/overflow.css +28 -2
  497. package/src/styles/dock/search.css +68 -0
  498. package/src/styles/dock/shape.css +124 -0
  499. package/src/styles/dock/shell.css +77 -21
  500. package/src/styles/dock/stack-rail.css +264 -0
  501. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  502. package/src/styles/dock-controls/icon-button.css +14 -0
  503. package/src/styles/dock.css +43 -1
  504. package/src/styles/drawer.css +81 -35
  505. package/src/styles/glass/accent-tone.css +66 -0
  506. package/src/styles/glass/control-surfaces.css +167 -0
  507. package/src/styles/glass/deep.css +44 -0
  508. package/src/styles/glass/ladder.css +147 -41
  509. package/src/styles/glass/material.css +78 -15
  510. package/src/styles/glass/reveal.css +136 -0
  511. package/src/styles/glass/rim.css +110 -0
  512. package/src/styles/glass/surfaces.css +148 -129
  513. package/src/styles/glass-refract.css +96 -44
  514. package/src/styles/glass-specular-track.css +7 -0
  515. package/src/styles/glass.css +13 -0
  516. package/src/styles/hover-popover.css +7 -6
  517. package/src/styles/icon-chip.css +77 -15
  518. package/src/styles/index.css +27 -0
  519. package/src/styles/instrument-chassis.css +66 -3
  520. package/src/styles/scroll-choreography.css +300 -0
  521. package/src/styles/scroll-chrome.css +123 -0
  522. package/src/styles/scroll-driven.css +38 -0
  523. package/src/styles/segmented-tabs.css +81 -14
  524. package/src/styles/theme/bridges.css +33 -0
  525. package/src/styles/theme/literals.css +11 -2
  526. package/src/styles/theme/radius.css +24 -2
  527. package/src/styles/tokens/color-radius.css +13 -3
  528. package/src/styles/tokens/dark-arm.css +137 -32
  529. package/src/styles/tokens/glass-deep.css +100 -0
  530. package/src/styles/tokens/glass-fx.css +376 -0
  531. package/src/styles/tokens/glass.css +131 -351
  532. package/src/styles/tokens/light-dark.css +16 -3
  533. package/src/styles/tokens/offsets.css +143 -0
  534. package/src/styles/tokens/on-glass-fg.css +39 -0
  535. package/src/styles/tokens/property-regs.css +260 -0
  536. package/src/styles/tokens/scale-paper.css +168 -96
  537. package/src/styles/tokens/scheme-motion.css +114 -38
  538. package/src/styles/tokens/scroll-tokens.css +123 -0
  539. package/src/styles/tokens/sizing-config.css +110 -0
  540. package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
  541. package/src/styles/tokens.css +14 -3
  542. package/src/styles/typography/semantic.css +26 -13
  543. package/src/styles/typography/utilities.css +22 -7
  544. package/src/styles/utilities/a11y-overrides.css +20 -5
  545. package/src/styles/utilities/animate.css +27 -24
  546. package/src/styles/utilities/base-misc.css +307 -0
  547. package/src/styles/utilities/base.css +47 -261
  548. package/src/styles/utilities/btn.css +17 -4
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +215 -0
  551. package/src/styles/utilities.css +14 -7
  552. package/dist/CardAction-XH4YBVEK.js +0 -158
  553. package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
  554. package/dist/DialogFooter-8eZbdmPc.js +0 -165
  555. package/dist/HoverCardContent-DkMaQzH5.js +0 -83
  556. package/dist/Input-DVG_J0ne.js +0 -55
  557. package/dist/Notification-DKjKsQq8.js +0 -100
  558. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  559. package/dist/Separator-BArl4OaB.js +0 -37
  560. package/dist/Switch-Dr--uLGH.js +0 -47
  561. package/dist/Toaster-Bm_HQSpc.js +0 -263
  562. package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
  563. package/dist/TooltipProvider-B3MkB_8P.js +0 -104
  564. package/dist/button-BNDWhAZb.js +0 -81
  565. package/dist/check-njhk-vfu.js +0 -7
  566. package/dist/chevron-down-DKkxb4VV.js +0 -7
  567. package/dist/chevron-right-CPXbqQQz.js +0 -7
  568. package/dist/chevron-up-n_24SqI-.js +0 -7
  569. package/dist/color-DweYl7pE.js +0 -86
  570. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  571. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  572. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  573. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  574. package/dist/minimize-2-BV31Ob_h.js +0 -38
  575. package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
  576. package/dist/search-BSGrf2Sk.js +0 -12
  577. package/dist/styles/dock/rail-extend.css +0 -397
  578. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  579. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  580. package/dist/useRAFLoop-CdwJ7284.js +0 -109
  581. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  582. package/dist/useSpringMount-CvopqiFr.js +0 -108
  583. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  584. package/dist/x-BUwTKe50.js +0 -10
  585. package/src/styles/dock/rail-extend.css +0 -397
  586. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  587. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  588. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  589. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  590. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  591. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
  592. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  593. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  594. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  595. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  596. /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
  597. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  598. /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
  599. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  600. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  601. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  602. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  603. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  604. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  605. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  606. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  607. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  608. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  609. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
@@ -1,7 +1,9 @@
1
1
  import { type HTMLAttributes } from 'vue';
2
2
  import { type SwitchRootProps } from 'reka-ui';
3
+ import { type ControlSize } from '../_shared/useControlSize';
3
4
  type __VLS_Props = SwitchRootProps & {
4
5
  class?: HTMLAttributes['class'];
6
+ size?: ControlSize;
5
7
  };
6
8
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
9
  "update:modelValue": (payload: boolean) => any;
@@ -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,10 +1,12 @@
1
1
  import type { HTMLAttributes, TextareaHTMLAttributes } from 'vue';
2
+ import { type ControlSize } from '../_shared/useControlSize';
2
3
  declare const _default: typeof __VLS_export;
3
4
  export default _default;
4
5
  declare const __VLS_export: import("vue").DefineComponent<{
5
6
  class?: HTMLAttributes["class"];
6
7
  defaultValue?: string | number;
7
8
  modelValue?: string | number;
9
+ size?: ControlSize;
8
10
  placeholder?: TextareaHTMLAttributes["placeholder"];
9
11
  disabled?: TextareaHTMLAttributes["disabled"];
10
12
  /**
@@ -29,6 +31,7 @@ declare const __VLS_export: import("vue").DefineComponent<{
29
31
  class?: HTMLAttributes["class"];
30
32
  defaultValue?: string | number;
31
33
  modelValue?: string | number;
34
+ size?: ControlSize;
32
35
  placeholder?: TextareaHTMLAttributes["placeholder"];
33
36
  disabled?: TextareaHTMLAttributes["disabled"];
34
37
  /**
@@ -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,7 +1,9 @@
1
1
  import { type HTMLAttributes } from 'vue';
2
2
  import { type TooltipContentProps } from 'reka-ui';
3
+ import { type Surface } from '../_shared/useSurfaceAxis';
3
4
  type __VLS_Props = TooltipContentProps & {
4
5
  class?: HTMLAttributes['class'];
6
+ surface?: Surface;
5
7
  };
6
8
  declare var __VLS_14: {};
7
9
  type __VLS_Slots = {} & {
@@ -14,6 +16,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
14
16
  onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
15
17
  onPointerDownOutside?: ((event: Event) => any) | undefined;
16
18
  }>, {
19
+ surface: Surface;
17
20
  sideOffset: number;
18
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
22
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -133,3 +133,5 @@ export interface DeriveBlobPaletteOptions {
133
133
  * @param options stop count, harmony, spreads.
134
134
  */
135
135
  export declare function deriveBlobPalette(seed: string | OklchStop, options?: DeriveBlobPaletteOptions): OklchStop[];
136
+ export { useAccentTone } from "./useAccentTone";
137
+ export type { UseAccentToneOptions, UseAccentToneReturn } from "./useAccentTone";
@@ -0,0 +1,34 @@
1
+ import { type ComputedRef, type MaybeRefOrGetter } from "vue";
2
+ export interface UseAccentToneOptions {
3
+ /** Idle fill strength (0..1). Default 0.08. The CSS `--accent-fill-strength`
4
+ * twin — passed here so the JS ink-solve composites the matching band. */
5
+ fillStrength?: number;
6
+ /** Active band strength (0..1). Default 0.18 (the CSS `--accent-band-strength`). */
7
+ bandStrength?: number;
8
+ /** Target ink-over-band contrast. Default 4.5 (AA). */
9
+ inkContrast?: number;
10
+ /** The surface the accent paints ON (a CSS `<color>`). Default the warm-cream
11
+ * `--card`. A consumer on a dark/other plate passes its concrete surface so
12
+ * the ink solves against the right band lightness. */
13
+ surface?: string;
14
+ }
15
+ export interface UseAccentToneReturn {
16
+ /** The element-level custom-property style object — bind via `:style`. Carries
17
+ * `--tone` (so the CSS channels resolve) + `--accent-ink-resolved` (the
18
+ * contrast-safe label colour over the active band). */
19
+ toneStyle: ComputedRef<Record<string, string>>;
20
+ /** The resolved contrast-safe ink as a CSS `oklch(...)` string (for a non-CSS
21
+ * reader — a canvas label, a test). */
22
+ ink: ComputedRef<string>;
23
+ }
24
+ /**
25
+ * `useAccentTone(tone, opts)` — resolve the contrast-safe label ink for the tonal
26
+ * register. The ink RESOLVES `safeAccentColor(toneColor, bandLightness, …)`:
27
+ * value.js shifts the tone's OKLCh lightness AWAY from the active-band fill until
28
+ * it clears the AA bar, so the label reads ON the fill in either mode (a dark band
29
+ * gets a light ink, a light band a dark ink). The darken/lighten-until-it-passes
30
+ * math is value.js's — glass-ui re-implements none of it.
31
+ *
32
+ * PRM-irrelevant (a colour, not an animation). DOM-free + deterministic.
33
+ */
34
+ export declare function useAccentTone(tone: MaybeRefOrGetter<string>, opts?: UseAccentToneOptions): UseAccentToneReturn;
@@ -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,123 @@
1
+ import { type Easing } from "@mkbabb/keyframes.js";
2
+ import { type Ref } from "vue";
3
+ import { type SpringPresetName } from "../motion/springPresets";
4
+ /**
5
+ * The reveal spring register. `bouncy` is the playful bloom (the dots spring out, the
6
+ * aurora blooms — the largest overshoot), `smooth` the calm settle, `snappy` the crisp
7
+ * control build, `gentle`/`dock` the patient/control ends. A named SPRING_PRESETS row —
8
+ * never a hand (response, ζ).
9
+ */
10
+ export type VizChoreographyPreset = SpringPresetName;
11
+ export interface UseVizChoreographyOptions {
12
+ /**
13
+ * The ENTER spring register (default `bouncy` — the playful liquid bloom the user
14
+ * named). The per-viz wave picks: `smooth` for a calm field settle, `bouncy` for the
15
+ * dot-scatter bloom.
16
+ */
17
+ preset?: VizChoreographyPreset;
18
+ /**
19
+ * The config-TRANSITION lerp duration in seconds. Default the ENTER preset's response
20
+ * (the spring-timed glide — never a hand wall clock). The cross-fade timing is the
21
+ * `springTimingFunction` of the SAME preset row.
22
+ */
23
+ transitionResponse?: number;
24
+ /**
25
+ * Honor `prefers-reduced-motion: reduce` → snap the reveal (zero spring frames, the
26
+ * fade survives, the scatter/transform leg is the viz's to drop). Default true. (A
27
+ * deterministic viz capture that ACCEPTS the live build-in opts out.)
28
+ */
29
+ respectReducedMotion?: boolean;
30
+ /**
31
+ * Start ALREADY revealed (revealT = 1) — for a viz mounted on a route that is already
32
+ * the active page (no enter beat owed). Default false (the page-enter starts collapsed
33
+ * and blooms). `enter()` always re-seats from the current value, so this is only the
34
+ * INITIAL seed.
35
+ */
36
+ initiallyRevealed?: boolean;
37
+ }
38
+ export interface UseVizChoreographyReturn {
39
+ /**
40
+ * The coupled reveal scalar ∈ [0,1] (may briefly overshoot >1 on a bouncy enter — the
41
+ * iOS bloom). The viz reads this for BOTH legs: the build-in uniform (settle-from-
42
+ * scatter) AND the canvas opacity (clamped via `opacity`). 0 = collapsed/scattered,
43
+ * 1 = fully materialized.
44
+ */
45
+ readonly revealT: Readonly<Ref<number>>;
46
+ /**
47
+ * The canvas opacity ∈ [0,1] — the coupled fade leg, `revealT` clamped to [0,1] (the
48
+ * fade does not overshoot; only the spatial build-in overshoots). The viz binds this
49
+ * to its canvas `style.opacity`.
50
+ */
51
+ readonly opacity: Readonly<Ref<number>>;
52
+ /**
53
+ * The config-transition progress ∈ [0,1] — the SmoothProgress glide a preset/variant
54
+ * morph reads to lerp its config uniforms (0 = the outgoing config, 1 = the incoming).
55
+ * Idle (settled at 1) when no transition is in flight.
56
+ */
57
+ readonly transitionT: Readonly<Ref<number>>;
58
+ /**
59
+ * True while the spatial build-in (the settle-from-scatter / the bloom transform) is
60
+ * ACTIVE — false under PRM (the viz drops the scatter, keeps the fade) and false once
61
+ * settled. The viz gates its scatter/transform leg on this (the P6 keeps-fade-drops-
62
+ * transform split).
63
+ */
64
+ readonly transformActive: Readonly<Ref<boolean>>;
65
+ /** True once the reveal has fully settled at its target (the loop can quiesce). */
66
+ readonly settled: Readonly<Ref<boolean>>;
67
+ /**
68
+ * A — START: bloom the viz in (revealT → 1) on the page-enter, on the ENTER spring
69
+ * register. Idempotent; a re-call mid-build re-seats velocity-continuously (the
70
+ * restart contract). PRM snaps to revealed (the fade survives, the scatter drops).
71
+ */
72
+ enter: () => void;
73
+ /**
74
+ * C — END: settle the viz out (revealT → 0) on the no-overshoot exit register, then
75
+ * the loop parks (the viz reads `settled`/`revealT === 0` to stop). PRM snaps to
76
+ * collapsed. A closing surface must not overshoot past gone (P2).
77
+ */
78
+ leave: () => void;
79
+ /**
80
+ * B — TRANSITION: glide a config/variant morph. Re-seats `transitionT` 0→1 on the
81
+ * SmoothProgress lerp; the viz reads `transitionT` to lerp its config uniforms each
82
+ * frame. `onComplete` (optional) fires once the glide settles. PRM snaps the glide.
83
+ */
84
+ transitionTo: (onComplete?: () => void) => void;
85
+ /**
86
+ * D — RESTART: re-seat the reveal from the CURRENT (value, velocity) so a restart mid-
87
+ * build inherits the live trajectory (the iOS interruptible contract — never a jump-
88
+ * to-zero). Snaps revealT back to 0 then blooms 1 velocity-continuously.
89
+ */
90
+ restart: () => void;
91
+ /**
92
+ * Advance the choreography ONE renderer frame. The viz calls this from INSIDE its
93
+ * existing `createCanvasLifecycle` frame callback with the frame `dtMs` (milliseconds).
94
+ * NO own rAF — the renderer owns the loop. Steps the reveal spring + the transition
95
+ * lerp analytically (O(1), zero allocation). Returns the live `revealT` (so a renderer
96
+ * can read inline). A zero/negative `dtMs` is a no-op step (a paused/first frame).
97
+ */
98
+ tick: (dtMs: number) => number;
99
+ /** The transition cross-fade easing (the typed {fn,css} pair) — for a viz that wants
100
+ * the spring curve directly (e.g. to time a CSS-side companion). */
101
+ readonly transitionEasing: Easing;
102
+ }
103
+ /**
104
+ * The procedural-viz choreography clock. Composes the published-4.3.0 kf
105
+ * `SpringProgress` (the reveal scalar) + `SmoothProgress` (the config lerp) +
106
+ * `springTimingFunction` (the cross-fade timing), FED `tick(dt)` from the consuming
107
+ * viz's frame callback. Owns NO rAF (the one-loop discipline; the viz feed it). See the
108
+ * module header for the four beats, the coupled-fade drive, the one-loop fence, and the
109
+ * Oscillator book.
110
+ *
111
+ * @example
112
+ * ```ts
113
+ * const choreo = useVizChoreography({ preset: "bouncy" });
114
+ * // inside createCanvasLifecycle's frame(timeSec):
115
+ * const dtMs = (timeSec - lastSec) * 1000;
116
+ * choreo.tick(dtMs);
117
+ * canvas.style.opacity = String(choreo.opacity.value);
118
+ * gl.uniform1f(uReveal, choreo.revealT.value); // the settle-from-scatter build-in
119
+ * // page-enter / route-leave:
120
+ * watch(active, (on) => (on ? choreo.enter() : choreo.leave()));
121
+ * ```
122
+ */
123
+ export declare function useVizChoreography(options?: UseVizChoreographyOptions): UseVizChoreographyReturn;
@@ -0,0 +1,2 @@
1
+ import type { ObjectDirective } from "vue";
2
+ export declare const vSpecular: ObjectDirective<HTMLElement, boolean | undefined>;
@@ -41,5 +41,15 @@ export interface CanvasLifecycleHandle {
41
41
  readonly disposed: boolean;
42
42
  readonly running: boolean;
43
43
  readonly reducedMotion: boolean;
44
+ /**
45
+ * BC.W-SAFARI-WEBGL — the circuit-breaker has tripped: the surface lost-and-restored
46
+ * its context more than N times within T ms (a real eviction storm), so the lifecycle
47
+ * is HOLDING the parked state without re-arming (no throw). Resets once the loss window
48
+ * passes quiet; a healthy single loss never trips it.
49
+ */
50
+ readonly contextHeld: boolean;
44
51
  }
52
+ export declare const N_RESTORE_STORM = 3;
53
+ export declare const T_RESTORE_STORM_MS = 2000;
54
+ export declare const RESTORE_DEBOUNCE_MS = 100;
45
55
  export declare function createCanvasLifecycle(options: CanvasLifecycleOptions): CanvasLifecycleHandle;
@@ -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";
@@ -0,0 +1 @@
1
+ export declare const CURL_FBM_WGSL = "\nconst CURL_EPS: f32 = 0.012;\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.\nfn curlFBM(p: vec2f) -> vec2f {\n let dx = potentialFBM(p + vec2f(CURL_EPS, 0.0)) - potentialFBM(p - vec2f(CURL_EPS, 0.0));\n let dy = potentialFBM(p + vec2f(0.0, CURL_EPS)) - potentialFBM(p - vec2f(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 let g = vec2f(dx, dy) / (2.0 * CURL_EPS);\n return vec2f(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, WebGPUInitError, type WebGPUCanvasFrame, type WebGPUCanvasHandle, type WebGPUCanvasOptions, type WebGPUSuspendReason, } from "./useWebGPUCanvas";
2
+ export { createGpuSubstrate, type GpuBackend, type GpuSubstrateHandle, type GpuSubstrateOptions, } from "./useGpuSubstrate";
@@ -0,0 +1,75 @@
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
+ * Notified when the picker FALLS from WebGPU to the WebGL2 net (the invisible
29
+ * insurance fired). The user never sees a "downgrade" — this is a diagnostic hook
30
+ * (e.g. record the tier-readout for the substrate DELTA), NOT an error. The error
31
+ * (if any) that triggered the fall is passed for telemetry.
32
+ */
33
+ onBackendFallback?: (info: {
34
+ from: "webgpu";
35
+ to: "webgl2";
36
+ error: unknown;
37
+ }) => void;
38
+ }
39
+ /**
40
+ * The uniform substrate handle. A viz consumer wires its lifecycle (offscreen pause,
41
+ * pause/resume, pointer-`wake`, capture-`renderAt`) against THIS — identical across the
42
+ * WebGPU and WebGL2 backends. `armAsync` is the start seam (it tries WebGPU then falls
43
+ * to the WebGL2 net on a no-adapter/init failure); `arm` is the synchronous twin (it
44
+ * arms the WebGL2 net immediately so a consumer that does not await still paints).
45
+ */
46
+ export interface GpuSubstrateHandle {
47
+ /**
48
+ * The resolved backend. Starts at the OPTIMISTIC choice (`"webgpu"` where the
49
+ * platform allows it + a WGSL path is provided, else `"webgl2"`); after
50
+ * `armAsync()` it reflects the ACTUAL backend (it falls to `"webgl2"` if the
51
+ * WebGPU init failed — the no-adapter/device-lost-at-birth tail).
52
+ */
53
+ readonly backend: GpuBackend;
54
+ /** Acquire the device/context + `setup` + arm the loop (try WebGPU, fall to the WebGL2 net). Resolves once armed. */
55
+ armAsync: () => Promise<void>;
56
+ /** Synchronous arm (the WebGL2 net arms immediately; the WebGPU path is a no-op until the device resolves). */
57
+ arm: () => void;
58
+ suspend: (reason?: "tab-hidden" | "off-screen" | "off-screen-io" | "manual") => void;
59
+ resume: (reason?: "tab-hidden" | "off-screen" | "off-screen-io" | "manual") => void;
60
+ wake: () => void;
61
+ renderAt: (timeSec: number) => void;
62
+ dispose: () => void;
63
+ readonly reducedMotion: boolean;
64
+ }
65
+ /**
66
+ * Pick the backend + return the uniform handle. WebGPU-first (`supportsWebGPU()` AND a
67
+ * `setupWGPU` callback is provided); otherwise the WebGL2 net. The decision is NO
68
+ * LONGER committed at construction off a presence check — `armAsync()` ATTEMPTS the
69
+ * WebGPU init and FALLS to the WebGL2 net on ANY failure (no adapter, device reject,
70
+ * device-lost-at-birth, validation throw). The WebGL2 leaf is built lazily — only if
71
+ * the WebGPU path fails OR no WGSL path was provided — so a Baseline host pays no
72
+ * WebGL2-context cost.
73
+ */
74
+ export declare function createGpuSubstrate(canvas: HTMLCanvasElement, options: GpuSubstrateOptions): GpuSubstrateHandle;
75
+ export type { WebGPUCanvasFrame, WebGLCanvasFrame };
@@ -0,0 +1,85 @@
1
+ export { WebGPUInitError } from "./webgpuDevice";
2
+ /**
3
+ * The ONE `navigator.gpu` capability probe (the single-bootstrap rule — mirrors
4
+ * `probeWebGL2Renderer`). SSR-safe (returns `false` with no `navigator`). The picker
5
+ * (`useGpuSubstrate`) reads it to decide the backend; a consumer NEVER touches
6
+ * `navigator.gpu` directly (it composes the substrate — `proof:gpu-substrate-single`
7
+ * clause A reds a direct call).
8
+ */
9
+ export declare function supportsWebGPU(): boolean;
10
+ export type WebGPUSuspendReason = "tab-hidden" | "off-screen" | "off-screen-io" | "manual";
11
+ /**
12
+ * The per-frame hooks a consumer's `setup(device, context, format)` returns. The
13
+ * consumer owns the WGSL pipeline + bind groups + the per-frame command-encoder
14
+ * record/submit; the substrate owns the schedule.
15
+ */
16
+ export interface WebGPUCanvasFrame {
17
+ /**
18
+ * Draw one frame at `timeSec`: the consumer records a command encoder, begins a
19
+ * render pass against the current swap-chain texture view
20
+ * (`context.getCurrentTexture().createView()`), draws, and submits.
21
+ */
22
+ frame: (timeSec: number) => void;
23
+ /** Demand-gate: is there live motion to render next frame? `false` → park. */
24
+ shouldContinue: () => boolean;
25
+ /** Size the canvas backing store. The consumer owns its DPR policy. */
26
+ resize: () => void;
27
+ /** Frame time from elapsed seconds — the consumer owns frozen/reduced-motion. */
28
+ time?: (elapsedSec: number) => number;
29
+ /** Release per-instance GPU resources (pipelines/buffers/bind groups). Runs on dispose + before a restore re-setup. */
30
+ teardown?: () => void;
31
+ }
32
+ export interface WebGPUCanvasOptions {
33
+ /** `context.configure` alpha mode (the consumer's — default `"premultiplied"`). */
34
+ alphaMode?: GPUCanvasAlphaMode;
35
+ /** Extra device-request options (features/limits). */
36
+ deviceDescriptor?: GPUDeviceDescriptor;
37
+ /** Adapter-request options (e.g. `powerPreference`). */
38
+ adapterOptions?: GPURequestAdapterOptions;
39
+ /** `"capture"` pre-seeds the `manual` suspension (renderAt-only). Default `"live"`. */
40
+ mode?: "live" | "capture";
41
+ /**
42
+ * Honor `prefers-reduced-motion: reduce` by painting ONE static frame then
43
+ * parking the loop. The shared lifecycle core live-monitors the query via a
44
+ * `matchMedia` `change` listener and re-arms (one static frame) on un-reduce.
45
+ * Default `true` for live mode, `false` for capture mode.
46
+ */
47
+ respectReducedMotion?: boolean;
48
+ /**
49
+ * Build the WGSL pipeline + bind groups on the resolved device. Called on the
50
+ * async arm AND on every device-restore. Returns the per-frame hooks.
51
+ */
52
+ setup: (device: GPUDevice, context: GPUCanvasContext, format: GPUTextureFormat) => WebGPUCanvasFrame;
53
+ /** Surface a device-init / validation failure (no WebGPU adapter, a `setup` throw). */
54
+ onInitError?: (error: unknown) => void;
55
+ }
56
+ export interface WebGPUCanvasHandle {
57
+ /**
58
+ * Run the expensive ASYNC init (adapter + device + context.configure + `setup`)
59
+ * THEN arm the loop. Resolves once armed (or rejects-via-`onInitError` on a
60
+ * device-unavailable / `setup` failure). Idempotent; a no-op post-dispose.
61
+ */
62
+ armAsync: () => Promise<void>;
63
+ /**
64
+ * Synchronous `arm` — a no-op until `armAsync` has resolved the device (the
65
+ * uniform-handle parity with the synchronous backends; the picker calls
66
+ * `armAsync` for the WebGPU path). Idempotent.
67
+ */
68
+ arm: () => void;
69
+ suspend: (reason?: WebGPUSuspendReason) => void;
70
+ resume: (reason?: WebGPUSuspendReason) => void;
71
+ /** Re-arm a parked loop (a setter that re-introduced motion calls this). */
72
+ wake: () => void;
73
+ /** Draw one frame at `timeSec` out-of-loop (capture / thumbnail). */
74
+ renderAt: (timeSec: number) => void;
75
+ dispose: () => void;
76
+ /** The live device (null before armAsync / after dispose / mid-loss). */
77
+ readonly device: GPUDevice | null;
78
+ /**
79
+ * The live `prefers-reduced-motion: reduce` state. The shared lifecycle core
80
+ * owns + re-monitors it; consumers read it (e.g. a viz freezes its frame time
81
+ * at the authored offset while this is `true`).
82
+ */
83
+ readonly reducedMotion: boolean;
84
+ }
85
+ export declare function createWebGPUCanvas(canvas: HTMLCanvasElement, options: WebGPUCanvasOptions): WebGPUCanvasHandle;