@mkbabb/glass-ui 5.0.0 → 6.0.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 (470) hide show
  1. package/README.md +30 -27
  2. package/dist/DropdownMenuTrigger-BzQtd9lt.js +65 -0
  3. package/dist/{FadingScroll-BSRLqQCx.js → FadingScroll-C1ZWEjmG.js} +32 -25
  4. package/dist/{Input-DKf-XwUM.js → Input-B4WQ_CMc.js} +1 -1
  5. package/dist/{PagerDots-BP6jh7z4.js → PagerDots-BoTQ7g5l.js} +123 -95
  6. package/dist/{accent-tone-solve-CBw3L0cy.js → accent-tone-solve-Dii9ePhK.js} +1 -1
  7. package/dist/animated-digit.js +1 -1
  8. package/dist/aurora.js +324 -314
  9. package/dist/blob-config.d.ts +0 -4
  10. package/dist/blob-config.js +1 -1
  11. package/dist/blob.js +280 -261
  12. package/dist/{button-BXzhydVB.js → button-32mg6xA8.js} +63 -56
  13. package/dist/button.js +1 -1
  14. package/dist/canvas.js +1 -1
  15. package/dist/{CardAction-2uUvjMQK.js → card-16xmzIr3.js} +29 -11
  16. package/dist/card.js +1 -1
  17. package/dist/carousel.d.ts +1 -2
  18. package/dist/carousel.js +26 -95
  19. package/dist/chip.d.ts +0 -9
  20. package/dist/chip.js +1 -1
  21. package/dist/collapsible.js +1 -1
  22. package/dist/color-swatch.js +1 -0
  23. package/dist/color.js +87 -3
  24. package/dist/{CommandShortcut-fmdbsEJL.js → command-BjPjUU9z.js} +56 -51
  25. package/dist/command.js +1 -1
  26. package/dist/completion-seal.js +64 -55
  27. package/dist/components/_shared/ModalOverlay.vue.d.ts +5 -52
  28. package/dist/components/_shared/field-surfaces.css +1 -0
  29. package/dist/components/_shared/menuItemVariants.d.ts +2 -2
  30. package/dist/components/_shared/useMotionAxis.d.ts +2 -2
  31. package/dist/components/_shared/valueDomain.d.ts +6 -0
  32. package/dist/components/alert/index.d.ts +1 -1
  33. package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +1 -1
  34. package/dist/components/aurora/Aurora.vue.d.ts +7 -1
  35. package/dist/components/aurora/composables/runtime.d.ts +5 -3
  36. package/dist/components/aurora/composables/useAurora.d.ts +4 -2
  37. package/dist/components/avatar/AvatarImage.vue.d.ts +3 -1
  38. package/dist/components/badge/index.d.ts +2 -2
  39. package/dist/components/blob/Blob.vue.d.ts +11 -0
  40. package/dist/components/blob/composables/useMetaballRenderer.d.ts +2 -0
  41. package/dist/components/button/Button.vue.d.ts +4 -2
  42. package/dist/components/button/index.d.ts +2 -2
  43. package/dist/components/card/Card.vue.d.ts +4 -4
  44. package/dist/components/card/ScrollCard.vue.d.ts +1 -1
  45. package/dist/components/card/styles.css +1 -0
  46. package/dist/components/carousel/Carousel.vue.d.ts +2 -2
  47. package/dist/components/carousel/CarouselNext.vue.d.ts +1 -1
  48. package/dist/components/carousel/CarouselPrevious.vue.d.ts +1 -1
  49. package/dist/components/carousel/index.d.ts +0 -1
  50. package/dist/components/carousel/useCarousel.d.ts +2 -2
  51. package/dist/components/combobox/ComboboxList.vue.d.ts +1 -1
  52. package/dist/components/combobox/index.d.ts +1 -3
  53. package/dist/components/command/Command.vue.d.ts +1 -1
  54. package/dist/components/command/CommandDialog.vue.d.ts +9 -6
  55. package/dist/components/completion-seal/styles.css +1 -0
  56. package/dist/components/constellation/Constellation.vue.d.ts +6 -1
  57. package/dist/components/constellation/composables/useConstellation.d.ts +3 -16
  58. package/dist/components/constellation/constants.d.ts +6 -16
  59. package/dist/components/constellation/constellationField.d.ts +3 -5
  60. package/dist/components/constellation/constellationInteraction.d.ts +1 -1
  61. package/dist/components/constellation/constellationRender.d.ts +11 -21
  62. package/dist/components/constellation/constellationTypes.d.ts +12 -9
  63. package/dist/components/constellation/index.d.ts +1 -1
  64. package/dist/components/controls/DarkModeToggle.vue.d.ts +0 -2
  65. package/dist/components/data-table/DataTable.vue.d.ts +14 -2
  66. package/dist/components/data-table/index.d.ts +1 -2
  67. package/dist/components/data-table/types.d.ts +26 -1
  68. package/dist/components/deck/constants.d.ts +0 -10
  69. package/dist/components/deck/index.d.ts +0 -1
  70. package/dist/components/dialog/DialogContent.vue.d.ts +7 -1
  71. package/dist/components/dialog/index.d.ts +0 -1
  72. package/dist/components/dock/DockControl.vue.d.ts +4 -4
  73. package/dist/components/dock/DockStack.vue.d.ts +2 -2
  74. package/dist/components/dock/GlassDock.vue.d.ts +1 -0
  75. package/dist/components/dock/composables/dockMorphContext.d.ts +2 -0
  76. package/dist/components/dock/composables/dockMorphMeasure.d.ts +11 -1
  77. package/dist/components/dock/composables/useDockClickIntegrity.d.ts +4 -0
  78. package/dist/components/dock/composables/useDockOverflowFit.d.ts +3 -3
  79. package/dist/components/dock/composables/useDockPopover.d.ts +2 -0
  80. package/dist/components/dock/composables/useDockShellProps.d.ts +7 -0
  81. package/dist/components/dock/composables/useDockState.d.ts +2 -2
  82. package/dist/components/dock/constants.d.ts +0 -12
  83. package/dist/components/dock/index.d.ts +1 -0
  84. package/dist/components/dock/styles/adaptive-legibility.css +1 -0
  85. package/dist/components/dock/styles/controls/icon-button.css +1 -0
  86. package/dist/{styles/dock-controls → components/dock/styles/controls}/touch-floor.css +1 -1
  87. package/dist/components/dock/styles/controls.css +1 -0
  88. package/dist/{styles/dock → components/dock/styles}/density.css +1 -1
  89. package/dist/components/dock/styles/dock.css +1 -0
  90. package/dist/components/dock/styles/index.css +1 -0
  91. package/dist/components/dock/styles/layer-group.css +1 -0
  92. package/dist/components/dock/styles/layers.css +1 -0
  93. package/dist/components/dock/styles/overflow.css +1 -0
  94. package/dist/components/dock/styles/popover.css +1 -0
  95. package/dist/components/dock/styles/shape.css +1 -0
  96. package/dist/components/dock/styles/shell.css +1 -0
  97. package/dist/components/drawer/Drawer.vue.d.ts +3 -3
  98. package/dist/components/drawer/composables/drawerSnapContext.d.ts +3 -1
  99. package/dist/components/drawer/constants.d.ts +6 -6
  100. package/dist/components/drawer/index.d.ts +4 -6
  101. package/dist/components/drawer/styles.css +1 -0
  102. package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +1 -1
  103. package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +9 -3
  104. package/dist/components/dropdown-menu/index.d.ts +0 -1
  105. package/dist/components/easing/EasingConfigurator.vue.d.ts +1 -1
  106. package/dist/components/easing/EasingPicker.vue.d.ts +2 -2
  107. package/dist/components/easing/composables/useEasingPicker.d.ts +4 -0
  108. package/dist/components/easing/constants.d.ts +2 -0
  109. package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +3 -3
  110. package/dist/components/fourier-field/FourierField.vue.d.ts +7 -1
  111. package/dist/components/fourier-field/composables/useFourierField.d.ts +2 -1
  112. package/dist/components/handmark/HandMark.vue.d.ts +1 -1
  113. package/dist/components/handmark/geometry.d.ts +1 -1
  114. package/dist/components/handmark/index.d.ts +4 -6
  115. package/dist/components/icon-chip/styles.css +1 -0
  116. package/dist/components/index.d.ts +0 -1
  117. package/dist/components/infinite-scroll/index.d.ts +1 -0
  118. package/dist/components/instrument-chassis/styles.css +1 -0
  119. package/dist/components/labeled-field/LabeledField.vue.d.ts +12 -2
  120. package/dist/components/labeled-field/LabeledInput.vue.d.ts +10 -3
  121. package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +4 -0
  122. package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +2 -1
  123. package/dist/components/metric-stack/MetricStack.vue.d.ts +1 -1
  124. package/dist/components/pager-dots/PagerDots.vue.d.ts +1 -1
  125. package/dist/components/popover/PopoverContent.vue.d.ts +1 -1
  126. package/dist/components/progress/Progress.vue.d.ts +5 -40
  127. package/dist/components/progress/ProgressDefault.vue.d.ts +1 -17
  128. package/dist/components/progress/ProgressGradient.vue.d.ts +1 -0
  129. package/dist/components/progress/ProgressLiquid.vue.d.ts +1 -0
  130. package/dist/components/progress/index.d.ts +0 -5
  131. package/dist/components/progress/valueMarks.css +1 -0
  132. package/dist/components/pulse/Pulse.vue.d.ts +2 -2
  133. package/dist/components/scroll-progress-rim/styles.css +1 -0
  134. package/dist/components/search/FuzzySearch.vue.d.ts +4 -2
  135. package/dist/components/search/SearchBar.vue.d.ts +2 -2
  136. package/dist/components/search/searchVariants.d.ts +1 -1
  137. package/dist/components/select/SelectContent.vue.d.ts +1 -1
  138. package/dist/components/select/index.d.ts +0 -2
  139. package/dist/components/skeleton/Skeleton.vue.d.ts +1 -1
  140. package/dist/components/slider/Slider.vue.d.ts +2 -0
  141. package/dist/components/split-chars/SplitChars.vue.d.ts +1 -1
  142. package/dist/components/surface/Surface.vue.d.ts +1 -1
  143. package/dist/components/table/Table.vue.d.ts +4 -0
  144. package/dist/components/tabs/SegmentedTabs.vue.d.ts +10 -0
  145. package/dist/components/tabs/index.d.ts +1 -1
  146. package/dist/components/tabs/styles/drag.css +1 -0
  147. package/dist/components/tags-input/TagsInput.vue.d.ts +2 -2
  148. package/dist/components/timeline/ContinuousTimeline.vue.d.ts +1 -1
  149. package/dist/components/timeline/GlassTimeline.vue.d.ts +4 -4
  150. package/dist/components/toast/Toast.vue.d.ts +3 -3
  151. package/dist/components/toast/use-toast.d.ts +4 -4
  152. package/dist/components/typewriter/TypewriterText.vue.d.ts +1 -4
  153. package/dist/components/typewriter/composables/useTypewriter.d.ts +0 -1
  154. package/dist/components/typewriter/utils/graphemes.d.ts +1 -0
  155. package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +2 -2
  156. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +31 -0
  157. package/dist/composables/glass/webgpu/rendererStatus.d.ts +13 -0
  158. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +3 -0
  159. package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +2 -0
  160. package/dist/composables/motion/springProjection.d.ts +16 -0
  161. package/dist/composables/motion/useAnimatedNumber.d.ts +1 -6
  162. package/dist/composables/motion/useCountup.d.ts +1 -6
  163. package/dist/composables/motion/useDockCtaReceive.d.ts +55 -0
  164. package/dist/composables/motion/useElementMorph.d.ts +8 -0
  165. package/dist/composables/motion/useLiquidPress.d.ts +12 -4
  166. package/dist/composables/motion/useNumericTransition.d.ts +2 -0
  167. package/dist/composables/motion/useTextHighlight.d.ts +2 -1
  168. package/dist/configurator-CSENXXSy.js +311 -0
  169. package/dist/configurator.js +2 -3
  170. package/dist/constellation.js +235 -571
  171. package/dist/controls.js +55 -63
  172. package/dist/{createCanvasLifecycle-DlrcvWbb.js → createCanvasLifecycle-hsFkQVdl.js} +32 -32
  173. package/dist/dark-DIH-blY1.js +70 -0
  174. package/dist/dark.d.ts +1 -2
  175. package/dist/dark.js +2 -20
  176. package/dist/{DataTable-Bxya8nBn.js → data-table-DveMdgBM.js} +231 -120
  177. package/dist/data-table.js +2 -2
  178. package/dist/deck.js +10 -21
  179. package/dist/dialog-BzQxKrUr.js +281 -0
  180. package/dist/dialog.js +2 -3
  181. package/dist/dock.js +561 -428
  182. package/dist/{dockContext-d-WpJN2Z.js → dockContext-4S9qP0Z4.js} +1 -1
  183. package/dist/dom.js +196 -7
  184. package/dist/drawer.js +111 -66
  185. package/dist/dropdown-menu-DORIA52F.js +378 -0
  186. package/dist/dropdown-menu.js +3 -2
  187. package/dist/easing.d.ts +0 -9
  188. package/dist/easing.js +334 -187
  189. package/dist/expandable-container.js +12 -4
  190. package/dist/fading-scroll.js +1 -1
  191. package/dist/focus-scope.js +1 -1
  192. package/dist/forms.js +37 -78
  193. package/dist/fourier-field.js +273 -263
  194. package/dist/fourier-math.d.ts +0 -6
  195. package/dist/fourier-math.js +112 -2
  196. package/dist/glass-ui.css +1 -1
  197. package/dist/glass-ui.js +131 -195
  198. package/dist/handmark.d.ts +0 -2
  199. package/dist/handmark.js +82 -82
  200. package/dist/header-ribbon.js +41 -30
  201. package/dist/{IconChip-CwLmBJ_K.js → icon-chip-BWuxz1-u.js} +1 -1
  202. package/dist/icon-chip.js +1 -1
  203. package/dist/{IconTooltip-D9sbK-Mk.js → icon-tooltip-CO6rw0dZ.js} +1 -1
  204. package/dist/icon-tooltip.js +1 -1
  205. package/dist/index.d.ts +0 -1
  206. package/dist/infinite-scroll.d.ts +0 -1
  207. package/dist/infinite-scroll.js +17 -15
  208. package/dist/instrument-chassis.js +1 -1
  209. package/dist/keyboard.js +104 -2
  210. package/dist/label.js +1 -1
  211. package/dist/labeled-field.js +95 -69
  212. package/dist/liquid-grid.js +173 -162
  213. package/dist/metric-badge.js +3 -3
  214. package/dist/metric-cell.js +2 -2
  215. package/dist/metric-stack.js +1 -1
  216. package/dist/motion-core.js +15 -16
  217. package/dist/motion-curves.d.ts +0 -20
  218. package/dist/motion.js +59 -58
  219. package/dist/{Notification-DQv2cOh9.js → notification-DVs7ODMg.js} +17 -8
  220. package/dist/notification.js +1 -1
  221. package/dist/{NumberFieldContent-BkE7xPS9.js → number-field-PvkGedHk.js} +2 -2
  222. package/dist/number-field.js +1 -1
  223. package/dist/pager-dots.js +1 -1
  224. package/dist/paper-backdrop.js +31 -2
  225. package/dist/{PopoverContent-DOtszFWK.js → popover-WMgyRSyN.js} +7 -2
  226. package/dist/popover.js +1 -1
  227. package/dist/procedural-color.wgsl-B9mLK7v0.js +377 -0
  228. package/dist/progress-C-HHuFZy.js +192 -0
  229. package/dist/progress.js +2 -2
  230. package/dist/pulse.js +3 -1
  231. package/dist/reactive.js +19 -3
  232. package/dist/rendererStatus-C2-zC2Q-.js +40 -0
  233. package/dist/{resolveCanvasColor-B3L-akX0.js → resolveCanvasColor-yarP5bdk.js} +1 -1
  234. package/dist/scroll-progress-rim.js +1 -1
  235. package/dist/search.js +187 -146
  236. package/dist/{SelectScrollDownButton-CDtwaWkZ.js → select-BIv4R3Ir.js} +109 -44
  237. package/dist/select.js +2 -4
  238. package/dist/separator-CBU94kTM.js +62 -0
  239. package/dist/separator.js +1 -1
  240. package/dist/sidebar.js +1 -1
  241. package/dist/slider-Cc_qw6GA.js +166 -0
  242. package/dist/slider.js +1 -1
  243. package/dist/sortable-list.js +43 -43
  244. package/dist/styles/accessibility.css +1 -0
  245. package/dist/styles/components.css +1 -1
  246. package/dist/styles/glass/control-surfaces.css +1 -1
  247. package/dist/styles/glass/glass-capsule.css +1 -1
  248. package/dist/styles/glass/ladder.css +1 -1
  249. package/dist/styles/glass/liquid-fill.css +1 -1
  250. package/dist/styles/glass/material-roles.css +1 -0
  251. package/dist/styles/glass/material.css +1 -1
  252. package/dist/styles/glass/surface-axis.css +1 -1
  253. package/dist/styles/glass/surfaces-pager.css +1 -1
  254. package/dist/styles/glass/surfaces.css +1 -1
  255. package/dist/styles/glass.css +1 -1
  256. package/dist/styles/index.css +1 -1
  257. package/dist/styles/theme/bridges.css +1 -1
  258. package/dist/styles/tokens/glass-fx.css +1 -1
  259. package/dist/styles/tokens/glass.css +1 -1
  260. package/dist/styles/tokens/offsets.css +1 -1
  261. package/dist/styles/tokens/scale-paper.css +1 -1
  262. package/dist/styles/tokens/scheme-spring.css +1 -1
  263. package/dist/styles/tokens/shadow.css +1 -1
  264. package/dist/styles/tokens.d.ts +53 -0
  265. package/dist/styles/tokens.ts +58 -0
  266. package/dist/styles/typography/scale.css +1 -1
  267. package/dist/styles/typography/semantic.css +1 -1
  268. package/dist/styles/typography/utilities.css +1 -1
  269. package/dist/styles/utilities/base.css +1 -1
  270. package/dist/styles/utilities/btn.css +1 -1
  271. package/dist/styles/utilities/components.css +1 -1
  272. package/dist/styles/utilities.css +1 -1
  273. package/dist/{Switch-BPBfhMU3.js → switch-Boj4Ucn5.js} +1 -1
  274. package/dist/switch.js +1 -1
  275. package/dist/tabs.js +51 -45
  276. package/dist/timeline.js +2 -2
  277. package/dist/toast.js +1 -1
  278. package/dist/{ToggleGroupItem-DNWx2aSW.js → toggle-group-BPchFsns.js} +10 -7
  279. package/dist/toggle-group.js +1 -1
  280. package/dist/tokens.d.ts +1 -53
  281. package/dist/tokens.js +1 -1
  282. package/dist/{TooltipProvider-GtfYdSVf.js → tooltip-BmOQJzh0.js} +1 -0
  283. package/dist/tooltip.js +1 -1
  284. package/dist/typewriter.js +151 -166
  285. package/dist/{useAccentTone-D25DxviG.js → useAccentTone-C-p6WdPe.js} +1 -1
  286. package/dist/{useAnimatedNumber-2XC4aRB6.js → useAnimatedNumber-BRVVaFFc.js} +1 -1
  287. package/dist/useDockCtaReceive-CK-RLASa.js +257 -0
  288. package/dist/{useGooMorph-CU1pwuC6.js → useGooMorph-D1F6QJlH.js} +140 -59
  289. package/dist/{useIntersectionPause-Cmt5Tnv9.js → useIntersectionPause-B-dbxl9w.js} +1 -1
  290. package/dist/useLiquidPress-BYcwwGQV.js +68 -0
  291. package/dist/{useRAFLoop-CvOo_kgb.js → useRAFLoop-BtwQ9DyY.js} +1 -1
  292. package/dist/{useScrollProgress-C-yImzhU.js → useScrollProgress-DZI4nf4v.js} +1 -1
  293. package/dist/{useSelectionGroup-Btpf24aY.js → useSelectionGroup-LDzBdR1Y.js} +3 -3
  294. package/dist/{useTabRovingFocus-CG1H1k1J.js → useTabRovingFocus-DkLYwo4L.js} +1 -1
  295. package/dist/{useTouchGate-BlegwvwL.js → useTouchGate-Cj5fOkTv.js} +1 -1
  296. package/dist/valueDomain-B8L04u3U.js +13 -0
  297. package/dist/watercolor-dot.js +5 -3
  298. package/package.json +5 -12
  299. package/src/styles/accessibility.css +48 -0
  300. package/src/styles/glass/glass-capsule.css +2 -2
  301. package/src/styles/glass/ladder.css +1 -1
  302. package/src/styles/glass/material-roles.css +18 -0
  303. package/src/styles/glass/material.css +18 -12
  304. package/src/styles/glass.css +5 -5
  305. package/src/styles/index.css +38 -30
  306. package/src/styles/theme/bridges.css +0 -6
  307. package/src/styles/tokens/glass-fx.css +1 -5
  308. package/src/styles/tokens/glass.css +1 -2
  309. package/src/styles/tokens/offsets.css +0 -1
  310. package/src/styles/tokens/property-regs.css +11 -10
  311. package/src/styles/tokens/scale-paper.css +0 -1
  312. package/src/styles/tokens/scheme-motion.css +3 -0
  313. package/src/styles/tokens/scheme-spring.css +0 -10
  314. package/src/styles/tokens/shadow.css +3 -29
  315. package/src/styles/tokens.ts +58 -0
  316. package/src/styles/typography/scale.css +5 -2
  317. package/src/styles/typography/semantic.css +5 -5
  318. package/src/styles/typography/utilities.css +5 -5
  319. package/src/styles/utilities/base.css +5 -5
  320. package/src/styles/utilities/btn.css +6 -27
  321. package/src/styles/utilities.css +4 -6
  322. package/dist/ConfiguratorRow-BV6zPjTM.js +0 -151
  323. package/dist/DialogContent-Bl4v10AC.js +0 -192
  324. package/dist/DialogFooter-C0v4Hz2F.js +0 -168
  325. package/dist/PaperBackdrop-BYwE8_kg.js +0 -31
  326. package/dist/Progress-uWLyXE7J.js +0 -308
  327. package/dist/SelectGroup-BuEptUsa.js +0 -31
  328. package/dist/SelectSeparator-4QGephvr.js +0 -49
  329. package/dist/Separator-DqJ6PfOd.js +0 -44
  330. package/dist/color-Bp5jmv4Z.js +0 -86
  331. package/dist/components/carousel/GlassCarouselPager.vue.d.ts +0 -50
  332. package/dist/components/combobox/ComboboxSeparator.vue.d.ts +0 -18
  333. package/dist/components/combobox/ComboboxViewport.vue.d.ts +0 -18
  334. package/dist/components/constellation/composables/constellationGLSetup.d.ts +0 -10
  335. package/dist/components/constellation/composables/constellationWGPUSetup.d.ts +0 -19
  336. package/dist/components/constellation/composables/uniformBridgeWGPU.d.ts +0 -66
  337. package/dist/components/constellation/shaders/constellation-lines.glsl.d.ts +0 -2
  338. package/dist/components/constellation/shaders/constellation-lines.wgsl.d.ts +0 -1
  339. package/dist/components/constellation/shaders/constellation-points.glsl.d.ts +0 -2
  340. package/dist/components/constellation/shaders/constellation-points.wgsl.d.ts +0 -1
  341. package/dist/components/deck/composables/useDeckSpring.d.ts +0 -22
  342. package/dist/components/dialog/DialogScrollContent.vue.d.ts +0 -33
  343. package/dist/components/progress/ProgressSectioned.vue.d.ts +0 -47
  344. package/dist/components/progress/useProgressGeometry.d.ts +0 -60
  345. package/dist/components/section/Section.vue.d.ts +0 -73
  346. package/dist/components/section/index.d.ts +0 -1
  347. package/dist/components/stacked-icons/StackedIconGroup.vue.d.ts +0 -30
  348. package/dist/components/stacked-icons/index.d.ts +0 -2
  349. package/dist/components/stacked-icons/types.d.ts +0 -19
  350. package/dist/dropdown-menu-DaGlVdp9.js +0 -421
  351. package/dist/math-CIEcwsYi.js +0 -112
  352. package/dist/procedural-color.wgsl-ByduxnzV.js +0 -4
  353. package/dist/slider-Cxuj_W_H.js +0 -151
  354. package/dist/stacked-icons.d.ts +0 -1
  355. package/dist/stacked-icons.js +0 -98
  356. package/dist/styles/cards.css +0 -1
  357. package/dist/styles/completion-seal.css +0 -1
  358. package/dist/styles/dock/adaptive-legibility.css +0 -1
  359. package/dist/styles/dock/dock.css +0 -1
  360. package/dist/styles/dock/layer-group.css +0 -1
  361. package/dist/styles/dock/layers.css +0 -1
  362. package/dist/styles/dock/overflow.css +0 -1
  363. package/dist/styles/dock/popover.css +0 -1
  364. package/dist/styles/dock/shape.css +0 -1
  365. package/dist/styles/dock/shell.css +0 -1
  366. package/dist/styles/dock-controls/icon-button.css +0 -1
  367. package/dist/styles/dock-controls.css +0 -1
  368. package/dist/styles/dock.css +0 -1
  369. package/dist/styles/drawer.css +0 -1
  370. package/dist/styles/icon-chip.css +0 -1
  371. package/dist/styles/instrument-chassis.css +0 -1
  372. package/dist/styles/scroll-progress-rim.css +0 -1
  373. package/dist/styles/select.css +0 -1
  374. package/dist/styles/tabs/segmented-tabs-drag.css +0 -1
  375. package/dist/styles/utilities/animate.css +0 -0
  376. package/dist/useConfiguratorState-Dq35N_7t.js +0 -167
  377. package/dist/useDockCtaReceive-BgMmeINo.js +0 -161
  378. package/dist/useGlobalDark-DjKMEQE2.js +0 -53
  379. package/dist/useGpuSubstrate-DcY584kE.js +0 -347
  380. package/dist/useInterval-ZATRi-1T.js +0 -18
  381. package/dist/useKeyboardShortcuts-ynVmNFo3.js +0 -104
  382. package/dist/useLiquidPress-BXNHydZh.js +0 -40
  383. package/dist/useTextHighlight-C46Le9u_.js +0 -72
  384. package/dist/useViewportReady-c0isoKL8.js +0 -191
  385. package/src/styles/card-scroll.css +0 -189
  386. package/src/styles/cards.css +0 -485
  387. package/src/styles/completion-seal.css +0 -205
  388. package/src/styles/configurator.css +0 -359
  389. package/src/styles/dialog-placement.css +0 -68
  390. package/src/styles/dock/adaptive-legibility.css +0 -119
  391. package/src/styles/dock/crossfade.css +0 -139
  392. package/src/styles/dock/cta-seat.css +0 -87
  393. package/src/styles/dock/density.css +0 -458
  394. package/src/styles/dock/dock.css +0 -199
  395. package/src/styles/dock/fisheye.css +0 -81
  396. package/src/styles/dock/layer-group.css +0 -329
  397. package/src/styles/dock/layers.css +0 -438
  398. package/src/styles/dock/morph.css +0 -455
  399. package/src/styles/dock/overflow.css +0 -332
  400. package/src/styles/dock/popover.css +0 -249
  401. package/src/styles/dock/search.css +0 -68
  402. package/src/styles/dock/section.css +0 -59
  403. package/src/styles/dock/shape.css +0 -188
  404. package/src/styles/dock/shell-regions.css +0 -73
  405. package/src/styles/dock/shell.css +0 -500
  406. package/src/styles/dock-controls/dark-mode-toggle.css +0 -123
  407. package/src/styles/dock-controls/icon-button.css +0 -221
  408. package/src/styles/dock-controls/tab-button.css +0 -143
  409. package/src/styles/dock-controls/touch-floor.css +0 -119
  410. package/src/styles/dock-controls/triggers.css +0 -157
  411. package/src/styles/dock-controls.css +0 -92
  412. package/src/styles/dock.css +0 -219
  413. package/src/styles/drawer.css +0 -434
  414. package/src/styles/feedback-tone.css +0 -104
  415. package/src/styles/icon-chip.css +0 -256
  416. package/src/styles/instrument-chassis.css +0 -449
  417. package/src/styles/menu.css +0 -187
  418. package/src/styles/scroll-progress-rim.css +0 -87
  419. package/src/styles/segmented-tabs.css +0 -424
  420. package/src/styles/select.css +0 -201
  421. package/src/styles/tabs/segmented-tabs-drag.css +0 -200
  422. package/src/styles/utilities/animate.css +0 -29
  423. /package/dist/{coalesce-metric-B8o7zT9u.js → coalesce-metric-znAcLzkB.js} +0 -0
  424. /package/dist/{CollapsibleContent-DiHcB_HH.js → collapsible-bPzS1aQk.js} +0 -0
  425. /package/dist/{compile-C55K3P9g.js → compile-DK3Fri1B.js} +0 -0
  426. /package/dist/{styles → components/_shared}/feedback-tone.css +0 -0
  427. /package/dist/{styles → components/_shared}/menu.css +0 -0
  428. /package/dist/{styles → components/card}/card-scroll.css +0 -0
  429. /package/dist/{styles/configurator.css → components/configurator/styles.css} +0 -0
  430. /package/dist/{styles/dock-controls → components/controls}/dark-mode-toggle.css +0 -0
  431. /package/dist/{styles/dialog-placement.css → components/dialog/placement.css} +0 -0
  432. /package/dist/{styles/dock-controls → components/dock/styles/controls}/tab-button.css +0 -0
  433. /package/dist/{styles/dock-controls → components/dock/styles/controls}/triggers.css +0 -0
  434. /package/dist/{styles/dock → components/dock/styles}/crossfade.css +0 -0
  435. /package/dist/{styles/dock → components/dock/styles}/cta-seat.css +0 -0
  436. /package/dist/{styles/dock → components/dock/styles}/fisheye.css +0 -0
  437. /package/dist/{styles/dock → components/dock/styles}/morph.css +0 -0
  438. /package/dist/{styles/dock → components/dock/styles}/search.css +0 -0
  439. /package/dist/{styles/dock → components/dock/styles}/section.css +0 -0
  440. /package/dist/{styles/dock → components/dock/styles}/shell-regions.css +0 -0
  441. /package/dist/{styles/segmented-tabs.css → components/tabs/styles/segmented.css} +0 -0
  442. /package/dist/{constants-D8lSMkOz.js → constants-DRZmNIY-.js} +0 -0
  443. /package/dist/{createContext-BQ1Gy_LB.js → createContext-FU0n5MGK.js} +0 -0
  444. /package/dist/{flow.glsl-CVqPSj8_.js → flow.glsl-DEGFGE11.js} +0 -0
  445. /package/dist/{FocusScope-BzKwhsBn.js → focus-scope-DUTKveod.js} +0 -0
  446. /package/dist/{InstrumentChassis-Dss5Tjcm.js → instrument-chassis-Cvstg4_U.js} +0 -0
  447. /package/dist/{Label-C84TaQiw.js → label-Cj38tJKG.js} +0 -0
  448. /package/dist/{menuItemVariants-DbO-Fr74.js → menuItemVariants-D6AOzzND.js} +0 -0
  449. /package/dist/{pointerFieldMappings-4VtmkOWv.js → pointerFieldMappings-CZojkgKj.js} +0 -0
  450. /package/dist/{presets-B07HzyKd.js → presets-CxeNvxuO.js} +0 -0
  451. /package/dist/{prng-B0PLRmR6.js → prng-Dz2_9RJu.js} +0 -0
  452. /package/dist/{scrollReader-DzYqPQ6V.js → scrollReader-C2oK9Hb8.js} +0 -0
  453. /package/dist/{supportsCssTimeline-Ie4xJFbD.js → supportsCssTimeline-Dz-GVxXM.js} +0 -0
  454. /package/dist/{Toaster-C_-WeU9W.js → toast-kAbchIN2.js} +0 -0
  455. /package/dist/{useControlSize-DJwe-7ZQ.js → useControlSize-CFfOk8I-.js} +0 -0
  456. /package/dist/{useDocumentVisibility-CpJGUgcJ.js → useDocumentVisibility-YeBDGqtI.js} +0 -0
  457. /package/dist/{useDragMorph-65ihHePq.js → useDragMorph-7ygF9O0m.js} +0 -0
  458. /package/dist/{useDragVelocity-BWcNMCux.js → useDragVelocity-CbMZEBaC.js} +0 -0
  459. /package/dist/{useFuzzySearch-KslRxiJY.js → useFuzzySearch-BOgep7RE.js} +0 -0
  460. /package/dist/{useLeadTrail-DOH4XkL1.js → useLeadTrail-BYu8dq4G.js} +0 -0
  461. /package/dist/{usePointerVelocityField-CwXyeW0Z.js → usePointerVelocityField-BdvnO0py.js} +0 -0
  462. /package/dist/{useResizeObserver-DDuoBeBo.js → useResizeObserver-BcUTquV7.js} +0 -0
  463. /package/dist/{useResolveTokenColor-DVT5kwv6.js → useResolveTokenColor-C07e-qaT.js} +0 -0
  464. /package/dist/{useRoutePointer-DL7I0gY4.js → useRoutePointer-BDNMFN73.js} +0 -0
  465. /package/dist/{useSpringMount-CNvvgGiC.js → useSpringMount-C6-DBx4e.js} +0 -0
  466. /package/dist/{useTimer-CkDV8SC2.js → useTimer-D8koDvJS.js} +0 -0
  467. /package/dist/{useUserInvalidAria-Bkruei7M.js → useUserInvalidAria-Cr4nR3tu.js} +0 -0
  468. /package/dist/{vReveal-DUmiEkX_.js → vReveal-DZfWl9XI.js} +0 -0
  469. /package/dist/{vSpecular-DlYN0UZy.js → vSpecular-CQFmLNzA.js} +0 -0
  470. /package/dist/{writeVelocityWeight-D1rvdxJu.js → writeVelocityWeight-D_AcvTsE.js} +0 -0
@@ -49,8 +49,8 @@ export interface AnimatedDigitProps {
49
49
  class?: HTMLAttributes["class"];
50
50
  }
51
51
  declare const __VLS_export: import("vue").DefineComponent<AnimatedDigitProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<AnimatedDigitProps> & Readonly<{}>, {
52
- mode: AnimatedDigitMode;
53
52
  placeholder: string;
53
+ mode: AnimatedDigitMode;
54
54
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
55
55
  declare const _default: typeof __VLS_export;
56
56
  export default _default;
@@ -1,6 +1,7 @@
1
1
  import type { AuroraRuntimeOptions } from "./composables/runtime";
2
2
  import { type AuroraConfig } from "./constants/presets";
3
3
  import { type AuroraRenderMode } from "./constants/renderMode";
4
+ import type { RendererStatus } from "../../composables/glass/webgpu/rendererStatus";
4
5
  /**
5
6
  * Aurora — a painterly WebGL2 background.
6
7
  *
@@ -95,7 +96,12 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
95
96
  pause: () => void;
96
97
  resume: () => void;
97
98
  isArmed: Readonly<import("vue").Ref<boolean, boolean>>;
98
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
99
+ rendererStatus: Readonly<import("vue").Ref<RendererStatus, RendererStatus>>;
100
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
101
+ rendererStatus: (status: RendererStatus) => any;
102
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
103
+ onRendererStatus?: ((status: RendererStatus) => any) | undefined;
104
+ }>, {
99
105
  config: AuroraConfig;
100
106
  renderMode: AuroraRenderMode;
101
107
  opacityCeiling: number;
@@ -21,6 +21,7 @@
21
21
  * Y-origin convention: config authoring is CSS-top-origin (0 = top). The seams
22
22
  * flip Y at the uniform boundary (`flipY` in uniformBridge/frameLoop).
23
23
  */
24
+ import { type RendererStatus } from "../../../composables/glass/webgpu/useGpuSubstrate";
24
25
  import type { AuroraConfig, AuroraInstance } from "../constants/presets";
25
26
  export type AuroraRuntimeMode = "live" | "capture";
26
27
  /**
@@ -65,9 +66,9 @@ export interface AuroraRuntimeOptions {
65
66
  * the signal reaches the consumer's error boundary / dev console. On the
66
67
  * DEFERRED path the failure happens on an idle tick — outside any mount-time
67
68
  * boundary — so the runtime routes it here, and `useAurora` re-surfaces it on
68
- * the microtask queue (so it still reaches the dev console /
69
- * `app.config.errorHandler`) when no handler is supplied. Provide this
70
- * callback to opt into silent handling on either path.
69
+ * the microtask queue (so it still reaches the dev console) when no handler
70
+ * is supplied. `Aurora.vue` adapts its Vue `app.config.errorHandler` into
71
+ * this callback; direct composable consumers provide their own handler.
71
72
  *
72
73
  * NOTE: this is the `useAurora` Vue-wrapper contract surface. The imperative
73
74
  * `createAurora(...)` runtime throws on eager init failure and — for
@@ -82,6 +83,7 @@ export interface AuroraRuntimeOptions {
82
83
  * GENUINE violations (a malformed shader, an OOM, a real link failure).
83
84
  */
84
85
  onInitError?: (err: Error) => void;
86
+ onRendererStatus?: (status: RendererStatus) => void;
85
87
  /**
86
88
  * BB.W-AURORA-SWRASTER — opt OUT of the runtime software-raster wedge catch.
87
89
  * Default `false`: the wedge catch is the safe default — `createAurora`
@@ -2,6 +2,7 @@ import { type Ref } from "vue";
2
2
  import { type AuroraRuntimeOptions } from "./runtime";
3
3
  import { type ConfigSource } from "./configSource";
4
4
  import type { AuroraConfig } from "../constants/presets";
5
+ import { type RendererStatus } from "../../../composables/glass/webgpu/rendererStatus";
5
6
  /**
6
7
  * Adaptive-substrate options threaded down from `Aurora.vue` (AM.W1). The
7
8
  * render mode is the RESOLVED concrete substrate (`"auto"` already collapsed
@@ -44,6 +45,7 @@ export interface UseAuroraReturn {
44
45
  * it flip on the post-first-paint idle tick.
45
46
  */
46
47
  isArmed: Readonly<Ref<boolean>>;
48
+ rendererStatus: Readonly<Ref<RendererStatus>>;
47
49
  }
48
50
  /**
49
51
  * Vue-side wrapper for the imperative `createAurora` runtime.
@@ -71,8 +73,8 @@ export interface UseAuroraReturn {
71
73
  * of three paths:
72
74
  * 1. pass an `onInitError(err)` handler in `runtimeOptions` (the explicit
73
75
  * opt-in — receives the error directly), OR
74
- * 2. install a Vue global `app.config.errorHandler` (the re-surfaced
75
- * microtask rejection reaches it), OR
76
+ * 2. when using `Aurora.vue`, install a Vue global `app.config.errorHandler`
77
+ * (the component adapts it into `onInitError`), OR
76
78
  * 3. knowingly accept the unhandled rejection (the dev console still gets it).
77
79
  * Armed deferred with NO `onInitError`, `useAurora` dev-warns ONCE so the
78
80
  * silent-by-omission case is visible. WebGL2-unavailable still throws HARD.
@@ -3,6 +3,8 @@ import { type AvatarImageProps } from 'reka-ui';
3
3
  type __VLS_Props = AvatarImageProps & {
4
4
  alt?: ImgHTMLAttributes['alt'];
5
5
  };
6
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
7
+ alt: string;
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
9
  declare const _default: typeof __VLS_export;
8
10
  export default _default;
@@ -1,8 +1,8 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export { default as Badge } from './Badge.vue';
3
3
  export declare const badgeVariants: (props?: ({
4
- variant?: "default" | "outline" | "secondary" | null | undefined;
5
- tone?: "neutral" | "success" | "warning" | "info" | "destructive" | null | undefined;
4
+ variant?: "default" | "secondary" | "outline" | null | undefined;
5
+ tone?: "neutral" | "destructive" | "success" | "warning" | "info" | null | undefined;
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  surface?: "glass" | "loud" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -49,6 +49,14 @@ type __VLS_Props = {
49
49
  * renderer seam (no parallel pause path); the prop owns the default.
50
50
  */
51
51
  paused?: boolean;
52
+ /**
53
+ * Accessible name for the optional press surface. Omit it for a decorative,
54
+ * listener-free Blob; provide it to render a native button that owns pointer,
55
+ * touch, Enter, and Space activation.
56
+ */
57
+ pressLabel?: string;
58
+ /** Disables the optional press surface and pointer response. */
59
+ disabled?: boolean;
52
60
  };
53
61
  declare function nudge(): void;
54
62
  declare function setMood(m: BlobMood): void;
@@ -61,11 +69,14 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
61
69
  pause: () => void;
62
70
  resume: () => void;
63
71
  settled: Readonly<import("vue").Ref<boolean, boolean>>;
72
+ rendererStatus: Readonly<import("vue").Ref<import("../../composables/glass/webgpu/rendererStatus").RendererStatus, import("../../composables/glass/webgpu/rendererStatus").RendererStatus>>;
64
73
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
65
74
  click: () => any;
75
+ rendererStatus: (status: import("../../composables/glass/webgpu/rendererStatus").RendererStatus) => any;
66
76
  "update:paused": (value: boolean) => any;
67
77
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
68
78
  onClick?: (() => any) | undefined;
79
+ onRendererStatus?: ((status: import("../../composables/glass/webgpu/rendererStatus").RendererStatus) => any) | undefined;
69
80
  "onUpdate:paused"?: ((value: boolean) => any) | undefined;
70
81
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
71
82
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,5 @@
1
1
  import { type Ref } from "vue";
2
+ import { type RendererStatus } from "../../../composables/glass/webgpu/useGpuSubstrate";
2
3
  import type { BlobConfig } from "../types";
3
4
  import type { BlobMoodSystem } from "./useBlobMood";
4
5
  import type { BlobPointer } from "./useBlobPointer";
@@ -69,6 +70,7 @@ export interface UseMetaballRendererReturn {
69
70
  * consumer observes it, never writes it.
70
71
  */
71
72
  settled: Readonly<Ref<boolean>>;
73
+ readonly rendererStatus: Readonly<Ref<RendererStatus>>;
72
74
  }
73
75
  /**
74
76
  * The GooBlob renderer — composes the `createGpuSubstrate` picker (BB.W-VIZ-SUITE /
@@ -13,10 +13,12 @@ interface Props extends PrimitiveProps {
13
13
  punch?: boolean;
14
14
  type?: ButtonHTMLAttributes['type'];
15
15
  disabled?: ButtonHTMLAttributes['disabled'];
16
+ /** Marks an in-flight command and disables native activation until it settles. */
17
+ loading?: boolean;
16
18
  }
17
- declare var __VLS_13: {};
19
+ declare var __VLS_17: {};
18
20
  type __VLS_Slots = {} & {
19
- default?: (props: typeof __VLS_13) => any;
21
+ default?: (props: typeof __VLS_17) => any;
20
22
  };
21
23
  declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
22
24
  as: import("reka-ui").AsTag | import("vue").Component;
@@ -1,8 +1,8 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
2
  export { default as Button } from './Button.vue';
3
3
  export declare const buttonVariants: (props?: ({
4
- variant?: "glass" | "link" | "default" | "outline" | "primary-audacious" | "gold-audacious" | "secondary" | "accent" | "ghost" | "glass-wash" | "ai" | null | undefined;
5
- size?: "xs" | "sm" | "md" | "lg" | null | undefined;
4
+ variant?: "link" | "default" | "glass" | "accent" | "secondary" | "outline" | "primary-audacious" | "gold-audacious" | "ghost" | "glass-wash" | "ai" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | "xs" | null | undefined;
6
6
  iconOnly?: boolean | null | undefined;
7
7
  tone?: "neutral" | "destructive" | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -155,15 +155,15 @@ interface Props extends PrimitiveProps {
155
155
  dataHueStrength?: string;
156
156
  class?: HTMLAttributes["class"];
157
157
  }
158
- declare var __VLS_13: {};
158
+ declare var __VLS_17: {};
159
159
  type __VLS_Slots = {} & {
160
- default?: (props: typeof __VLS_13) => any;
160
+ default?: (props: typeof __VLS_17) => any;
161
161
  };
162
162
  declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
163
163
  shadow: boolean;
164
- grid: boolean;
165
- surface: CardSurface;
166
164
  as: import("reka-ui").AsTag | import("vue").Component;
165
+ surface: CardSurface;
166
+ grid: boolean;
167
167
  deep: boolean;
168
168
  tier: CardTier;
169
169
  grain: boolean;
@@ -19,8 +19,8 @@ declare const _default: typeof __VLS_export;
19
19
  export default _default;
20
20
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ScrollCardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ScrollCardProps> & Readonly<{}>, {
21
21
  shadow: boolean;
22
- maxHeight: string;
23
22
  surface: CardSurface;
23
+ maxHeight: string;
24
24
  tier: CardTier;
25
25
  specular: CardSpecular;
26
26
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
@@ -0,0 +1 @@
1
+ @layer components { [data-slot="card"]:where([data-surface="glass"], [data-surface="cartoon"]) { --glass-tint-strength: 8%; --glass-border-rung: color-mix(in srgb, var(--foreground) 9%, transparent); } [data-slot="card"][data-surface="glass"]:not(.paper-grid) { background-blend-mode: var(--card-field-floor-blend, screen, normal); } @media (prefers-contrast: more) { [data-slot="card"][data-surface="glass"]:not(.paper-grid) { background-blend-mode: normal; } } [data-slot="card"][data-surface="glass"]:not(.paper-grid) { background-image: var( --card-field-floor-image, radial-gradient( 60% 55% at 80% 16%, oklch(0.96 0.04 78 / 0.5), oklch(0.96 0.04 78 / 0) 72% ), radial-gradient( 120% 110% at 78% 22%, oklch(0.9 0.075 72 / 0.5), oklch(0.9 0.075 72 / 0) 70% ) ); } :where([data-paper-field]) [data-slot="card"][data-surface="glass"]:not(.paper-grid) { background-image: none; } .paper-texture { background-image: var(--paper-grain-tooth); background-repeat: repeat; background-size: var(--paper-grain-tile); background-blend-mode: multiply; } :where(.dark) .paper-texture { background-blend-mode: screen; } .paper-grid { background-image: var(--paper-grid-texture); background-repeat: repeat; background-size: calc(var(--paper-grid-texture-size) * 4) calc(var(--paper-grid-texture-size) * 4), calc(var(--paper-grid-texture-size) * 4) calc(var(--paper-grid-texture-size) * 4), var(--paper-grid-texture-size) var(--paper-grid-texture-size), var(--paper-grid-texture-size) var(--paper-grid-texture-size); background-blend-mode: multiply; } :where(.dark) .paper-grid, .dark .paper-grid { background-blend-mode: screen; } } @media (prefers-reduced-transparency: reduce) { .paper-grid { background-image: none; } } @media (prefers-reduced-motion: reduce) { .paper-grid { animation: none !important; } } [data-variant="selection"] { --selection-accent-strength: 16%; --selection-accent-strength-selected: 28%; --glass-accent-strength: var(--selection-accent-strength); } [data-variant="selection"][data-selected="true"] { --glass-accent-strength: var(--selection-accent-strength-selected); --glass-bg-resting: var(--glass-bg-floating, var(--glass-bg-resting)); } @utility cartoon-surface { border-width: 2px; box-shadow: var(--shadow-cartoon-md); translate: 0; position: relative; --motion-weight: 1; --cartoon-press-t: var(--card-press-t, 0); transition: translate var(--duration-normal) var(--ease-cartoon-punch), scale var(--duration-normal) var(--ease-cartoon-punch), box-shadow var(--duration-normal) var(--ease-standard); &:hover:not(:active):not(:disabled) { translate: var(--lift-sm) var(--lift-sm); scale: 1.015 0.985; box-shadow: var(--shadow-cartoon-lg); & .cartoon-cast { box-shadow: var(--shadow-cartoon-lg); } } &:active:not(:disabled):not([data-press-armed]) { scale: 1.04 0.94; } } .cartoon-cast { position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none; box-shadow: var(--shadow-cartoon-md); --cast-travel: calc(6px * var(--motion-weight) * var(--cartoon-press-t)); --cast-spread: calc(1 + 0.18 * var(--motion-weight) * var(--cartoon-press-t)); translate: calc(-1 * var(--cast-travel) + var(--cartoon-cast-dx)) calc(var(--cast-travel) + var(--cartoon-cast-dy)); scale: var(--cast-spread); transition: translate calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch), scale calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch), --cartoon-cast-dx var(--duration-normal) var(--ease-cartoon-punch), --cartoon-cast-dy var(--duration-normal) var(--ease-cartoon-punch); will-change: translate, scale; } .btn-punch .cartoon-cast { box-shadow: var(--shadow-lg); } @media (prefers-reduced-motion: reduce) { .cartoon-surface, .cartoon-cast { --motion-weight: 0; transition: none; } } @utility veil-surface { --veil-bg: color-mix( in oklab, var(--glass-bg-quiet), var(--glass-tint-source) var(--glass-tint-strength) ); --veil-blur: var(--glass-blur-quiet); --veil-border: none; --veil-shadow: none; --veil-feather: none; background: var(--veil-bg); -webkit-backdrop-filter: var(--veil-blur); backdrop-filter: var(--veil-blur); border: var(--veil-border); box-shadow: var(--veil-shadow); mask-image: var(--veil-feather); }
@@ -9,7 +9,7 @@ declare var __VLS_1: {
9
9
  canScrollPrev: boolean;
10
10
  carouselApi: import("embla-carousel").EmblaCarouselType | undefined;
11
11
  carouselRef: HTMLElement | undefined;
12
- orientation: "horizontal" | "vertical" | undefined;
12
+ orientation: "vertical" | "horizontal" | undefined;
13
13
  scrollNext: () => void;
14
14
  scrollPrev: () => void;
15
15
  };
@@ -21,7 +21,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {
21
21
  canScrollPrev: import("vue").Ref<boolean, boolean>;
22
22
  carouselApi: import("vue").Ref<import("embla-carousel").EmblaCarouselType | undefined, import("embla-carousel").EmblaCarouselType | undefined>;
23
23
  carouselRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
24
- orientation: "horizontal" | "vertical" | undefined;
24
+ orientation: "vertical" | "horizontal" | undefined;
25
25
  scrollNext: () => void;
26
26
  scrollPrev: () => void;
27
27
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -9,7 +9,7 @@ type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_10) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
- variant: "glass" | "link" | "default" | "outline" | "primary-audacious" | "gold-audacious" | "secondary" | "accent" | "ghost" | "glass-wash" | "ai" | null;
12
+ variant: "link" | "default" | "glass" | "accent" | "secondary" | "outline" | "primary-audacious" | "gold-audacious" | "ghost" | "glass-wash" | "ai" | null;
13
13
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
15
  declare const _default: typeof __VLS_export;
@@ -9,7 +9,7 @@ type __VLS_Slots = {} & {
9
9
  default?: (props: typeof __VLS_10) => any;
10
10
  };
11
11
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
- variant: "glass" | "link" | "default" | "outline" | "primary-audacious" | "gold-audacious" | "secondary" | "accent" | "ghost" | "glass-wash" | "ai" | null;
12
+ variant: "link" | "default" | "glass" | "accent" | "secondary" | "outline" | "primary-audacious" | "gold-audacious" | "ghost" | "glass-wash" | "ai" | null;
13
13
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
14
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
15
  declare const _default: typeof __VLS_export;
@@ -4,6 +4,5 @@ export { default as CarouselItem } from './CarouselItem.vue';
4
4
  export { default as CarouselNext } from './CarouselNext.vue';
5
5
  export { default as CarouselPager } from './CarouselPager.vue';
6
6
  export { default as CarouselPrevious } from './CarouselPrevious.vue';
7
- export { default as GlassCarouselPager } from './GlassCarouselPager.vue';
8
7
  export type { UnwrapRefCarouselApi as CarouselApi, } from './interface';
9
8
  export { useCarousel } from './useCarousel';
@@ -7,7 +7,7 @@ declare const useProvideCarousel: (args_0: CarouselProps, emits: CarouselEmits)
7
7
  canScrollNext: import("vue").Ref<boolean, boolean>;
8
8
  scrollPrev: () => void;
9
9
  scrollNext: () => void;
10
- orientation: "horizontal" | "vertical" | undefined;
10
+ orientation: "vertical" | "horizontal" | undefined;
11
11
  };
12
12
  declare function useCarousel(): {
13
13
  carouselRef: import("vue").Ref<HTMLElement | undefined, HTMLElement | undefined>;
@@ -16,6 +16,6 @@ declare function useCarousel(): {
16
16
  canScrollNext: import("vue").Ref<boolean, boolean>;
17
17
  scrollPrev: () => void;
18
18
  scrollNext: () => void;
19
- orientation: "horizontal" | "vertical" | undefined;
19
+ orientation: "vertical" | "horizontal" | undefined;
20
20
  };
21
21
  export { useCarousel, useProvideCarousel, CAROUSEL_WEIGHTY_DURATION };
@@ -19,8 +19,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
19
19
  onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
20
20
  }>, {
21
21
  position: "inline" | "popper";
22
- align: "center" | "start" | "end";
23
22
  sideOffset: number;
23
+ align: "end" | "start" | "center";
24
24
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
25
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
26
  declare const _default: typeof __VLS_export;
@@ -6,6 +6,4 @@ export { default as ComboboxInput } from './ComboboxInput.vue';
6
6
  export { default as ComboboxItem } from './ComboboxItem.vue';
7
7
  export { default as ComboboxItemIndicator } from './ComboboxItemIndicator.vue';
8
8
  export { default as ComboboxList } from './ComboboxList.vue';
9
- export { default as ComboboxSeparator } from './ComboboxSeparator.vue';
10
- export { default as ComboboxViewport } from './ComboboxViewport.vue';
11
- export { ComboboxCancel, ComboboxTrigger } from 'reka-ui';
9
+ export { ComboboxTrigger } from 'reka-ui';
@@ -24,9 +24,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
24
24
  } | undefined) => any) | undefined;
25
25
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
26
26
  }>, {
27
+ modelValue: import("reka-ui").AcceptableValue | import("reka-ui").AcceptableValue[];
27
28
  open: boolean;
28
29
  surface: Surface;
29
- modelValue: import("reka-ui").AcceptableValue | import("reka-ui").AcceptableValue[];
30
30
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
31
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
32
32
  declare const _default: typeof __VLS_export;
@@ -1,15 +1,18 @@
1
- import type { DialogRootProps } from 'reka-ui';
1
+ import type { ComboboxRootProps, DialogRootProps } from 'reka-ui';
2
2
  import type { Surface } from '../_shared/useSurfaceAxis';
3
- type __VLS_Props = DialogRootProps & {
3
+ type CommandDialogProps = DialogRootProps & {
4
4
  surface?: Surface;
5
+ modelValue?: ComboboxRootProps['modelValue'];
5
6
  };
6
- declare var __VLS_20: {};
7
+ declare var __VLS_24: {};
7
8
  type __VLS_Slots = {} & {
8
- default?: (props: typeof __VLS_20) => any;
9
+ default?: (props: typeof __VLS_24) => any;
9
10
  };
10
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ declare const __VLS_base: import("vue").DefineComponent<CommandDialogProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ "update:modelValue": (value: import("reka-ui").AcceptableValue) => any;
11
13
  "update:open": (value: boolean) => any;
12
- }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ }, string, import("vue").PublicProps, Readonly<CommandDialogProps> & Readonly<{
15
+ "onUpdate:modelValue"?: ((value: import("reka-ui").AcceptableValue) => any) | undefined;
13
16
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
14
17
  }>, {
15
18
  surface: Surface;
@@ -0,0 +1 @@
1
+ .completion-seal { --seal-ink: var(--phase-complete-color, var(--color-gold)); display: inline-flex; align-items: center; justify-content: center; transform: scale(var(--seal-scale, 1)); } .completion-seal[data-best] { --seal-best: var(--color-gold-light, var(--gold-light)); --seal-ink: var(--seal-best); } .completion-seal[data-shape="disc"] { --seal-ring-delay: var(--spring-snappy-duration, 0.34s); --seal-check-delay: calc(var(--spring-snappy-duration, 0.34s) * 2); } .completion-seal__disc { fill: var(--seal-disc-fill, color-mix(in oklab, var(--seal-ink), transparent 82%)); stroke: none; } .completion-seal__mark { fill: none; stroke: var(--seal-ink); stroke-width: var(--seal-stroke-width, 6); stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 100; stroke-dashoffset: calc(100 - var(--seal-draw, 100%) / 1%); --metal-glow-blur: var(--metal-glow-blur-default, 0.5em); --metal-glow-opacity: var(--metal-glow-opacity-default, 0.35); filter: drop-shadow( 0 0 calc(var(--metal-glow-blur) * var(--seal-glint, 0)) color-mix( in oklab, var(--seal-ink), transparent calc(100% - var(--metal-glow-opacity) * var(--seal-glint, 0) * 100%) ) ); } @media (prefers-reduced-motion: no-preference) { .completion-seal[data-play] { animation: completion-seal-settle var(--spring-bouncy-duration, 0.57s) var(--spring-bouncy) both; } .completion-seal:not([data-shape="disc"])[data-play] .completion-seal__mark { animation: completion-seal-draw var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) both, completion-seal-glint var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) var(--spring-snappy-duration, 0.34s) both; } .completion-seal[data-shape="disc"][data-play] .completion-seal__disc { animation: completion-seal-disc-in var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) both; } .completion-seal[data-shape="disc"][data-play] .completion-seal__ring { animation: completion-seal-draw var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) var(--seal-ring-delay, 0.34s) both; } .completion-seal[data-shape="disc"][data-play] .completion-seal__check { animation: completion-seal-draw var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) var(--seal-check-delay, 0.68s) both, completion-seal-glint var(--spring-snappy-duration, 0.34s) var(--ease-out, ease-out) calc( var(--seal-check-delay, 0.68s) + var(--spring-snappy-duration, 0.34s) ) both; } } @keyframes completion-seal-draw { from { --seal-draw: 0%; } to { --seal-draw: 100%; } } @keyframes completion-seal-disc-in { from { opacity: 0; } to { opacity: 1; } } @keyframes completion-seal-settle { from { --seal-scale: 0.92; } to { --seal-scale: 1; } } @keyframes completion-seal-glint { 0% { --seal-glint: 0; } 45% { --seal-glint: 1; } 100% { --seal-glint: 0; } }
@@ -1,5 +1,10 @@
1
1
  import { type ConstellationProps } from "./constellationField";
2
- declare const __VLS_export: import("vue").DefineComponent<ConstellationProps, import("./composables/useConstellation").ConstellationExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ConstellationProps> & Readonly<{}>, {
2
+ import type { RendererStatus } from "../../composables/glass/webgpu/rendererStatus";
3
+ declare const __VLS_export: import("vue").DefineComponent<ConstellationProps, import("./composables/useConstellation").ConstellationExpose, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
4
+ rendererStatus: (status: RendererStatus) => any;
5
+ }, string, import("vue").PublicProps, Readonly<ConstellationProps> & Readonly<{
6
+ onRendererStatus?: ((status: RendererStatus) => any) | undefined;
7
+ }>, {
3
8
  link: number;
4
9
  speed: number;
5
10
  count: number;
@@ -1,32 +1,18 @@
1
1
  import { type Ref } from "vue";
2
- import { type GpuBackend } from "../../../composables/glass/webgpu/useGpuSubstrate";
3
2
  import { type ConstellationField, type ConstellationProps } from "../constellationField";
4
- /** The route-pointer read a background constellation feeds its own field from. */
3
+ import { type RendererStatus } from "../../../composables/glass/webgpu/rendererStatus";
5
4
  export interface ConstellationRoutePointerRead {
6
- /** Viewport-normalized route pointer (0..1). */
7
5
  x: number;
8
6
  y: number;
9
- /** True while a live pointer is over the viewport (and not PRM/paused-silenced). */
10
7
  active: boolean;
11
8
  }
12
- /** The optional composable seams (BI.W-CONSTELLATION-DEDUPE — the interactive-bg feed). */
13
9
  export interface UseConstellationOptions {
14
- /**
15
- * The interactive-BACKGROUND feed. When provided, the constellation reads the route
16
- * chassis broadcaster each frame and drives a SUBTLE pointer WELL over the KEPT
17
- * per-node integrator via `constellationWellMapping` (a longer-half-life field, so
18
- * the background lean is ~2–6%, not the foreground gravity-well pull). Undefined for
19
- * a foreground demo (which owns its own host listeners). Passed by `Constellation.vue`
20
- * off the `backgroundInteractive` prop.
21
- */
10
+ /** Optional route-owned pointer feed for a non-interactive background field. */
22
11
  routePointer?: () => ConstellationRoutePointerRead | null;
23
12
  }
24
- /** The imperative seam the SFC re-exposes via `defineExpose`. */
25
13
  export interface ConstellationExpose {
26
14
  field: ConstellationField;
27
15
  isFrozen: Ref<boolean>;
28
- /** The resolved backend (`"webgpu"` where supported, else the WebGL2 instanced twin). */
29
- backend: () => GpuBackend;
30
16
  warpTo(a: {
31
17
  x: number;
32
18
  y: number;
@@ -35,5 +21,6 @@ export interface ConstellationExpose {
35
21
  releaseWell(): void;
36
22
  warpSettled(): boolean;
37
23
  pinNode(idx: number): void;
24
+ rendererStatus: Readonly<Ref<RendererStatus>>;
38
25
  }
39
26
  export declare function useConstellation(props: ConstellationProps, hostRef: Ref<HTMLElement | null>, canvasRef: Ref<HTMLCanvasElement | null>, options?: UseConstellationOptions): ConstellationExpose;
@@ -59,19 +59,14 @@ 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
- */
62
+ /** Maximum public node count; keeps the quadratic proximity scan bounded. */
66
63
  export declare const MAX_NODES = 256;
67
64
  /**
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.
65
+ * Per-node paint-density budget. A denser neighborhood drops its weakest edges so a
66
+ * pathological link radius cannot turn the quiet lattice into an opaque mesh.
72
67
  */
73
68
  export declare const MAX_DEGREE = 12;
74
- /** The pre-sized edge instance budget (`MAX_NODES · MAX_DEGREE`). */
69
+ /** Maximum painted edges (`MAX_NODES · MAX_DEGREE`). */
75
70
  export declare const E_MAX: number;
76
71
  /**
77
72
  * The pointer-parallax depth default (§6). Each node carries a seeded depth `z ∈ [0,1]`;
@@ -85,13 +80,8 @@ export declare const E_MAX: number;
85
80
  */
86
81
  export declare const DEFAULT_PARALLAX = 0;
87
82
  /**
88
- * The base node radius band (CSS px) the DPR-aware SDF circle sizes within (the §1 "Node
89
- * size" config axis). `seedField` rolls each node's radius in `[NODE_R_MIN, NODE_R_MIN +
90
- * NODE_R_SPREAD)` (the prior `1.6 + rng()*1.6` band, named); the WGSL/GLSL fragment SDF
91
- * sizes `half = radius · uKVis · uDpr / uResolution` so the disc samples at full device
92
- * resolution and is AA'd by the pixel-footprint derivative — crisp at ANY DPR.
83
+ * Base Canvas2D node-radius band in CSS px. `seedField` rolls each node's radius in
84
+ * `[NODE_R_MIN, NODE_R_MIN + NODE_R_SPREAD)`.
93
85
  */
94
86
  export declare const NODE_R_MIN = 1.6;
95
87
  export declare const NODE_R_SPREAD = 1.6;
96
- /** The hairline edge half-width (CSS px) the instanced segment-quad fragment AAs. */
97
- export declare const DEFAULT_LINE_WIDTH = 1;
@@ -45,11 +45,9 @@ import type { ConstellationEdge } from "./constellationTypes";
45
45
  * Scan the proximity graph and return its edge SET (the `1 − d²/reach²` distance-falloff
46
46
  * weight per pair within `reach = link·k`). `accentIndex ≥ 0` marks the edges incident on
47
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.
48
+ * frame and hands the result directly to the Canvas2D edge pass.
49
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).
50
+ * `eMax` caps the result. A denser neighborhood keeps its strongest links.
53
51
  */
54
52
  export declare function buildEdges(field: ConstellationField, link: number, accentIndex?: number, eMax?: number): ConstellationEdge[];
55
53
  /**
@@ -64,7 +62,7 @@ export declare function appendPointerWeb(edges: ConstellationEdge[], field: Cons
64
62
  * `parallax · z · (pointer − center)` — a cheap pointer-parallax giving the flat lattice
65
63
  * apparent depth (deeper nodes — higher `z` — shift more, the Awwwards "living network"
66
64
  * 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.
65
+ * renderer maps each node's `(x,y)` through this before painting the dot.
68
66
  */
69
67
  export declare function parallaxNodePos(node: ConstellationNode, pointer: ConstellationPointer | null, w: number, h: number, parallax: number): {
70
68
  x: number;
@@ -125,7 +125,7 @@ export declare const BURST_FIRE_THRESHOLD = 0.45;
125
125
  * `burst` (from the shared `usePointerVelocityField`, the eased flick impulse) warps the
126
126
  * focal node toward the cursor (the warp spring snaps it) AND drops an expanding ripple at
127
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
128
+ * (the Canvas2D ripple / consumer accent-ring overlay). A slow drag (`burst` below the
129
129
  * threshold) never fires (a steady hover is the gentle gather, not a snap). Returns true
130
130
  * when a burst fired. Composes the EXISTING `warpTo` + the ripple list — no new mechanic,
131
131
  * no second rAF (the warp rides the substrate's ONE clock); PRM is enforced by the CALLER
@@ -1,25 +1,15 @@
1
- import type { ConstellationField, ConstellationPalette } from "./constellationField";
1
+ import type { ConstellationEdge, ConstellationField, ConstellationPalette, ConstellationPointer, ConstellationRipple } from "./constellationTypes";
2
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. */
3
+ /** Visual sizes floor independently from field geometry. */
6
4
  export declare function kVisOf(field: ConstellationField): number;
7
5
  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
- */
6
+ /** Resolve the neutral palette and legibility weights from the canvas tokens. */
15
7
  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];
8
+ /** Paint the edge rows produced by the field's single `buildEdges` scan. */
9
+ export declare function drawEdges(ctx: CanvasRenderingContext2D, field: ConstellationField, edges: readonly ConstellationEdge[], palette: ConstellationPalette, opacity?: number): void;
10
+ /** Paint ambient nodes, applying only the visual parallax offset. */
11
+ export declare function drawNodes(ctx: CanvasRenderingContext2D, field: ConstellationField, palette: ConstellationPalette, opacity?: number, pointer?: ConstellationPointer | null, parallax?: number): void;
12
+ /** Paint the pointer node after its focus edges. */
13
+ export declare function drawPointer(ctx: CanvasRenderingContext2D, field: ConstellationField, pointer: ConstellationPointer | null, palette: ConstellationPalette, opacity?: number): void;
14
+ /** Paint and retire tap/flick ripples. */
15
+ export declare function drawRipples(ctx: CanvasRenderingContext2D, field: ConstellationField, now: number, ripples: ConstellationRipple[], palette: ConstellationPalette, opacity?: number): void;
@@ -9,19 +9,19 @@ export interface ConstellationNode {
9
9
  * BC.W-VIZ-CONSTELLATION — the seeded parallax DEPTH (`z ∈ [0,1]`, §6). The pointer
10
10
  * offsets the node's SCREEN position by `parallax · z · (pointer − center)` so the flat
11
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
12
+ * `seedField`; perturbs the painted node position only (never field geometry). A
13
13
  * field literal that omits it is treated as `z = 0.5` (the mid-plane, no parallax bias).
14
14
  */
15
15
  z?: number;
16
16
  }
17
17
  /**
18
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
19
+ * (`buildEdges`) writes each frame for the Canvas2D line pass. `a`/`b` are the
20
20
  * two endpoint positions in canvas-local CSS px; `alpha` is the distance-falloff weight
21
21
  * (`1 − d²/reach²`, the `drawEdges` math) the segment-quad fragment multiplies; `accent`
22
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).
23
+ * the pointer-web tether (the cursor's incident edges). The renderer consumes the row
24
+ * directly and never re-derives the scan.
25
25
  */
26
26
  export interface ConstellationEdge {
27
27
  ax: number;
@@ -308,8 +308,8 @@ export interface ConstellationProps {
308
308
  * depth `z ∈ [0,1]`; the pointer offsets node screen positions by `parallax · z ·
309
309
  * (pointer − center)` so the flat lattice reads as having depth (the Awwwards "living
310
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`.
311
+ * a behavior break); 0 = the flat lattice. It perturbs only the painted node position,
312
+ * never field geometry. Frozen under reduced-motion / `freeze`.
313
313
  */
314
314
  parallax?: number;
315
315
  /**
@@ -323,13 +323,14 @@ export interface ConstellationProps {
323
323
  opacityCeiling?: number;
324
324
  /** Seed for a reproducible field (number or hashed string); omit for `Math.random`. */
325
325
  seed?: number | string;
326
- /** Steer-toward-cursor + tap ripples. Default true; auto-off under reduced-motion. */
326
+ /** Decorative steer-toward-cursor + tap ripples. Default true; auto-off under reduced-motion. */
327
327
  pointerReactive?: boolean;
328
328
  /**
329
329
  * Click-to-warp (AX.W17): a click warps the focal node to the nearest
330
330
  * drifting node + springs it there. INDEPENDENT of `pointerReactive` (warp
331
331
  * works on a non-ripple lattice). Default false; auto-off under
332
- * reduced-motion (the focal mark stays put — the stated PRM policy).
332
+ * reduced-motion. Enabling it gives the host a named keyboard/pointer button
333
+ * contract; Enter/Space targets the field center through the same warp owner.
333
334
  */
334
335
  warpOnClick?: boolean;
335
336
  /**
@@ -351,7 +352,9 @@ export interface ConstellationProps {
351
352
  * and `pointerReactive` (a consumer can hold-to-pull on a non-ripple,
352
353
  * non-warp lattice). `true` uses the tokenised defaults; an object tunes the
353
354
  * gains. Default OFF (absent → byte-identical to HEAD). PRM-gated by the WARP
354
- * precedent (the held-timer is not registered under reduced-motion).
355
+ * precedent (the held-timer is not registered under reduced-motion). Enabling it
356
+ * gives the host a named keyboard/pointer button contract; keyboard press/release
357
+ * drives the same well target as pointer hold/release.
355
358
  */
356
359
  gravityWell?: boolean | {
357
360
  holdMs?: number;