@mkbabb/glass-ui 3.12.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 (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -0,0 +1,61 @@
1
+ import type { ConstellationPalette, ConstellationWellConfig } from "./constellationField";
2
+ /**
3
+ * The reference layout width (px) the field's node geometry is authored against. A
4
+ * live canvas's `k = width / BASE_WIDTH` scales every base-width length (the well
5
+ * reach/speed, the node spacing) so a 600px and a 1280px canvas read the same shape.
6
+ */
7
+ export declare const BASE_WIDTH = 1280;
8
+ /**
9
+ * The neutral palette FALLBACK the draw passes read when the `--constellation-*`
10
+ * color/alpha tokens are absent (SSR / no-token mount). The fallbacks mirror the §5c
11
+ * light-arm token defaults so a no-token mount still reads recessive-but-legible.
12
+ *
13
+ * `accent`/`edgeFloor`/`edgeAccentAlpha` (AZ.W-CON-GEN G3) are the ACCENT-edge skin
14
+ * weights the optional `drawEdges(…, accentIndex)` pass reads — the flagged-node EDGE
15
+ * tint. `accent` mirrors the `--constellation-accent` neutral library default;
16
+ * `edgeFloor: 0` is the byte-identity (no floor by default — a consumer lifts it so a
17
+ * distance-faded hairline clears the perceptual floor on a bright ground);
18
+ * `edgeAccentAlpha: 0.30` is the accent-incident edge multiplier.
19
+ */
20
+ export declare const DEFAULT_PALETTE: ConstellationPalette;
21
+ /**
22
+ * Warp spring DEFAULTS — `--constellation-warp-*` tokens override these on mount.
23
+ * `WARP_RESPONSE` is the keyframes.js angular PERIOD (s, NOT a settle-duration);
24
+ * `WARP_ZETA = 1.0` is critically damped so a focal mark never rings/overshoots.
25
+ */
26
+ export declare const WARP_RESPONSE = 0.55;
27
+ export declare const WARP_ZETA = 1;
28
+ /**
29
+ * Gravity-well tuning DEFAULTS (AY.W-CON2). The `--constellation-well-*` tokens
30
+ * override these on mount via `field.well.cfg`; these stay the fallback. SET by the
31
+ * §6 egg-live π readback (the field-perturbs-then-cools capture is the binding
32
+ * truth) — a moderate gain over a generous reach, a brisk ramp, a tight no-slingshot
33
+ * speed cap, and the singularity-soften floor.
34
+ */
35
+ export declare const DEFAULT_WELL_CONFIG: ConstellationWellConfig;
36
+ /**
37
+ * Auto-DRIFT cadence DEFAULTS (AY.W-CON1 source; tokenised in AY.W-CON2). The
38
+ * `--constellation-wander-idle`/`-wander-jitter` tokens override these on mount; a
39
+ * prop `{ minIdle, jitter }` still wins over the token. The 8s/8s default rhythm
40
+ * re-targets the focal mark every 8–16s (the slides cadence).
41
+ */
42
+ export declare const DEFAULT_WANDER_IDLE = 8000;
43
+ export declare const DEFAULT_WANDER_JITTER = 8000;
44
+ /**
45
+ * Autonomous PINNED-ANCHOR drift cadence DEFAULTS (AZ.W-CON-GEN G5). DISTINCT from
46
+ * `wander` (which re-targets the WARP spring among random nodes): this gently eases
47
+ * the PINNED node (`field.pinnedIndex`) around its seeded ANCHOR on a jittered
48
+ * cadence — the flagged point breathes its neighborhood without leaving it. The
49
+ * `--constellation-pinned-drift-*` tokens override these on mount; a prop still wins.
50
+ * `wanderFrac` (±0.14 of the canvas) keeps the pinned node clear of the hero type
51
+ * even as it drifts; `durMs` is the per-leg easeInOutQuad duration; the idle/jitter
52
+ * is the rest between legs (a long, calm rhythm, NOT a metronome).
53
+ */
54
+ export declare const DEFAULT_PINNED_DRIFT_FRAC = 0.14;
55
+ export declare const DEFAULT_PINNED_DRIFT_DUR = 2600;
56
+ export declare const DEFAULT_PINNED_DRIFT_IDLE = 6000;
57
+ export declare const DEFAULT_PINNED_DRIFT_JITTER = 8000;
58
+ /** R5-8 — the shipped visual-size floor: `kVisOf` === `k` for every canvas
59
+ * ≥ ~0.72·BASE_WIDTH ≈ 922px (incl. the 1280 export frame — byte-identical
60
+ * there by construction); below it the marks stop crushing sub-pixel. */
61
+ export declare const DEFAULT_K_FLOOR = 0.72;
@@ -0,0 +1,30 @@
1
+ import type { ConstellationField, ConstellationPalette, ConstellationPointer, ConstellationRipple } from "./constellationField";
2
+ import { DEFAULT_PALETTE } from "./constants";
3
+ /** R5-8 — the visual-SIZE draw scale: `max(k, kFloor)`. The four neutral passes
4
+ * size on this; positions/reach stay on TRUE `field.k`. Exported so a
5
+ * `drawOverlay` skin floors its own marks/labels on the same axis. */
6
+ export declare function kVisOf(field: ConstellationField): number;
7
+ export { DEFAULT_PALETTE };
8
+ /**
9
+ * Resolve the FULL neutral palette + legibility weights off a canvas's resolved
10
+ * custom properties (AX.W17). The colors AND the alpha multipliers route through
11
+ * 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.
13
+ */
14
+ export declare function readPalette(canvas: HTMLCanvasElement): ConstellationPalette;
15
+ /**
16
+ * Pass 1 — hairline edges between any two nodes within `link` px (alpha falls off with
17
+ * distance). The optional `accentIndex` (AZ.W-CON-GEN G2; default `-1` = OFF,
18
+ * byte-identical to the prior single-color pass) is the flagged-node ACCENT-edge skin:
19
+ * an edge incident on that node strokes `palette.accent` at `palette.edgeAccentAlpha`
20
+ * with a slightly heavier line (the flagged-node tether), while every other edge keeps
21
+ * the neutral register. The neutral edges carry a `palette.edgeFloor` minimum so a
22
+ * distance-faded hairline clears the perceptual floor on a bright ground (G3).
23
+ */
24
+ export declare function drawEdges(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette, opacityCeiling?: number, accentIndex?: number): void;
25
+ /** Pass 2 — ambient node dots. */
26
+ export declare function drawNodes(ctx: CanvasRenderingContext2D, field: ConstellationField, palette: ConstellationPalette, opacityCeiling?: number): void;
27
+ /** Pass 3 — the cursor joins the web: faint links to nodes within reach + a soft cursor node. */
28
+ export declare function drawPointerWeb(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette, pointer: ConstellationPointer | null, opacityCeiling?: number): void;
29
+ /** Pass 4 — tap ripples: expanding rings that fade over ~0.9s; consumed entries are spliced. */
30
+ export declare function drawRipples(ctx: CanvasRenderingContext2D, field: ConstellationField, now: number, ripples: ConstellationRipple[], palette: ConstellationPalette, opacityCeiling?: number): void;
@@ -1,291 +1,6 @@
1
- /** Reference width the `k` scale factor is keyed to (CSS px). */
2
- export declare const BASE_WIDTH = 1280;
3
- export interface ConstellationNode {
4
- x: number;
5
- y: number;
6
- vx: number;
7
- vy: number;
8
- r: number;
9
- dim: boolean;
10
- }
11
- export interface ConstellationRipple {
12
- x: number;
13
- y: number;
14
- /** `performance.now()` at first draw; -1 until stamped. */
15
- start: number;
16
- }
17
- /** The pointer position in canvas-local CSS px (`-1` = inactive). */
18
- export interface ConstellationPointer {
19
- x: number;
20
- y: number;
21
- }
22
- /**
23
- * The neutral palette + legibility weights resolved off the canvas custom
24
- * properties (the FULL `--constellation-*` set — AX.W17). `node`/`nodeDim`/
25
- * `line` are the colors; `edgeAlpha`/`edgeFocusAlpha`/`alpha` are the per-mode
26
- * legibility multipliers (replacing the `0.17`/`0.24` magic literals).
27
- */
28
- export interface ConstellationPalette {
29
- node: string;
30
- nodeDim: string;
31
- line: string;
32
- /** The hairline-edge alpha multiplier (was the `0.17` literal). */
33
- edgeAlpha: number;
34
- /** The focus-proximity edge multiplier (consumer skins may read it). */
35
- edgeFocusAlpha: number;
36
- /** The field-yields-to-type translucency knob (the global field dimmer). */
37
- alpha: number;
38
- }
39
- /**
40
- * The per-axis critically-damped warp spring on the focal node (AX.W17). The
41
- * focal mark's position is `(x, y)`; `vx`/`vy` its velocity; `targetIdx` the
42
- * LIVE node index it chases (re-read each frame so it tracks a DRIFTING target,
43
- * not a frozen click-time snapshot). `-1` = no active warp (the focal mark
44
- * rides its node's drift directly — the identity-ride at settle).
45
- */
46
- export interface ConstellationWarp {
47
- x: number;
48
- y: number;
49
- vx: number;
50
- vy: number;
51
- /** The chased node's INDEX (live target), or -1 when inactive. */
52
- targetIdx: number;
53
- }
54
- /**
55
- * The auto-DRIFT target-source (AY.W-CON1 — the 2nd half of the AX.W17 "drift +
56
- * warp are ONE mechanic" thesis). The warp re-points its focal node to a
57
- * periodically-chosen RANDOM node on a jittered cadence: the SAME warp spring,
58
- * a different target-PICKER (a click for warp, this cadence for drift). No new
59
- * rAF, no second mechanic — `stepField` steps this cadence inline, re-pointing
60
- * `setWarpTarget` to a picked node only when the spring has SETTLED (so a
61
- * click-warp in flight always pre-empts the cadence). PRM is enforced by the
62
- * CALLER (the component does not advance the cadence under reduced-motion — the
63
- * `stepField` call lives inside the `!reducedMotion` block — so the focal mark
64
- * stays at its seed: the WARP precedent, NOT fire-but-freeze).
65
- */
66
- export interface ConstellationWander {
67
- /** ms timestamp of the next auto re-target; -1 until armed on the first stepped frame. */
68
- nextAt: number;
69
- /** the minimum idle (ms) between auto re-targets. */
70
- minIdle: number;
71
- /** the random extra idle (ms) added per cadence (so the rhythm is not metronomic). */
72
- jitter: number;
73
- }
74
- /**
75
- * Auto-DRIFT cadence DEFAULTS (AY.W-CON1 source; tokenised in AY.W-CON2). The
76
- * `--constellation-wander-idle`/`-wander-jitter` tokens override these on mount via
77
- * `readInteractionConfig` (the SAME numeric `--constellation-*` cohort as the warp
78
- * spring + the well gains); a prop `{ minIdle, jitter }` still wins over the token.
79
- * The 8s/8s default rhythm re-targets the focal mark every 8–16s (the slides cadence).
80
- */
81
- export declare const DEFAULT_WANDER_IDLE = 8000;
82
- export declare const DEFAULT_WANDER_JITTER = 8000;
83
- /**
84
- * The warp-spring tuning the integrator reads (AY.W-CON2). Tokenised numeric (the
85
- * `--constellation-warp-*` cohort) so a consumer retunes the warp WITHOUT editing
86
- * src — read ONCE on mount via `parseFloat`, threaded onto the field.
87
- *
88
- * `response` is the keyframes.js `(response, dampingFraction)` model's ANGULAR
89
- * PERIOD (the SwiftUI `.spring(response:)` axis): `ω₀ = 2π/response`. It is NOT a
90
- * settle-duration — at ζ=1 the 2%-settle lands at `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`
91
- * (the `(1 + ω₀t)e^(−ω₀t)` critically-damped envelope). Documented here + in the
92
- * `--constellation-warp-response` token comment so the token semantics are honest
93
- * at ANY ζ (the AY.W-CON2 ω-reconcile; the engine keeps the keyframes.js convention,
94
- * mints NO second ω formula).
95
- */
96
- export interface ConstellationWarpConfig {
97
- /** keyframes.js angular period (s) — `ω₀ = 2π/response`, NOT a settle-duration. */
98
- response: number;
99
- /** damping ratio ζ — 1 critically damped (a focal mark must NOT ring). */
100
- zeta: number;
101
- }
102
- /**
103
- * The gravity-well tuning (AY.W-CON2). The held-pointer pull is an inverse-square
104
- * force composed into `stepField` (no new rAF). Tokenised numeric (the
105
- * `--constellation-well-*` cohort) so a consumer retunes the well WITHOUT editing
106
- * src. All distances are base-width px (`k`-scaled at step time).
107
- */
108
- export interface ConstellationWellConfig {
109
- /** the inverse-square pull gain (the force scale at unit distance). */
110
- gain: number;
111
- /** the reach (base-width px) — nodes beyond it are untouched (the O(within-reach) cost floor). */
112
- reach: number;
113
- /**
114
- * the ARM ramp rate (1/s) — `strength` eases toward `target = 1` at this rate
115
- * while HELD (the gentle bloom the token tunes). The RELEASE is NOT this rate:
116
- * it is the fixed brisk {@link WELL_RELEASE_RAMP} (the field-cools invariant —
117
- * not consumer-tunable, F8.2). A consumer slowing this token slows the ARM
118
- * bloom only; the release stays brisk so the cool gate holds.
119
- */
120
- ramp: number;
121
- /** the per-node speed cap (base-width px/frame) — the no-slingshot clamp. */
122
- maxSpeed: number;
123
- /** the singularity floor (px) — a node AT the cursor gets a bounded pull, never `∞`. */
124
- soften: number;
125
- /** ms the pointer is held before the well arms. */
126
- holdMs: number;
127
- }
128
- /**
129
- * The gravity-well live STATE (AY.W-CON2). `(x, y)` is the held pointer in
130
- * canvas-local px (`-1` = inactive); `strength` is the eased pull 0→1 (ramps to
131
- * `target` at `cfg.ramp`/s); `target` is the strength the ramp eases toward (1
132
- * while held, 0 on release). A transient force — the field renormalises back to
133
- * `speed` after release (the field-cools invariant).
134
- */
135
- export interface ConstellationWell {
136
- /** canvas-local px of the held pointer; `-1` = inactive. */
137
- x: number;
138
- y: number;
139
- /** the eased pull strength 0→1 (ramps to `target` at `cfg.ramp`/s). */
140
- strength: number;
141
- /** the strength the ramp is easing toward: 1 while held, 0 on release. */
142
- target: number;
143
- /** the well tuning (gain/reach/ramp/maxSpeed/soften). */
144
- cfg: ConstellationWellConfig;
145
- }
146
- /**
147
- * The field state the component exposes to its `drawOverlay` consumer so a
148
- * skin can pin itself to a real field node. `k` is the `width / BASE_WIDTH`
149
- * scale, `dpr` the device-pixel ratio applied by the substrate.
150
- *
151
- * The focal node (AX.W17) is a FIRST-CLASS library concept: `focalIndex` names
152
- * which node is focal (consumer-owned via `warpTo`), and the engine OWNS its
153
- * position via the `warp` spring stepped inside `stepField`. A `drawOverlay`
154
- * paints the focal mark at `field.warp.{x,y}` (the spring-eased position) —
155
- * node-position mutation `drawOverlay` structurally cannot express, resolved by
156
- * ONE first-class concept (warp + drift unify; no second parallel hook).
157
- */
158
- export interface ConstellationField {
159
- nodes: ConstellationNode[];
160
- /** The host canvas — for `getComputedStyle` token reads in an overlay. */
161
- canvas: HTMLCanvasElement | null;
162
- w: number;
163
- h: number;
164
- k: number;
165
- dpr: number;
166
- /**
167
- * The designated focal node's INDEX, or `-1` when none is pinned. Re-points
168
- * on each `warpTo`; node count is conserved (it is a designation, not a new
169
- * node). A `drawOverlay` reads `field.warp.{x,y}` for the spring-eased mark.
170
- */
171
- focalIndex: number;
172
- /** The per-axis warp spring the engine steps inside `stepField` (AX.W17). */
173
- warp: ConstellationWarp;
174
- /**
175
- * The warp-spring tuning `warpStep` reads (AY.W-CON2). Optional — absent
176
- * falls back to the shipped `{ response: 0.55, zeta: 1.0 }` defaults (the
177
- * byte-identical HEAD spring). A tokenised override (read on mount) reaches
178
- * the integrator through this member.
179
- */
180
- warpCfg?: ConstellationWarpConfig;
181
- /**
182
- * The optional auto-DRIFT cadence (AY.W-CON1). When set, `stepField`
183
- * periodically re-points the warp to a random node (the wander source on the
184
- * SAME spring). Absent (`undefined`) leaves the field BYTE-IDENTICAL to the
185
- * pre-wander HEAD — `stepField` skips the cadence block entirely.
186
- */
187
- wander?: ConstellationWander;
188
- /**
189
- * The optional gravity-well (AY.W-CON2). When set, `stepField` composes a
190
- * held-pointer inverse-square pull force (no new rAF) — `well.target → 1`
191
- * while held, `→ 0` on release, the field renormalising back to `speed` once
192
- * the well cools. Absent (`undefined`) leaves the field BYTE-IDENTICAL to the
193
- * pre-well HEAD — `stepField` skips the force pass entirely.
194
- */
195
- well?: ConstellationWell;
196
- }
197
- /**
198
- * The `<Constellation>` consumer prop surface (the public type a consumer types
199
- * a wrapper against). The `drawOverlay` seam is the branded-skin injection — it
200
- * runs AFTER the neutral passes with the live field.
201
- */
202
- export interface ConstellationProps {
203
- /** Node count. Default 64. */
204
- count?: number;
205
- /** Link distance in px (the falloff reach). Default 132. */
206
- link?: number;
207
- /** Drift speed. Default 0.16. */
208
- speed?: number;
209
- /** Seed for a reproducible field (number or hashed string); omit for `Math.random`. */
210
- seed?: number | string;
211
- /** Steer-toward-cursor + tap ripples. Default true; auto-off under reduced-motion. */
212
- pointerReactive?: boolean;
213
- /**
214
- * Click-to-warp (AX.W17): a click warps the focal node to the nearest
215
- * drifting node + springs it there. INDEPENDENT of `pointerReactive` (warp
216
- * works on a non-ripple lattice). Default false; auto-off under
217
- * reduced-motion (the focal mark stays put — the stated PRM policy).
218
- */
219
- warpOnClick?: boolean;
220
- /**
221
- * Auto-DRIFT (AY.W-CON1): a periodic auto-pick re-points the focal node to a
222
- * random node on a jittered cadence — the wander source on the SAME warp
223
- * spring (no second mechanic). `true` uses the default cadence (8–16s, the
224
- * slides rhythm); `{ minIdle, jitter }` tunes it. Default OFF (absent →
225
- * byte-identical to HEAD). PRM-gated by the WARP precedent (the cadence never
226
- * advances under reduced-motion — the focal stays at its seed).
227
- */
228
- wander?: boolean | {
229
- minIdle?: number;
230
- jitter?: number;
231
- };
232
- /**
233
- * Pointer-held GRAVITY-WELL (AY.W-CON2): hold the pointer and the lattice is
234
- * pulled toward it (an inverse-square force on the same engine, no new rAF);
235
- * release and the field cools back to `speed`. INDEPENDENT of `warpOnClick`
236
- * and `pointerReactive` (a consumer can hold-to-pull on a non-ripple,
237
- * non-warp lattice). `true` uses the tokenised defaults; an object tunes the
238
- * gains. Default OFF (absent → byte-identical to HEAD). PRM-gated by the WARP
239
- * precedent (the held-timer is not registered under reduced-motion).
240
- */
241
- gravityWell?: boolean | {
242
- holdMs?: number;
243
- gain?: number;
244
- reach?: number;
245
- ramp?: number;
246
- maxSpeed?: number;
247
- soften?: number;
248
- };
249
- /**
250
- * Deterministic-capture freeze (AY.W-CON3): when `true`, lays out ONE
251
- * reproducible STATIC frame (no `stepField`, no ripple / warp / wander / well
252
- * advance) and hands `drawOverlay` a FROZEN `now` so a phase-driven skin
253
- * resolves to a fixed value. Omit to AUTO-DERIVE from `location.search`
254
- * matching `export | print | freeze` (the deploy-pipeline contract); an
255
- * explicit `false` forces live even under a capture URL. Set `seed` for a
256
- * field stable ACROSS runs. Unifies with the reduced-motion one-static-frame
257
- * path (`freeze || reducedMotion` is the single static-frame predicate).
258
- */
259
- freeze?: boolean;
260
- class?: string;
261
- /** The skin seam — paints the consumer's focal mark on the live field. */
262
- drawOverlay?: (ctx: CanvasRenderingContext2D, field: ConstellationField, now: number) => void;
263
- }
264
- export declare const DEFAULT_PALETTE: ConstellationPalette;
265
- /**
266
- * Resolve the FULL neutral palette + legibility weights off a canvas's resolved
267
- * custom properties (AX.W17). The colors AND the alpha multipliers route through
268
- * the same `getComputedStyle` probe, so a dark-mode flip re-resolves BOTH the
269
- * `:root`/`.dark` color arms AND the per-mode alpha defaults in one read.
270
- */
271
- export declare function readPalette(canvas: HTMLCanvasElement): ConstellationPalette;
272
- /**
273
- * Read the NUMERIC interaction-tuning tokens (the warp spring + the gravity-well
274
- * gains) off a canvas's resolved custom properties — ONCE on mount (AY.W-CON2),
275
- * via `parseFloat`, NOT per-frame `getComputedStyle` (the hot loop stays clean).
276
- * Returns `{ warp, well }` configs the field carries; every member falls back to
277
- * the shipped default when the token is absent (an SSR / no-token mount reads the
278
- * byte-identical spring). The tokens are PLAIN numbers (`0.55`, `12000`), immune
279
- * to the W30 `light-dark()`-into-Canvas2D leak (they never reach a `fillStyle`).
280
- */
281
- export declare function readInteractionConfig(canvas: HTMLCanvasElement): {
282
- warp: ConstellationWarpConfig;
283
- well: ConstellationWellConfig;
284
- wander: {
285
- minIdle: number;
286
- jitter: number;
287
- };
288
- };
1
+ export { BASE_WIDTH } from "./constants";
2
+ export type * from "./constellationTypes";
3
+ import type { ConstellationNode, ConstellationField, ConstellationPointer } from "./constellationTypes";
289
4
  /**
290
5
  * Seed `count` drifting nodes inside `w × h`. `rng` is a `() => number` in
291
6
  * `[0, 1)` (the glass-ui `mulberry32`/`Math.random`); a seeded `rng` lays out a
@@ -325,118 +40,3 @@ export declare function refitField(field: ConstellationField, prevW: number, pre
325
40
  * (a click-warp in flight pre-empts the cadence — `warpSettled` reports false).
326
41
  */
327
42
  export declare function stepField(field: ConstellationField, k: number, speed: number, pointer: ConstellationPointer | null, dt?: number, now?: number, rng?: () => number): void;
328
- /**
329
- * Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
330
- * composed inside `stepField` (NO new rAF): ease `well.strength` toward
331
- * `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
332
- * inverse-square pull toward the held point onto each node within `cfg.reach`
333
- * (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
334
- * clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
335
- * invariant — so a released well re-settles). No-ops (entirely skipped) when
336
- * `field.well` is undefined → the default render is byte-identical to HEAD.
337
- *
338
- * `dt` is clamped to {@link WARP_DT_CLAMP} (the same park-resume guard the warp
339
- * uses) so a tab-throttle gap cannot slingshot the field in one giant step.
340
- */
341
- export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
342
- /**
343
- * Warp spring tuning DEFAULTS — gentle critically-damped (no overshoot on a focal
344
- * mark). The `--constellation-warp-response`/`-zeta` tokens override these on mount
345
- * via `field.warpCfg` (AY.W-CON2); these stay the byte-identical fallback.
346
- *
347
- * `WARP_RESPONSE` is the keyframes.js `(response, dampingFraction)` model's ANGULAR
348
- * PERIOD (the SwiftUI `.spring(response:)` axis), `ω₀ = 2π/response` — NOT a
349
- * settle-duration. At ζ=1 the 2%-settle lands at `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`
350
- * (the `(1 + ω₀t)e^(−ω₀t)` critically-damped envelope); the shipped 0.55 settles
351
- * at ≈0.51s. This is the AY.W-CON2 ω-reconcile: the engine keeps the keyframes.js
352
- * `ω₀ = 2π/response` convention (the shared house model — `regen-spring-tokens.mjs`,
353
- * `keyframes.d.ts:860-882`) and mints NO second ω formula; the SEMANTIC honesty
354
- * (period, not settle) lives in this doc + the token comment + the settle-time unit
355
- * assertion, so a consumer setting the token gets the documented behaviour at ANY ζ.
356
- */
357
- export declare const WARP_RESPONSE = 0.55;
358
- export declare const WARP_ZETA = 1;
359
- /**
360
- * Gravity-well tuning DEFAULTS (AY.W-CON2). The `--constellation-well-*` tokens
361
- * override these on mount via `field.well.cfg`; these stay the fallback. SET by the
362
- * §6 egg-live π readback (the field-perturbs-then-cools capture is the binding
363
- * truth) — a moderate gain over a generous reach, a brisk ramp, a tight no-slingshot
364
- * speed cap, and the singularity-soften floor.
365
- */
366
- export declare const DEFAULT_WELL_CONFIG: ConstellationWellConfig;
367
- /**
368
- * The nearest DRIFTING node to `(px, py)` in canvas-local px — a linear O(count)
369
- * min-d² scan (count 64 default — negligible; matches the O(count²) edge pass).
370
- * "Lattice point" = the nearest drifting NODE (the constellation has NO fixed
371
- * lattice). `excludeIdx` drops a node from the candidate set (the focal node
372
- * excludes ITSELF, so a cursor-on-focal warp no-ops). Returns `-1` if no
373
- * eligible node exists (empty field, or only the excluded node).
374
- */
375
- export declare function nearestNode(field: ConstellationField, px: number, py: number, excludeIdx?: number): number;
376
- /**
377
- * Advance the focal-node warp spring one `dt` (seconds). A per-axis 2nd-order
378
- * critically-damped integrator over `field.warp.{x,y}` toward the LIVE position
379
- * of `field.nodes[field.warp.targetIdx]` — re-read EACH frame, so the spring
380
- * CHASES a drifting target and arrives ON it (the identity-ride). No-ops when no
381
- * warp is active (`targetIdx < 0`). `dt` is clamped to {@link WARP_DT_CLAMP} so a
382
- * tab-throttle / offscreen-park-resume gap cannot teleport the mark.
383
- *
384
- * x += v·dt ; v += (−2ζω·v − ω²·(x − target))·dt
385
- *
386
- * Reads `(response, ζ)` from `field.warpCfg` (the tokenised override — AY.W-CON2),
387
- * falling back to the shipped `WARP_RESPONSE`/`WARP_ZETA` defaults. `ω = 2π/response`
388
- * is the keyframes.js `(response, dampingFraction)` convention (the SHARED house
389
- * model — `ω₀` is the angular frequency, `response` its ANGULAR PERIOD, NOT a
390
- * settle-duration; at ζ=1 the 2%-settle is `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`). NO
391
- * second ω formula is minted (the ω-reconcile). NOT its rAF — the FORBID-useSpring
392
- * contract (a second rAF would defeat the parked-substrate one-path freeze).
393
- */
394
- export declare function warpStep(field: ConstellationField, dt: number): void;
395
- /**
396
- * Point the warp at a node INDEX (the live target-source seam). The focal node
397
- * re-points to `idx`; the spring chases `nodes[idx]`'s LIVE position FROM the
398
- * focal mark's CURRENT position (`warp.{x,y}`) — a continuous spring-eased path,
399
- * never a snap. The component seeds `warp.{x,y}` at field-center on first layout,
400
- * so even the first warp springs from a real start point. `idx < 0` clears the
401
- * warp (the focal mark is removed). Re-pointing does NOT zero the velocity, so a
402
- * mid-flight re-target curves smoothly toward the new node.
403
- */
404
- export declare function setWarpTarget(field: ConstellationField, idx: number): void;
405
- /**
406
- * Warp the focal node to the nearest drifting node to a canvas-LOCAL px point
407
- * (the `warpTo(point)` primitive). The DEGENERATE case — the click's UNCONSTRAINED
408
- * nearest node is already the current focal (cursor on/closest to the focal mark)
409
- * — NO-OPS (returns the current focal; a click on yourself does not re-warp). Any
410
- * OTHER click re-points to the nearest node, with the focal EXCLUDED from the
411
- * candidate set (you never re-warp to yourself; the next-nearest wins). Returns
412
- * the chosen node index, or `-1` when no eligible node exists. The component's
413
- * `warpTo(clientX, clientY)` sugar maps client→local px via `toLocal` first.
414
- */
415
- export declare function warpTo(field: ConstellationField, px: number, py: number): number;
416
- /**
417
- * Is the warp spring ARRIVED on its target (AY.W-CON1)? True when there is no
418
- * active target (`targetIdx < 0`) OR the focal's gap to its LIVE target node is
419
- * within {@link WARP_SETTLE_BAND}. A click-warp in flight (hundreds of px out)
420
- * reports NOT arrived, so a user click always PRE-EMPTS the auto-drift cadence
421
- * (the wander only re-targets a spring that has reached its current node). The
422
- * gate is POSITION-only by design — a critically-damped spring tracking a drifting
423
- * node carries a non-zero steady-state velocity forever, so a velocity term would
424
- * never clear on a live field.
425
- */
426
- export declare function warpSettled(field: ConstellationField): boolean;
427
- /**
428
- * Pick a random eligible node index for the auto-drift re-target (AY.W-CON1) —
429
- * any node EXCEPT the current `focalIndex` (so the focal actually MOVES). `rng`
430
- * is the seeded `() => number` in `[0, 1)`. A degenerate field (≤1 node, or only
431
- * the current focal) returns the current focal, which `setWarpTarget` no-ops
432
- * cleanly (no crash, no jump).
433
- */
434
- export declare function pickWanderTarget(field: ConstellationField, rng: () => number): number;
435
- /** Pass 1 — hairline edges between any two nodes within `link` px (alpha falls off with distance). */
436
- export declare function drawEdges(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette): void;
437
- /** Pass 2 — ambient node dots. */
438
- export declare function drawNodes(ctx: CanvasRenderingContext2D, field: ConstellationField, palette: ConstellationPalette): void;
439
- /** Pass 3 — the cursor joins the web: faint links to nodes within reach + a soft cursor node. */
440
- export declare function drawPointerWeb(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette, pointer: ConstellationPointer | null): void;
441
- /** Pass 4 — tap ripples: expanding rings that fade over ~0.9s; consumed entries are spliced. */
442
- export declare function drawRipples(ctx: CanvasRenderingContext2D, field: ConstellationField, now: number, ripples: ConstellationRipple[], palette: ConstellationPalette): void;
@@ -0,0 +1,132 @@
1
+ import type { ConstellationField, ConstellationPinnedDrift, ConstellationWarpConfig, ConstellationWellConfig } from "./constellationField";
2
+ import { DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_WELL_CONFIG, WARP_RESPONSE, WARP_ZETA, DEFAULT_PINNED_DRIFT_FRAC, DEFAULT_PINNED_DRIFT_DUR, DEFAULT_PINNED_DRIFT_IDLE, DEFAULT_PINNED_DRIFT_JITTER } from "./constants";
3
+ export { DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_WELL_CONFIG, WARP_RESPONSE, WARP_ZETA };
4
+ export { DEFAULT_PINNED_DRIFT_FRAC, DEFAULT_PINNED_DRIFT_DUR, DEFAULT_PINNED_DRIFT_IDLE, DEFAULT_PINNED_DRIFT_JITTER, };
5
+ /**
6
+ * Read the NUMERIC interaction-tuning tokens (the warp spring + the gravity-well
7
+ * gains) off a canvas's resolved custom properties — ONCE on mount (AY.W-CON2),
8
+ * via `parseFloat`, NOT per-frame `getComputedStyle` (the hot loop stays clean).
9
+ * Returns `{ warp, well }` configs the field carries; every member falls back to
10
+ * the shipped default when the token is absent (an SSR / no-token mount reads the
11
+ * byte-identical spring). The tokens are PLAIN numbers (`0.55`, `12000`), immune
12
+ * to the W30 `light-dark()`-into-Canvas2D leak (they never reach a `fillStyle`).
13
+ */
14
+ export declare function readInteractionConfig(canvas: HTMLCanvasElement): {
15
+ warp: ConstellationWarpConfig;
16
+ well: ConstellationWellConfig;
17
+ wander: {
18
+ minIdle: number;
19
+ jitter: number;
20
+ };
21
+ };
22
+ /**
23
+ * Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
24
+ * composed inside `stepField` (NO new rAF): ease `well.strength` toward
25
+ * `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
26
+ * inverse-square pull toward the held point onto each node within `cfg.reach`
27
+ * (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
28
+ * clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
29
+ * invariant — so a released well re-settles). No-ops (entirely skipped) when
30
+ * `field.well` is undefined → the default render is byte-identical to HEAD.
31
+ *
32
+ * `dt` is clamped to {@link WARP_DT_CLAMP} (the same park-resume guard the warp
33
+ * uses) so a tab-throttle gap cannot slingshot the field in one giant step.
34
+ */
35
+ export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
36
+ /**
37
+ * The nearest DRIFTING node to `(px, py)` in canvas-local px — a linear O(count)
38
+ * min-d² scan (count 64 default — negligible; matches the O(count²) edge pass).
39
+ * "Lattice point" = the nearest drifting NODE (the constellation has NO fixed
40
+ * lattice). `excludeIdx` drops a node from the candidate set (the focal node
41
+ * excludes ITSELF, so a cursor-on-focal warp no-ops). Returns `-1` if no
42
+ * eligible node exists (empty field, or only the excluded node).
43
+ */
44
+ export declare function nearestNode(field: ConstellationField, px: number, py: number, excludeIdx?: number): number;
45
+ /**
46
+ * Advance the focal-node warp spring one `dt` (seconds). A per-axis 2nd-order
47
+ * critically-damped integrator over `field.warp.{x,y}` toward the LIVE position
48
+ * of `field.nodes[field.warp.targetIdx]` — re-read EACH frame, so the spring
49
+ * CHASES a drifting target and arrives ON it (the identity-ride). No-ops when no
50
+ * warp is active (`targetIdx < 0`). `dt` is clamped to {@link WARP_DT_CLAMP} so a
51
+ * tab-throttle / offscreen-park-resume gap cannot teleport the mark.
52
+ *
53
+ * x += v·dt ; v += (−2ζω·v − ω²·(x − target))·dt
54
+ *
55
+ * Reads `(response, ζ)` from `field.warpCfg` (the tokenised override — AY.W-CON2),
56
+ * falling back to the shipped `WARP_RESPONSE`/`WARP_ZETA` defaults. `ω = 2π/response`
57
+ * is the keyframes.js `(response, dampingFraction)` convention (the SHARED house
58
+ * model — `ω₀` is the angular frequency, `response` its ANGULAR PERIOD, NOT a
59
+ * settle-duration; at ζ=1 the 2%-settle is `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`). NO
60
+ * second ω formula is minted (the ω-reconcile). NOT its rAF — the FORBID-useSpring
61
+ * contract (a second rAF would defeat the parked-substrate one-path freeze).
62
+ */
63
+ export declare function warpStep(field: ConstellationField, dt: number): void;
64
+ /**
65
+ * Point the warp at a node INDEX (the live target-source seam). The focal node
66
+ * re-points to `idx`; the spring chases `nodes[idx]`'s LIVE position FROM the
67
+ * focal mark's CURRENT position (`warp.{x,y}`) — a continuous spring-eased path,
68
+ * never a snap. The component seeds `warp.{x,y}` at field-center on first layout,
69
+ * so even the first warp springs from a real start point. `idx < 0` clears the
70
+ * warp (the focal mark is removed). Re-pointing does NOT zero the velocity, so a
71
+ * mid-flight re-target curves smoothly toward the new node.
72
+ */
73
+ export declare function setWarpTarget(field: ConstellationField, idx: number): void;
74
+ /**
75
+ * Warp the focal node to the nearest drifting node to a canvas-LOCAL px point
76
+ * (the `warpTo(point)` primitive). The DEGENERATE case — the click's UNCONSTRAINED
77
+ * nearest node is already the current focal (cursor on/closest to the focal mark)
78
+ * — NO-OPS (returns the current focal; a click on yourself does not re-warp). Any
79
+ * OTHER click re-points to the nearest node, with the focal EXCLUDED from the
80
+ * candidate set (you never re-warp to yourself; the next-nearest wins). Returns
81
+ * the chosen node index, or `-1` when no eligible node exists. The component's
82
+ * `warpTo(clientX, clientY)` sugar maps client→local px via `toLocal` first.
83
+ */
84
+ export declare function warpTo(field: ConstellationField, px: number, py: number): number;
85
+ /**
86
+ * Is the warp spring ARRIVED on its target (AY.W-CON1)? True when there is no
87
+ * active target (`targetIdx < 0`) OR the focal's gap to its LIVE target node is
88
+ * within {@link WARP_SETTLE_BAND}. A click-warp in flight (hundreds of px out)
89
+ * reports NOT arrived, so a user click always PRE-EMPTS the auto-drift cadence
90
+ * (the wander only re-targets a spring that has reached its current node). The
91
+ * gate is POSITION-only by design — a critically-damped spring tracking a drifting
92
+ * node carries a non-zero steady-state velocity forever, so a velocity term would
93
+ * never clear on a live field.
94
+ */
95
+ export declare function warpSettled(field: ConstellationField): boolean;
96
+ /**
97
+ * Pick a random eligible node index for the auto-drift re-target (AY.W-CON1) —
98
+ * any node EXCEPT the current `focalIndex` (so the focal actually MOVES). `rng`
99
+ * is the seeded `() => number` in `[0, 1)`. A degenerate field (≤1 node, or only
100
+ * the current focal) returns the current focal, which `setWarpTarget` no-ops
101
+ * cleanly (no crash, no jump).
102
+ */
103
+ export declare function pickWanderTarget(field: ConstellationField, rng: () => number): number;
104
+ /**
105
+ * Build the cold `ConstellationPinnedDrift` state (AZ.W-CON-GEN G5) the field carries
106
+ * when `pinnedDrift` is on. The anchor is seeded LATER (on the first sized frame, off
107
+ * the pinned node's layout position) — here it is `(0,0)` until `stepPinnedDrift`
108
+ * stamps it on the first armed leg. The token-read re-points the un-overridden
109
+ * cadence members on mount (the same prop-over-token layering as the well/wander).
110
+ */
111
+ export declare function makePinnedDrift(override?: {
112
+ wanderFrac?: number;
113
+ durMs?: number;
114
+ minIdle?: number;
115
+ jitter?: number;
116
+ }): ConstellationPinnedDrift;
117
+ /**
118
+ * Advance the autonomous PINNED-ANCHOR drift one frame (AZ.W-CON-GEN G5). DISTINCT
119
+ * from `wander` (warp re-target): this gently eases the PINNED node around its seeded
120
+ * ANCHOR within `wanderFrac` of the canvas, on a jittered cadence, via a closed-form
121
+ * easeInOutQuad over `now` (no integrator, no second rAF — it rides `stepField`'s ONE
122
+ * per-frame call). No-ops (skipped) when there is no `field.pinnedDrift`, no pinned
123
+ * node, or `now <= 0` (the default unit callers stay green) — so an absent
124
+ * `pinnedDrift` is byte-identical to HEAD.
125
+ *
126
+ * The anchor is captured ON the first armed frame off the pinned node's CURRENT
127
+ * position (its seeded rest), so a consumer that re-anchors the pin (a resize re-fit)
128
+ * gets a fresh anchor on the next leg. Each leg eases from the node's current point to
129
+ * a fresh point within `wanderFrac` of the anchor over `durMs`; between legs the node
130
+ * rests at the leg's end, the next leg arming after `minIdle + rng()*jitter`.
131
+ */
132
+ export declare function stepPinnedDrift(field: ConstellationField, now: number, rng: () => number): void;