@mkbabb/glass-ui 4.0.1 → 4.2.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 (606) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-DlVP2evz.js} +72 -53
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-By-VQcLO.js} +25 -14
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-YMXdINHx.js} +14 -14
  4. package/dist/ContextMenuContent-CMWn6huB.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DvwWCUc0.js} +16 -16
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/DialogFooter-DoLy0ewI.js +80 -0
  9. package/dist/DialogScrollContent-BMekN7gq.js +93 -0
  10. package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-P8B30rAD.js} +1 -1
  11. package/dist/HoverCardContent-DAmGYglo.js +88 -0
  12. package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-DYpBOzzF.js} +1 -1
  13. package/dist/{IconChip-BTD-nay5.js → IconChip-CQa7XZYc.js} +7 -5
  14. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-_df8M3xm.js} +1 -1
  15. package/dist/Input-CyU4_hIC.js +57 -0
  16. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  17. package/dist/{Notification-VUwexFUf.js → Notification-BlSPJhtZ.js} +4 -4
  18. package/dist/NumberFieldContent-Z3VxGu_6.js +140 -0
  19. package/dist/PagerDots-CYlqVFd4.js +196 -0
  20. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  21. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  22. package/dist/{Progress-DctG61iZ.js → Progress-C9SsdwIZ.js} +1 -1
  23. package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-DY3W1Jfh.js} +2 -2
  24. package/dist/SelectScrollDownButton-3mFHX_R-.js +260 -0
  25. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-CNRGG7Ew.js} +1 -1
  26. package/dist/Separator-Cf9-JFgi.js +44 -0
  27. package/dist/Switch-uf-UKPA2.js +49 -0
  28. package/dist/{Toaster-Bw4xR8xV.js → Toaster-ozrsR4mP.js} +2 -2
  29. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BpzaVzNm.js} +6 -6
  30. package/dist/TooltipProvider-QQVM_80r.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +16 -32
  33. package/dist/api/types-extra.d.ts +33 -0
  34. package/dist/api.js +2 -2
  35. package/dist/aurora.js +629 -269
  36. package/dist/badge-Bt14yURi.js +72 -0
  37. package/dist/badge.js +1 -1
  38. package/dist/border-progress.js +49 -57
  39. package/dist/button-D1W9PrzI.js +130 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +1 -1
  43. package/dist/carousel.js +235 -106
  44. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  45. package/dist/collapsible.js +1 -1
  46. package/dist/color-B9jZdhJX.js +116 -0
  47. package/dist/color.js +2 -2
  48. package/dist/command.js +1 -1
  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/color.d.ts +13 -0
  53. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  54. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  55. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  56. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +12 -3
  57. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  58. package/dist/components/custom/aurora/constants/presets.d.ts +47 -0
  59. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  60. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  62. package/dist/components/custom/aurora/index.d.ts +1 -1
  63. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  64. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  65. package/dist/components/custom/border-progress/index.d.ts +1 -1
  66. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  67. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  68. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  69. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  70. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  71. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +12 -0
  72. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  73. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  74. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -3
  75. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  76. package/dist/components/custom/concentric/constants.d.ts +69 -24
  77. package/dist/components/custom/concentric/index.d.ts +2 -2
  78. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  79. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  80. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  81. package/dist/components/custom/configurator/index.d.ts +1 -1
  82. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  83. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  84. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  85. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  86. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  87. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  88. package/dist/components/custom/constellation/constants.d.ts +33 -0
  89. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  90. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  91. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  92. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  93. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  94. package/dist/components/custom/constellation/index.d.ts +5 -5
  95. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  96. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  97. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  98. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  99. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  100. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  101. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  102. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  103. package/dist/components/custom/deck/constants.d.ts +14 -0
  104. package/dist/components/custom/deck/index.d.ts +8 -0
  105. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  106. package/dist/components/custom/dock/DockIconButton.vue.d.ts +22 -0
  107. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  108. package/dist/components/custom/dock/DockStack.vue.d.ts +78 -0
  109. package/dist/components/custom/dock/GlassDock.vue.d.ts +21 -3
  110. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  111. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +78 -67
  112. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  113. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  114. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  115. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  116. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  117. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  118. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +49 -0
  119. package/dist/components/custom/dock/constants.d.ts +32 -17
  120. package/dist/components/custom/dock/index.d.ts +8 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +69 -6
  123. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  124. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  125. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  126. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  127. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +50 -9
  128. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  129. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +23 -9
  130. package/dist/components/custom/dot-flow-field/constants.d.ts +92 -20
  131. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  132. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  133. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +31 -18
  134. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  135. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  136. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  137. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +61 -0
  138. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  139. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +34 -0
  140. package/dist/components/custom/dot-matrix/constants.d.ts +72 -0
  141. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  142. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  143. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  144. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  145. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  146. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  147. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +44 -47
  148. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  149. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  150. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +56 -0
  151. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +61 -37
  152. package/dist/components/custom/fourier-field/constants.d.ts +114 -4
  153. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  156. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  158. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  159. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  160. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  161. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  163. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  165. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/types.d.ts +86 -1
  167. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  168. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +79 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +45 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  172. package/dist/components/custom/goo-dot-matrix/constants.d.ts +115 -0
  173. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  174. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +13 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +4 -0
  176. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  177. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  178. package/dist/components/custom/handmark/brush.d.ts +17 -17
  179. package/dist/components/custom/handmark/constants.d.ts +28 -8
  180. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  181. package/dist/components/custom/handmark/index.d.ts +1 -1
  182. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  183. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  184. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  185. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  186. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  187. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  188. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  189. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  190. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +105 -0
  191. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +18 -0
  192. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +21 -0
  193. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  194. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  195. package/dist/components/custom/paper-grid/constants.d.ts +95 -0
  196. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  197. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  198. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  199. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  200. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  201. package/dist/components/custom/search/index.d.ts +2 -0
  202. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  203. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  204. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  205. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  206. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +15 -0
  207. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  208. package/dist/components/custom/split-chars/index.d.ts +1 -0
  209. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  210. package/dist/components/custom/tabs/constants.d.ts +28 -2
  211. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  212. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  213. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  214. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +32 -17
  215. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  216. package/dist/components/ui/_shared/index.d.ts +2 -0
  217. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  218. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  219. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  220. package/dist/components/ui/badge/index.d.ts +1 -0
  221. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  222. package/dist/components/ui/button/index.d.ts +1 -1
  223. package/dist/components/ui/card/Card.vue.d.ts +46 -1
  224. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  225. package/dist/components/ui/card/index.d.ts +1 -1
  226. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  227. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  228. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  229. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  230. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  231. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  232. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  233. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  234. package/dist/components/ui/drawer/constants.d.ts +8 -6
  235. package/dist/components/ui/drawer/index.d.ts +12 -2
  236. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  237. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  238. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  239. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  240. package/dist/components/ui/select/SelectContent.vue.d.ts +12 -0
  241. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  242. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  243. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  244. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  245. package/dist/composables/color/index.d.ts +2 -0
  246. package/dist/composables/color/useAccentTone.d.ts +34 -0
  247. package/dist/composables/dom/index.d.ts +1 -0
  248. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  249. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  250. package/dist/composables/glass/wave/index.d.ts +4 -0
  251. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  252. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  253. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  254. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +105 -2
  255. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  256. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  257. package/dist/composables/glass/webgpu/index.d.ts +2 -1
  258. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +65 -7
  259. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +50 -2
  260. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  261. package/dist/composables/motion/core/index.d.ts +7 -0
  262. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  263. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  264. package/dist/composables/motion/index.d.ts +2 -0
  265. package/dist/composables/motion/scrollReader.d.ts +25 -0
  266. package/dist/composables/motion/springPresets.d.ts +19 -1
  267. package/dist/composables/motion/suite.d.ts +2 -2
  268. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  269. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  270. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  271. package/dist/composables/motion/useDockCtaReceive.d.ts +29 -22
  272. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  273. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  274. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  275. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  276. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  277. package/dist/composables/motion/useMorphField.d.ts +157 -0
  278. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  279. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  280. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  281. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  282. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  283. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  284. package/dist/composables/sidebar/index.d.ts +4 -1
  285. package/dist/composables/sidebar/types.d.ts +68 -3
  286. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  287. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  288. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  289. package/dist/composables/virtual/index.d.ts +4 -0
  290. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  291. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  292. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  293. package/dist/concentric.js +552 -309
  294. package/dist/configurator.js +2 -2
  295. package/dist/confirm-dialog.js +62 -47
  296. package/dist/constellation.js +635 -235
  297. package/dist/context-menu.js +2 -2
  298. package/dist/controls.js +2 -2
  299. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  300. package/dist/dark.js +1 -1
  301. package/dist/data-table.js +1 -1
  302. package/dist/deck.d.ts +1 -0
  303. package/dist/deck.js +105 -0
  304. package/dist/dialog.js +4 -3
  305. package/dist/dock.js +1320 -631
  306. package/dist/dockContext-gFVS2gMg.js +18 -0
  307. package/dist/dom.js +7 -6
  308. package/dist/dot-flow-field.js +1268 -387
  309. package/dist/dot-matrix.d.ts +1 -0
  310. package/dist/dot-matrix.js +774 -0
  311. package/dist/dotMatrixField-CRO0ZFk4.js +48 -0
  312. package/dist/drawer.js +106 -96
  313. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-CCfcCQ68.js} +83 -79
  314. package/dist/dropdown-menu.js +1 -1
  315. package/dist/easing.js +188 -176
  316. package/dist/expandable-container.js +43 -21
  317. package/dist/fading-scroll.js +1 -1
  318. package/dist/flow.glsl-DqEGRpl4.js +4 -0
  319. package/dist/forms.js +64 -62
  320. package/dist/fourier-field.js +1069 -178
  321. package/dist/fourier-math.js +1 -1
  322. package/dist/glass-panel.js +2 -2
  323. package/dist/glass-ui.css +1 -1
  324. package/dist/glass-ui.js +164 -119
  325. package/dist/goo-blob.js +175 -1230
  326. package/dist/goo-dot-matrix.d.ts +1 -0
  327. package/dist/goo-dot-matrix.js +811 -0
  328. package/dist/handmark.js +137 -94
  329. package/dist/header-ribbon.js +1 -1
  330. package/dist/hover-card.js +1 -1
  331. package/dist/hover-popover.js +1 -1
  332. package/dist/icon-chip.js +1 -1
  333. package/dist/icon-tooltip.js +1 -1
  334. package/dist/index.d.ts +5 -0
  335. package/dist/instrument-chassis.js +1 -1
  336. package/dist/keyboard.js +1 -1
  337. package/dist/label.js +1 -1
  338. package/dist/labeled-field.js +70 -60
  339. package/dist/metric-badge.js +1 -1
  340. package/dist/metric-cell.js +1 -1
  341. package/dist/metric-stack.js +12 -3
  342. package/dist/motion-core.js +59 -34
  343. package/dist/motion-curves.js +30 -14
  344. package/dist/motion.js +231 -96
  345. package/dist/notification.js +1 -1
  346. package/dist/number-field.js +1 -1
  347. package/dist/pager-dots.js +2 -91
  348. package/dist/paper-backdrop.js +1 -1
  349. package/dist/paper-grid.d.ts +1 -0
  350. package/dist/paper-grid.js +761 -0
  351. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  352. package/dist/popover.js +1 -1
  353. package/dist/{presets-BW2b-fr1.js → presets-QvYgnFIZ.js} +14 -13
  354. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-C1Y5PkM6.js} +2 -2
  355. package/dist/progress.js +1 -1
  356. package/dist/pulse.js +2 -2
  357. package/dist/reactive.js +2 -2
  358. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-DsSJk06I.js} +16 -6
  359. package/dist/scrollReader-rc3Ns_NM.js +42 -0
  360. package/dist/scrolling-text.js +1 -1
  361. package/dist/search.js +162 -306
  362. package/dist/select.js +3 -3
  363. package/dist/selectable-chip.d.ts +1 -0
  364. package/dist/selectable-chip.js +48 -0
  365. package/dist/separator.js +1 -1
  366. package/dist/{sheet-tZMg0E0w.js → sheet-DUCIoOe0.js} +4 -4
  367. package/dist/sheet.js +1 -1
  368. package/dist/sidebar.js +216 -114
  369. package/dist/slider-CcICPe3u.js +149 -0
  370. package/dist/slider.js +1 -1
  371. package/dist/sortable-list.js +3 -3
  372. package/dist/spectrum-walk-cBNSx_zm.js +33 -0
  373. package/dist/springPresets-DfoQ6XRY.js +64 -0
  374. package/dist/stacked-icons.js +54 -39
  375. package/dist/styles/animations.css +13 -3
  376. package/dist/styles/cards.css +271 -2
  377. package/dist/styles/completion-seal.css +131 -0
  378. package/dist/styles/components.css +1 -4
  379. package/dist/styles/configurator.css +221 -1
  380. package/dist/styles/critical-partition.mjs +66 -11
  381. package/dist/styles/deferred.css +4 -0
  382. package/dist/styles/dock/adaptive-legibility.css +119 -0
  383. package/dist/styles/dock/cta-seat.css +87 -0
  384. package/dist/styles/dock/density.css +167 -6
  385. package/dist/styles/dock/fission-bridge.css +552 -0
  386. package/dist/styles/dock/layers.css +90 -78
  387. package/dist/styles/dock/morph-bridge.css +67 -18
  388. package/dist/styles/dock/morph.css +57 -118
  389. package/dist/styles/dock/overflow.css +12 -0
  390. package/dist/styles/dock/search.css +68 -0
  391. package/dist/styles/dock/shape.css +250 -0
  392. package/dist/styles/dock/shell.css +24 -8
  393. package/dist/styles/dock/stack-rail.css +352 -0
  394. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  395. package/dist/styles/dock-controls/icon-button.css +46 -0
  396. package/dist/styles/dock-controls/triggers.css +23 -1
  397. package/dist/styles/dock-controls.css +18 -0
  398. package/dist/styles/dock.css +27 -2
  399. package/dist/styles/drawer.css +166 -0
  400. package/dist/styles/glass/accent-tone.css +66 -0
  401. package/dist/styles/glass/control-surfaces.css +167 -0
  402. package/dist/styles/glass/glass-atom.css +244 -0
  403. package/dist/styles/glass/glass-capsule.css +143 -0
  404. package/dist/styles/glass/glass-chip.css +215 -0
  405. package/dist/styles/glass/ladder.css +67 -17
  406. package/dist/styles/glass/liquid-enter.css +252 -0
  407. package/dist/styles/glass/liquid-morph.css +850 -0
  408. package/dist/styles/glass/material.css +70 -1
  409. package/dist/styles/glass/reveal.css +22 -2
  410. package/dist/styles/glass/rim.css +31 -9
  411. package/dist/styles/glass/surfaces.css +81 -150
  412. package/dist/styles/glass.css +21 -0
  413. package/dist/styles/icon-chip.css +45 -0
  414. package/dist/styles/index.css +26 -0
  415. package/dist/styles/jubilance.css +65 -0
  416. package/dist/styles/motion/morph-field.css +229 -0
  417. package/dist/styles/paper.css +230 -14
  418. package/dist/styles/scroll-choreography.css +135 -78
  419. package/dist/styles/scroll-chrome.css +123 -0
  420. package/dist/styles/scroll-driven.css +38 -0
  421. package/dist/styles/segmented-tabs.css +110 -40
  422. package/dist/styles/select.css +151 -0
  423. package/dist/styles/theme/bridges.css +22 -0
  424. package/dist/styles/theme/radius.css +18 -1
  425. package/dist/styles/tokens/color-radius.css +14 -4
  426. package/dist/styles/tokens/dark-arm.css +94 -12
  427. package/dist/styles/tokens/glass-deep.css +33 -4
  428. package/dist/styles/tokens/glass-fx.css +122 -1
  429. package/dist/styles/tokens/glass.css +226 -34
  430. package/dist/styles/tokens/light-dark.css +3 -3
  431. package/dist/styles/tokens/offsets.css +27 -0
  432. package/dist/styles/tokens/property-regs.css +277 -0
  433. package/dist/styles/tokens/scale-paper.css +86 -30
  434. package/dist/styles/tokens/scheme-motion.css +106 -133
  435. package/dist/styles/tokens/scheme-spring.css +239 -0
  436. package/dist/styles/tokens/scroll-tokens.css +15 -15
  437. package/dist/styles/tokens/shadow.css +73 -13
  438. package/dist/styles/tokens/sizing-config.css +110 -0
  439. package/dist/styles/tokens/sizing.css +55 -104
  440. package/dist/styles/tokens.css +14 -2
  441. package/dist/styles/typography/semantic.css +18 -5
  442. package/dist/styles/utilities/a11y-overrides.css +20 -5
  443. package/dist/styles/utilities/base-misc.css +52 -0
  444. package/dist/styles/utilities/btn.css +84 -3
  445. package/dist/styles/utilities/components.css +31 -6
  446. package/dist/styles/utilities/metal.css +26 -0
  447. package/dist/switch.js +1 -1
  448. package/dist/tabs.js +199 -182
  449. package/dist/timeline.js +241 -206
  450. package/dist/toast.js +1 -1
  451. package/dist/toggle-chip.js +14 -41
  452. package/dist/toggle-group.js +1 -1
  453. package/dist/tooltip.js +1 -1
  454. package/dist/typewriter.js +2 -2
  455. package/dist/uniformBridgeWGPU-BCse1SHU.js +1268 -0
  456. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  457. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-22BcULzF.js} +41 -38
  458. package/dist/useControlSize-DAZ062x7.js +9 -0
  459. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  460. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-DGLSewwB.js} +4 -4
  461. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  462. package/dist/useFuzzySearch-0fTYOhS4.js +177 -0
  463. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  464. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  465. package/dist/useHaptic-CPz5BT9I.js +134 -0
  466. package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  467. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  468. package/dist/useMorphField-ogBM7ubT.js +141 -0
  469. package/dist/usePointerVelocityField-BrkqZFhj.js +91 -0
  470. package/dist/useScrollChrome-JuImi1DM.js +258 -0
  471. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-DFxtzmkR.js} +1 -1
  472. package/dist/useSpringPress-VM9RgVq3.js +36 -0
  473. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  474. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  475. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  476. package/dist/virtual.d.ts +1 -0
  477. package/dist/virtual.js +225 -0
  478. package/dist/watercolor-dot.js +107 -74
  479. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  480. package/package.json +140 -9
  481. package/src/styles/animations.css +13 -3
  482. package/src/styles/cards.css +271 -2
  483. package/src/styles/completion-seal.css +131 -0
  484. package/src/styles/configurator.css +221 -1
  485. package/src/styles/critical-partition.mjs +66 -11
  486. package/src/styles/dock/adaptive-legibility.css +119 -0
  487. package/src/styles/dock/cta-seat.css +87 -0
  488. package/src/styles/dock/density.css +167 -6
  489. package/src/styles/dock/fission-bridge.css +552 -0
  490. package/src/styles/dock/layers.css +90 -78
  491. package/src/styles/dock/morph-bridge.css +67 -18
  492. package/src/styles/dock/morph.css +57 -118
  493. package/src/styles/dock/overflow.css +12 -0
  494. package/src/styles/dock/search.css +68 -0
  495. package/src/styles/dock/shape.css +250 -0
  496. package/src/styles/dock/shell.css +24 -8
  497. package/src/styles/dock/stack-rail.css +352 -0
  498. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  499. package/src/styles/dock-controls/icon-button.css +46 -0
  500. package/src/styles/dock-controls/triggers.css +23 -1
  501. package/src/styles/dock-controls.css +18 -0
  502. package/src/styles/dock.css +27 -2
  503. package/src/styles/drawer.css +164 -0
  504. package/src/styles/glass/accent-tone.css +66 -0
  505. package/src/styles/glass/control-surfaces.css +167 -0
  506. package/src/styles/glass/glass-atom.css +244 -0
  507. package/src/styles/glass/glass-capsule.css +143 -0
  508. package/src/styles/glass/glass-chip.css +215 -0
  509. package/src/styles/glass/ladder.css +67 -17
  510. package/src/styles/glass/liquid-enter.css +252 -0
  511. package/src/styles/glass/liquid-morph.css +850 -0
  512. package/src/styles/glass/material.css +70 -1
  513. package/src/styles/glass/reveal.css +22 -2
  514. package/src/styles/glass/rim.css +31 -9
  515. package/src/styles/glass/surfaces.css +81 -150
  516. package/src/styles/glass.css +21 -0
  517. package/src/styles/icon-chip.css +45 -0
  518. package/src/styles/index.css +26 -0
  519. package/src/styles/jubilance.css +65 -0
  520. package/src/styles/motion/morph-field.css +229 -0
  521. package/src/styles/paper.css +230 -14
  522. package/src/styles/scroll-choreography.css +135 -78
  523. package/src/styles/scroll-chrome.css +123 -0
  524. package/src/styles/scroll-driven.css +38 -0
  525. package/src/styles/segmented-tabs.css +110 -36
  526. package/src/styles/select.css +151 -0
  527. package/src/styles/theme/bridges.css +22 -0
  528. package/src/styles/theme/radius.css +18 -1
  529. package/src/styles/tokens/color-radius.css +14 -4
  530. package/src/styles/tokens/dark-arm.css +94 -12
  531. package/src/styles/tokens/glass-deep.css +33 -4
  532. package/src/styles/tokens/glass-fx.css +122 -1
  533. package/src/styles/tokens/glass.css +226 -34
  534. package/src/styles/tokens/light-dark.css +3 -3
  535. package/src/styles/tokens/offsets.css +27 -0
  536. package/src/styles/tokens/property-regs.css +277 -0
  537. package/src/styles/tokens/scale-paper.css +86 -30
  538. package/src/styles/tokens/scheme-motion.css +106 -133
  539. package/src/styles/tokens/scheme-spring.css +239 -0
  540. package/src/styles/tokens/scroll-tokens.css +15 -15
  541. package/src/styles/tokens/shadow.css +73 -13
  542. package/src/styles/tokens/sizing-config.css +110 -0
  543. package/src/styles/tokens/sizing.css +55 -104
  544. package/src/styles/tokens.css +14 -2
  545. package/src/styles/typography/semantic.css +18 -5
  546. package/src/styles/utilities/a11y-overrides.css +20 -5
  547. package/src/styles/utilities/base-misc.css +52 -0
  548. package/src/styles/utilities/btn.css +84 -3
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +26 -0
  551. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  552. package/dist/DialogContent-DcKK8k9i.js +0 -103
  553. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  554. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  555. package/dist/Input-h9v5LeXf.js +0 -55
  556. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  557. package/dist/PaperBackdrop-Vf3tlpvd.js +0 -31
  558. package/dist/SelectScrollDownButton-CrA8F0iV.js +0 -252
  559. package/dist/Separator-pKF0oA4M.js +0 -37
  560. package/dist/Switch-CwYNf8bo.js +0 -47
  561. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  562. package/dist/badge-D9XWW4GT.js +0 -53
  563. package/dist/button-DYCUa-tH.js +0 -126
  564. package/dist/color-DweYl7pE.js +0 -86
  565. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -44
  566. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  567. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  568. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  569. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  570. package/dist/dockContext-BNfyPLe9.js +0 -17
  571. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  572. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  573. package/dist/slider-DVb4HXU-.js +0 -142
  574. package/dist/springPresets-CFQGQfdl.js +0 -40
  575. package/dist/styles/dock/rail-extend.css +0 -397
  576. package/dist/useLiquidPress-kfb4KX79.js +0 -39
  577. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  578. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  579. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  580. package/src/styles/dock/rail-extend.css +0 -397
  581. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  582. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  583. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  584. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  585. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-Dcczq44n.js} +0 -0
  586. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  587. /package/dist/{compile-CQEFRTmx.js → compile-INR_tPk_.js} +0 -0
  588. /package/dist/{constants-BPOqYJAm.js → constants-BWj7DkMn.js} +0 -0
  589. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  590. /package/dist/{math-BINYmg5z.js → math-5RcIgCB4.js} +0 -0
  591. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  592. /package/dist/{prng-Za0Rmgag.js → prng-B5tIXTtj.js} +0 -0
  593. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-B4HO9LXG.js} +0 -0
  594. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  595. /package/dist/{useInterval-CvK1mL92.js → useInterval-BVUI-sez.js} +0 -0
  596. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  597. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  598. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  599. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-A0M6qRl7.js} +0 -0
  600. /package/dist/{useSortable-DHjtZSEd.js → useSortable-DQV_UNDw.js} +0 -0
  601. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-Bma3UlKA.js} +0 -0
  602. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  603. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  604. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  605. /package/dist/{vReveal-Czsb7zQC.js → vReveal-CT1KtwZA.js} +0 -0
  606. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -9,11 +9,11 @@ type __VLS_ModelProps = {
9
9
  "open"?: boolean;
10
10
  };
11
11
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
- declare var __VLS_13: {}, __VLS_36: {};
12
+ declare var __VLS_35: {}, __VLS_64: {};
13
13
  type __VLS_Slots = {} & {
14
- default?: (props: typeof __VLS_13) => any;
14
+ default?: (props: typeof __VLS_35) => any;
15
15
  } & {
16
- action?: (props: typeof __VLS_36) => any;
16
+ action?: (props: typeof __VLS_64) => any;
17
17
  };
18
18
  declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
19
  "update:open": (value: boolean) => any;
@@ -4,8 +4,13 @@ declare const __VLS_export: import("vue").DefineComponent<ConstellationProps, im
4
4
  speed: number;
5
5
  count: number;
6
6
  opacityCeiling: number;
7
+ parallax: number;
7
8
  pointerReactive: boolean;
8
9
  warpOnClick: boolean;
10
+ wander: boolean | {
11
+ minIdle?: number;
12
+ jitter?: number;
13
+ };
9
14
  gravityWell: boolean | {
10
15
  holdMs?: number;
11
16
  gain?: number;
@@ -14,10 +19,6 @@ declare const __VLS_export: import("vue").DefineComponent<ConstellationProps, im
14
19
  maxSpeed?: number;
15
20
  soften?: number;
16
21
  };
17
- wander: boolean | {
18
- minIdle?: number;
19
- jitter?: number;
20
- };
21
22
  pinned: boolean | number;
22
23
  accentEdges: boolean;
23
24
  pinnedDrift: boolean | {
@@ -0,0 +1,10 @@
1
+ import type { WebGLCanvasFrame } from "../../../../composables/glass/webgl/useWebGLCanvas";
2
+ import type { ConstellationRenderState } from "./constellationWGPUSetup";
3
+ export interface ConstellationGLSetupDeps {
4
+ canvas: HTMLCanvasElement;
5
+ resolveFrame: (timeSec: number) => ConstellationRenderState | null;
6
+ onResize?: (w: number, h: number) => void;
7
+ shouldContinue: () => boolean;
8
+ }
9
+ /** Build the `setupGL(gl)` callback the `createGpuSubstrate` WebGL2 path invokes. */
10
+ export declare function createConstellationGLSetup(deps: ConstellationGLSetupDeps): (gl: WebGL2RenderingContext) => WebGLCanvasFrame;
@@ -0,0 +1,19 @@
1
+ import type { WebGPUCanvasFrame } from "../../../../composables/glass/webgpu/useWebGPUCanvas";
2
+ import { type ConstellationUniformValues, type PackedNode, type PackedEdge } from "./uniformBridgeWGPU";
3
+ /** The per-frame render state the renderer resolves (the stepped field → packed rows). */
4
+ export interface ConstellationRenderState {
5
+ nodes: PackedNode[];
6
+ edges: PackedEdge[];
7
+ uniforms: ConstellationUniformValues;
8
+ }
9
+ export interface ConstellationWGPUSetupDeps {
10
+ canvas: HTMLCanvasElement;
11
+ /** Advance the field + the shared pointer field one renderer frame, return the packed render state. */
12
+ resolveFrame: (timeSec: number) => ConstellationRenderState | null;
13
+ /** Size the canvas backing store (returns the resolved backing-store [w,h] in device px). */
14
+ onResize?: (w: number, h: number) => void;
15
+ /** Demand-gate (the renderer's quiescence layer — substrate-agnostic). */
16
+ shouldContinue: () => boolean;
17
+ }
18
+ /** Build the constellation `setupWGPU(device, context, format)` callback. */
19
+ export declare function createConstellationWGPUSetup(deps: ConstellationWGPUSetupDeps): (device: GPUDevice, context: GPUCanvasContext, format: GPUTextureFormat) => WebGPUCanvasFrame;
@@ -0,0 +1,66 @@
1
+ /** Floats per node row (one vec4). */
2
+ export declare const NODE_FLOATS = 4;
3
+ /** Bytes per node row. */
4
+ export declare const NODE_BYTES: number;
5
+ /** The pre-sized node storage buffer byte length. */
6
+ export declare const NODES_BUFFER_BYTES: number;
7
+ /** Floats per edge row (2 vec4s). */
8
+ export declare const EDGE_FLOATS = 8;
9
+ /** Bytes per edge row. */
10
+ export declare const EDGE_BYTES: number;
11
+ /** The pre-sized edge storage buffer byte length. */
12
+ export declare const EDGES_BUFFER_BYTES: number;
13
+ export declare const CONSTELLATION_UNIFORM_BYTES = 112;
14
+ export interface ConstellationUniformScratch {
15
+ buffer: ArrayBuffer;
16
+ f32: Float32Array;
17
+ }
18
+ export declare function createConstellationScratch(): ConstellationUniformScratch;
19
+ /** The per-frame uniform values the render reads (resolved JS-side). */
20
+ export interface ConstellationUniformValues {
21
+ resolutionX: number;
22
+ resolutionY: number;
23
+ dpr: number;
24
+ kVis: number;
25
+ time: number;
26
+ lineWidth: number;
27
+ opacityCeiling: number;
28
+ /** The field-yields-to-type `--constellation-alpha` global dimmer. */
29
+ alpha: number;
30
+ edgeAlpha: number;
31
+ edgeFocusAlpha: number;
32
+ edgeAccentAlpha: number;
33
+ edgeFloor: number;
34
+ /** Premultiplied-ready RGBA (`[0,1]`) — `node`/`nodeDim`/`line`/`accent`. */
35
+ node: [number, number, number, number];
36
+ nodeDim: [number, number, number, number];
37
+ line: [number, number, number, number];
38
+ accent: [number, number, number, number];
39
+ }
40
+ /** Pack the constellation uniforms in place. */
41
+ export declare function packConstellationUniforms(scratch: ConstellationUniformScratch, v: ConstellationUniformValues): ConstellationUniformScratch;
42
+ /** A pre-sized node scratch (`MAX_NODES` rows × NODE_FLOATS). */
43
+ export declare function createNodeScratch(): Float32Array;
44
+ /** A pre-sized edge scratch (`E_MAX` rows × EDGE_FLOATS). */
45
+ export declare function createEdgeScratch(): Float32Array;
46
+ /** A packed node row in screen-px: `(x, y, radius, dim)`. */
47
+ export interface PackedNode {
48
+ x: number;
49
+ y: number;
50
+ r: number;
51
+ dim: number;
52
+ }
53
+ /** Pack `count` node rows into the scratch (clamped to MAX_NODES). Returns the count packed. */
54
+ export declare function packNodes(scratch: Float32Array, nodes: readonly PackedNode[]): number;
55
+ /** A packed edge row: `(ax, ay, bx, by, alpha, accent, focus)`. */
56
+ export interface PackedEdge {
57
+ ax: number;
58
+ ay: number;
59
+ bx: number;
60
+ by: number;
61
+ alpha: number;
62
+ accent: number;
63
+ focus: number;
64
+ }
65
+ /** Pack `count` edge rows into the scratch (clamped to E_MAX). Returns the count packed. */
66
+ export declare function packEdges(scratch: Float32Array, edges: readonly PackedEdge[]): number;
@@ -1,9 +1,12 @@
1
1
  import { type Ref } from "vue";
2
+ import { type GpuBackend } from "../../../../composables/glass/webgpu/useGpuSubstrate";
2
3
  import { type ConstellationField, type ConstellationProps } from "../constellationField";
3
4
  /** The imperative seam the SFC re-exposes via `defineExpose`. */
4
5
  export interface ConstellationExpose {
5
6
  field: ConstellationField;
6
7
  isFrozen: Ref<boolean>;
8
+ /** The resolved backend (`"webgpu"` where supported, else the WebGL2 instanced twin). */
9
+ backend: () => GpuBackend;
7
10
  warpTo(a: {
8
11
  x: number;
9
12
  y: number;
@@ -13,14 +16,4 @@ export interface ConstellationExpose {
13
16
  warpSettled(): boolean;
14
17
  pinNode(idx: number): void;
15
18
  }
16
- /**
17
- * Drive a `<Constellation>` instance. `props` is the REACTIVE (defaulted) prop
18
- * surface — the per-frame live-read props (`pointerReactive`/`opacityCeiling`/
19
- * `accentEdges`/`drawOverlay`) are read off `props.x` INSIDE the render loop so a
20
- * bound `:opacity-ceiling` updates without a remount (the Vue 3.5 reactive-prop
21
- * read; the SFC `defineProps` destructure transform does not reach a composable
22
- * argument, so the live reads stay on `props`). `hostRef`/`canvasRef` are the SFC
23
- * template refs. Returns the imperative expose object the SFC spreads into
24
- * `defineExpose`.
25
- */
26
19
  export declare function useConstellation(props: ConstellationProps, hostRef: Ref<HTMLElement | null>, canvasRef: Ref<HTMLCanvasElement | null>): ConstellationExpose;
@@ -59,3 +59,36 @@ export declare const DEFAULT_PINNED_DRIFT_JITTER = 8000;
59
59
  * ≥ ~0.72·BASE_WIDTH ≈ 922px (incl. the 1280 export frame — byte-identical
60
60
  * there by construction); below it the marks stop crushing sub-pixel. */
61
61
  export declare const DEFAULT_K_FLOOR = 0.72;
62
+ /**
63
+ * The maximum node count the points/edges buffers pre-size for (the slider cap — a count
64
+ * above this is clamped at upload). ≫ this BOOKS the compute neighbor-bin path.
65
+ */
66
+ export declare const MAX_NODES = 256;
67
+ /**
68
+ * The per-node max degree budget — the edge buffer is pre-sized at `MAX_NODES · MAX_DEGREE`
69
+ * so the CPU all-pairs scan never overflows it (a denser-than-degree neighborhood drops the
70
+ * weakest edges, never re-allocates). 12 is a generous incident-edge ceiling for a
71
+ * distance-threshold ε-proximity graph at the default link/count.
72
+ */
73
+ export declare const MAX_DEGREE = 12;
74
+ /** The pre-sized edge instance budget (`MAX_NODES · MAX_DEGREE`). */
75
+ export declare const E_MAX: number;
76
+ /**
77
+ * The pointer-parallax depth default (§6). Each node carries a seeded depth `z ∈ [0,1]`;
78
+ * the pointer offsets node screen positions by `parallax · z · (pointer − center)` — a
79
+ * cheap pointer-parallax giving the flat lattice apparent depth (the Awwwards "living
80
+ * network" register). Additive default-on at a SUB-PERCEPTUAL 0.08 (a hair of depth, not a
81
+ * behavior break). 0 = the flat lattice (no parallax).
82
+ */
83
+ export declare const DEFAULT_PARALLAX = 0.08;
84
+ /**
85
+ * The base node radius band (CSS px) the DPR-aware SDF circle sizes within (the §1 "Node
86
+ * size" config axis). `seedField` rolls each node's radius in `[NODE_R_MIN, NODE_R_MIN +
87
+ * NODE_R_SPREAD)` (the prior `1.6 + rng()*1.6` band, named); the WGSL/GLSL fragment SDF
88
+ * sizes `half = radius · uKVis · uDpr / uResolution` so the disc samples at full device
89
+ * resolution and is AA'd by the pixel-footprint derivative — crisp at ANY DPR.
90
+ */
91
+ export declare const NODE_R_MIN = 1.6;
92
+ export declare const NODE_R_SPREAD = 1.6;
93
+ /** The hairline edge half-width (CSS px) the instanced segment-quad fragment AAs. */
94
+ export declare const DEFAULT_LINE_WIDTH = 1;
@@ -39,4 +39,34 @@ export declare function refitField(field: ConstellationField, prevW: number, pre
39
39
  * `setWarpTarget` to a random node when it elapses AND the spring has settled
40
40
  * (a click-warp in flight pre-empts the cadence — `warpSettled` reports false).
41
41
  */
42
- export declare function stepField(field: ConstellationField, k: number, speed: number, pointer: ConstellationPointer | null, dt?: number, now?: number, rng?: () => number): void;
42
+ export declare function stepField(field: ConstellationField, k: number, speed: number, pointer: ConstellationPointer | null, dt?: number, now?: number, rng?: () => number, pointerVel?: ConstellationPointer | null): void;
43
+ import type { ConstellationEdge } from "./constellationTypes";
44
+ /**
45
+ * Scan the proximity graph and return its edge SET (the `1 − d²/reach²` distance-falloff
46
+ * weight per pair within `reach = link·k`). `accentIndex ≥ 0` marks the edges incident on
47
+ * that node (the flagged-node tether). Pure + node-testable; the render loop calls it each
48
+ * frame and uploads the result to the instanced-lines storage buffer.
49
+ *
50
+ * `eMax` caps the result (the pre-sized buffer budget). When the scan would exceed it, the
51
+ * WEAKEST overflow edges are dropped (a denser-than-budget neighborhood keeps its strongest
52
+ * links — never re-allocates the GPU buffer mid-frame).
53
+ */
54
+ export declare function buildEdges(field: ConstellationField, link: number, accentIndex?: number, eMax?: number): ConstellationEdge[];
55
+ /**
56
+ * Append the POINTER-WEB tether edges to an existing edge set (the `drawPointerWeb` math
57
+ * relocated): the cursor is a "virtual node" whose incident edges (to every node within
58
+ * `reach`) carry `focus = 1` (the render strokes them at the focus alpha). No-op when the
59
+ * pointer is inactive (`x < 0`). The `eMax` budget is shared with the ambient set.
60
+ */
61
+ export declare function appendPointerWeb(edges: ConstellationEdge[], field: ConstellationField, link: number, pointer: ConstellationPointer | null, eMax?: number): void;
62
+ /**
63
+ * The parallax-offset SCREEN position for a node (§6). Offsets the node by
64
+ * `parallax · z · (pointer − center)` — a cheap pointer-parallax giving the flat lattice
65
+ * apparent depth (deeper nodes — higher `z` — shift more, the Awwwards "living network"
66
+ * register). When the pointer is inactive the offset is 0 (the flat lattice). Pure; the
67
+ * render loop maps each node's `(x,y)` through this before writing the GPU position buffer.
68
+ */
69
+ export declare function parallaxNodePos(node: ConstellationNode, pointer: ConstellationPointer | null, w: number, h: number, parallax: number): {
70
+ x: number;
71
+ y: number;
72
+ };
@@ -19,20 +19,7 @@ export declare function readInteractionConfig(canvas: HTMLCanvasElement): {
19
19
  jitter: number;
20
20
  };
21
21
  };
22
- /**
23
- * Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
24
- * composed inside `stepField` (NO new rAF): ease `well.strength` toward
25
- * `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
26
- * inverse-square pull toward the held point onto each node within `cfg.reach`
27
- * (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
28
- * clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
29
- * invariant — so a released well re-settles). No-ops (entirely skipped) when
30
- * `field.well` is undefined → the default render is byte-identical to HEAD.
31
- *
32
- * `dt` is clamped to {@link WARP_DT_CLAMP} (the same park-resume guard the warp
33
- * uses) so a tab-throttle gap cannot slingshot the field in one giant step.
34
- */
35
- export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
22
+ export { stepWell } from "./constellationWell";
36
23
  /**
37
24
  * The nearest DRIFTING node to `(px, py)` in canvas-local px — a linear O(count)
38
25
  * min-d² scan (count 64 default — negligible; matches the O(count²) edge pass).
@@ -130,3 +117,25 @@ export declare function makePinnedDrift(override?: {
130
117
  * rests at the leg's end, the next leg arming after `minIdle + rng()*jitter`.
131
118
  */
132
119
  export declare function stepPinnedDrift(field: ConstellationField, now: number, rng: () => number): void;
120
+ /** The flick-burst threshold (the shared usePointerVelocityField `burst` 0..1) above which
121
+ * a fast flick fires the focal warp + a transient ripple (a slow drag never fires). */
122
+ export declare const BURST_FIRE_THRESHOLD = 0.45;
123
+ /**
124
+ * Fire a focal BURST off a flick (the §E "reads velocity AND acceleration" mandate). A high
125
+ * `burst` (from the shared `usePointerVelocityField`, the eased flick impulse) warps the
126
+ * focal node toward the cursor (the warp spring snaps it) AND drops an expanding ripple at
127
+ * the focal — the lattice "snaps the focal toward the cursor and drops an expanding ring"
128
+ * (the WGSL ripple instance / the accent-ring overlay). A slow drag (`burst` below the
129
+ * threshold) never fires (a steady hover is the gentle gather, not a snap). Returns true
130
+ * when a burst fired. Composes the EXISTING `warpTo` + the ripple list — no new mechanic,
131
+ * no second rAF (the warp rides the substrate's ONE clock); PRM is enforced by the CALLER
132
+ * (the shared field's `tick(0)` zeroes `burst` under reduce, so this never fires).
133
+ */
134
+ export declare function fireBurst(field: ConstellationField, pointer: {
135
+ x: number;
136
+ y: number;
137
+ }, burst: number, ripples: {
138
+ x: number;
139
+ y: number;
140
+ start: number;
141
+ }[]): boolean;
@@ -0,0 +1,25 @@
1
+ import type { ConstellationField, ConstellationPalette } from "./constellationField";
2
+ import { DEFAULT_PALETTE } from "./constants";
3
+ /** R5-8 — the visual-SIZE draw scale: `max(k, kFloor)`. The instanced disc/segment
4
+ * geometry sizes on this; positions/reach stay on TRUE `field.k`. Exported so a
5
+ * consumer skin floors its own marks on the same axis. */
6
+ export declare function kVisOf(field: ConstellationField): number;
7
+ export { DEFAULT_PALETTE };
8
+ /**
9
+ * Resolve the FULL neutral palette + legibility weights off a canvas's resolved custom
10
+ * properties (the `--constellation-*` set). The colors AND the alpha multipliers route
11
+ * through the same `getComputedStyle` probe, so a dark-mode flip re-resolves BOTH the
12
+ * `:root`/`.dark` color arms AND the per-mode alpha defaults in one read. SSR-safe
13
+ * (returns the warm-cream defaults with no `window`).
14
+ */
15
+ export declare function readPalette(canvas: HTMLCanvasElement): ConstellationPalette;
16
+ /**
17
+ * Parse a CSS color string (the `--constellation-*` hsl/hex literals the palette carries)
18
+ * into a linear-ish premultiplied-ready RGBA in `[0,1]` for the GPU uniform write. A small
19
+ * sRGB parser: it reads `#rgb`/`#rrggbb`/`#rrggbbaa`, `rgb()/rgba()`, and `hsl()/hsla()` —
20
+ * the forms the `--constellation-*` token authoring uses (PLAIN-hsl per arm). The shader
21
+ * outputs premultiplied alpha over the transparent clear, so the render loop multiplies the
22
+ * `a` into the uniform color at upload (kept here so there is ONE color parse seam). Falls
23
+ * back to opaque warm-ink on an unparseable value (never a NaN garbage write).
24
+ */
25
+ export declare function parseColorRGBA(input: string): [number, number, number, number];
@@ -5,6 +5,35 @@ export interface ConstellationNode {
5
5
  vy: number;
6
6
  r: number;
7
7
  dim: boolean;
8
+ /**
9
+ * BC.W-VIZ-CONSTELLATION — the seeded parallax DEPTH (`z ∈ [0,1]`, §6). The pointer
10
+ * offsets the node's SCREEN position by `parallax · z · (pointer − center)` so the flat
11
+ * lattice reads as having depth (the Awwwards "living network" register). Seeded in
12
+ * `seedField`; perturbs the GPU node-position write only (never a layout property). A
13
+ * field literal that omits it is treated as `z = 0.5` (the mid-plane, no parallax bias).
14
+ */
15
+ z?: number;
16
+ }
17
+ /**
18
+ * BC.W-VIZ-CONSTELLATION — ONE edge of the proximity graph, the row the CPU all-pairs scan
19
+ * (`buildEdges`) writes each frame into the instanced-lines storage buffer. `a`/`b` are the
20
+ * two endpoint positions in canvas-local CSS px; `alpha` is the distance-falloff weight
21
+ * (`1 − d²/reach²`, the `drawEdges` math) the segment-quad fragment multiplies; `accent`
22
+ * (0/1) flags the accented-node tether (the flagged-node edge tint); `focus` (0/1) flags
23
+ * the pointer-web tether (the cursor's incident edges). The WGSL/GLSL render transcribes
24
+ * the SHAPE, never re-derives the scan (the ONE math source stays JS).
25
+ */
26
+ export interface ConstellationEdge {
27
+ ax: number;
28
+ ay: number;
29
+ bx: number;
30
+ by: number;
31
+ /** The distance-falloff weight `1 − d²/reach²` (the drawEdges math). */
32
+ alpha: number;
33
+ /** 1 when the edge is incident on the accented node (the tether tint), else 0. */
34
+ accent: number;
35
+ /** 1 when the edge is a pointer-web tether (the cursor's incident edge), else 0. */
36
+ focus: number;
8
37
  }
9
38
  export interface ConstellationRipple {
10
39
  x: number;
@@ -274,6 +303,15 @@ export interface ConstellationProps {
274
303
  link?: number;
275
304
  /** Drift speed. Default 0.16. */
276
305
  speed?: number;
306
+ /**
307
+ * BC.W-VIZ-CONSTELLATION (§6) — the pointer-PARALLAX depth. Each node carries a seeded
308
+ * depth `z ∈ [0,1]`; the pointer offsets node screen positions by `parallax · z ·
309
+ * (pointer − center)` so the flat lattice reads as having depth (the Awwwards "living
310
+ * network" register). Additive default-on at a SUB-PERCEPTUAL 0.08 (a hair of depth, not
311
+ * a behavior break); 0 = the flat lattice. GPU-only (perturbs the node-position write,
312
+ * never a layout property). Frozen under reduced-motion / `freeze`.
313
+ */
314
+ parallax?: number;
277
315
  /**
278
316
  * AY.W-COHERE E3 — the per-instance outer-envelope RECESSION knob (the aurora
279
317
  * `opacityCeiling` / fourier `intensity` sibling — ONE recession vocabulary
@@ -0,0 +1,15 @@
1
+ import type { ConstellationField } from "./constellationField";
2
+ /**
3
+ * Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
4
+ * composed inside `stepField` (NO new rAF): ease `well.strength` toward
5
+ * `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
6
+ * inverse-square pull toward the held point onto each node within `cfg.reach`
7
+ * (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
8
+ * clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
9
+ * invariant — so a released well re-settles). No-ops (entirely skipped) when
10
+ * `field.well` is undefined → the default render is byte-identical to HEAD.
11
+ *
12
+ * `dt` is clamped to {@link WELL_DT_CLAMP} (the same park-resume guard the warp
13
+ * uses) so a tab-throttle gap cannot slingshot the field in one giant step.
14
+ */
15
+ export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
@@ -1,6 +1,6 @@
1
1
  export { default as Constellation } from "./Constellation.vue";
2
- export { seedField, stepField, refitField, BASE_WIDTH, } from "./constellationField";
3
- export { DEFAULT_K_FLOOR } from "./constants";
4
- export { stepWell, nearestNode, readInteractionConfig, warpStep, warpTo, setWarpTarget, warpSettled, pickWanderTarget, stepPinnedDrift, makePinnedDrift, DEFAULT_WELL_CONFIG, DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_PINNED_DRIFT_FRAC, DEFAULT_PINNED_DRIFT_DUR, DEFAULT_PINNED_DRIFT_IDLE, DEFAULT_PINNED_DRIFT_JITTER, WARP_RESPONSE, WARP_ZETA, } from "./constellationInteraction";
5
- export { kVisOf, readPalette, drawEdges, drawNodes, drawPointerWeb, drawRipples, DEFAULT_PALETTE, } from "./constellationDraw";
6
- export type { ConstellationNode, ConstellationRipple, ConstellationPointer, ConstellationPalette, ConstellationField, ConstellationWarp, ConstellationWarpConfig, ConstellationWander, ConstellationWell, ConstellationWellConfig, ConstellationPinnedDrift, ConstellationProps, } from "./constellationTypes";
2
+ export { seedField, stepField, refitField, buildEdges, appendPointerWeb, parallaxNodePos, BASE_WIDTH, } from "./constellationField";
3
+ export { DEFAULT_K_FLOOR, DEFAULT_PARALLAX, MAX_NODES, MAX_DEGREE, E_MAX, } from "./constants";
4
+ export { stepWell, nearestNode, readInteractionConfig, warpStep, warpTo, setWarpTarget, warpSettled, pickWanderTarget, stepPinnedDrift, makePinnedDrift, DEFAULT_WELL_CONFIG, DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_PINNED_DRIFT_FRAC, DEFAULT_PINNED_DRIFT_DUR, DEFAULT_PINNED_DRIFT_IDLE, DEFAULT_PINNED_DRIFT_JITTER, WARP_RESPONSE, WARP_ZETA, fireBurst, BURST_FIRE_THRESHOLD, } from "./constellationInteraction";
5
+ export { kVisOf, readPalette, parseColorRGBA, DEFAULT_PALETTE, } from "./constellationRender";
6
+ export type { ConstellationNode, ConstellationEdge, ConstellationRipple, ConstellationPointer, ConstellationPalette, ConstellationField, ConstellationWarp, ConstellationWarpConfig, ConstellationWander, ConstellationWell, ConstellationWellConfig, ConstellationPinnedDrift, ConstellationProps, } from "./constellationTypes";
@@ -0,0 +1,2 @@
1
+ export declare const CONSTELLATION_LINES_VERT_GLSL = "#version 300 es\nprecision highp float;\n\n// per-instance edge rows \u2014 vertexAttribDivisor(1).\nlayout(location = 0) in vec4 aAB; // (a.x, a.y, b.x, b.y)\nlayout(location = 1) in vec4 aW; // (alpha, accent, focus, _pad)\n\nuniform vec2 uResolution;\nuniform float uDpr;\nuniform float uKVis;\nuniform float uLineWidth;\n\nout float vLineCoord;\nout float vAlpha;\nout float vAccent;\nout float vFocus;\n\nvoid main() {\n vec2 quad[6] = vec2[6](\n vec2(-1.0, -1.0), vec2(1.0, -1.0), vec2(-1.0, 1.0),\n vec2(-1.0, 1.0), vec2(1.0, -1.0), vec2(1.0, 1.0)\n );\n vec2 alongQuad = quad[gl_VertexID];\n\n vec2 a = aAB.xy;\n vec2 b = aAB.zw;\n vec2 dir = normalize(b - a + vec2(1e-6, 0.0));\n vec2 ortho = vec2(-dir.y, dir.x);\n // accent tether reads a touch heavier (1.1\u00D7).\n float halfWPx = uLineWidth * uKVis * uDpr * 0.5 * mix(1.0, 1.1, aW.y);\n vec2 p = mix(a, b, alongQuad.x * 0.5 + 0.5) + ortho * alongQuad.y * halfWPx;\n\n vec2 ndc = vec2(\n p.x / max(uResolution.x, 1.0) * 2.0 - 1.0,\n 1.0 - p.y / max(uResolution.y, 1.0) * 2.0\n );\n\n gl_Position = vec4(ndc, 0.0, 1.0);\n vLineCoord = alongQuad.y;\n vAlpha = aW.x;\n vAccent = aW.y;\n vFocus = aW.z;\n}\n";
2
+ export declare const CONSTELLATION_LINES_FRAG_GLSL = "#version 300 es\nprecision highp float;\n\nuniform vec4 uLine; // premultiplied-ready rgba\nuniform vec4 uAccent;\nuniform float uAlphaGlobal; // --constellation-alpha\nuniform float uOpacityCeiling;\nuniform float uEdgeAlpha;\nuniform float uEdgeFocusAlpha;\nuniform float uEdgeAccentAlpha;\nuniform float uEdgeFloor;\n\nin float vLineCoord;\nin float vAlpha;\nin float vAccent;\nin float vFocus;\nout vec4 fragColor;\n\nvoid main() {\n float aaBand = 0.6;\n float cross = 1.0 - smoothstep(1.0 - aaBand, 1.0, abs(vLineCoord));\n if (cross <= 0.0) { discard; }\n\n float dim = uAlphaGlobal * uOpacityCeiling;\n vec4 col = uLine;\n float weight = (uEdgeAlpha * vAlpha + uEdgeFloor) * dim;\n if (vAccent > 0.5) {\n col = uAccent;\n weight = uEdgeAccentAlpha * vAlpha * dim;\n } else if (vFocus > 0.5) {\n col = uLine;\n weight = uEdgeFocusAlpha * uAlphaGlobal * uOpacityCeiling * vAlpha;\n }\n\n float a = col.a * weight * cross;\n if (a <= 0.0) { discard; }\n fragColor = vec4(col.rgb * a, a);\n}\n";
@@ -0,0 +1 @@
1
+ export declare const CONSTELLATION_LINES_WGSL = "\nstruct Edge {\n // vec4 0: (a.x, a.y, b.x, b.y)\n ab: vec4<f32>,\n // vec4 1: (alpha, accent, focus, _pad)\n w: vec4<f32>,\n};\n\nstruct ConstellationUniforms {\n // u0: (resolution.x, resolution.y, dpr, kVis)\n u0: vec4<f32>,\n // u1: (time, lineWidth, opacityCeiling, alpha)\n u1: vec4<f32>,\n // uEdge: (edgeAlpha, edgeFocusAlpha, edgeAccentAlpha, edgeFloor)\n uEdge: vec4<f32>,\n uNode: vec4<f32>,\n uNodeDim: vec4<f32>,\n uLine: vec4<f32>,\n uAccent: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u: ConstellationUniforms;\n@group(0) @binding(1) var<storage, read> edges: array<Edge>;\n\nstruct VSOut {\n @builtin(position) pos: vec4<f32>,\n @location(0) lineCoord: f32, // [-1,1] cross-line \u2192 fragment AA\n @location(1) alpha: f32, // distance-falloff weight\n @location(2) accent: f32, // accent flag (the flagged-node tether tint)\n @location(3) focus: f32, // focus flag (the pointer-web tether)\n};\n\n@vertex\nfn vs_main(\n @builtin(vertex_index) vIdx: u32,\n @builtin(instance_index) iIdx: u32,\n) -> VSOut {\n var QUAD = array<vec2<f32>, 6>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(1.0, -1.0), vec2<f32>(-1.0, 1.0),\n vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, -1.0), vec2<f32>(1.0, 1.0),\n );\n let alongQuad = QUAD[vIdx];\n\n let e = edges[iIdx];\n let a = e.ab.xy;\n let b = e.ab.zw;\n let res = u.u0.xy;\n let dpr = u.u0.z;\n let kVis = u.u0.w;\n let lineW = u.u1.y;\n\n // Screen-space segment direction + orthogonal (the half-width offset axis).\n let dir = normalize(b - a + vec2<f32>(1e-6, 0.0));\n let ortho = vec2<f32>(-dir.y, dir.x);\n // Lerp along the segment (alongQuad.x \u2208 [-1,1] \u2192 [0,1]); offset by ortho \u00D7 half-width.\n // The accent tether reads a touch heavier (1.1\u00D7 the neutral width).\n let halfWPx = lineW * kVis * dpr * 0.5 * mix(1.0, 1.1, e.w.y);\n let p = mix(a, b, alongQuad.x * 0.5 + 0.5) + ortho * (alongQuad.y) * halfWPx;\n\n // px (y-down) \u2192 clip (y-up).\n let ndc = vec2<f32>(\n p.x / max(res.x, 1.0) * 2.0 - 1.0,\n 1.0 - p.y / max(res.y, 1.0) * 2.0,\n );\n\n var out: VSOut;\n out.pos = vec4<f32>(ndc, 0.0, 1.0);\n out.lineCoord = alongQuad.y;\n out.alpha = e.w.x;\n out.accent = e.w.y;\n out.focus = e.w.z;\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4<f32> {\n // Cross-line AA \u2014 a smoothstep on |lineCoord| so the hairline edge is crisp.\n let aaBand = 0.6;\n let cross = 1.0 - smoothstep(1.0 - aaBand, 1.0, abs(in.lineCoord));\n if (cross <= 0.0) { discard; }\n\n let dim = u.u1.w * u.u1.z; // alpha \u00B7 opacityCeiling\n // Resolve the edge class: accent tether \u00B7 focus pointer-web \u00B7 neutral ambient.\n var col = u.uLine;\n var weight = (u.uEdge.x * in.alpha + u.uEdge.w) * dim; // edgeAlpha\u00B7falloff + edgeFloor\n if (in.accent > 0.5) {\n col = u.uAccent;\n weight = u.uEdge.z * in.alpha * dim; // edgeAccentAlpha\n } else if (in.focus > 0.5) {\n col = u.uLine;\n weight = u.uEdge.y * u.u1.w * u.u1.z * in.alpha; // edgeFocusAlpha \u00B7 alpha \u00B7 ceiling\n }\n\n let a = col.a * weight * cross;\n if (a <= 0.0) { discard; }\n return vec4<f32>(col.rgb * a, a);\n}\n";
@@ -0,0 +1,2 @@
1
+ export declare const CONSTELLATION_POINTS_VERT_GLSL = "#version 300 es\nprecision highp float;\n\n// per-instance node row (x, y, radius, dim) \u2014 vertexAttribDivisor(1).\nlayout(location = 0) in vec4 aNode;\n\nuniform vec2 uResolution;\nuniform float uDpr;\nuniform float uKVis;\n\nout vec2 vUv; // [-1,1] billboard-local \u2192 fragment SDF coord\nout float vDim;\n\nvoid main() {\n // Two-triangle quad corners (the SAME order as the WGSL QUAD).\n vec2 quad[6] = vec2[6](\n vec2(-1.0, -1.0), vec2(1.0, -1.0), vec2(-1.0, 1.0),\n vec2(-1.0, 1.0), vec2(1.0, -1.0), vec2(1.0, 1.0)\n );\n vec2 corner = quad[gl_VertexID];\n\n vec2 centerPx = aNode.xy;\n // px (y-down) \u2192 clip (y-up).\n vec2 centerNdc = vec2(\n centerPx.x / max(uResolution.x, 1.0) * 2.0 - 1.0,\n 1.0 - centerPx.y / max(uResolution.y, 1.0) * 2.0\n );\n // half-extent: radius\u00B7kVis CSS px \u2192 backing-store px (\u00B7dpr) \u2192 NDC half (\u00B72/res).\n // (half is a GLSL reserved word \u2014 name it halfExt.)\n float radPx = aNode.z * uKVis * uDpr;\n vec2 halfExt = vec2(\n radPx / max(uResolution.x, 1.0) * 2.0,\n radPx / max(uResolution.y, 1.0) * 2.0\n );\n\n gl_Position = vec4(centerNdc + corner * halfExt, 0.0, 1.0);\n vUv = corner;\n vDim = aNode.w;\n}\n";
2
+ export declare const CONSTELLATION_POINTS_FRAG_GLSL = "#version 300 es\nprecision highp float;\n\nuniform vec4 uNode; // premultiplied-ready rgba\nuniform vec4 uNodeDim;\nuniform float uOpacityCeiling;\n\nin vec2 vUv;\nin float vDim;\nout vec4 fragColor;\n\nvoid main() {\n // SDF: distance to the unit-circle edge (0 at the rim, neg inside).\n float d = length(vUv) - 1.0;\n // fwidth(d) \u2014 the pixel footprint, the resolution-independent AA width.\n float aa = max(fwidth(d), 1e-4);\n float coverage = 1.0 - smoothstep(-aa, aa, d);\n if (coverage <= 0.0) { discard; }\n vec4 col = mix(uNode, uNodeDim, vDim);\n float a = col.a * coverage * uOpacityCeiling;\n fragColor = vec4(col.rgb * a, a); // premultiplied\n}\n";
@@ -0,0 +1 @@
1
+ export declare const CONSTELLATION_POINTS_WGSL = "\n// \u2500\u2500 Node storage row + uniforms (the typed-struct source-of-truth \u2014 uniformBridgeWGPU.ts) \u2500\u2500\nstruct Node {\n // (pos.x, pos.y, radius, dim)\n data: vec4<f32>,\n};\n\nstruct ConstellationUniforms {\n // u0: (resolution.x, resolution.y, dpr, kVis)\n u0: vec4<f32>,\n // u1: (time, lineWidth, opacityCeiling, alpha)\n u1: vec4<f32>,\n // uEdge: (edgeAlpha, edgeFocusAlpha, edgeAccentAlpha, edgeFloor)\n uEdge: vec4<f32>,\n // colours (premultiplied-ready rgba)\n uNode: vec4<f32>,\n uNodeDim: vec4<f32>,\n uLine: vec4<f32>,\n uAccent: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u: ConstellationUniforms;\n@group(0) @binding(1) var<storage, read> nodes: array<Node>;\n\nstruct VSOut {\n @builtin(position) pos: vec4<f32>,\n @location(0) uv: vec2<f32>, // [-1,1] billboard-local \u2192 fragment SDF coord\n @location(1) dim: f32, // 0 = full node, 1 = dim node\n};\n\n@vertex\nfn vs_main(\n @builtin(vertex_index) vIdx: u32,\n @builtin(instance_index) iIdx: u32,\n) -> VSOut {\n // Two-triangle quad corners in billboard-local space.\n var QUAD = array<vec2<f32>, 6>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(1.0, -1.0), vec2<f32>(-1.0, 1.0),\n vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, -1.0), vec2<f32>(1.0, 1.0),\n );\n let corner = QUAD[vIdx];\n\n let node = nodes[iIdx].data;\n let res = u.u0.xy;\n let dpr = u.u0.z;\n let kVis = u.u0.w;\n\n // center: node px \u2192 clip space (y-flip \u2014 px is y-down, clip is y-up).\n let centerPx = node.xy;\n let centerNdc = vec2<f32>(\n centerPx.x / max(res.x, 1.0) * 2.0 - 1.0,\n 1.0 - centerPx.y / max(res.y, 1.0) * 2.0,\n );\n // half-extent: radius\u00B7kVis in CSS px \u2192 backing-store px (\u00B7dpr) \u2192 NDC half (\u00B72/res).\n // (the DPR-aware crispness leg \u2014 the disc samples at device resolution.)\n // (half is a WGSL reserved keyword \u2014 name it halfExt.)\n let radPx = node.z * kVis * dpr;\n let halfExt = vec2<f32>(radPx / max(res.x, 1.0) * 2.0, radPx / max(res.y, 1.0) * 2.0);\n\n var out: VSOut;\n out.pos = vec4<f32>(centerNdc + corner * halfExt, 0.0, 1.0);\n out.uv = corner;\n out.dim = node.w;\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4<f32> {\n // SDF: distance to the unit-circle edge in billboard-local space (0 at the rim, neg inside).\n let d = length(in.uv) - 1.0;\n // fwidth(d) = |dpdx(d)| + |dpdy(d)| \u2014 the pixel footprint of the SDF, the resolution-\n // independent AA width (~1px band at ANY DPR/zoom/size).\n let aa = max(fwidth(d), 1e-4);\n let coverage = 1.0 - smoothstep(-aa, aa, d);\n if (coverage <= 0.0) { discard; }\n let col = mix(u.uNode, u.uNodeDim, in.dim);\n let a = col.a * coverage * u.u1.z; // \u00B7opacityCeiling\n // premultiplied-alpha output.\n return vec4<f32>(col.rgb * a, a);\n}\n";
@@ -0,0 +1,29 @@
1
+ type __VLS_Props = {
2
+ /** Total slide count. */
3
+ total: number;
4
+ /** Window to `fit` dots centered on the active dot. Off → show every dot. */
5
+ windowFit?: number;
6
+ /** Encapsulate the rail in the glass pager pill chassis. Default false —
7
+ a deck owns its own ambient glass host, so the dots sit FLUSH on it. */
8
+ ring?: boolean;
9
+ /** Accessible name for the rail group. */
10
+ ariaLabel?: string;
11
+ };
12
+ type __VLS_ModelProps = {
13
+ /** v-model:index — the active 0-based slide index. */
14
+ "index"?: number;
15
+ };
16
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
17
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ "update:index": (value: number) => any;
19
+ } & {
20
+ select: (index: number) => any;
21
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
22
+ onSelect?: ((index: number) => any) | undefined;
23
+ "onUpdate:index"?: ((value: number) => any) | undefined;
24
+ }>, {
25
+ ariaLabel: string;
26
+ ring: boolean;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
@@ -0,0 +1,27 @@
1
+ import { type ComputedRef, type Ref } from "vue";
2
+ export interface DeckCore {
3
+ /** The 0-based active slide index (clamped to [0, total-1]). */
4
+ index: Ref<number>;
5
+ /** The total slide count. */
6
+ total: number;
7
+ /** 1-based completion as a percentage (slide 1 of N → 100/N), for a bar. */
8
+ progress: ComputedRef<number>;
9
+ /** The accessible "Slide N of M" announcement off the live index (§3 — the
10
+ portable aria-live seam; surface it in an `sr-only` polite region). */
11
+ liveMessage: ComputedRef<string>;
12
+ go: (i: number) => void;
13
+ next: () => void;
14
+ prev: () => void;
15
+ first: () => void;
16
+ last: () => void;
17
+ }
18
+ export interface UseDeckOptions {
19
+ /** The initial 0-based index (clamped). Default 0. */
20
+ initial?: number;
21
+ /** Fired AFTER a navigation commits, with the new + previous index. */
22
+ onChange?: (to: number, from: number) => void;
23
+ /** Resolve a per-slide accessible name for the live announcement (e.g. the
24
+ manifest title). When set, `liveMessage` reads "Slide N of M: <name>". */
25
+ label?: (index: number) => string;
26
+ }
27
+ export declare function useDeck(total: number, opts?: UseDeckOptions): DeckCore;
@@ -0,0 +1,25 @@
1
+ import { type MaybeRefOrGetter } from "vue";
2
+ /** The minimal move surface the handler drives (a structural subset of DeckCore,
3
+ so the consumer can pass its `DeckCore` directly). */
4
+ export interface DeckMoves {
5
+ next(): void;
6
+ prev(): void;
7
+ first(): void;
8
+ last(): void;
9
+ go(i: number): void;
10
+ }
11
+ export interface DeckKeyOptions {
12
+ /** Override the focused-control test (defaults to `target.closest(controls)`). */
13
+ isControl?: (target: EventTarget | null) => boolean;
14
+ }
15
+ /** Handle ONE keydown against the deck. Returns true if it navigated (and called
16
+ `preventDefault`), false if the key was left for the page/control. */
17
+ export declare function handleDeckKey(e: KeyboardEvent, deck: DeckMoves, opts?: DeckKeyOptions): boolean;
18
+ export interface UseDeckKeyboardOptions extends DeckKeyOptions {
19
+ /** The element the listener binds to. Default `window` (deck-global paging). */
20
+ target?: MaybeRefOrGetter<EventTarget | null | undefined>;
21
+ }
22
+ /** Bind the focus-guarded deck keyboard contract to a target (default `window`)
23
+ for the component lifetime. The `target` may be a ref/getter so a not-yet-mounted
24
+ element resolves at `onMounted`. */
25
+ export declare function useDeckKeyboard(deck: DeckMoves, opts?: UseDeckKeyboardOptions): void;
@@ -0,0 +1,22 @@
1
+ /** The deck spring preset, re-exported from the colocated constants for consumers
2
+ sampling the same `(response, ζ)` row. */
3
+ export { DECK_SPRING } from "../constants";
4
+ /**
5
+ * Count-up easing. Defaults to a monotone cubic-out so a still render (or a failed
6
+ * engine chunk) is always faithful; replaced in-place with the engine's
7
+ * `springTimingFunction(.smooth)` once keyframes.js resolves. Callers read
8
+ * `deckEase.fn` each frame, so the swap is picked up live with no re-wiring.
9
+ */
10
+ export declare const deckEase: {
11
+ fn: (t: number) => number;
12
+ };
13
+ /**
14
+ * Swap `deckEase.fn` to the engine's matching JS easing once keyframes.js resolves.
15
+ * Idempotent. No-op off-DOM (SSR / export tooling) and a silent no-op if the engine
16
+ * chunk fails — the count-up keeps its monotone cubic fallback.
17
+ *
18
+ * The slide transition needs no JS write: `--spring-deck: var(--spring-smooth)`
19
+ * (glass-ui's `.smooth` `linear()` token) resolves the declarative half at first
20
+ * paint.
21
+ */
22
+ export declare function installDeckSpring(): void;
@@ -0,0 +1,14 @@
1
+ /** SwiftUI `.smooth` — the deck's slide-transition + count-up curve: a calm settle
2
+ with a barely-there micro-overshoot, the right cadence for a content deck (the
3
+ page change reads as a settle, not a bounce). It is the SAME family the
4
+ `--spring-smooth` token derives from (`springLinearStops()` output), so the deck
5
+ inherits the constellation's iOS curve instead of forking a third easing
6
+ vocabulary — `--spring-deck: var(--spring-smooth)`. */
7
+ export declare const DECK_SPRING: {
8
+ readonly response: 0.5;
9
+ readonly dampingFraction: 0.85;
10
+ };
11
+ /** The focused-control selector the keyboard handler tests: when a control (button
12
+ / link / field) is focused, Space + digit jumps reach that control's native
13
+ activation instead of being stolen for navigation (the C6 correctness fix). */
14
+ export declare const CONTROL_SELECTOR = "button, a, input, textarea, select, [role=button]";
@@ -0,0 +1,8 @@
1
+ export { useDeck } from "./composables/useDeck";
2
+ export type { DeckCore, UseDeckOptions } from "./composables/useDeck";
3
+ export { useDeckKeyboard, handleDeckKey } from "./composables/useDeckKeyboard";
4
+ export type { DeckMoves, DeckKeyOptions, UseDeckKeyboardOptions, } from "./composables/useDeckKeyboard";
5
+ export { installDeckSpring, deckEase, DECK_SPRING, } from "./composables/useDeckSpring";
6
+ export { default as DeckPager } from "./DeckPager.vue";
7
+ export { CONTROL_SELECTOR } from "./constants";
8
+ export type { PagerWindow } from "../pager-dots/pagerWindow";
@@ -3,9 +3,10 @@ import { type DropdownMenuTriggerProps } from "reka-ui";
3
3
  /**
4
4
  * <DockDropdownTrigger> — variable-width DropdownMenu trigger for use inside GlassDock.
5
5
  *
6
- * Emits the dock dropdown-trigger class contract. Interactive styling is owned
7
- * by src/styles/dock.css. Matches DockIconButton's hover-scale behaviour
8
- * unlike DockSelectTrigger, which doesn't scale.
6
+ * Emits the SHARED `.dock-trigger` recipe (BD.W-DOCK-CORE A8 — the unified dock
7
+ * overlay-trigger family: select/dropdown/popover are byte-identical geometry + style +
8
+ * baseline alignment). Interactive styling is owned by dock-controls/triggers.css; the
9
+ * hover-scale is OFF across the family so portaled content anchors smoothly.
9
10
  *
10
11
  * Consumers provide the button content (icon + text + optional chevron)
11
12
  * via the default slot.
@@ -22,8 +22,28 @@ import { type ButtonHTMLAttributes, type Component, type HTMLAttributes } from "
22
22
  type __VLS_Props = {
23
23
  /** Compact variant: auto-sized instead of fixed 2.5rem square. */
24
24
  compact?: boolean;
25
+ /**
26
+ * Selected/toggled state (BC.W-DOCK-ENGINE cross-repo fold — fourier-M #10).
27
+ * The icon button is otherwise STATELESS (hover/press only); a consumer
28
+ * building a selectable dock control (a filter toggle, a mode picker) had to
29
+ * hand-roll the active register. Setting `active` stamps `aria-pressed` (the
30
+ * load-bearing AT-selectable semantic) + `data-active` (the CSS hook reading
31
+ * the existing `--dock-control-active-bg` "selected reads as glass" tier —
32
+ * NEVER a saturated brand hue, per W-REGISTER-IOS). Ergonomic sugar over the
33
+ * shipped register; no new token, no new paint.
34
+ */
35
+ active?: boolean;
25
36
  /** Button type attribute (default: "button" to prevent form submission). */
26
37
  type?: ButtonHTMLAttributes["type"];
38
+ /**
39
+ * Disabled state (the four-state contract). A boundary nav control (a
40
+ * prev/next at the first/last item) stays PRESENT but disabled so the row
41
+ * geometry holds, never DOM-absent (the "flaky" read). On a <button> host it
42
+ * lands the native `disabled` attribute + `aria-disabled`; the CSS reads the
43
+ * `:disabled` register (the shared `.dock-icon-button:disabled` dim + the
44
+ * `pointer-events:none` press-suppress).
45
+ */
46
+ disabled?: boolean;
27
47
  /** Host tag/component (reka-ui Primitive `as`; default "button"). */
28
48
  as?: string | Component;
29
49
  /** Merge props onto a slotted child instead of rendering a host tag. */
@@ -35,8 +55,10 @@ type __VLS_Slots = {} & {
35
55
  default?: (props: typeof __VLS_8) => any;
36
56
  };
37
57
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
58
+ active: boolean;
38
59
  type: "button" | "reset" | "submit";
39
60
  compact: boolean;
61
+ disabled: boolean;
40
62
  asChild: boolean;
41
63
  as: string | Component;
42
64
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;