@mkbabb/glass-ui 3.13.0 → 4.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 (304) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DdtWXxOK.js} +57 -52
  3. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-B0Vs6atR.js} +1 -1
  4. package/dist/{DataTable-BCddn3T3.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-8eZbdmPc.js} +1 -1
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-BpC0R_Ec.js} +1 -1
  11. package/dist/{Notification-DdwNxIrI.js → Notification-DKjKsQq8.js} +8 -8
  12. package/dist/{NumberFieldContent-CqaN-SvN.js → NumberFieldContent-1VtwDSgf.js} +1 -1
  13. package/dist/PopoverContent-BTorlp--.js +127 -0
  14. package/dist/{Progress-DwlUKGbr.js → Progress-hAT4gqGH.js} +97 -77
  15. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-CUVFTWk2.js} +2 -2
  16. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-C1jb3b3K.js} +22 -6
  17. package/dist/{Switch-CsIuYP_e.js → Switch-Dr--uLGH.js} +1 -1
  18. package/dist/{Toaster-D6q4HtXu.js → Toaster-Bm_HQSpc.js} +6 -6
  19. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-Dzk9hWsF.js} +1 -1
  20. package/dist/animated-digit.js +2 -2
  21. package/dist/api/index.d.ts +8 -5
  22. package/dist/api.js +2 -2
  23. package/dist/aurora.js +132 -117
  24. package/dist/{button-ChXMfsud.js → button-BNDWhAZb.js} +2 -2
  25. package/dist/button.js +1 -1
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.d.ts +1 -1
  28. package/dist/carousel.js +97 -141
  29. package/dist/collapsible.js +1 -1
  30. package/dist/color-swatch.d.ts +1 -0
  31. package/dist/color-swatch.js +47 -0
  32. package/dist/color.js +1 -1
  33. package/dist/command.js +1 -1
  34. package/dist/components/custom/aurora/constants/presets.d.ts +28 -0
  35. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  38. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  39. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  40. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  41. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  42. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  43. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  44. package/dist/components/custom/constellation/index.d.ts +1 -1
  45. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  46. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  47. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  48. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  49. package/dist/components/custom/dock/constants.d.ts +35 -0
  50. package/dist/components/custom/dock/index.d.ts +2 -0
  51. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  52. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  53. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  54. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  55. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  56. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  57. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  58. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  59. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  60. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -1
  61. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  62. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  63. package/dist/components/custom/handmark/brush.d.ts +269 -0
  64. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  65. package/dist/components/custom/handmark/constants.d.ts +39 -0
  66. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  67. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  68. package/dist/components/custom/handmark/index.d.ts +27 -0
  69. package/dist/components/custom/handmark/ink.d.ts +11 -0
  70. package/dist/components/custom/handmark/texture.d.ts +39 -0
  71. package/dist/components/custom/handmark/types.d.ts +62 -0
  72. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  73. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  74. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  75. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +15 -2
  76. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  77. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  78. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  79. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  80. package/dist/components/custom/tabs/constants.d.ts +9 -3
  81. package/dist/components/custom/tabs/index.d.ts +1 -1
  82. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  83. package/dist/components/ui/_shared/index.d.ts +2 -0
  84. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  85. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  86. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  87. package/dist/components/ui/carousel/index.d.ts +0 -1
  88. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  89. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  90. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  91. package/dist/components/ui/index.d.ts +0 -1
  92. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  93. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  94. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  95. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  96. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  97. package/dist/composables/dark/index.d.ts +1 -1
  98. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  99. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  100. package/dist/configurator.js +1 -1
  101. package/dist/confirm-dialog.js +2 -2
  102. package/dist/constellation.js +92 -94
  103. package/dist/context-menu.js +2 -2
  104. package/dist/controls.js +10 -4
  105. package/dist/dark.d.ts +1 -1
  106. package/dist/dark.js +1 -1
  107. package/dist/data-table.js +1 -1
  108. package/dist/dialog.js +2 -2
  109. package/dist/dock.js +510 -321
  110. package/dist/{dockContext-BegmJVmx.js → dockContext-Bu1Avy-a.js} +1 -1
  111. package/dist/dom.js +5 -5
  112. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-BJ7E9js_.js} +2 -2
  113. package/dist/dropdown-menu.js +1 -1
  114. package/dist/expandable-container.js +42 -38
  115. package/dist/fading-scroll.d.ts +1 -0
  116. package/dist/fading-scroll.js +2 -0
  117. package/dist/forms.js +3 -3
  118. package/dist/fourier-field.js +38 -37
  119. package/dist/fourier-math.js +2 -2
  120. package/dist/glass-panel.js +39 -36
  121. package/dist/glass-ui.css +1 -1
  122. package/dist/glass-ui.js +129 -145
  123. package/dist/goo-blob.js +86 -81
  124. package/dist/handmark.d.ts +1 -0
  125. package/dist/handmark.js +707 -0
  126. package/dist/header-ribbon.js +1 -1
  127. package/dist/hover-card.js +1 -1
  128. package/dist/hover-popover.js +1 -1
  129. package/dist/icon-chip.d.ts +1 -0
  130. package/dist/icon-chip.js +2 -0
  131. package/dist/icon-tooltip.js +1 -1
  132. package/dist/index.d.ts +2 -2
  133. package/dist/keyboard.js +1 -1
  134. package/dist/label.js +1 -1
  135. package/dist/labeled-field.js +6 -6
  136. package/dist/{math-U6-RrLmV.js → math-DeuJwLFx.js} +11 -3
  137. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  138. package/dist/metric-badge.js +1 -1
  139. package/dist/metric-cell.js +25 -22
  140. package/dist/metric-stack.js +1 -1
  141. package/dist/motion-core.js +33 -32
  142. package/dist/motion-curves.js +1 -1
  143. package/dist/motion.js +4 -4
  144. package/dist/notification.js +1 -1
  145. package/dist/number-field.js +1 -1
  146. package/dist/pager-dots.d.ts +1 -0
  147. package/dist/pager-dots.js +91 -0
  148. package/dist/paper-backdrop.js +1 -1
  149. package/dist/popover.js +1 -1
  150. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  151. package/dist/progress.js +1 -1
  152. package/dist/pulse.js +1 -1
  153. package/dist/reactive.js +2 -2
  154. package/dist/scrolling-text.js +1 -1
  155. package/dist/search.js +5 -5
  156. package/dist/select.js +3 -3
  157. package/dist/separator.js +1 -1
  158. package/dist/{sheet-1fChZjtw.js → sheet-CquRYOAw.js} +59 -55
  159. package/dist/sheet.js +1 -1
  160. package/dist/{slider-B-JP2JlI.js → slider-DQ95MET2.js} +7 -7
  161. package/dist/slider.js +1 -1
  162. package/dist/sortable-list.js +3 -3
  163. package/dist/styles/animations.css +11 -26
  164. package/dist/styles/components.css +1 -1
  165. package/dist/styles/configurator.css +35 -0
  166. package/dist/styles/dock/density.css +19 -0
  167. package/dist/styles/dock/overflow.css +15 -0
  168. package/dist/styles/dock/rail-extend.css +168 -71
  169. package/dist/styles/dock/section.css +59 -0
  170. package/dist/styles/dock/shell.css +34 -5
  171. package/dist/styles/dock-controls/icon-button.css +11 -1
  172. package/dist/styles/dock-controls/tab-button.css +24 -83
  173. package/dist/styles/dock-controls/triggers.css +7 -0
  174. package/dist/styles/dock.css +6 -3
  175. package/dist/styles/drawer.css +46 -0
  176. package/dist/styles/feedback-tone.css +104 -0
  177. package/dist/styles/glass/ladder.css +68 -22
  178. package/dist/styles/glass/surface-axis.css +113 -0
  179. package/dist/styles/glass/surfaces.css +88 -12
  180. package/dist/styles/glass.css +5 -2
  181. package/dist/styles/icon-chip.css +149 -0
  182. package/dist/styles/index.css +67 -5
  183. package/dist/styles/instrument-chassis.css +42 -0
  184. package/dist/styles/menu.css +127 -0
  185. package/dist/styles/segmented-tabs.css +160 -89
  186. package/dist/styles/select.css +50 -0
  187. package/dist/styles/theme/bridges.css +11 -1
  188. package/dist/styles/tokens/color-radius.css +40 -13
  189. package/dist/styles/tokens/dark-arm.css +124 -16
  190. package/dist/styles/tokens/glass.css +83 -23
  191. package/dist/styles/tokens/light-dark.css +48 -19
  192. package/dist/styles/tokens/offsets-sizing.css +62 -0
  193. package/dist/styles/tokens/property-regs.css +3 -10
  194. package/dist/styles/tokens/scale-paper.css +45 -2
  195. package/dist/styles/tokens/scheme-motion.css +32 -14
  196. package/dist/styles/transitions.css +7 -7
  197. package/dist/styles/typography/scale.css +153 -0
  198. package/dist/styles/typography/semantic.css +220 -0
  199. package/dist/styles/typography/utilities.css +159 -0
  200. package/dist/styles/typography.css +23 -507
  201. package/dist/styles/utilities/a11y-overrides.css +33 -4
  202. package/dist/styles/utilities/base.css +177 -1
  203. package/dist/styles/utilities/btn.css +18 -201
  204. package/dist/styles/view-transition.css +4 -1
  205. package/dist/switch.js +1 -1
  206. package/dist/tabs.js +154 -183
  207. package/dist/timeline.js +2 -2
  208. package/dist/toast.js +1 -1
  209. package/dist/toggle-chip.js +3 -1
  210. package/dist/toggle-group.js +1 -1
  211. package/dist/typewriter.js +1 -1
  212. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  213. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  214. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  215. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-CdwJ7284.js} +1 -1
  216. package/dist/{useSpringMount-CI2jOstM.js → useSpringMount-CvopqiFr.js} +1 -1
  217. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  218. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-28Tk2-t2.js} +1 -1
  219. package/dist/{vReveal-CqaCz_mC.js → useViewTransition-COsPjQVZ.js} +15 -12
  220. package/dist/vReveal-D9k0jADx.js +10 -0
  221. package/dist/watercolor-dot.js +12 -5
  222. package/package.json +71 -7
  223. package/src/styles/animations.css +11 -26
  224. package/src/styles/configurator.css +35 -0
  225. package/src/styles/dock/density.css +19 -0
  226. package/src/styles/dock/overflow.css +15 -0
  227. package/src/styles/dock/rail-extend.css +168 -71
  228. package/src/styles/dock/section.css +59 -0
  229. package/src/styles/dock/shell.css +34 -5
  230. package/src/styles/dock-controls/icon-button.css +11 -1
  231. package/src/styles/dock-controls/tab-button.css +24 -83
  232. package/src/styles/dock-controls/triggers.css +7 -0
  233. package/src/styles/dock.css +6 -3
  234. package/src/styles/drawer.css +42 -0
  235. package/src/styles/feedback-tone.css +104 -0
  236. package/src/styles/glass/ladder.css +68 -22
  237. package/src/styles/glass/surface-axis.css +113 -0
  238. package/src/styles/glass/surfaces.css +88 -12
  239. package/src/styles/glass.css +5 -2
  240. package/src/styles/icon-chip.css +149 -0
  241. package/src/styles/index.css +66 -4
  242. package/src/styles/instrument-chassis.css +42 -0
  243. package/src/styles/menu.css +127 -0
  244. package/src/styles/segmented-tabs.css +156 -87
  245. package/src/styles/select.css +50 -0
  246. package/src/styles/theme/bridges.css +11 -1
  247. package/src/styles/tokens/color-radius.css +40 -13
  248. package/src/styles/tokens/dark-arm.css +124 -16
  249. package/src/styles/tokens/glass.css +83 -23
  250. package/src/styles/tokens/light-dark.css +48 -19
  251. package/src/styles/tokens/offsets-sizing.css +62 -0
  252. package/src/styles/tokens/property-regs.css +3 -10
  253. package/src/styles/tokens/scale-paper.css +45 -2
  254. package/src/styles/tokens/scheme-motion.css +32 -14
  255. package/src/styles/transitions.css +7 -7
  256. package/src/styles/typography/scale.css +153 -0
  257. package/src/styles/typography/semantic.css +220 -0
  258. package/src/styles/typography/utilities.css +159 -0
  259. package/src/styles/typography.css +23 -507
  260. package/src/styles/utilities/a11y-overrides.css +33 -4
  261. package/src/styles/utilities/base.css +177 -1
  262. package/src/styles/utilities/btn.css +18 -201
  263. package/src/styles/view-transition.css +4 -1
  264. package/dist/CardAction-Cj2eycQ2.js +0 -157
  265. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  266. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  267. package/dist/TabsList-Dttss653.js +0 -105
  268. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  269. package/dist/components/custom/underline/index.d.ts +0 -2
  270. package/dist/components/custom/underline/types.d.ts +0 -56
  271. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  272. package/dist/underline.d.ts +0 -1
  273. package/dist/underline.js +0 -85
  274. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  275. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  276. /package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  277. /package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-DkMaQzH5.js} +0 -0
  278. /package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-DSjasZIt.js} +0 -0
  279. /package/dist/{Input-DWQQIOC4.js → Input-DVG_J0ne.js} +0 -0
  280. /package/dist/{Label-r3WzWrsj.js → Label-Ck9SWEKM.js} +0 -0
  281. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-CkPRRgl_.js} +0 -0
  282. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  283. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-Dcczq44n.js} +0 -0
  284. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DK2y1Bun.js} +0 -0
  285. /package/dist/{Separator-0JE6LtNu.js → Separator-BArl4OaB.js} +0 -0
  286. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  287. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  288. /package/dist/{compile-B7NGOBcP.js → compile-EXXzEr1q.js} +0 -0
  289. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  290. /package/dist/{createContext-BM46COQ-.js → createContext-B2RaZ-b8.js} +0 -0
  291. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  292. /package/dist/{springPresets--YdWTHtm.js → springPresets-WXaLbu8u.js} +0 -0
  293. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  294. /package/dist/{useInterval-iHludrxk.js → useInterval-CNdua40W.js} +0 -0
  295. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  296. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-C12hXwOZ.js} +0 -0
  297. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-V6nq5gJb.js} +0 -0
  298. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  299. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  300. /package/dist/{useSortable-muI29agz.js → useSortable-BVqlJRBR.js} +0 -0
  301. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-NmBM5V_4.js} +0 -0
  302. /package/dist/{useTimer-Dzarvzuk.js → useTimer-B_PAasDL.js} +0 -0
  303. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  304. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -3,14 +3,14 @@ import { type ConfiguratorDensity } from "./density";
3
3
  /**
4
4
  * Scroll behavior for the controls column.
5
5
  *
6
- * - `auto` — overflow-y-auto with `.scroll-fade-y` mask; controls scroll
7
- * when their intrinsic height exceeds the host. Default.
8
- * - `always` — controls always render scroll affordance (mask + thin
9
- * scrollbar). Use when authors want a fixed-height studio
10
- * regardless of content.
11
- * - `never` — controls do not scroll; host grows to content height. Use
12
- * for popover/sheet hosts that already manage their own
13
- * overflow.
6
+ * - `auto` — the controls column renders a <FadingScroll axis="y"> scroll-port
7
+ * (sharp at rest, feathered while overflowing); controls scroll when
8
+ * their intrinsic height exceeds the host. Default.
9
+ * - `always` — same <FadingScroll> scroll-port + thin scrollbar. Use when
10
+ * authors want a fixed-height studio regardless of content.
11
+ * - `never` — controls do not scroll; host grows to content height. Renders a
12
+ * plain div (no FadingScroll). Use for popover/sheet hosts that
13
+ * already manage their own overflow.
14
14
  */
15
15
  export type ConfiguratorScrollMode = "auto" | "always" | "never";
16
16
  /**
@@ -106,6 +106,17 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
106
106
  }) => any;
107
107
  } & {
108
108
  default?: (props: {}) => any;
109
+ } & {
110
+ controls?: (props: {
111
+ layers: readonly {
112
+ id: string;
113
+ label: string;
114
+ }[] | undefined;
115
+ activeLayer: string | undefined;
116
+ selectLayer: (id: string) => void;
117
+ }) => any;
118
+ } & {
119
+ default?: (props: {}) => any;
109
120
  } & {
110
121
  footer?: (props: {
111
122
  reset: () => void;
@@ -1,90 +1,12 @@
1
- import { type HTMLAttributes } from "vue";
2
- import { type ConstellationField } from "./constellationField";
3
- /**
4
- * Constellation — a slow, geometric proximity-graph lattice on a Canvas2D
5
- * surface. Nodes drift + bounce; near nodes link with distance-falloff
6
- * hairlines; the web leans toward the cursor and taps ripple. It composes the
7
- * `useCanvas2D` substrate, so it inherits the offscreen / tab-hidden /
8
- * reduced-motion freeze for free (no hand-rolled RAF-park).
9
- *
10
- * The lattice ships NEUTRAL. A branded skin (a focal ring, a callout label) is
11
- * the consumer's `drawOverlay(ctx, field, now)` pass — it runs AFTER the four
12
- * neutral passes and receives the live field so it can pin itself to a real
13
- * node. Zero deck-domain content lives in the component.
14
- *
15
- * Palette reads the FULL `--constellation-*` legibility set off the canvas (the
16
- * node/node-dim/line colors + the edge-alpha multipliers + the field-yields-to-
17
- * type `--constellation-alpha` knob; neutral fallbacks), so a consumer override
18
- * or a dark-mode flip re-tints AND re-weights the lattice (AX.W17).
19
- *
20
- * The focal node + click-to-warp (AX.W17) is a first-class engine concept: with
21
- * `warpOnClick`, a click warps the focal node to the nearest drifting node via a
22
- * critically-damped spring stepped INSIDE the substrate's single rAF (no
23
- * `useSpring`, no second rAF). The consumer paints the focal mark at
24
- * `field.warp.{x,y}` in its `drawOverlay`.
25
- */
26
- type __VLS_Props = {
27
- /** Node count. Default 64. */
28
- count?: number;
29
- /** Link distance in px (the falloff reach). Default 132. */
30
- link?: number;
31
- /** Drift speed. Default 0.16. */
32
- speed?: number;
33
- /**
34
- * AY.W-COHERE E3 — the per-instance outer-envelope RECESSION knob (the
35
- * aurora `opacityCeiling` / fourier `intensity` sibling — the SAME prop NAME
36
- * the other live substrates carry, so the four-substrate recession contract is
37
- * ONE vocabulary). The painted edge/node/web/ripple alpha scales by this value
38
- * OVER the mode-tuned `--constellation-alpha` base, so a constellation hero can
39
- * RECEDE behind content (StoryHero sets 0.4–0.6) exactly as its aurora + fourier
40
- * siblings do. Default `1` is byte-identical to HEAD (the draw-alpha trace is
41
- * unchanged — the default-OFF canary). NOT a second token: `--constellation-alpha`
42
- * stays the mode recession base, this is the per-instance loudness envelope.
43
- */
44
- opacityCeiling?: number;
45
- /**
46
- * Seed for a REPRODUCIBLE field. A `number` or `string` (hashed) seeds the
47
- * shared `mulberry32`; omit for a fresh `Math.random` field each mount.
48
- */
49
- seed?: number | string;
50
- /** Steer-toward-cursor + tap ripples. Default true; auto-off under reduced-motion. */
51
- pointerReactive?: boolean;
52
- /**
53
- * Click-to-warp (AX.W17). A click warps the focal node to the nearest
54
- * drifting node and SPRINGS it there (critically damped, chasing the LIVE
55
- * target). INDEPENDENT of `pointerReactive`. Default false; auto-off under
56
- * reduced-motion (the focal mark stays put). Sugars the exposed `warpTo(...)`.
57
- */
58
- warpOnClick?: boolean;
59
- /**
60
- * Auto-DRIFT (AY.W-CON1). A periodic auto-pick re-points the focal node to a
61
- * RANDOM node on a jittered cadence — the wander source on the SAME warp
62
- * spring (the 2nd half of the AX.W17 "drift + warp are ONE mechanic" thesis;
63
- * no second rAF, no second mechanic). `true` uses the default cadence
64
- * (8–16s, the slides rhythm); `{ minIdle?, jitter? }` tunes it (ms). Default
65
- * OFF — `wander` absent leaves `field.wander` undefined, byte-identical to
66
- * HEAD. PRM-gated by the WARP precedent: the cadence lives inside the
67
- * `!reducedMotion` step block, so under reduced-motion it never advances and
68
- * the focal mark stays at its seed (NOT fire-but-freeze).
69
- */
70
- wander?: boolean | {
71
- minIdle?: number;
72
- jitter?: number;
73
- };
74
- /**
75
- * Pointer-held GRAVITY-WELL (AY.W-CON2). Hold the pointer over the lattice and
76
- * the nodes within reach are PULLED toward it (an inverse-square force on the
77
- * SAME engine, no second rAF); release and the field cools back to `speed`.
78
- * INDEPENDENT of `warpOnClick` and `pointerReactive` (a consumer can
79
- * hold-to-pull on a non-ripple, non-warp lattice). `true` uses the tokenised
80
- * `--constellation-well-*` defaults; an object overrides the gains. Default
81
- * OFF — `gravityWell` absent leaves `field.well` undefined (byte-identical to
82
- * HEAD; `stepField` skips the force pass). PRM-gated by the WARP precedent: the
83
- * held-timer block lives inside `!reducedMotion`, so under reduced-motion the
84
- * well never arms; AND the well STATE resets to neutral on the PRM-true edge
85
- * (no half-ramped force frozen on).
86
- */
87
- gravityWell?: boolean | {
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<{}>, {
3
+ link: number;
4
+ speed: number;
5
+ count: number;
6
+ opacityCeiling: number;
7
+ pointerReactive: boolean;
8
+ warpOnClick: boolean;
9
+ gravityWell: boolean | {
88
10
  holdMs?: number;
89
11
  gain?: number;
90
12
  reach?: number;
@@ -92,129 +14,19 @@ type __VLS_Props = {
92
14
  maxSpeed?: number;
93
15
  soften?: number;
94
16
  };
95
- /**
96
- * PINNED node designation (AZ.W-CON-GEN G1). A pinned node is HELD by every step
97
- * pass — it does NOT drift, bounce, steer toward the cursor, or feel the
98
- * gravity-well, so it stays at its seeded position (the flagged node a
99
- * consumer pins). `false`/absent → no pin (every node drifts, byte-identical to
100
- * HEAD); `true` → node 0 (the canonical flagged node); a number → that index. The
101
- * `accentEdges` prop tints its incident edges; the `pinnedDrift` prop gently
102
- * wanders it around its anchor. The `pinNode(idx)` expose re-points it imperatively.
103
- */
104
- pinned?: boolean | number;
105
- /**
106
- * ACCENT-edge skin (AZ.W-CON-GEN G2). When `true`, edges incident on the PINNED
107
- * (else the FOCAL) node stroke the `--constellation-accent` tint at the
108
- * `--constellation-edge-accent-alpha` weight — the flagged-node tether — while
109
- * every other edge keeps the neutral register. Default OFF (the single-color
110
- * neutral pass, byte-identical to HEAD). Reads the accent off the resolved palette.
111
- */
112
- accentEdges?: boolean;
113
- /**
114
- * Autonomous PINNED-ANCHOR drift (AZ.W-CON-GEN G5). When set AND a node is pinned,
115
- * the pinned node gently eases around its seeded anchor within `wanderFrac`
116
- * (default ±0.14 of the canvas) on a jittered cadence (a closed-form easeInOutQuad
117
- * stepped inside the substrate's single rAF — no second rAF). DISTINCT from
118
- * `wander` (which re-targets the warp among random nodes): this breathes the ONE
119
- * pinned node around its rest. `true` uses the default cadence; an object tunes it.
120
- * Default OFF — the pinned node holds dead-still (byte-identical). PRM-gated by the
121
- * WARP precedent (the drift lives inside `!isStatic`; under reduce the pin holds).
122
- */
123
- pinnedDrift?: boolean | {
17
+ wander: boolean | {
18
+ minIdle?: number;
19
+ jitter?: number;
20
+ };
21
+ pinned: boolean | number;
22
+ accentEdges: boolean;
23
+ pinnedDrift: boolean | {
124
24
  wanderFrac?: number;
125
25
  durMs?: number;
126
26
  minIdle?: number;
127
27
  jitter?: number;
128
28
  };
129
- /**
130
- * Warp AUTO-RELEASE (AZ.W-CON-GEN G6). When `true`, a warp that has SETTLED on its
131
- * target clears its `targetIdx` — the focal node releases the spring and rides its
132
- * node's RAW drift (the identity-ride), freeing the spring for the next warp.
133
- * Default `false` keeps the held-target behaviour (the warp chases its node
134
- * forever — byte-identical to HEAD). Read the settled signal via the
135
- * `warpSettled()` expose.
136
- */
137
- warpAutoRelease?: boolean;
138
- /**
139
- * Deterministic-capture freeze (AY.W-CON3). When `true`, the lattice lays
140
- * out ONE reproducible STATIC frame and does NOT advance — seeded layout
141
- * (set `seed` for a stable field ACROSS runs; an unseeded freeze still
142
- * freezes but lays out a one-shot `Math.random` frame), no `stepField`, no
143
- * ripple / warp / wander / well advance, and a FROZEN `now` handed to
144
- * `drawOverlay` so a phase-driven skin (`(now % T) / T`) resolves to a fixed
145
- * value (the pulse-ring radius is identical frame-over-frame). Omit to
146
- * AUTO-DERIVE from `location.search` matching `export | print | freeze` (the
147
- * deploy-pipeline contract — a consumer's pptx / print / screenshot capture
148
- * gets a stable frame with zero per-consumer wiring). An explicit
149
- * `:freeze="false"` forces live even under a capture URL. Unifies with the
150
- * reduced-motion one-static-frame path — `freeze || reducedMotion` is the
151
- * single static-frame predicate; the capture takes no input (the pointer /
152
- * warp / well listeners are NOT registered under freeze).
153
- */
154
- freeze?: boolean;
155
- class?: HTMLAttributes["class"];
156
- /**
157
- * The skin seam. Runs after the neutral passes with the live field, so a
158
- * consumer paints its own focal mark pinned to a real node — read
159
- * `field.warp.{x,y}` for the spring-eased focal position when `warpOnClick`
160
- * is on. The branded content (a domain accent, a callout label) lives HERE,
161
- * in the consumer. Under `freeze` it receives a FROZEN `now`, so a phase-
162
- * driven mark resolves to a fixed value.
163
- */
164
- drawOverlay?: (ctx: CanvasRenderingContext2D, field: ConstellationField, now: number) => void;
165
- };
166
- declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
167
- /** The live field (the low-level imperative seam — for a custom overlay). */
168
- field: ConstellationField;
169
- /**
170
- * The resolved deterministic-capture predicate (AY.W-CON3) — `true` when the
171
- * lattice is laying out a frozen static frame (`freeze` prop OR a
172
- * `?export|print|freeze` URL OR reduced-motion via the substrate). A read-only
173
- * test/debug seam (the π freeze-live spec reads it to confirm the auto-derive
174
- * fired without inferring from drift).
175
- */
176
- isFrozen: import("vue").ComputedRef<boolean>;
177
- /**
178
- * Imperative warp (AX.W17). Two call shapes:
179
- * `warpTo(localPoint)` — `{x, y}` already in canvas-local px
180
- * (the lower primitive).
181
- * `warpTo(clientX, clientY)` — client coords, mapped via the
182
- * deck-scale `toLocal` (the sugar
183
- * `warpOnClick` calls internally).
184
- * The focal node re-points to the nearest drifting node + springs there.
185
- * Returns the chosen node index, or -1 on a degenerate no-op. No-op under
186
- * reduced-motion (the spring does not advance while the substrate is frozen).
187
- */
188
- warpTo(a: {
189
- x: number;
190
- y: number;
191
- } | number, b?: number): number;
192
- /**
193
- * Imperatively ARM the gravity-well at a canvas-LOCAL point (AY.W-CON2) — the
194
- * π-lane test seam that drives the well WITHOUT racing a real held-pointer
195
- * gesture + the held-timer. Sets the well position + `target = 1` directly (the
196
- * timer is bypassed; the ramp still eases `strength` over the next frames). No-op
197
- * when `gravityWell` is off (no `field.well`). Returns true when the well armed.
198
- */
199
- holdWellAt(x: number, y: number): boolean;
200
- /** Imperatively RELEASE the well (AY.W-CON2) — `target → 0`, the field cools. */
201
- releaseWell(): void;
202
- /**
203
- * The warp settled signal (AZ.W-CON-GEN G6) — `true` when the warp spring has
204
- * ARRIVED on its target (no active warp, OR the focal's gap to its live target is
205
- * within the settle band). A consumer polls this to know if a click-warp / wander
206
- * re-target is still in flight (the `isSettled` read). A read-only seam over the
207
- * engine `warpSettled`.
208
- */
209
- warpSettled(): boolean;
210
- /**
211
- * Imperatively PIN a node (AZ.W-CON-GEN G1) — re-points `field.pinnedIndex` to
212
- * `idx` so that node is HELD by every step pass (it stops drifting and holds its
213
- * current position). `idx < 0` clears the pin (every node drifts again). The
214
- * pinned node's incident edges tint accent under `accentEdges`; it wanders its
215
- * anchor under `pinnedDrift` (the cadence re-anchors on its next armed leg).
216
- */
217
- pinNode(idx: number): void;
218
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
29
+ warpAutoRelease: boolean;
30
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
219
31
  declare const _default: typeof __VLS_export;
220
32
  export default _default;
@@ -0,0 +1,26 @@
1
+ import { type Ref } from "vue";
2
+ import { type ConstellationField, type ConstellationProps } from "../constellationField";
3
+ /** The imperative seam the SFC re-exposes via `defineExpose`. */
4
+ export interface ConstellationExpose {
5
+ field: ConstellationField;
6
+ isFrozen: Ref<boolean>;
7
+ warpTo(a: {
8
+ x: number;
9
+ y: number;
10
+ } | number, b?: number): number;
11
+ holdWellAt(x: number, y: number): boolean;
12
+ releaseWell(): void;
13
+ warpSettled(): boolean;
14
+ pinNode(idx: number): void;
15
+ }
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
+ export declare function useConstellation(props: ConstellationProps, hostRef: Ref<HTMLElement | null>, canvasRef: Ref<HTMLCanvasElement | null>): ConstellationExpose;