@mkbabb/glass-ui 4.2.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1465) hide show
  1. package/README.md +89 -172
  2. package/dist/DropdownMenuTrigger-BzQtd9lt.js +65 -0
  3. package/dist/FadingScroll-C1ZWEjmG.js +83 -0
  4. package/dist/Input-B4WQ_CMc.js +57 -0
  5. package/dist/PagerDots-BoTQ7g5l.js +307 -0
  6. package/dist/Surface-BWRfwyn8.js +59 -0
  7. package/dist/accent-tone-solve-Dii9ePhK.js +20 -0
  8. package/dist/animated-digit.d.ts +1 -1
  9. package/dist/animated-digit.js +5 -5
  10. package/dist/aurora.d.ts +1 -1
  11. package/dist/aurora.js +1438 -431
  12. package/dist/axes.d.ts +1 -0
  13. package/dist/axes.js +50 -0
  14. package/dist/badge-C0C-rTBu.js +80 -0
  15. package/dist/badge.d.ts +1 -1
  16. package/dist/badge.js +1 -1
  17. package/dist/blob-config.d.ts +1 -0
  18. package/dist/blob-config.js +2 -0
  19. package/dist/blob.d.ts +1 -0
  20. package/dist/blob.js +1601 -0
  21. package/dist/button-32mg6xA8.js +194 -0
  22. package/dist/button.d.ts +1 -1
  23. package/dist/button.js +1 -1
  24. package/dist/canvas.js +1 -1
  25. package/dist/card-16xmzIr3.js +303 -0
  26. package/dist/card.d.ts +1 -1
  27. package/dist/card.js +1 -1
  28. package/dist/carousel.d.ts +1 -2
  29. package/dist/carousel.js +148 -300
  30. package/dist/chip.d.ts +1 -0
  31. package/dist/chip.js +81 -0
  32. package/dist/class-names-5jotTFzp.js +97 -0
  33. package/dist/coalesce-metric-znAcLzkB.js +13 -0
  34. package/dist/collapsible-bPzS1aQk.js +63 -0
  35. package/dist/collapsible.d.ts +1 -1
  36. package/dist/collapsible.js +1 -1
  37. package/dist/color-swatch.d.ts +1 -1
  38. package/dist/color-swatch.js +3 -2
  39. package/dist/color.js +87 -2
  40. package/dist/command-BjPjUU9z.js +307 -0
  41. package/dist/command.d.ts +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/completion-seal.d.ts +1 -1
  44. package/dist/completion-seal.js +89 -46
  45. package/dist/components/_shared/ModalOverlay.vue.d.ts +43 -0
  46. package/dist/components/_shared/axes.d.ts +21 -0
  47. package/dist/components/_shared/class-names.d.ts +27 -0
  48. package/dist/components/_shared/feedback-tone.css +1 -0
  49. package/dist/components/_shared/field-surfaces.css +1 -0
  50. package/dist/components/_shared/index.d.ts +6 -0
  51. package/dist/components/_shared/menu.css +1 -0
  52. package/dist/components/_shared/menuItemVariants.d.ts +51 -0
  53. package/dist/components/_shared/useControlSize.d.ts +46 -0
  54. package/dist/components/_shared/useMotionAxis.d.ts +41 -0
  55. package/dist/components/_shared/useSurfaceAxis.d.ts +64 -0
  56. package/dist/components/_shared/valueDomain.d.ts +6 -0
  57. package/dist/components/alert/Alert.vue.d.ts +19 -0
  58. package/dist/components/alert/index.d.ts +8 -0
  59. package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +56 -0
  60. package/dist/components/aurora/Aurora.vue.d.ts +110 -0
  61. package/dist/components/aurora/composables/atoms-fields.d.ts +43 -0
  62. package/dist/components/aurora/composables/atoms.d.ts +198 -0
  63. package/dist/components/aurora/composables/auroraImageSource.d.ts +44 -0
  64. package/dist/components/aurora/composables/color.d.ts +111 -0
  65. package/dist/components/aurora/composables/frameLoop.d.ts +66 -0
  66. package/dist/components/aurora/composables/glSetup.d.ts +29 -0
  67. package/dist/components/aurora/composables/runtime.d.ts +142 -0
  68. package/dist/components/aurora/composables/uniformBridge.d.ts +120 -0
  69. package/dist/components/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  70. package/dist/components/aurora/composables/uniformBridgeWGPUImage.d.ts +39 -0
  71. package/dist/components/aurora/composables/useAurora.d.ts +82 -0
  72. package/dist/components/aurora/composables/useCursorInteraction.d.ts +25 -0
  73. package/dist/components/aurora/composables/wgpuSetup.d.ts +50 -0
  74. package/dist/components/aurora/constants/presets.d.ts +326 -0
  75. package/dist/components/aurora/constants/shaders/aurora-image.frag.d.ts +3 -0
  76. package/dist/components/aurora/constants/shaders/aurora-image.wgsl.d.ts +3 -0
  77. package/dist/components/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  78. package/dist/components/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  79. package/dist/components/aurora/constants/shaders/brush.glsl.d.ts +1 -0
  80. package/dist/components/aurora/constants/shaders/flow.glsl.d.ts +1 -0
  81. package/dist/components/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
  82. package/dist/components/aurora/constants/shaders/metal-medium.glsl.d.ts +2 -0
  83. package/dist/components/aurora/index.d.ts +13 -0
  84. package/dist/components/avatar/Avatar.vue.d.ts +23 -0
  85. package/dist/components/avatar/AvatarImage.vue.d.ts +10 -0
  86. package/dist/components/avatar/index.d.ts +9 -0
  87. package/dist/components/badge/Badge.vue.d.ts +41 -0
  88. package/dist/components/badge/index.d.ts +9 -0
  89. package/dist/components/blob/Blob.vue.d.ts +83 -0
  90. package/dist/components/blob/composables/satelliteKinematics.d.ts +20 -0
  91. package/dist/components/blob/composables/uploadBlobUniforms.d.ts +51 -0
  92. package/dist/components/blob/composables/useBlobPointer.d.ts +88 -0
  93. package/dist/components/blob/composables/useMetaballRenderer.d.ts +102 -0
  94. package/dist/components/blob/composables/wgpuSetup.d.ts +23 -0
  95. package/dist/components/blob/config.d.ts +3 -0
  96. package/dist/components/blob/constants.d.ts +82 -0
  97. package/dist/components/blob/index.d.ts +8 -0
  98. package/dist/components/blob/presets.d.ts +14 -0
  99. package/dist/components/blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  100. package/dist/components/blob/types.d.ts +256 -0
  101. package/dist/components/button/Button.vue.d.ts +33 -0
  102. package/dist/components/button/index.d.ts +9 -0
  103. package/dist/components/card/Card.vue.d.ts +180 -0
  104. package/dist/components/card/CardHeader.vue.d.ts +58 -0
  105. package/dist/components/card/ScrollCard.vue.d.ts +33 -0
  106. package/dist/components/card/card-scroll.css +1 -0
  107. package/dist/components/card/styles.css +1 -0
  108. package/dist/components/carousel/Carousel.vue.d.ts +44 -0
  109. package/dist/components/carousel/CarouselContent.vue.d.ts +24 -0
  110. package/dist/components/carousel/CarouselNext.vue.d.ts +21 -0
  111. package/dist/components/carousel/CarouselPrevious.vue.d.ts +21 -0
  112. package/dist/components/carousel/index.d.ts +8 -0
  113. package/dist/components/carousel/useCarousel.d.ts +21 -0
  114. package/dist/components/chip/Chip.vue.d.ts +20 -0
  115. package/dist/components/chip/chipVariants.d.ts +43 -0
  116. package/dist/components/chip/index.d.ts +3 -0
  117. package/dist/components/chip/types.d.ts +38 -0
  118. package/dist/components/combobox/Combobox.vue.d.ts +32 -0
  119. package/dist/components/combobox/ComboboxList.vue.d.ts +32 -0
  120. package/dist/components/combobox/index.d.ts +9 -0
  121. package/dist/components/command/Command.vue.d.ts +38 -0
  122. package/dist/components/command/CommandDialog.vue.d.ts +27 -0
  123. package/dist/components/command/index.d.ts +10 -0
  124. package/dist/components/completion-seal/CompletionSeal.vue.d.ts +28 -0
  125. package/dist/components/completion-seal/constants.d.ts +66 -0
  126. package/dist/components/completion-seal/styles.css +1 -0
  127. package/dist/components/configurator/Configurator.vue.d.ts +160 -0
  128. package/dist/components/configurator/ConfiguratorRow.vue.d.ts +96 -0
  129. package/dist/components/configurator/index.d.ts +6 -0
  130. package/dist/components/configurator/size.d.ts +26 -0
  131. package/dist/components/configurator/styles.css +1 -0
  132. package/dist/components/constellation/Constellation.vue.d.ts +39 -0
  133. package/dist/components/constellation/composables/useConstellation.d.ts +26 -0
  134. package/dist/components/constellation/constants.d.ts +87 -0
  135. package/dist/components/constellation/constellationField.d.ts +70 -0
  136. package/dist/components/constellation/constellationInteraction.d.ts +141 -0
  137. package/dist/components/constellation/constellationRender.d.ts +15 -0
  138. package/dist/components/constellation/constellationTypes.d.ts +423 -0
  139. package/dist/components/constellation/index.d.ts +6 -0
  140. package/dist/components/controls/DarkModeToggle.vue.d.ts +32 -0
  141. package/dist/components/controls/dark-mode-toggle.css +1 -0
  142. package/dist/components/data-table/DataTable.vue.d.ts +94 -0
  143. package/dist/components/data-table/index.d.ts +2 -0
  144. package/dist/components/data-table/types.d.ts +81 -0
  145. package/dist/components/deck/constants.d.ts +4 -0
  146. package/dist/components/deck/index.d.ts +7 -0
  147. package/dist/components/dialog/DialogContent.vue.d.ts +121 -0
  148. package/dist/components/dialog/index.d.ts +8 -0
  149. package/dist/components/dialog/placement.css +1 -0
  150. package/dist/components/dock/DockBackgroundToggle.vue.d.ts +46 -0
  151. package/dist/components/dock/DockControl.vue.d.ts +73 -0
  152. package/dist/components/dock/DockCrossfade.vue.d.ts +50 -0
  153. package/dist/components/dock/DockLayer.vue.d.ts +33 -0
  154. package/dist/components/dock/DockLayerGroup.vue.d.ts +65 -0
  155. package/dist/components/dock/DockStack.vue.d.ts +73 -0
  156. package/dist/components/dock/DockTrigger.vue.d.ts +27 -0
  157. package/dist/components/dock/GlassDock.vue.d.ts +34 -0
  158. package/dist/components/dock/composables/dockContext.d.ts +48 -0
  159. package/dist/components/dock/composables/dockCrossfadeContext.d.ts +57 -0
  160. package/dist/components/dock/composables/dockMorphContext.d.ts +91 -0
  161. package/dist/components/dock/composables/dockMorphMeasure.d.ts +96 -0
  162. package/dist/components/dock/composables/index.d.ts +10 -0
  163. package/dist/components/dock/composables/useDockClickIntegrity.d.ts +27 -0
  164. package/dist/components/dock/composables/useDockFisheye.d.ts +24 -0
  165. package/dist/components/dock/composables/useDockOverflowFit.d.ts +22 -0
  166. package/dist/components/dock/composables/useDockPopover.d.ts +70 -0
  167. package/dist/components/dock/composables/useDockSearch.d.ts +85 -0
  168. package/dist/components/dock/composables/useDockShellProps.d.ts +185 -0
  169. package/dist/components/dock/composables/useDockSpring.d.ts +71 -0
  170. package/dist/components/dock/composables/useDockState.d.ts +70 -0
  171. package/dist/components/dock/composables/useDockTouchGate.d.ts +51 -0
  172. package/dist/components/dock/constants.d.ts +95 -0
  173. package/dist/components/dock/index.d.ts +20 -0
  174. package/dist/components/dock/styles/adaptive-legibility.css +1 -0
  175. package/dist/components/dock/styles/controls/icon-button.css +1 -0
  176. package/dist/components/dock/styles/controls/tab-button.css +1 -0
  177. package/dist/components/dock/styles/controls/touch-floor.css +1 -0
  178. package/dist/components/dock/styles/controls/triggers.css +1 -0
  179. package/dist/components/dock/styles/controls.css +1 -0
  180. package/dist/components/dock/styles/crossfade.css +1 -0
  181. package/dist/components/dock/styles/cta-seat.css +1 -0
  182. package/dist/components/dock/styles/density.css +1 -0
  183. package/dist/components/dock/styles/dock.css +1 -0
  184. package/dist/components/dock/styles/fisheye.css +1 -0
  185. package/dist/components/dock/styles/index.css +1 -0
  186. package/dist/components/dock/styles/layer-group.css +1 -0
  187. package/dist/components/dock/styles/layers.css +1 -0
  188. package/dist/components/dock/styles/morph.css +1 -0
  189. package/dist/components/dock/styles/overflow.css +1 -0
  190. package/dist/components/dock/styles/popover.css +1 -0
  191. package/dist/components/dock/styles/search.css +1 -0
  192. package/dist/components/dock/styles/section.css +1 -0
  193. package/dist/components/dock/styles/shape.css +1 -0
  194. package/dist/components/dock/styles/shell-regions.css +1 -0
  195. package/dist/components/dock/styles/shell.css +1 -0
  196. package/dist/components/drawer/Drawer.vue.d.ts +85 -0
  197. package/dist/components/drawer/DrawerContent.vue.d.ts +40 -0
  198. package/dist/components/drawer/composables/drawerSnapContext.d.ts +28 -0
  199. package/dist/components/drawer/composables/useDrawerSnap.d.ts +24 -0
  200. package/dist/components/drawer/constants.d.ts +50 -0
  201. package/dist/components/drawer/index.d.ts +33 -0
  202. package/dist/components/drawer/styles.css +1 -0
  203. package/dist/components/dropdown-menu/DropdownMenu.vue.d.ts +24 -0
  204. package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +36 -0
  205. package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +20 -0
  206. package/dist/components/dropdown-menu/index.d.ts +15 -0
  207. package/dist/components/dropdown-menu/useMenuTrigger.d.ts +14 -0
  208. package/dist/components/easing/EasingConfigurator.vue.d.ts +33 -0
  209. package/dist/components/easing/EasingPicker.vue.d.ts +49 -0
  210. package/dist/components/easing/composables/useEasingPicker.d.ts +84 -0
  211. package/dist/components/easing/constants.d.ts +30 -0
  212. package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +71 -0
  213. package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  214. package/dist/components/fourier-field/FourierField.vue.d.ts +60 -0
  215. package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  216. package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  217. package/dist/components/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  218. package/dist/components/fourier-field/composables/useFourierField.d.ts +56 -0
  219. package/dist/components/fourier-field/constants.d.ts +134 -0
  220. package/dist/components/fourier-field/index.d.ts +31 -0
  221. package/dist/components/fourier-field/math.d.ts +111 -0
  222. package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  223. package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  224. package/dist/components/fourier-field/shaders/fourier-field.ribbon.d.ts +51 -0
  225. package/dist/components/handmark/HandMark.vue.d.ts +29 -0
  226. package/dist/components/handmark/composables/useHandMark.d.ts +99 -0
  227. package/dist/components/handmark/constants.d.ts +69 -0
  228. package/dist/components/handmark/geometry.d.ts +65 -0
  229. package/dist/components/handmark/index.d.ts +25 -0
  230. package/dist/components/handmark/noise.d.ts +30 -0
  231. package/dist/components/handmark/types.d.ts +70 -0
  232. package/dist/components/header-ribbon/HeaderRibbon.vue.d.ts +31 -0
  233. package/dist/components/header-ribbon/index.d.ts +2 -0
  234. package/dist/components/header-ribbon/types.d.ts +7 -0
  235. package/dist/components/icon-chip/styles.css +1 -0
  236. package/dist/components/index.d.ts +35 -0
  237. package/dist/components/infinite-scroll/index.d.ts +2 -0
  238. package/dist/components/instrument-chassis/styles.css +1 -0
  239. package/dist/components/labeled-field/LabeledField.vue.d.ts +118 -0
  240. package/dist/components/labeled-field/LabeledInput.vue.d.ts +38 -0
  241. package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +46 -0
  242. package/dist/components/liquid-grid/composables/liquidGrid.d.ts +113 -0
  243. package/dist/components/liquid-grid/composables/liquidGridGLSetup.d.ts +18 -0
  244. package/dist/components/liquid-grid/composables/liquidGridWGPUSetup.d.ts +21 -0
  245. package/dist/components/liquid-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  246. package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +32 -0
  247. package/dist/components/liquid-grid/constants.d.ts +93 -0
  248. package/dist/components/liquid-grid/index.d.ts +5 -0
  249. package/dist/components/liquid-grid/shaders/liquid-grid.glsl.d.ts +4 -0
  250. package/dist/components/liquid-grid/shaders/liquid-grid.wgsl.d.ts +1 -0
  251. package/dist/components/metric-badge/MetricBadge.vue.d.ts +40 -0
  252. package/dist/components/metric-cell/MetricCell.vue.d.ts +108 -0
  253. package/dist/components/metric-stack/MetricRow.vue.d.ts +120 -0
  254. package/dist/components/metric-stack/MetricStack.vue.d.ts +92 -0
  255. package/dist/components/notification/Notification.vue.d.ts +16 -0
  256. package/dist/components/pager-dots/PagerDots.vue.d.ts +48 -0
  257. package/dist/components/pager-dots/composables/usePagerWorm.d.ts +26 -0
  258. package/dist/components/pager-dots/constants.d.ts +15 -0
  259. package/dist/components/paper-backdrop/PaperBackdrop.vue.d.ts +21 -0
  260. package/dist/components/popover/Popover.vue.d.ts +54 -0
  261. package/dist/components/popover/PopoverContent.vue.d.ts +53 -0
  262. package/dist/components/popover/PopoverTrigger.vue.d.ts +16 -0
  263. package/dist/components/popover/popoverContext.d.ts +17 -0
  264. package/dist/components/progress/Progress.vue.d.ts +19 -0
  265. package/dist/components/progress/ProgressDefault.vue.d.ts +9 -0
  266. package/dist/components/progress/ProgressGradient.vue.d.ts +26 -0
  267. package/dist/components/progress/ProgressLiquid.vue.d.ts +22 -0
  268. package/dist/components/progress/index.d.ts +1 -0
  269. package/dist/components/progress/valueMarks.css +1 -0
  270. package/dist/components/pulse/Pulse.vue.d.ts +53 -0
  271. package/dist/components/scroll-progress-rim/ScrollProgressRim.vue.d.ts +19 -0
  272. package/dist/components/scroll-progress-rim/index.d.ts +3 -0
  273. package/dist/components/scroll-progress-rim/styles.css +1 -0
  274. package/dist/components/scroll-progress-rim/types.d.ts +2 -0
  275. package/dist/components/search/FuzzySearch.vue.d.ts +24 -0
  276. package/dist/components/search/SearchBar.vue.d.ts +38 -0
  277. package/dist/components/search/searchVariants.d.ts +19 -0
  278. package/dist/components/select/SelectContent.vue.d.ts +42 -0
  279. package/dist/components/select/index.d.ts +8 -0
  280. package/dist/components/skeleton/Skeleton.vue.d.ts +35 -0
  281. package/dist/components/slider/Slider.vue.d.ts +42 -0
  282. package/dist/components/slider/index.d.ts +46 -0
  283. package/dist/components/sortable-list/SortableHandle.vue.d.ts +19 -0
  284. package/dist/components/sortable-list/SortableItem.vue.d.ts +22 -0
  285. package/dist/components/sortable-list/SortableList.vue.d.ts +39 -0
  286. package/dist/components/sortable-list/composables/dragController.d.ts +29 -0
  287. package/dist/components/sortable-list/composables/types.d.ts +50 -0
  288. package/dist/components/sortable-list/composables/useSortable.d.ts +5 -0
  289. package/dist/components/sortable-list/context.d.ts +11 -0
  290. package/dist/components/sortable-list/index.d.ts +4 -0
  291. package/dist/components/split-chars/SplitChars.vue.d.ts +53 -0
  292. package/dist/components/surface/Surface.vue.d.ts +45 -0
  293. package/dist/components/surface/index.d.ts +2 -0
  294. package/dist/components/table/Table.vue.d.ts +21 -0
  295. package/dist/components/tabs/SegmentedTabs.vue.d.ts +111 -0
  296. package/dist/components/tabs/composables/useEyeglassLive.d.ts +17 -0
  297. package/dist/components/tabs/composables/useTabDragMorph.d.ts +42 -0
  298. package/dist/components/tabs/composables/useTabResponsive.d.ts +43 -0
  299. package/dist/components/tabs/composables/useTabRovingFocus.d.ts +51 -0
  300. package/dist/components/tabs/constants.d.ts +1 -0
  301. package/dist/components/tabs/index.d.ts +2 -0
  302. package/dist/components/tabs/styles/drag.css +1 -0
  303. package/dist/components/tabs/styles/segmented.css +1 -0
  304. package/dist/components/tags-input/TagsInput.vue.d.ts +28 -0
  305. package/dist/components/timeline/ContinuousMarkers.vue.d.ts +49 -0
  306. package/dist/components/timeline/ContinuousTimeline.vue.d.ts +118 -0
  307. package/dist/components/timeline/GlassTimeline.vue.d.ts +114 -0
  308. package/dist/components/toast/Toast.vue.d.ts +107 -0
  309. package/dist/components/toast/index.d.ts +9 -0
  310. package/dist/components/toast/use-toast.d.ts +182 -0
  311. package/dist/components/toggle/Toggle.vue.d.ts +29 -0
  312. package/dist/components/toggle/index.d.ts +26 -0
  313. package/dist/components/typewriter/TypewriterText.vue.d.ts +82 -0
  314. package/dist/components/typewriter/composables/useTypewriter.d.ts +21 -0
  315. package/dist/components/typewriter/utils/graphemes.d.ts +1 -0
  316. package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +74 -0
  317. package/dist/components/watercolor-dot/prng.d.ts +5 -0
  318. package/dist/components/watercolor-dot/useWatercolorBlob.d.ts +31 -0
  319. package/dist/composables/color/accent-tone-solve.d.ts +11 -0
  320. package/dist/composables/color/index.d.ts +18 -1
  321. package/dist/composables/color/useAccentTone.d.ts +6 -8
  322. package/dist/composables/dom/useUserInvalidAria.d.ts +7 -11
  323. package/dist/composables/glass/ambientHueHistogram.d.ts +27 -0
  324. package/dist/composables/glass/backdropLuminanceSample.d.ts +56 -0
  325. package/dist/composables/glass/backdropSampleMath.d.ts +5 -0
  326. package/dist/composables/glass/textureUpload.d.ts +91 -0
  327. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +58 -1
  328. package/dist/composables/glass/useSpecularPointer.d.ts +23 -4
  329. package/dist/composables/glass/useSpecularTracking.d.ts +1 -1
  330. package/dist/composables/glass/wave/waveField.d.ts +22 -1
  331. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -1
  332. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -1
  333. package/dist/composables/glass/webgl/backingSize.d.ts +44 -0
  334. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +36 -55
  335. package/dist/composables/glass/webgl/shaders/glass-refract.glsl.d.ts +36 -0
  336. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +1 -1
  337. package/dist/composables/glass/webgl/visibility.d.ts +42 -0
  338. package/dist/composables/glass/webgpu/rendererStatus.d.ts +13 -0
  339. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +8 -4
  340. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +3 -111
  341. package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +98 -0
  342. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +30 -0
  343. package/dist/composables/index.d.ts +1 -2
  344. package/dist/composables/motion/bloomUpField.d.ts +29 -0
  345. package/dist/composables/motion/core/index.d.ts +6 -2
  346. package/dist/composables/motion/gooBarbellGeometry.d.ts +79 -0
  347. package/dist/composables/motion/index.d.ts +1 -1
  348. package/dist/composables/motion/morphSignatures.d.ts +88 -0
  349. package/dist/composables/motion/motionTempo.d.ts +9 -0
  350. package/dist/composables/motion/pointerFieldMappings.d.ts +161 -0
  351. package/dist/composables/motion/springPresets.d.ts +17 -23
  352. package/dist/composables/motion/springProjection.d.ts +16 -0
  353. package/dist/composables/motion/useAnimatedNumber.d.ts +1 -6
  354. package/dist/composables/motion/useCountup.d.ts +1 -6
  355. package/dist/composables/motion/useDockCtaReceive.d.ts +87 -39
  356. package/dist/composables/motion/useElementMorph.d.ts +107 -0
  357. package/dist/composables/motion/useLeadTrail.d.ts +69 -0
  358. package/dist/composables/motion/useLiquidPress.d.ts +21 -4
  359. package/dist/composables/motion/useLiquidReveal.d.ts +15 -29
  360. package/dist/composables/motion/useNumericTransition.d.ts +2 -0
  361. package/dist/composables/motion/usePointerVelocityField.d.ts +59 -0
  362. package/dist/composables/motion/useRoutePointer.d.ts +41 -0
  363. package/dist/composables/motion/useSelectionGroup.d.ts +83 -0
  364. package/dist/composables/motion/useSelectionIndicator.d.ts +90 -0
  365. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  366. package/dist/composables/motion/useTextHighlight.d.ts +2 -1
  367. package/dist/configurator-CSENXXSy.js +311 -0
  368. package/dist/configurator.d.ts +1 -1
  369. package/dist/configurator.js +2 -3
  370. package/dist/constellation.d.ts +1 -1
  371. package/dist/constellation.js +271 -570
  372. package/dist/controls.d.ts +1 -1
  373. package/dist/controls.js +57 -65
  374. package/dist/createCanvasLifecycle-hsFkQVdl.js +209 -0
  375. package/dist/dark-DIH-blY1.js +70 -0
  376. package/dist/dark.d.ts +1 -2
  377. package/dist/dark.js +2 -20
  378. package/dist/data-table-DveMdgBM.js +629 -0
  379. package/dist/data-table.d.ts +1 -1
  380. package/dist/data-table.js +2 -2
  381. package/dist/deck.d.ts +1 -1
  382. package/dist/deck.js +14 -25
  383. package/dist/dialog-BzQxKrUr.js +281 -0
  384. package/dist/dialog.d.ts +1 -1
  385. package/dist/dialog.js +2 -4
  386. package/dist/dock.d.ts +1 -1
  387. package/dist/dock.js +1194 -1614
  388. package/dist/dockContext-4S9qP0Z4.js +13 -0
  389. package/dist/dom.js +196 -7
  390. package/dist/drawer.d.ts +1 -1
  391. package/dist/drawer.js +201 -148
  392. package/dist/dropdown-menu-DORIA52F.js +378 -0
  393. package/dist/dropdown-menu.d.ts +1 -1
  394. package/dist/dropdown-menu.js +3 -2
  395. package/dist/easing.d.ts +1 -1
  396. package/dist/easing.js +328 -181
  397. package/dist/expandable-container.d.ts +1 -1
  398. package/dist/expandable-container.js +93 -66
  399. package/dist/fading-scroll.d.ts +1 -1
  400. package/dist/fading-scroll.js +1 -1
  401. package/dist/focus-scope-DUTKveod.js +23 -0
  402. package/dist/focus-scope.d.ts +1 -1
  403. package/dist/focus-scope.js +2 -23
  404. package/dist/forms.d.ts +4 -3
  405. package/dist/forms.js +72 -104
  406. package/dist/fourier-field.d.ts +1 -1
  407. package/dist/fourier-field.js +641 -577
  408. package/dist/fourier-math.d.ts +1 -1
  409. package/dist/fourier-math.js +112 -2
  410. package/dist/glass-ui.css +1 -1
  411. package/dist/glass-ui.js +178 -390
  412. package/dist/handmark.d.ts +1 -1
  413. package/dist/handmark.js +143 -125
  414. package/dist/header-ribbon.d.ts +1 -1
  415. package/dist/header-ribbon.js +47 -36
  416. package/dist/icon-chip-BWuxz1-u.js +57 -0
  417. package/dist/icon-chip.d.ts +1 -1
  418. package/dist/icon-chip.js +1 -1
  419. package/dist/icon-tooltip-CO6rw0dZ.js +25 -0
  420. package/dist/icon-tooltip.d.ts +1 -1
  421. package/dist/icon-tooltip.js +1 -1
  422. package/dist/index.d.ts +41 -45
  423. package/dist/infinite-scroll.d.ts +1 -2
  424. package/dist/infinite-scroll.js +19 -17
  425. package/dist/instrument-chassis-Cvstg4_U.js +65 -0
  426. package/dist/instrument-chassis.d.ts +1 -1
  427. package/dist/instrument-chassis.js +1 -1
  428. package/dist/keyboard.js +104 -2
  429. package/dist/label-Cj38tJKG.js +36 -0
  430. package/dist/label.d.ts +1 -1
  431. package/dist/label.js +1 -1
  432. package/dist/labeled-field.d.ts +1 -1
  433. package/dist/labeled-field.js +100 -74
  434. package/dist/liquid-grid.d.ts +1 -0
  435. package/dist/liquid-grid.js +1075 -0
  436. package/dist/menuItemVariants-D6AOzzND.js +36 -0
  437. package/dist/metric-badge.d.ts +1 -1
  438. package/dist/metric-badge.js +79 -2
  439. package/dist/metric-cell.d.ts +1 -1
  440. package/dist/metric-cell.js +9 -9
  441. package/dist/metric-stack.d.ts +1 -1
  442. package/dist/metric-stack.js +23 -23
  443. package/dist/motion-core.js +47 -42
  444. package/dist/motion-curves.js +2 -2
  445. package/dist/motion.js +104 -219
  446. package/dist/motionTempo-CMS5b0Vu.js +7 -0
  447. package/dist/notification-DVs7ODMg.js +52 -0
  448. package/dist/notification.d.ts +1 -1
  449. package/dist/notification.js +1 -1
  450. package/dist/number-field-PvkGedHk.js +140 -0
  451. package/dist/number-field.d.ts +1 -1
  452. package/dist/number-field.js +1 -1
  453. package/dist/pager-dots.d.ts +1 -1
  454. package/dist/pager-dots.js +1 -1
  455. package/dist/paper-backdrop.d.ts +1 -1
  456. package/dist/paper-backdrop.js +31 -2
  457. package/dist/pointerFieldMappings-CZojkgKj.js +65 -0
  458. package/dist/popover-WMgyRSyN.js +256 -0
  459. package/dist/popover.d.ts +1 -1
  460. package/dist/popover.js +1 -1
  461. package/dist/presets-CxeNvxuO.js +95 -0
  462. package/dist/prng-Dz2_9RJu.js +15 -0
  463. package/dist/procedural-color.wgsl-B9mLK7v0.js +377 -0
  464. package/dist/progress-C-HHuFZy.js +192 -0
  465. package/dist/progress.d.ts +1 -1
  466. package/dist/progress.js +2 -2
  467. package/dist/pulse.d.ts +1 -1
  468. package/dist/pulse.js +6 -4
  469. package/dist/reactive.js +19 -3
  470. package/dist/rendererStatus-C2-zC2Q-.js +40 -0
  471. package/dist/resolveCanvasColor-yarP5bdk.js +93 -0
  472. package/dist/scroll-progress-rim.d.ts +1 -0
  473. package/dist/scroll-progress-rim.js +61 -0
  474. package/dist/search.d.ts +1 -1
  475. package/dist/search.js +201 -160
  476. package/dist/select-BIv4R3Ir.js +326 -0
  477. package/dist/select.d.ts +1 -1
  478. package/dist/select.js +2 -4
  479. package/dist/separator-CBU94kTM.js +62 -0
  480. package/dist/separator.d.ts +1 -1
  481. package/dist/separator.js +1 -1
  482. package/dist/sidebar.js +1 -1
  483. package/dist/slider-Cc_qw6GA.js +166 -0
  484. package/dist/slider.d.ts +1 -1
  485. package/dist/slider.js +1 -1
  486. package/dist/sortable-list.d.ts +1 -1
  487. package/dist/sortable-list.js +384 -59
  488. package/dist/spa-view.d.ts +1 -1
  489. package/dist/spa-view.js +1 -1
  490. package/dist/springPresets-h5VKJQqG.js +58 -0
  491. package/dist/status-dot.d.ts +1 -1
  492. package/dist/status-dot.js +2 -2
  493. package/dist/styles/accessibility.css +1 -0
  494. package/dist/styles/animations.css +1 -409
  495. package/dist/styles/components.css +1 -45
  496. package/dist/styles/draw-in.css +1 -0
  497. package/dist/styles/fonts.css +1 -143
  498. package/dist/styles/glass/a11y-fallback.css +1 -245
  499. package/dist/styles/glass/accent-tone.css +1 -66
  500. package/dist/styles/glass/control-surfaces.css +1 -167
  501. package/dist/styles/glass/deep.css +1 -44
  502. package/dist/styles/glass/defined.css +1 -0
  503. package/dist/styles/glass/glass-atom.css +1 -244
  504. package/dist/styles/glass/glass-capsule.css +1 -143
  505. package/dist/styles/glass/glass-chip.css +1 -215
  506. package/dist/styles/glass/grain-overlay.css +1 -0
  507. package/dist/styles/glass/ladder-undershadow.css +1 -0
  508. package/dist/styles/glass/ladder.css +1 -489
  509. package/dist/styles/glass/liquid-enter.css +1 -252
  510. package/dist/styles/glass/liquid-fill.css +1 -0
  511. package/dist/styles/glass/material-roles.css +1 -0
  512. package/dist/styles/glass/material.css +1 -370
  513. package/dist/styles/glass/progress-rail.css +1 -78
  514. package/dist/styles/glass/reveal.css +1 -156
  515. package/dist/styles/glass/rim.css +1 -122
  516. package/dist/styles/glass/squircle.css +1 -66
  517. package/dist/styles/glass/surface-axis.css +1 -113
  518. package/dist/styles/glass/surfaces-pager.css +1 -0
  519. package/dist/styles/glass/surfaces.css +1 -411
  520. package/dist/styles/glass-refract.css +1 -114
  521. package/dist/styles/glass-specular-track.css +1 -74
  522. package/dist/styles/glass.css +1 -77
  523. package/dist/styles/index.css +1 -260
  524. package/dist/styles/paper.css +1 -284
  525. package/dist/styles/scroll-choreography.css +1 -357
  526. package/dist/styles/scroll-chrome.css +1 -123
  527. package/dist/styles/scroll-driven.css +1 -110
  528. package/dist/styles/theme/bridges.css +1 -380
  529. package/dist/styles/theme/dark.css +1 -7
  530. package/dist/styles/theme/literals.css +1 -103
  531. package/dist/styles/theme/radius.css +1 -117
  532. package/dist/styles/theme.css +1 -33
  533. package/dist/styles/tokens/color-radius.css +1 -297
  534. package/dist/styles/tokens/dark-arm-glass.css +1 -0
  535. package/dist/styles/tokens/dark-arm.css +1 -462
  536. package/dist/styles/tokens/glass-deep.css +1 -104
  537. package/dist/styles/tokens/glass-fx.css +1 -454
  538. package/dist/styles/tokens/glass.css +1 -412
  539. package/dist/styles/tokens/light-dark.css +1 -200
  540. package/dist/styles/tokens/motion-registers.css +1 -0
  541. package/dist/styles/tokens/offsets.css +1 -143
  542. package/dist/styles/tokens/on-glass-fg.css +1 -39
  543. package/dist/styles/tokens/property-regs-specular.css +1 -0
  544. package/dist/styles/tokens/property-regs.css +1 -566
  545. package/dist/styles/tokens/scale-paper.css +1 -493
  546. package/dist/styles/tokens/scheme-motion.css +1 -363
  547. package/dist/styles/tokens/scheme-spring.css +1 -239
  548. package/dist/styles/tokens/scroll-tokens.css +1 -123
  549. package/dist/styles/tokens/shadow.css +1 -226
  550. package/dist/styles/tokens/sizing-config.css +1 -110
  551. package/dist/styles/tokens/sizing.css +1 -450
  552. package/dist/styles/tokens.css +1 -52
  553. package/dist/styles/tokens.d.ts +53 -0
  554. package/dist/styles/tokens.ts +58 -0
  555. package/dist/styles/transitions.css +1 -263
  556. package/dist/styles/typography/scale.css +1 -153
  557. package/dist/styles/typography/semantic.css +1 -233
  558. package/dist/styles/typography/utilities.css +1 -174
  559. package/dist/styles/typography.css +1 -46
  560. package/dist/styles/utilities/a11y-overrides.css +1 -184
  561. package/dist/styles/utilities/base-misc.css +1 -307
  562. package/dist/styles/utilities/base.css +1 -327
  563. package/dist/styles/utilities/btn.css +1 -301
  564. package/dist/styles/utilities/components.css +1 -342
  565. package/dist/styles/utilities/metal.css +1 -215
  566. package/dist/styles/utilities.css +1 -26
  567. package/dist/styles/view-transition.css +1 -67
  568. package/dist/styles/viz-reveal.css +1 -0
  569. package/dist/surface.d.ts +1 -0
  570. package/dist/surface.js +3 -0
  571. package/dist/switch-Boj4Ucn5.js +49 -0
  572. package/dist/switch.d.ts +1 -1
  573. package/dist/switch.js +1 -1
  574. package/dist/tabs.d.ts +1 -1
  575. package/dist/tabs.js +198 -252
  576. package/dist/timeline.d.ts +1 -1
  577. package/dist/timeline.js +199 -183
  578. package/dist/toast-kAbchIN2.js +281 -0
  579. package/dist/toast.d.ts +1 -1
  580. package/dist/toast.js +1 -1
  581. package/dist/toggle-group-BPchFsns.js +178 -0
  582. package/dist/toggle-group.d.ts +1 -1
  583. package/dist/toggle-group.js +1 -1
  584. package/dist/tokens.d.ts +1 -53
  585. package/dist/tokens.js +1 -1
  586. package/dist/tooltip-BmOQJzh0.js +111 -0
  587. package/dist/tooltip.d.ts +1 -1
  588. package/dist/tooltip.js +1 -1
  589. package/dist/typewriter.d.ts +1 -1
  590. package/dist/typewriter.js +158 -173
  591. package/dist/useAccentTone-C-p6WdPe.js +23 -0
  592. package/dist/useAnimatedNumber-BRVVaFFc.js +40 -0
  593. package/dist/useControlSize-CFfOk8I-.js +9 -0
  594. package/dist/useDockCtaReceive-CK-RLASa.js +257 -0
  595. package/dist/useDocumentVisibility-YeBDGqtI.js +17 -0
  596. package/dist/useDragMorph-7ygF9O0m.js +93 -0
  597. package/dist/useFuzzySearch-BOgep7RE.js +177 -0
  598. package/dist/useGooMorph-D1F6QJlH.js +349 -0
  599. package/dist/useIntersectionPause-B-dbxl9w.js +39 -0
  600. package/dist/useLeadTrail-BYu8dq4G.js +74 -0
  601. package/dist/useLiquidPress-BYcwwGQV.js +68 -0
  602. package/dist/useMotionAxis-DCCXMC-i.js +20 -0
  603. package/dist/usePointerVelocityField-BdvnO0py.js +122 -0
  604. package/dist/useRAFLoop-BtwQ9DyY.js +109 -0
  605. package/dist/useRoutePointer-BDNMFN73.js +52 -0
  606. package/dist/useScrollProgress-DZI4nf4v.js +35 -0
  607. package/dist/useSelectionGroup-LDzBdR1Y.js +215 -0
  608. package/dist/useSpring-BBSKFx_0.js +41 -0
  609. package/dist/useSpringMount-C6-DBx4e.js +71 -0
  610. package/dist/useSpringPress-BypV_KO-.js +36 -0
  611. package/dist/useSurfaceAxis-DudiZVOR.js +10 -0
  612. package/dist/useTabRovingFocus-DkLYwo4L.js +143 -0
  613. package/dist/useTouchGate-Cj5fOkTv.js +84 -0
  614. package/dist/useUserInvalidAria-Cr4nR3tu.js +25 -0
  615. package/dist/valueDomain-B8L04u3U.js +13 -0
  616. package/dist/watercolor-dot.d.ts +1 -1
  617. package/dist/watercolor-dot.js +54 -50
  618. package/package.json +383 -831
  619. package/src/styles/accessibility.css +48 -0
  620. package/src/styles/animations.css +82 -23
  621. package/src/styles/draw-in.css +89 -0
  622. package/src/styles/glass/a11y-fallback.css +19 -76
  623. package/src/styles/glass/control-surfaces.css +20 -16
  624. package/src/styles/glass/deep.css +74 -4
  625. package/src/styles/glass/defined.css +88 -0
  626. package/src/styles/glass/glass-atom.css +23 -20
  627. package/src/styles/glass/glass-capsule.css +34 -2
  628. package/src/styles/glass/glass-chip.css +13 -17
  629. package/src/styles/glass/grain-overlay.css +79 -0
  630. package/src/styles/glass/ladder-undershadow.css +61 -0
  631. package/src/styles/glass/ladder.css +96 -133
  632. package/src/styles/glass/liquid-enter.css +12 -24
  633. package/src/styles/glass/liquid-fill.css +65 -0
  634. package/src/styles/glass/material-roles.css +18 -0
  635. package/src/styles/glass/material.css +152 -22
  636. package/src/styles/glass/reveal.css +197 -20
  637. package/src/styles/glass/squircle.css +18 -26
  638. package/src/styles/glass/surface-axis.css +24 -1
  639. package/src/styles/glass/surfaces-pager.css +79 -0
  640. package/src/styles/glass/surfaces.css +121 -98
  641. package/src/styles/glass.css +38 -5
  642. package/src/styles/index.css +86 -50
  643. package/src/styles/paper.css +105 -202
  644. package/src/styles/scroll-choreography.css +29 -92
  645. package/src/styles/scroll-driven.css +18 -5
  646. package/src/styles/theme/bridges.css +8 -8
  647. package/src/styles/theme/literals.css +2 -1
  648. package/src/styles/theme/radius.css +43 -12
  649. package/src/styles/tokens/color-radius.css +15 -4
  650. package/src/styles/tokens/dark-arm-glass.css +55 -0
  651. package/src/styles/tokens/dark-arm.css +62 -69
  652. package/src/styles/tokens/glass-deep.css +102 -80
  653. package/src/styles/tokens/glass-fx.css +36 -10
  654. package/src/styles/tokens/glass.css +143 -78
  655. package/src/styles/tokens/light-dark.css +20 -4
  656. package/src/styles/tokens/motion-registers.css +93 -0
  657. package/src/styles/tokens/offsets.css +0 -1
  658. package/src/styles/tokens/property-regs-specular.css +160 -0
  659. package/src/styles/tokens/property-regs.css +68 -186
  660. package/src/styles/tokens/scale-paper.css +6 -4
  661. package/src/styles/tokens/scheme-motion.css +62 -0
  662. package/src/styles/tokens/scheme-spring.css +147 -104
  663. package/src/styles/tokens/scroll-tokens.css +25 -11
  664. package/src/styles/tokens/shadow.css +31 -51
  665. package/src/styles/tokens/sizing.css +62 -7
  666. package/src/styles/tokens.css +16 -0
  667. package/src/styles/tokens.ts +58 -0
  668. package/src/styles/transitions.css +108 -143
  669. package/src/styles/typography/scale.css +13 -0
  670. package/src/styles/typography/semantic.css +10 -10
  671. package/src/styles/typography/utilities.css +30 -7
  672. package/src/styles/utilities/a11y-overrides.css +2 -2
  673. package/src/styles/utilities/base.css +18 -8
  674. package/src/styles/utilities/btn.css +35 -30
  675. package/src/styles/utilities/components.css +16 -21
  676. package/src/styles/utilities/metal.css +86 -29
  677. package/src/styles/utilities.css +4 -6
  678. package/src/styles/viz-reveal.css +63 -0
  679. package/dist/CardAction-DlVP2evz.js +0 -272
  680. package/dist/CollapsibleContent-D7UNsXQr.js +0 -63
  681. package/dist/CommandShortcut-By-VQcLO.js +0 -302
  682. package/dist/ConfiguratorRow-YMXdINHx.js +0 -143
  683. package/dist/ContextMenuContent-CMWn6huB.js +0 -90
  684. package/dist/ContextMenuSubContent-DvwWCUc0.js +0 -245
  685. package/dist/DataTable-C4tG3eIJ.js +0 -512
  686. package/dist/DialogContent-D8U9ZfWS.js +0 -121
  687. package/dist/DialogFooter-DoLy0ewI.js +0 -80
  688. package/dist/DialogScrollContent-BMekN7gq.js +0 -93
  689. package/dist/FadingScroll-P8B30rAD.js +0 -76
  690. package/dist/HoverCardContent-DAmGYglo.js +0 -88
  691. package/dist/HoverPopover-DYpBOzzF.js +0 -96
  692. package/dist/IconChip-CQa7XZYc.js +0 -57
  693. package/dist/IconTooltip-_df8M3xm.js +0 -25
  694. package/dist/Input-CyU4_hIC.js +0 -57
  695. package/dist/InstrumentChassis-UUJX0-mW.js +0 -65
  696. package/dist/Label-B_HPqi_q.js +0 -36
  697. package/dist/MetricBadge-DQt_dGah.js +0 -79
  698. package/dist/ModalOverlay-DfAf7o15.js +0 -53
  699. package/dist/Notification-BlSPJhtZ.js +0 -43
  700. package/dist/NumberFieldContent-Z3VxGu_6.js +0 -140
  701. package/dist/PagerDots-CYlqVFd4.js +0 -196
  702. package/dist/PaperBackdrop-DYWgrnh8.js +0 -42
  703. package/dist/PopoverContent-BuKyHZSz.js +0 -127
  704. package/dist/Progress-C9SsdwIZ.js +0 -274
  705. package/dist/ScrollingText-DY3W1Jfh.js +0 -40
  706. package/dist/SelectGroup-Dcczq44n.js +0 -31
  707. package/dist/SelectScrollDownButton-3mFHX_R-.js +0 -260
  708. package/dist/SelectSeparator-CNRGG7Ew.js +0 -49
  709. package/dist/Separator-Cf9-JFgi.js +0 -44
  710. package/dist/Switch-uf-UKPA2.js +0 -49
  711. package/dist/Toaster-ozrsR4mP.js +0 -274
  712. package/dist/ToggleGroupItem-BpzaVzNm.js +0 -170
  713. package/dist/TooltipProvider-QQVM_80r.js +0 -109
  714. package/dist/api/index.d.ts +0 -34
  715. package/dist/api/types-extra.d.ts +0 -39
  716. package/dist/api.js +0 -2
  717. package/dist/badge-Bt14yURi.js +0 -72
  718. package/dist/border-progress.d.ts +0 -1
  719. package/dist/border-progress.js +0 -98
  720. package/dist/button-D1W9PrzI.js +0 -130
  721. package/dist/chipVariants-BJQ0I2kB.js +0 -18
  722. package/dist/cn-DJXf4yaB.js +0 -97
  723. package/dist/coalesceMetric-5qIeZnTx.js +0 -13
  724. package/dist/color-B9jZdhJX.js +0 -116
  725. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +0 -56
  726. package/dist/components/custom/aurora/Aurora.vue.d.ts +0 -101
  727. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +0 -39
  728. package/dist/components/custom/aurora/composables/atoms.d.ts +0 -142
  729. package/dist/components/custom/aurora/composables/color.d.ts +0 -93
  730. package/dist/components/custom/aurora/composables/cursorModel.d.ts +0 -78
  731. package/dist/components/custom/aurora/composables/frameLoop.d.ts +0 -39
  732. package/dist/components/custom/aurora/composables/glSetup.d.ts +0 -29
  733. package/dist/components/custom/aurora/composables/runtime.d.ts +0 -127
  734. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -100
  735. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +0 -60
  736. package/dist/components/custom/aurora/composables/useAurora.d.ts +0 -86
  737. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +0 -33
  738. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +0 -37
  739. package/dist/components/custom/aurora/constants/presets.d.ts +0 -258
  740. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +0 -1
  741. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -1
  742. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +0 -1
  743. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +0 -1
  744. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +0 -2
  745. package/dist/components/custom/aurora/index.d.ts +0 -13
  746. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +0 -46
  747. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +0 -25
  748. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +0 -18
  749. package/dist/components/custom/border-progress/constants.d.ts +0 -59
  750. package/dist/components/custom/border-progress/index.d.ts +0 -4
  751. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +0 -21
  752. package/dist/components/custom/completion-seal/constants.d.ts +0 -46
  753. package/dist/components/custom/concentric/Concentric.vue.d.ts +0 -42
  754. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +0 -23
  755. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +0 -26
  756. package/dist/components/custom/concentric/composables/levelField.d.ts +0 -50
  757. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +0 -17
  758. package/dist/components/custom/concentric/composables/useConcentric.d.ts +0 -35
  759. package/dist/components/custom/concentric/constants.d.ts +0 -88
  760. package/dist/components/custom/concentric/index.d.ts +0 -5
  761. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +0 -4
  762. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +0 -1
  763. package/dist/components/custom/configurator/Configurator.vue.d.ts +0 -160
  764. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +0 -79
  765. package/dist/components/custom/configurator/density.d.ts +0 -25
  766. package/dist/components/custom/configurator/index.d.ts +0 -6
  767. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +0 -32
  768. package/dist/components/custom/confirm-dialog/index.d.ts +0 -1
  769. package/dist/components/custom/constellation/Constellation.vue.d.ts +0 -33
  770. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +0 -10
  771. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +0 -19
  772. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +0 -66
  773. package/dist/components/custom/constellation/composables/useConstellation.d.ts +0 -19
  774. package/dist/components/custom/constellation/constants.d.ts +0 -94
  775. package/dist/components/custom/constellation/constellationField.d.ts +0 -72
  776. package/dist/components/custom/constellation/constellationInteraction.d.ts +0 -141
  777. package/dist/components/custom/constellation/constellationRender.d.ts +0 -25
  778. package/dist/components/custom/constellation/constellationTypes.d.ts +0 -407
  779. package/dist/components/custom/constellation/index.d.ts +0 -6
  780. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +0 -2
  781. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +0 -1
  782. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +0 -2
  783. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +0 -1
  784. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +0 -34
  785. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +0 -22
  786. package/dist/components/custom/deck/constants.d.ts +0 -14
  787. package/dist/components/custom/deck/index.d.ts +0 -8
  788. package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +0 -46
  789. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +0 -30
  790. package/dist/components/custom/dock/DockIconButton.vue.d.ts +0 -72
  791. package/dist/components/custom/dock/DockLayer.vue.d.ts +0 -34
  792. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +0 -51
  793. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +0 -19
  794. package/dist/components/custom/dock/DockSelectTrigger.vue.d.ts +0 -29
  795. package/dist/components/custom/dock/DockStack.vue.d.ts +0 -78
  796. package/dist/components/custom/dock/DockTabButton.vue.d.ts +0 -39
  797. package/dist/components/custom/dock/GlassDock.vue.d.ts +0 -47
  798. package/dist/components/custom/dock/composables/dockContext.d.ts +0 -47
  799. package/dist/components/custom/dock/composables/dockLayerContext.d.ts +0 -36
  800. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +0 -79
  801. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +0 -86
  802. package/dist/components/custom/dock/composables/index.d.ts +0 -14
  803. package/dist/components/custom/dock/composables/railProjection.d.ts +0 -45
  804. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +0 -23
  805. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +0 -192
  806. package/dist/components/custom/dock/composables/useDockFission.d.ts +0 -158
  807. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +0 -18
  808. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +0 -15
  809. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +0 -44
  810. package/dist/components/custom/dock/composables/useDockSearch.d.ts +0 -85
  811. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +0 -214
  812. package/dist/components/custom/dock/composables/useDockState.d.ts +0 -70
  813. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +0 -90
  814. package/dist/components/custom/dock/constants.d.ts +0 -98
  815. package/dist/components/custom/dock/index.d.ts +0 -24
  816. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +0 -42
  817. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +0 -104
  818. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +0 -8
  819. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +0 -9
  820. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +0 -12
  821. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +0 -7
  822. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +0 -65
  823. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +0 -35
  824. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +0 -32
  825. package/dist/components/custom/dot-flow-field/constants.d.ts +0 -120
  826. package/dist/components/custom/dot-flow-field/index.d.ts +0 -5
  827. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +0 -1
  828. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +0 -33
  829. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +0 -2
  830. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +0 -43
  831. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +0 -89
  832. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +0 -61
  833. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +0 -34
  834. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +0 -34
  835. package/dist/components/custom/dot-matrix/constants.d.ts +0 -72
  836. package/dist/components/custom/dot-matrix/index.d.ts +0 -5
  837. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +0 -4
  838. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +0 -1
  839. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +0 -33
  840. package/dist/components/custom/easing/EasingPicker.vue.d.ts +0 -49
  841. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +0 -80
  842. package/dist/components/custom/easing/constants.d.ts +0 -28
  843. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +0 -71
  844. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +0 -31
  845. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +0 -58
  846. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +0 -24
  847. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +0 -31
  848. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +0 -56
  849. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +0 -63
  850. package/dist/components/custom/fourier-field/constants.d.ts +0 -117
  851. package/dist/components/custom/fourier-field/index.d.ts +0 -31
  852. package/dist/components/custom/fourier-field/math.d.ts +0 -86
  853. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +0 -4
  854. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +0 -1
  855. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +0 -49
  856. package/dist/components/custom/glass-panel/index.d.ts +0 -2
  857. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +0 -71
  858. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +0 -41
  859. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +0 -62
  860. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +0 -69
  861. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +0 -23
  862. package/dist/components/custom/goo-blob/constants.d.ts +0 -82
  863. package/dist/components/custom/goo-blob/index.d.ts +0 -7
  864. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +0 -1
  865. package/dist/components/custom/goo-blob/types.d.ts +0 -244
  866. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +0 -49
  867. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +0 -24
  868. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +0 -79
  869. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +0 -45
  870. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +0 -31
  871. package/dist/components/custom/goo-dot-matrix/constants.d.ts +0 -115
  872. package/dist/components/custom/goo-dot-matrix/index.d.ts +0 -5
  873. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +0 -13
  874. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +0 -4
  875. package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
  876. package/dist/components/custom/handmark/composables/useHandMark.d.ts +0 -89
  877. package/dist/components/custom/handmark/constants.d.ts +0 -59
  878. package/dist/components/custom/handmark/geometry.d.ts +0 -85
  879. package/dist/components/custom/handmark/index.d.ts +0 -27
  880. package/dist/components/custom/handmark/types.d.ts +0 -62
  881. package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
  882. package/dist/components/custom/header-ribbon/index.d.ts +0 -2
  883. package/dist/components/custom/header-ribbon/types.d.ts +0 -7
  884. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +0 -132
  885. package/dist/components/custom/hover-popover/index.d.ts +0 -1
  886. package/dist/components/custom/infinite-scroll/index.d.ts +0 -1
  887. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +0 -108
  888. package/dist/components/custom/labeled-field/LabeledInput.vue.d.ts +0 -31
  889. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +0 -40
  890. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +0 -108
  891. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +0 -120
  892. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +0 -92
  893. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +0 -48
  894. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +0 -39
  895. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +0 -42
  896. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +0 -105
  897. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +0 -18
  898. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +0 -21
  899. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +0 -16
  900. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +0 -31
  901. package/dist/components/custom/paper-grid/constants.d.ts +0 -95
  902. package/dist/components/custom/paper-grid/index.d.ts +0 -5
  903. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +0 -4
  904. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +0 -1
  905. package/dist/components/custom/pulse/Pulse.vue.d.ts +0 -53
  906. package/dist/components/custom/scrolling-text/ScrollingText.vue.d.ts +0 -20
  907. package/dist/components/custom/scrolling-text/index.d.ts +0 -1
  908. package/dist/components/custom/search/FuzzySearch.vue.d.ts +0 -22
  909. package/dist/components/custom/search/SearchBar.vue.d.ts +0 -38
  910. package/dist/components/custom/search/searchVariants.d.ts +0 -19
  911. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +0 -50
  912. package/dist/components/custom/selectable-chip/chipVariants.d.ts +0 -39
  913. package/dist/components/custom/selectable-chip/index.d.ts +0 -2
  914. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +0 -15
  915. package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +0 -38
  916. package/dist/components/custom/sortable-list/SortableItem.vue.d.ts +0 -38
  917. package/dist/components/custom/sortable-list/SortableList.vue.d.ts +0 -76
  918. package/dist/components/custom/sortable-list/context.d.ts +0 -25
  919. package/dist/components/custom/sortable-list/index.d.ts +0 -4
  920. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +0 -39
  921. package/dist/components/custom/stacked-icons/StackedIconGroup.vue.d.ts +0 -30
  922. package/dist/components/custom/stacked-icons/index.d.ts +0 -2
  923. package/dist/components/custom/stacked-icons/types.d.ts +0 -18
  924. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +0 -99
  925. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +0 -42
  926. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +0 -58
  927. package/dist/components/custom/tabs/constants.d.ts +0 -44
  928. package/dist/components/custom/tabs/index.d.ts +0 -2
  929. package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +0 -49
  930. package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +0 -118
  931. package/dist/components/custom/timeline/GlassTimeline.vue.d.ts +0 -114
  932. package/dist/components/custom/toggle-chip/ToggleChip.vue.d.ts +0 -41
  933. package/dist/components/custom/toggle-chip/index.d.ts +0 -28
  934. package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +0 -85
  935. package/dist/components/custom/typewriter/composables/useTypewriter.d.ts +0 -22
  936. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +0 -74
  937. package/dist/components/custom/watercolor-dot/prng.d.ts +0 -5
  938. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +0 -29
  939. package/dist/components/ui/_shared/ModalOverlay.vue.d.ts +0 -90
  940. package/dist/components/ui/_shared/index.d.ts +0 -6
  941. package/dist/components/ui/_shared/menuItemVariants.d.ts +0 -51
  942. package/dist/components/ui/_shared/useControlSize.d.ts +0 -46
  943. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +0 -55
  944. package/dist/components/ui/alert/Alert.vue.d.ts +0 -19
  945. package/dist/components/ui/alert/index.d.ts +0 -8
  946. package/dist/components/ui/avatar/Avatar.vue.d.ts +0 -23
  947. package/dist/components/ui/avatar/AvatarImage.vue.d.ts +0 -8
  948. package/dist/components/ui/avatar/index.d.ts +0 -9
  949. package/dist/components/ui/badge/Badge.vue.d.ts +0 -34
  950. package/dist/components/ui/badge/index.d.ts +0 -8
  951. package/dist/components/ui/button/Button.vue.d.ts +0 -29
  952. package/dist/components/ui/button/index.d.ts +0 -7
  953. package/dist/components/ui/card/Card.vue.d.ts +0 -168
  954. package/dist/components/ui/card/CardHeader.vue.d.ts +0 -81
  955. package/dist/components/ui/card/ScrollCard.vue.d.ts +0 -33
  956. package/dist/components/ui/carousel/Carousel.vue.d.ts +0 -37
  957. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +0 -14
  958. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +0 -22
  959. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +0 -22
  960. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +0 -50
  961. package/dist/components/ui/carousel/index.d.ts +0 -9
  962. package/dist/components/ui/carousel/useCarousel.d.ts +0 -20
  963. package/dist/components/ui/combobox/Combobox.vue.d.ts +0 -29
  964. package/dist/components/ui/combobox/ComboboxList.vue.d.ts +0 -32
  965. package/dist/components/ui/combobox/ComboboxSeparator.vue.d.ts +0 -18
  966. package/dist/components/ui/combobox/ComboboxViewport.vue.d.ts +0 -18
  967. package/dist/components/ui/combobox/index.d.ts +0 -11
  968. package/dist/components/ui/command/Command.vue.d.ts +0 -38
  969. package/dist/components/ui/command/CommandDialog.vue.d.ts +0 -24
  970. package/dist/components/ui/command/index.d.ts +0 -9
  971. package/dist/components/ui/context-menu/ContextMenu.vue.d.ts +0 -18
  972. package/dist/components/ui/context-menu/ContextMenuCheckboxItem.vue.d.ts +0 -24
  973. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +0 -34
  974. package/dist/components/ui/context-menu/ContextMenuItem.vue.d.ts +0 -23
  975. package/dist/components/ui/context-menu/ContextMenuLabel.vue.d.ts +0 -19
  976. package/dist/components/ui/context-menu/ContextMenuRadioGroup.vue.d.ts +0 -18
  977. package/dist/components/ui/context-menu/ContextMenuRadioItem.vue.d.ts +0 -22
  978. package/dist/components/ui/context-menu/ContextMenuSeparator.vue.d.ts +0 -8
  979. package/dist/components/ui/context-menu/ContextMenuShortcut.vue.d.ts +0 -17
  980. package/dist/components/ui/context-menu/ContextMenuSubContent.vue.d.ts +0 -34
  981. package/dist/components/ui/context-menu/ContextMenuSubTrigger.vue.d.ts +0 -19
  982. package/dist/components/ui/context-menu/ContextMenuTrigger.vue.d.ts +0 -14
  983. package/dist/components/ui/context-menu/index.d.ts +0 -12
  984. package/dist/components/ui/data-table/DataTable.vue.d.ts +0 -82
  985. package/dist/components/ui/data-table/index.d.ts +0 -3
  986. package/dist/components/ui/data-table/types.d.ts +0 -56
  987. package/dist/components/ui/dialog/DialogContent.vue.d.ts +0 -93
  988. package/dist/components/ui/dialog/DialogScrollContent.vue.d.ts +0 -33
  989. package/dist/components/ui/dialog/index.d.ts +0 -9
  990. package/dist/components/ui/drawer/Drawer.vue.d.ts +0 -86
  991. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +0 -47
  992. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +0 -26
  993. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +0 -17
  994. package/dist/components/ui/drawer/constants.d.ts +0 -47
  995. package/dist/components/ui/drawer/index.d.ts +0 -35
  996. package/dist/components/ui/dropdown-menu/DropdownMenu.vue.d.ts +0 -18
  997. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +0 -36
  998. package/dist/components/ui/dropdown-menu/DropdownMenuTrigger.vue.d.ts +0 -14
  999. package/dist/components/ui/dropdown-menu/index.d.ts +0 -15
  1000. package/dist/components/ui/hover-card/HoverCard.vue.d.ts +0 -18
  1001. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +0 -23
  1002. package/dist/components/ui/hover-card/HoverCardTrigger.vue.d.ts +0 -14
  1003. package/dist/components/ui/hover-card/index.d.ts +0 -3
  1004. package/dist/components/ui/index.d.ts +0 -41
  1005. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +0 -46
  1006. package/dist/components/ui/metric-pill/index.d.ts +0 -1
  1007. package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +0 -28
  1008. package/dist/components/ui/multi-select/index.d.ts +0 -7
  1009. package/dist/components/ui/notification/Notification.vue.d.ts +0 -16
  1010. package/dist/components/ui/popover/Popover.vue.d.ts +0 -18
  1011. package/dist/components/ui/popover/PopoverContent.vue.d.ts +0 -42
  1012. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +0 -14
  1013. package/dist/components/ui/progress/Progress.vue.d.ts +0 -49
  1014. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +0 -25
  1015. package/dist/components/ui/progress/ProgressGradient.vue.d.ts +0 -25
  1016. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +0 -47
  1017. package/dist/components/ui/progress/index.d.ts +0 -5
  1018. package/dist/components/ui/progress/useProgressGeometry.d.ts +0 -60
  1019. package/dist/components/ui/section/Section.vue.d.ts +0 -73
  1020. package/dist/components/ui/section/index.d.ts +0 -1
  1021. package/dist/components/ui/select/SelectContent.vue.d.ts +0 -42
  1022. package/dist/components/ui/select/index.d.ts +0 -10
  1023. package/dist/components/ui/sheet/Sheet.vue.d.ts +0 -18
  1024. package/dist/components/ui/sheet/SheetClose.vue.d.ts +0 -14
  1025. package/dist/components/ui/sheet/SheetContent.vue.d.ts +0 -59
  1026. package/dist/components/ui/sheet/SheetDescription.vue.d.ts +0 -18
  1027. package/dist/components/ui/sheet/SheetFooter.vue.d.ts +0 -17
  1028. package/dist/components/ui/sheet/SheetHeader.vue.d.ts +0 -17
  1029. package/dist/components/ui/sheet/SheetTitle.vue.d.ts +0 -18
  1030. package/dist/components/ui/sheet/SheetTrigger.vue.d.ts +0 -14
  1031. package/dist/components/ui/sheet/index.d.ts +0 -13
  1032. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +0 -35
  1033. package/dist/components/ui/slider/Slider.vue.d.ts +0 -37
  1034. package/dist/components/ui/slider/index.d.ts +0 -46
  1035. package/dist/components/ui/table/Table.vue.d.ts +0 -17
  1036. package/dist/components/ui/tabs/Tabs.vue.d.ts +0 -19
  1037. package/dist/components/ui/tabs/TabsContent.vue.d.ts +0 -18
  1038. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +0 -11
  1039. package/dist/components/ui/tabs/TabsList.vue.d.ts +0 -28
  1040. package/dist/components/ui/tabs/TabsTrigger.vue.d.ts +0 -18
  1041. package/dist/components/ui/tabs/index.d.ts +0 -5
  1042. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +0 -28
  1043. package/dist/components/ui/toast/Toast.vue.d.ts +0 -107
  1044. package/dist/components/ui/toast/index.d.ts +0 -9
  1045. package/dist/components/ui/toast/use-toast.d.ts +0 -182
  1046. package/dist/components/ui/toggle/Toggle.vue.d.ts +0 -29
  1047. package/dist/components/ui/toggle/index.d.ts +0 -26
  1048. package/dist/composables/glass/useGlassRenderer.d.ts +0 -44
  1049. package/dist/composables/glass/useVizChoreography.d.ts +0 -123
  1050. package/dist/composables/motion/core/useHaptic.d.ts +0 -48
  1051. package/dist/composables/motion/useCelebrationBurst.d.ts +0 -50
  1052. package/dist/composables/motion/useLiquidMorph.d.ts +0 -108
  1053. package/dist/composables/motion/useMorphField.d.ts +0 -157
  1054. package/dist/composables/sortable/dragController.d.ts +0 -44
  1055. package/dist/composables/sortable/types.d.ts +0 -133
  1056. package/dist/composables/sortable/useSortable.d.ts +0 -34
  1057. package/dist/concentric.d.ts +0 -1
  1058. package/dist/concentric.js +0 -805
  1059. package/dist/confirm-dialog.d.ts +0 -1
  1060. package/dist/confirm-dialog.js +0 -82
  1061. package/dist/context-menu.d.ts +0 -1
  1062. package/dist/context-menu.js +0 -3
  1063. package/dist/createCanvasLifecycle-CuCrGRfq.js +0 -173
  1064. package/dist/dockContext-gFVS2gMg.js +0 -18
  1065. package/dist/dot-flow-field.d.ts +0 -1
  1066. package/dist/dot-flow-field.js +0 -1485
  1067. package/dist/dot-matrix.d.ts +0 -1
  1068. package/dist/dot-matrix.js +0 -774
  1069. package/dist/dotMatrixField-CRO0ZFk4.js +0 -48
  1070. package/dist/dropdown-menu-CCfcCQ68.js +0 -369
  1071. package/dist/glass-panel.d.ts +0 -1
  1072. package/dist/glass-panel.js +0 -113
  1073. package/dist/goo-blob.d.ts +0 -1
  1074. package/dist/goo-blob.js +0 -348
  1075. package/dist/goo-dot-matrix.d.ts +0 -1
  1076. package/dist/goo-dot-matrix.js +0 -811
  1077. package/dist/hover-card.d.ts +0 -1
  1078. package/dist/hover-card.js +0 -2
  1079. package/dist/hover-popover.d.ts +0 -1
  1080. package/dist/hover-popover.js +0 -2
  1081. package/dist/math-5RcIgCB4.js +0 -51
  1082. package/dist/menuItemVariants-DAXquKja.js +0 -36
  1083. package/dist/paper-grid.d.ts +0 -1
  1084. package/dist/paper-grid.js +0 -761
  1085. package/dist/paperGrid-CXCSMbZ1.js +0 -191
  1086. package/dist/presets-QvYgnFIZ.js +0 -85
  1087. package/dist/prng-B5tIXTtj.js +0 -15
  1088. package/dist/procedural-color.wgsl-C1Y5PkM6.js +0 -4
  1089. package/dist/resolveCanvasColor-DsSJk06I.js +0 -93
  1090. package/dist/scrolling-text.d.ts +0 -1
  1091. package/dist/scrolling-text.js +0 -2
  1092. package/dist/selectable-chip.d.ts +0 -1
  1093. package/dist/selectable-chip.js +0 -48
  1094. package/dist/sheet-DUCIoOe0.js +0 -218
  1095. package/dist/sheet.d.ts +0 -1
  1096. package/dist/sheet.js +0 -2
  1097. package/dist/slider-CcICPe3u.js +0 -149
  1098. package/dist/spectrum-walk-cBNSx_zm.js +0 -33
  1099. package/dist/springPresets-DfoQ6XRY.js +0 -64
  1100. package/dist/stacked-icons.d.ts +0 -1
  1101. package/dist/stacked-icons.js +0 -98
  1102. package/dist/styles/border-progress.css +0 -109
  1103. package/dist/styles/cards.css +0 -448
  1104. package/dist/styles/completion-seal.css +0 -131
  1105. package/dist/styles/configurator.css +0 -297
  1106. package/dist/styles/critical-partition.mjs +0 -195
  1107. package/dist/styles/critical.css +0 -12
  1108. package/dist/styles/deferred.css +0 -35
  1109. package/dist/styles/dock/adaptive-legibility.css +0 -119
  1110. package/dist/styles/dock/cta-seat.css +0 -87
  1111. package/dist/styles/dock/density.css +0 -455
  1112. package/dist/styles/dock/fission-bridge.css +0 -552
  1113. package/dist/styles/dock/layer-group.css +0 -333
  1114. package/dist/styles/dock/layers.css +0 -413
  1115. package/dist/styles/dock/morph-bridge.css +0 -172
  1116. package/dist/styles/dock/morph.css +0 -430
  1117. package/dist/styles/dock/overflow.css +0 -292
  1118. package/dist/styles/dock/search.css +0 -68
  1119. package/dist/styles/dock/section.css +0 -59
  1120. package/dist/styles/dock/shape.css +0 -250
  1121. package/dist/styles/dock/shell.css +0 -498
  1122. package/dist/styles/dock/stack-rail.css +0 -352
  1123. package/dist/styles/dock-controls/dark-mode-toggle.css +0 -122
  1124. package/dist/styles/dock-controls/icon-button.css +0 -189
  1125. package/dist/styles/dock-controls/tab-button.css +0 -143
  1126. package/dist/styles/dock-controls/touch-floor.css +0 -94
  1127. package/dist/styles/dock-controls/triggers.css +0 -157
  1128. package/dist/styles/dock-controls.css +0 -92
  1129. package/dist/styles/dock.css +0 -173
  1130. package/dist/styles/drawer.css +0 -406
  1131. package/dist/styles/feedback-tone.css +0 -104
  1132. package/dist/styles/floating-panel.css +0 -51
  1133. package/dist/styles/glass/liquid-morph.css +0 -850
  1134. package/dist/styles/hover-popover.css +0 -47
  1135. package/dist/styles/icon-chip.css +0 -256
  1136. package/dist/styles/instrument-chassis.css +0 -453
  1137. package/dist/styles/jubilance.css +0 -65
  1138. package/dist/styles/menu.css +0 -127
  1139. package/dist/styles/motion/morph-field.css +0 -229
  1140. package/dist/styles/segmented-tabs.css +0 -447
  1141. package/dist/styles/select.css +0 -201
  1142. package/dist/styles/utilities/animate.css +0 -29
  1143. package/dist/toggle-chip.d.ts +0 -1
  1144. package/dist/toggle-chip.js +0 -46
  1145. package/dist/uniformBridgeWGPU-BCse1SHU.js +0 -1268
  1146. package/dist/useAnimatedNumber-BntskVdQ.js +0 -40
  1147. package/dist/useConfiguratorState-22BcULzF.js +0 -164
  1148. package/dist/useControlSize-DAZ062x7.js +0 -9
  1149. package/dist/useDockCtaReceive-DX7RDb6_.js +0 -88
  1150. package/dist/useDragMorph-DGLSewwB.js +0 -102
  1151. package/dist/useFuzzySearch-0fTYOhS4.js +0 -177
  1152. package/dist/useGlobalDark-B4HO9LXG.js +0 -53
  1153. package/dist/useGooMorph-Cs13NgYL.js +0 -104
  1154. package/dist/useGpuSubstrate-Ceet70xq.js +0 -347
  1155. package/dist/useHaptic-CPz5BT9I.js +0 -134
  1156. package/dist/useIntersectionPause-DO8Vl4gs.js +0 -53
  1157. package/dist/useInterval-BVUI-sez.js +0 -18
  1158. package/dist/useKeyboardShortcuts-BEut54Tk.js +0 -99
  1159. package/dist/useLiquidPress-CtOQ8Z0_.js +0 -43
  1160. package/dist/useMorphField-ogBM7ubT.js +0 -141
  1161. package/dist/usePointerVelocityField-BrkqZFhj.js +0 -91
  1162. package/dist/useScrollChrome-JuImi1DM.js +0 -258
  1163. package/dist/useScrollProgress-A0M6qRl7.js +0 -35
  1164. package/dist/useSortable-DQV_UNDw.js +0 -246
  1165. package/dist/useSpring-C0jyvEJB.js +0 -40
  1166. package/dist/useSpringMount-DFxtzmkR.js +0 -71
  1167. package/dist/useSpringPress-VM9RgVq3.js +0 -36
  1168. package/dist/useSurfaceAxis-Ci7Dnaw2.js +0 -7
  1169. package/dist/useTextHighlight-Bma3UlKA.js +0 -72
  1170. package/dist/useTouchGate-B1Lf9XqN.js +0 -84
  1171. package/dist/useUserInvalidAria-EmmwWPOl.js +0 -29
  1172. package/dist/useViewportReady-C9pYnn7K.js +0 -191
  1173. package/dist/utils/cn.d.ts +0 -27
  1174. package/dist/utils/index.d.ts +0 -4
  1175. package/dist/utils/moveBefore.d.ts +0 -15
  1176. package/dist/utils/platformSupport.d.ts +0 -8
  1177. package/dist/vendor-B2qOlYY3.js +0 -239
  1178. package/dist/virtual.d.ts +0 -1
  1179. package/dist/virtual.js +0 -225
  1180. package/src/styles/border-progress.css +0 -109
  1181. package/src/styles/cards.css +0 -446
  1182. package/src/styles/completion-seal.css +0 -131
  1183. package/src/styles/configurator.css +0 -297
  1184. package/src/styles/critical-partition.mjs +0 -195
  1185. package/src/styles/dock/adaptive-legibility.css +0 -119
  1186. package/src/styles/dock/cta-seat.css +0 -87
  1187. package/src/styles/dock/density.css +0 -455
  1188. package/src/styles/dock/fission-bridge.css +0 -552
  1189. package/src/styles/dock/layer-group.css +0 -333
  1190. package/src/styles/dock/layers.css +0 -413
  1191. package/src/styles/dock/morph-bridge.css +0 -172
  1192. package/src/styles/dock/morph.css +0 -430
  1193. package/src/styles/dock/overflow.css +0 -292
  1194. package/src/styles/dock/search.css +0 -68
  1195. package/src/styles/dock/section.css +0 -59
  1196. package/src/styles/dock/shape.css +0 -250
  1197. package/src/styles/dock/shell.css +0 -498
  1198. package/src/styles/dock/stack-rail.css +0 -352
  1199. package/src/styles/dock-controls/dark-mode-toggle.css +0 -122
  1200. package/src/styles/dock-controls/icon-button.css +0 -189
  1201. package/src/styles/dock-controls/tab-button.css +0 -143
  1202. package/src/styles/dock-controls/touch-floor.css +0 -94
  1203. package/src/styles/dock-controls/triggers.css +0 -157
  1204. package/src/styles/dock-controls.css +0 -92
  1205. package/src/styles/dock.css +0 -173
  1206. package/src/styles/drawer.css +0 -398
  1207. package/src/styles/feedback-tone.css +0 -104
  1208. package/src/styles/floating-panel.css +0 -49
  1209. package/src/styles/glass/liquid-morph.css +0 -850
  1210. package/src/styles/hover-popover.css +0 -45
  1211. package/src/styles/icon-chip.css +0 -256
  1212. package/src/styles/instrument-chassis.css +0 -449
  1213. package/src/styles/jubilance.css +0 -65
  1214. package/src/styles/menu.css +0 -127
  1215. package/src/styles/motion/morph-field.css +0 -229
  1216. package/src/styles/segmented-tabs.css +0 -445
  1217. package/src/styles/select.css +0 -201
  1218. package/src/styles/utilities/animate.css +0 -29
  1219. /package/dist/{_plugin-vue_export-helper-gLzyemvl.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  1220. /package/dist/{compile-INR_tPk_.js → compile-DK3Fri1B.js} +0 -0
  1221. /package/dist/components/{ui/_shared → _shared}/useStalePropWarning.d.ts +0 -0
  1222. /package/dist/components/{ui/accordion → accordion}/Accordion.vue.d.ts +0 -0
  1223. /package/dist/components/{ui/accordion → accordion}/AccordionContent.vue.d.ts +0 -0
  1224. /package/dist/components/{ui/accordion → accordion}/AccordionItem.vue.d.ts +0 -0
  1225. /package/dist/components/{ui/accordion → accordion}/AccordionTrigger.vue.d.ts +0 -0
  1226. /package/dist/components/{ui/accordion → accordion}/index.d.ts +0 -0
  1227. /package/dist/components/{ui/alert → alert}/AlertDescription.vue.d.ts +0 -0
  1228. /package/dist/components/{ui/alert → alert}/AlertTitle.vue.d.ts +0 -0
  1229. /package/dist/components/{custom/animated-digit → animated-digit}/index.d.ts +0 -0
  1230. /package/dist/components/{custom/aurora → aurora}/composables/auroraFallbackGround.d.ts +0 -0
  1231. /package/dist/components/{custom/aurora → aurora}/composables/configSource.d.ts +0 -0
  1232. /package/dist/components/{custom/aurora → aurora}/constants/budget.d.ts +0 -0
  1233. /package/dist/components/{custom/aurora → aurora}/constants/renderMode.d.ts +0 -0
  1234. /package/dist/components/{custom/aurora → aurora}/constants/shaders/aurora.frag.d.ts +0 -0
  1235. /package/dist/components/{custom/aurora → aurora}/constants/shaders/aurora.vert.d.ts +0 -0
  1236. /package/dist/components/{custom/aurora → aurora}/constants/shaders/composition.glsl.d.ts +0 -0
  1237. /package/dist/components/{custom/aurora → aurora}/constants/shaders/oil-modes.glsl.d.ts +0 -0
  1238. /package/dist/components/{custom/aurora → aurora}/constants/shaders/procedural-color.wgsl.d.ts +0 -0
  1239. /package/dist/components/{custom/aurora → aurora}/constants/shaders/tonemap.glsl.d.ts +0 -0
  1240. /package/dist/components/{custom/aurora → aurora}/constants/shaders/vangogh-medium.glsl.d.ts +0 -0
  1241. /package/dist/components/{ui/avatar → avatar}/AvatarFallback.vue.d.ts +0 -0
  1242. /package/dist/components/{custom/goo-blob → blob}/composables/buildMetaballProgram.d.ts +0 -0
  1243. /package/dist/components/{custom/goo-blob → blob}/composables/easing.d.ts +0 -0
  1244. /package/dist/components/{custom/goo-blob → blob}/composables/uniformBridgeWGPU.d.ts +0 -0
  1245. /package/dist/components/{custom/goo-blob → blob}/composables/useBlobMood.d.ts +0 -0
  1246. /package/dist/components/{custom/goo-blob → blob}/composables/useBlobSatellites.d.ts +0 -0
  1247. /package/dist/components/{custom/goo-blob → blob}/shaders/metaball-noise.wgsl.d.ts +0 -0
  1248. /package/dist/components/{custom/goo-blob → blob}/shaders/metaball-palette.wgsl.d.ts +0 -0
  1249. /package/dist/components/{custom/goo-blob → blob}/shaders/metaball.frag.d.ts +0 -0
  1250. /package/dist/components/{custom/goo-blob → blob}/shaders/metaball.vert.d.ts +0 -0
  1251. /package/dist/components/{custom/goo-blob → blob}/shaders/metaball.wgsl.d.ts +0 -0
  1252. /package/dist/components/{custom/goo-blob → blob}/shaders/oklch-perturb.glsl.d.ts +0 -0
  1253. /package/dist/components/{custom/goo-blob → blob}/shaders/sdf-body.glsl.d.ts +0 -0
  1254. /package/dist/components/{custom/goo-blob → blob}/shaders/watercolor-edges.glsl.d.ts +0 -0
  1255. /package/dist/components/{ui/card → card}/CardAction.vue.d.ts +0 -0
  1256. /package/dist/components/{ui/card → card}/CardContent.vue.d.ts +0 -0
  1257. /package/dist/components/{ui/card → card}/CardDescription.vue.d.ts +0 -0
  1258. /package/dist/components/{ui/card → card}/CardFooter.vue.d.ts +0 -0
  1259. /package/dist/components/{ui/card → card}/CardTitle.vue.d.ts +0 -0
  1260. /package/dist/components/{ui/card → card}/ScrollCardHeader.vue.d.ts +0 -0
  1261. /package/dist/components/{ui/card → card}/index.d.ts +0 -0
  1262. /package/dist/components/{ui/carousel → carousel}/CarouselItem.vue.d.ts +0 -0
  1263. /package/dist/components/{ui/carousel → carousel}/CarouselPager.vue.d.ts +0 -0
  1264. /package/dist/components/{ui/carousel → carousel}/interface.d.ts +0 -0
  1265. /package/dist/components/{ui/checkbox → checkbox}/Checkbox.vue.d.ts +0 -0
  1266. /package/dist/components/{ui/checkbox → checkbox}/index.d.ts +0 -0
  1267. /package/dist/components/{ui/collapsible → collapsible}/Collapsible.vue.d.ts +0 -0
  1268. /package/dist/components/{ui/collapsible → collapsible}/CollapsibleContent.vue.d.ts +0 -0
  1269. /package/dist/components/{ui/collapsible → collapsible}/CollapsibleTrigger.vue.d.ts +0 -0
  1270. /package/dist/components/{ui/collapsible → collapsible}/index.d.ts +0 -0
  1271. /package/dist/components/{custom/color-swatch → color-swatch}/ColorSwatch.vue.d.ts +0 -0
  1272. /package/dist/components/{custom/color-swatch → color-swatch}/index.d.ts +0 -0
  1273. /package/dist/components/{ui/combobox → combobox}/ComboboxAnchor.vue.d.ts +0 -0
  1274. /package/dist/components/{ui/combobox → combobox}/ComboboxEmpty.vue.d.ts +0 -0
  1275. /package/dist/components/{ui/combobox → combobox}/ComboboxGroup.vue.d.ts +0 -0
  1276. /package/dist/components/{ui/combobox → combobox}/ComboboxInput.vue.d.ts +0 -0
  1277. /package/dist/components/{ui/combobox → combobox}/ComboboxItem.vue.d.ts +0 -0
  1278. /package/dist/components/{ui/combobox → combobox}/ComboboxItemIndicator.vue.d.ts +0 -0
  1279. /package/dist/components/{ui/command → command}/CommandEmpty.vue.d.ts +0 -0
  1280. /package/dist/components/{ui/command → command}/CommandGroup.vue.d.ts +0 -0
  1281. /package/dist/components/{ui/command → command}/CommandInput.vue.d.ts +0 -0
  1282. /package/dist/components/{ui/command → command}/CommandItem.vue.d.ts +0 -0
  1283. /package/dist/components/{ui/command → command}/CommandList.vue.d.ts +0 -0
  1284. /package/dist/components/{ui/command → command}/CommandSeparator.vue.d.ts +0 -0
  1285. /package/dist/components/{ui/command → command}/CommandShortcut.vue.d.ts +0 -0
  1286. /package/dist/components/{custom/completion-seal → completion-seal}/composables/useCompletionSeal.d.ts +0 -0
  1287. /package/dist/components/{custom/completion-seal → completion-seal}/index.d.ts +0 -0
  1288. /package/dist/components/{custom/configurator → configurator}/ConfiguratorLayer.vue.d.ts +0 -0
  1289. /package/dist/components/{custom/configurator → configurator}/useConfiguratorState.d.ts +0 -0
  1290. /package/dist/components/{custom/constellation → constellation}/composables/createConstellationField.d.ts +0 -0
  1291. /package/dist/components/{custom/constellation → constellation}/constellationWell.d.ts +0 -0
  1292. /package/dist/components/{custom/controls → controls}/index.d.ts +0 -0
  1293. /package/dist/components/{ui/data-table → data-table}/DataTablePagination.vue.d.ts +0 -0
  1294. /package/dist/components/{ui/data-table → data-table}/composables/useDataTableResponsive.d.ts +0 -0
  1295. /package/dist/components/{ui/data-table → data-table}/composables/useDataTableRowIdentity.d.ts +0 -0
  1296. /package/dist/components/{custom/deck → deck}/DeckPager.vue.d.ts +0 -0
  1297. /package/dist/components/{custom/deck → deck}/composables/useDeck.d.ts +0 -0
  1298. /package/dist/components/{custom/deck → deck}/composables/useDeckKeyboard.d.ts +0 -0
  1299. /package/dist/components/{ui/dialog → dialog}/Dialog.vue.d.ts +0 -0
  1300. /package/dist/components/{ui/dialog → dialog}/DialogClose.vue.d.ts +0 -0
  1301. /package/dist/components/{ui/dialog → dialog}/DialogDescription.vue.d.ts +0 -0
  1302. /package/dist/components/{ui/dialog → dialog}/DialogFooter.vue.d.ts +0 -0
  1303. /package/dist/components/{ui/dialog → dialog}/DialogHeader.vue.d.ts +0 -0
  1304. /package/dist/components/{ui/dialog → dialog}/DialogTitle.vue.d.ts +0 -0
  1305. /package/dist/components/{ui/dialog → dialog}/DialogTrigger.vue.d.ts +0 -0
  1306. /package/dist/components/{custom/dock → dock}/DockSection.vue.d.ts +0 -0
  1307. /package/dist/components/{custom/dock → dock}/DockSeparator.vue.d.ts +0 -0
  1308. /package/dist/components/{custom/dock → dock}/composables/isTeleportedTarget.d.ts +0 -0
  1309. /package/dist/components/{custom/dock → dock}/composables/useDockHold.d.ts +0 -0
  1310. /package/dist/components/{ui/drawer → drawer}/DrawerDescription.vue.d.ts +0 -0
  1311. /package/dist/components/{ui/drawer → drawer}/DrawerFooter.vue.d.ts +0 -0
  1312. /package/dist/components/{ui/drawer → drawer}/DrawerHeader.vue.d.ts +0 -0
  1313. /package/dist/components/{ui/drawer → drawer}/DrawerOverlay.vue.d.ts +0 -0
  1314. /package/dist/components/{ui/drawer → drawer}/DrawerTitle.vue.d.ts +0 -0
  1315. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuCheckboxItem.vue.d.ts +0 -0
  1316. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuGroup.vue.d.ts +0 -0
  1317. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuItem.vue.d.ts +0 -0
  1318. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuLabel.vue.d.ts +0 -0
  1319. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuRadioGroup.vue.d.ts +0 -0
  1320. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuRadioItem.vue.d.ts +0 -0
  1321. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuSeparator.vue.d.ts +0 -0
  1322. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuShortcut.vue.d.ts +0 -0
  1323. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuSub.vue.d.ts +0 -0
  1324. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuSubContent.vue.d.ts +0 -0
  1325. /package/dist/components/{ui/dropdown-menu → dropdown-menu}/DropdownMenuSubTrigger.vue.d.ts +0 -0
  1326. /package/dist/components/{custom/easing → easing}/index.d.ts +0 -0
  1327. /package/dist/components/{custom/expandable-container → expandable-container}/index.d.ts +0 -0
  1328. /package/dist/components/{custom/fading-scroll → fading-scroll}/FadingScroll.vue.d.ts +0 -0
  1329. /package/dist/components/{custom/fading-scroll → fading-scroll}/constants.d.ts +0 -0
  1330. /package/dist/components/{custom/fading-scroll → fading-scroll}/index.d.ts +0 -0
  1331. /package/dist/components/{ui/focus-scope → focus-scope}/FocusScope.vue.d.ts +0 -0
  1332. /package/dist/components/{ui/focus-scope → focus-scope}/index.d.ts +0 -0
  1333. /package/dist/components/{custom/fourier-field → fourier-field}/presets.d.ts +0 -0
  1334. /package/dist/components/{custom/fourier-field → fourier-field}/shaders/fourier-field.compute.wgsl.d.ts +0 -0
  1335. /package/dist/components/{custom/goo-filter → goo-filter}/GooFilter.vue.d.ts +0 -0
  1336. /package/dist/components/{custom/goo-filter → goo-filter}/index.d.ts +0 -0
  1337. /package/dist/components/{custom/handmark → handmark}/brush.d.ts +0 -0
  1338. /package/dist/components/{custom/handmark → handmark}/freehand.d.ts +0 -0
  1339. /package/dist/components/{custom/handmark → handmark}/ink.d.ts +0 -0
  1340. /package/dist/components/{custom/handmark → handmark}/texture.d.ts +0 -0
  1341. /package/dist/components/{custom/icon-chip → icon-chip}/IconChip.vue.d.ts +0 -0
  1342. /package/dist/components/{custom/icon-chip → icon-chip}/index.d.ts +0 -0
  1343. /package/dist/components/{custom/icon-chip → icon-chip}/types.d.ts +0 -0
  1344. /package/dist/components/{custom/icon-tooltip → icon-tooltip}/IconTooltip.vue.d.ts +0 -0
  1345. /package/dist/components/{custom/icon-tooltip → icon-tooltip}/index.d.ts +0 -0
  1346. /package/dist/components/{custom/infinite-scroll → infinite-scroll}/InfiniteScroll.vue.d.ts +0 -0
  1347. /package/dist/components/{custom/infinite-scroll → infinite-scroll}/composables/index.d.ts +0 -0
  1348. /package/dist/components/{custom/infinite-scroll → infinite-scroll}/composables/types.d.ts +0 -0
  1349. /package/dist/components/{custom/infinite-scroll → infinite-scroll}/composables/useInfiniteScroll.d.ts +0 -0
  1350. /package/dist/components/{ui/input → input}/Input.vue.d.ts +0 -0
  1351. /package/dist/components/{ui/input → input}/index.d.ts +0 -0
  1352. /package/dist/components/{custom/instrument-chassis → instrument-chassis}/ChassisDivider.vue.d.ts +0 -0
  1353. /package/dist/components/{custom/instrument-chassis → instrument-chassis}/InstrumentChassis.vue.d.ts +0 -0
  1354. /package/dist/components/{custom/instrument-chassis → instrument-chassis}/index.d.ts +0 -0
  1355. /package/dist/components/{ui/label → label}/Label.vue.d.ts +0 -0
  1356. /package/dist/components/{ui/label → label}/index.d.ts +0 -0
  1357. /package/dist/components/{custom/labeled-field → labeled-field}/LabeledSelect.vue.d.ts +0 -0
  1358. /package/dist/components/{custom/labeled-field → labeled-field}/LabeledSlider.vue.d.ts +0 -0
  1359. /package/dist/components/{custom/labeled-field → labeled-field}/LabeledSwitch.vue.d.ts +0 -0
  1360. /package/dist/components/{custom/labeled-field → labeled-field}/index.d.ts +0 -0
  1361. /package/dist/{utils/coalesceMetric.d.ts → components/metric/coalesce-metric.d.ts} +0 -0
  1362. /package/dist/components/{custom/metric-badge → metric-badge}/index.d.ts +0 -0
  1363. /package/dist/components/{custom/metric-cell → metric-cell}/index.d.ts +0 -0
  1364. /package/dist/components/{custom/metric-stack → metric-stack}/index.d.ts +0 -0
  1365. /package/dist/components/{ui/notification → notification}/index.d.ts +0 -0
  1366. /package/dist/components/{ui/number-field → number-field}/NumberField.vue.d.ts +0 -0
  1367. /package/dist/components/{ui/number-field → number-field}/NumberFieldContent.vue.d.ts +0 -0
  1368. /package/dist/components/{ui/number-field → number-field}/NumberFieldDecrement.vue.d.ts +0 -0
  1369. /package/dist/components/{ui/number-field → number-field}/NumberFieldIncrement.vue.d.ts +0 -0
  1370. /package/dist/components/{ui/number-field → number-field}/NumberFieldInput.vue.d.ts +0 -0
  1371. /package/dist/components/{ui/number-field → number-field}/index.d.ts +0 -0
  1372. /package/dist/components/{custom/pager-dots → pager-dots}/index.d.ts +0 -0
  1373. /package/dist/components/{custom/pager-dots → pager-dots}/pagerWindow.d.ts +0 -0
  1374. /package/dist/components/{custom/paper-backdrop → paper-backdrop}/index.d.ts +0 -0
  1375. /package/dist/components/{ui/popover → popover}/index.d.ts +0 -0
  1376. /package/dist/components/{custom/pulse → pulse}/index.d.ts +0 -0
  1377. /package/dist/components/{ui/radio-group → radio-group}/RadioGroup.vue.d.ts +0 -0
  1378. /package/dist/components/{ui/radio-group → radio-group}/RadioGroupItem.vue.d.ts +0 -0
  1379. /package/dist/components/{ui/radio-group → radio-group}/index.d.ts +0 -0
  1380. /package/dist/components/{custom/search → search}/composables/fuzzySearchIndex.d.ts +0 -0
  1381. /package/dist/components/{custom/search → search}/composables/index.d.ts +0 -0
  1382. /package/dist/components/{custom/search → search}/composables/types.d.ts +0 -0
  1383. /package/dist/components/{custom/search → search}/composables/useFuzzySearch.d.ts +0 -0
  1384. /package/dist/components/{custom/search → search}/index.d.ts +0 -0
  1385. /package/dist/components/{ui/select → select}/Select.vue.d.ts +0 -0
  1386. /package/dist/components/{ui/select → select}/SelectGroup.vue.d.ts +0 -0
  1387. /package/dist/components/{ui/select → select}/SelectItem.vue.d.ts +0 -0
  1388. /package/dist/components/{ui/select → select}/SelectLabel.vue.d.ts +0 -0
  1389. /package/dist/components/{ui/select → select}/SelectScrollDownButton.vue.d.ts +0 -0
  1390. /package/dist/components/{ui/select → select}/SelectScrollUpButton.vue.d.ts +0 -0
  1391. /package/dist/components/{ui/select → select}/SelectSeparator.vue.d.ts +0 -0
  1392. /package/dist/components/{ui/select → select}/SelectTrigger.vue.d.ts +0 -0
  1393. /package/dist/components/{ui/select → select}/SelectValue.vue.d.ts +0 -0
  1394. /package/dist/components/{ui/separator → separator}/Separator.vue.d.ts +0 -0
  1395. /package/dist/components/{ui/separator → separator}/index.d.ts +0 -0
  1396. /package/dist/components/{ui/skeleton → skeleton}/index.d.ts +0 -0
  1397. /package/dist/{composables/sortable → components/sortable-list/composables}/dropResolver.d.ts +0 -0
  1398. /package/dist/{composables/sortable → components/sortable-list/composables}/ghostRenderer.d.ts +0 -0
  1399. /package/dist/{composables/sortable → components/sortable-list/composables}/index.d.ts +0 -0
  1400. /package/dist/{composables/sortable → components/sortable-list/composables}/touchGate.d.ts +0 -0
  1401. /package/dist/{composables/sortable → components/sortable-list/composables}/transitionTiming.d.ts +0 -0
  1402. /package/dist/components/{custom/spa-view → spa-view}/SpaView.vue.d.ts +0 -0
  1403. /package/dist/components/{custom/spa-view → spa-view}/index.d.ts +0 -0
  1404. /package/dist/components/{custom/split-chars → split-chars}/index.d.ts +0 -0
  1405. /package/dist/components/{custom/status-dot → status-dot}/StatusDot.vue.d.ts +0 -0
  1406. /package/dist/components/{custom/status-dot → status-dot}/index.d.ts +0 -0
  1407. /package/dist/components/{ui/switch → switch}/Switch.vue.d.ts +0 -0
  1408. /package/dist/components/{ui/switch → switch}/index.d.ts +0 -0
  1409. /package/dist/components/{ui/table → table}/TableBody.vue.d.ts +0 -0
  1410. /package/dist/components/{ui/table → table}/TableCaption.vue.d.ts +0 -0
  1411. /package/dist/components/{ui/table → table}/TableCell.vue.d.ts +0 -0
  1412. /package/dist/components/{ui/table → table}/TableEmpty.vue.d.ts +0 -0
  1413. /package/dist/components/{ui/table → table}/TableHead.vue.d.ts +0 -0
  1414. /package/dist/components/{ui/table → table}/TableHeader.vue.d.ts +0 -0
  1415. /package/dist/components/{ui/table → table}/TableRow.vue.d.ts +0 -0
  1416. /package/dist/components/{ui/table → table}/index.d.ts +0 -0
  1417. /package/dist/components/{ui/tags-input → tags-input}/TagsInputInput.vue.d.ts +0 -0
  1418. /package/dist/components/{ui/tags-input → tags-input}/TagsInputItem.vue.d.ts +0 -0
  1419. /package/dist/components/{ui/tags-input → tags-input}/TagsInputItemDelete.vue.d.ts +0 -0
  1420. /package/dist/components/{ui/tags-input → tags-input}/TagsInputItemText.vue.d.ts +0 -0
  1421. /package/dist/components/{ui/tags-input → tags-input}/index.d.ts +0 -0
  1422. /package/dist/components/{ui/textarea → textarea}/Textarea.vue.d.ts +0 -0
  1423. /package/dist/components/{ui/textarea → textarea}/index.d.ts +0 -0
  1424. /package/dist/components/{custom/timeline → timeline}/ContinuousRail.vue.d.ts +0 -0
  1425. /package/dist/components/{custom/timeline → timeline}/ScrubberTimeline.vue.d.ts +0 -0
  1426. /package/dist/components/{custom/timeline → timeline}/SegmentedTimeline.vue.d.ts +0 -0
  1427. /package/dist/components/{custom/timeline → timeline}/geometry.d.ts +0 -0
  1428. /package/dist/components/{custom/timeline → timeline}/index.d.ts +0 -0
  1429. /package/dist/components/{custom/timeline → timeline}/types.d.ts +0 -0
  1430. /package/dist/components/{ui/toast → toast}/ToastAction.vue.d.ts +0 -0
  1431. /package/dist/components/{ui/toast → toast}/ToastClose.vue.d.ts +0 -0
  1432. /package/dist/components/{ui/toast → toast}/ToastDescription.vue.d.ts +0 -0
  1433. /package/dist/components/{ui/toast → toast}/ToastTitle.vue.d.ts +0 -0
  1434. /package/dist/components/{ui/toast → toast}/Toaster.vue.d.ts +0 -0
  1435. /package/dist/components/{ui/toggle-group → toggle-group}/ToggleGroup.vue.d.ts +0 -0
  1436. /package/dist/components/{ui/toggle-group → toggle-group}/ToggleGroupItem.vue.d.ts +0 -0
  1437. /package/dist/components/{ui/toggle-group → toggle-group}/index.d.ts +0 -0
  1438. /package/dist/components/{ui/toggle-group → toggle-group}/toggleGroupContext.d.ts +0 -0
  1439. /package/dist/components/{ui/tooltip → tooltip}/Tooltip.vue.d.ts +0 -0
  1440. /package/dist/components/{ui/tooltip → tooltip}/TooltipContent.vue.d.ts +0 -0
  1441. /package/dist/components/{ui/tooltip → tooltip}/TooltipProvider.vue.d.ts +0 -0
  1442. /package/dist/components/{ui/tooltip → tooltip}/TooltipTrigger.vue.d.ts +0 -0
  1443. /package/dist/components/{ui/tooltip → tooltip}/index.d.ts +0 -0
  1444. /package/dist/components/{custom/typewriter → typewriter}/composables/index.d.ts +0 -0
  1445. /package/dist/components/{custom/typewriter → typewriter}/index.d.ts +0 -0
  1446. /package/dist/components/{custom/typewriter → typewriter}/types.d.ts +0 -0
  1447. /package/dist/components/{custom/typewriter → typewriter}/utils/keyboard.d.ts +0 -0
  1448. /package/dist/components/{custom/typewriter → typewriter}/utils/pausePatterns.d.ts +0 -0
  1449. /package/dist/components/{custom/typewriter → typewriter}/utils/timing.d.ts +0 -0
  1450. /package/dist/components/{custom/typewriter → typewriter}/utils/typoStateMachine.d.ts +0 -0
  1451. /package/dist/components/{custom/watercolor-dot → watercolor-dot}/index.d.ts +0 -0
  1452. /package/dist/{utils → composables/glass/procedural}/prng.d.ts +0 -0
  1453. /package/dist/{constants-BWj7DkMn.js → constants-DRZmNIY-.js} +0 -0
  1454. /package/dist/{createContext-Cd23P9j0.js → createContext-FU0n5MGK.js} +0 -0
  1455. /package/dist/{flow.glsl-DqEGRpl4.js → flow.glsl-DEGFGE11.js} +0 -0
  1456. /package/dist/{scrollReader-rc3Ns_NM.js → scrollReader-C2oK9Hb8.js} +0 -0
  1457. /package/dist/{supportsCssTimeline-BWenxvHU.js → supportsCssTimeline-Dz-GVxXM.js} +0 -0
  1458. /package/dist/{useDragVelocity-CjcfX3dA.js → useDragVelocity-CbMZEBaC.js} +0 -0
  1459. /package/dist/{useLiquidFlex-Cc6PjVJD.js → useLiquidFlex-Ch4exNvN.js} +0 -0
  1460. /package/dist/{useResizeObserver-DdEn3v2f.js → useResizeObserver-BcUTquV7.js} +0 -0
  1461. /package/dist/{useResolveTokenColor-ChOnCckA.js → useResolveTokenColor-C07e-qaT.js} +0 -0
  1462. /package/dist/{useTimer-BBLGPXR8.js → useTimer-D8koDvJS.js} +0 -0
  1463. /package/dist/{vReveal-CT1KtwZA.js → vReveal-DZfWl9XI.js} +0 -0
  1464. /package/dist/{vSpecular-EX7loENl.js → vSpecular-CQFmLNzA.js} +0 -0
  1465. /package/dist/{writeVelocityWeight-Bh83xZfs.js → writeVelocityWeight-D_AcvTsE.js} +0 -0
@@ -0,0 +1,326 @@
1
+ /**
2
+ * Aurora v4.1 — library config shape.
3
+ *
4
+ * Authored presets (Sky, Dawn, Meadow, Deliberative, Day9, Oil Impasto,
5
+ * Oil Gestural, Oil Van Gogh, Crayon Sunset, Crayon Rainbow, Crayon Ocean)
6
+ * live in the consumer — see demo/stories/substrates/aurora/presets.ts.
7
+ *
8
+ * Per memory rule "Presets in consumers": named themed presets belong in
9
+ * each consumer project, not in the library. The library exports only the
10
+ * shape + a minimum-viable DEFAULT_AURORA_CONFIG for the component's own
11
+ * type-check ergonomics.
12
+ */
13
+ import type { OklchStop } from "../../../composables/color";
14
+ export type { OklchStop };
15
+ import type { HueInterpolationMethod } from "@mkbabb/value.js";
16
+ export type AuroraHuePath = HueInterpolationMethod;
17
+ export type AuroraSource = "palette" | "image";
18
+ import type { ImageInputSource } from "../../../composables/glass/textureUpload";
19
+ export type AuroraImageSource = ImageInputSource;
20
+ export type { ImageInputSource };
21
+ /** The per-fragment blur-radius band (uv units) the drifting zone lerps between. */
22
+ export interface AuroraImageBlur {
23
+ /** Blur radius (uv) at zone 0 — the near-sharp zones. */
24
+ min: number;
25
+ /** Blur radius (uv) at zone 1 — the dramatically-dissolved zones. */
26
+ max: number;
27
+ }
28
+ export interface AuroraNucleus {
29
+ /** 0..1 in CSS-top-origin space (0 = top, 1 = bottom). Runtime flips Y. */
30
+ x: number;
31
+ y: number;
32
+ /** Radius of Gaussian falloff, in normalized canvas units. 0.15..0.8. */
33
+ radius: number;
34
+ /** 0..1 — which palette stop this nucleus pulls toward. */
35
+ paletteBias: number;
36
+ /** -0.3..0.3 — lightness pull within the nucleus's zone of influence. */
37
+ valueBias: number;
38
+ /** 0..0.08 — orbit amplitude for slow drift (the visible-travel gate). */
39
+ driftRadius: number;
40
+ /** 0..2π — phase seed. */
41
+ driftPhase: number;
42
+ /**
43
+ * Major:minor axis ratio. 1.0 = isotropic (default). Range [1, 3]. The
44
+ * nucleus's Gaussian becomes an ellipse stretched along `angle`.
45
+ */
46
+ elongation?: number;
47
+ /**
48
+ * Major-axis orientation in degrees, CSS-top-origin (matches y-flip).
49
+ * Default 0 (horizontal). Range [-180, 180]. Runtime converts to radians.
50
+ */
51
+ angle?: number;
52
+ }
53
+ export type AuroraMedium = "smooth" | "pastel" | "watercolor" | "oil" | "crayon" | "vangogh" | "oil-pastel" | "kuwahara" | "metal" | "metal-gradient";
54
+ /** Oil-stroke sub-mode. Applied only when `medium === "oil"`. Routes inside the shader. */
55
+ export type StrokeMode = "oil" | "knife" | "chunky";
56
+ export type FlowPattern = "none" | "radial" | "swirl" | "diagonal" | "multi" | "tensor";
57
+ /**
58
+ * AW.W4.1 — how a stroke's orientation is sourced. `flow` keeps the hand-authored
59
+ * `flowField` pattern + per-cell jitter (the named legacy choice); `tensor`
60
+ * substitutes the structure-tensor minor-eigenvector (the color field's own
61
+ * edge-tangent flow). No default that hides one as a duplicate of the other.
62
+ */
63
+ export type StrokeOrient = "flow" | "tensor";
64
+ export type WarpMode = "fbm" | "cellular" | "hybrid" | "curl";
65
+ /**
66
+ * AW.W6/W8 — the interactivity flag SHAPE (declared at W6, default OFF; behavior
67
+ * wired at W8). Each axis opts the aurora into a pointer/scroll response:
68
+ * - `light` — the cursor drives the impasto `uLightDir` (cursor-as-light + idle orbit).
69
+ * - `flow` — pointer/scroll VELOCITY injects a transient swirl-burst (velocity-reactive).
70
+ * - `scroll` — palette/breath progress couples to scroll (via `useScrollProgress`).
71
+ * - `wake` — the WebGPU stateful pointer wake (a ping-pong velocity texture; AW.W8.2).
72
+ * Every axis is suppressed under `prefers-reduced-motion` + the DockBackgroundToggle
73
+ * pause (the master tempo scalar is the single suppression seam). The wispy-sky
74
+ * default carries no `interactivity` (every axis OFF — the default stays static).
75
+ */
76
+ export interface AuroraInteractivity {
77
+ light?: boolean;
78
+ flow?: boolean;
79
+ scroll?: boolean;
80
+ wake?: boolean;
81
+ /**
82
+ * BI.W-FIELD-CORE (FC6/T-38) — the MEDIUM-GATED cursor swirl/luminance-lean (reads on the
83
+ * `smooth` medium via the engagement-driven `auroraCursorMapping` strength, ZERO shader
84
+ * edit — the T-38 dead-swirl-axis fix). The atoms door defaults it ON when interactive.
85
+ */
86
+ swirl?: boolean;
87
+ /**
88
+ * BI.W-FIELD-CORE (FC6) — the SIZED amplitude of the cursor's field influence (0..1) —
89
+ * how much the velocity burst perturbs the domain-warp path near the cursor.
90
+ */
91
+ amplitude?: number;
92
+ }
93
+ export interface AuroraFlow {
94
+ pattern: FlowPattern;
95
+ /** 0..1 CSS-top-origin. Runtime flips Y. */
96
+ focalX: number;
97
+ focalY: number;
98
+ /** Degrees. Only used for "diagonal". */
99
+ angle: number;
100
+ /** 0..1 curl intensity (attenuated per-pattern inside the shader). */
101
+ curl: number;
102
+ }
103
+ export interface AuroraConfig {
104
+ palette: OklchStop[];
105
+ nuclei: AuroraNucleus[];
106
+ softmaxBeta: number;
107
+ valueVariance: number;
108
+ warpAmount: number;
109
+ warpScale: number;
110
+ warpDrift: number;
111
+ warpMode: WarpMode;
112
+ noiseOctaves: 3 | 4 | 5;
113
+ source?: AuroraSource;
114
+ /**
115
+ * BG.W-AUR-IMAGE-SOURCE — the photo the `source:"image"` program dissolves. A URL
116
+ * string / `Blob` (decoded through the shared normalisation) OR an already-uploadable
117
+ * source (`ImageBitmap`/`HTMLImageElement`/…). Ignored when `source !== "image"`.
118
+ */
119
+ src?: AuroraImageSource;
120
+ /**
121
+ * BG.W-AUR-IMAGE-SOURCE — the per-fragment blur-radius band (uv units) the drifting
122
+ * zone lerps between (`radius = mix(min, max, zone)`). Optional; omitted = the
123
+ * `IMAGE_BLUR_MIN_DEFAULT`/`IMAGE_BLUR_MAX_DEFAULT` band (near-sharp → heavy-bokeh
124
+ * dissolve). Only read on the `source:"image"` program.
125
+ */
126
+ imageBlur?: AuroraImageBlur;
127
+ medium: AuroraMedium;
128
+ /**
129
+ * W5 — the hue-arc method for the OKLCh palette interpolation. Optional;
130
+ * omitted = `"shorter"` (the OKLab-rectangular ramp — the muddy-midtone-free
131
+ * default). `"increasing"`/`"decreasing"` request the OKLCh hue-arc for a
132
+ * deliberate rainbow sweep across the stops. Aliased on `/api` as `AuroraHuePath`.
133
+ */
134
+ huePath?: AuroraHuePath;
135
+ flow: AuroraFlow;
136
+ /**
137
+ * AW.W4.1 — how the painterly stroke direction is sourced. Optional; omitted =
138
+ * `"flow"` (the hand-authored `flowField` pattern — the pre-W4 path, so an
139
+ * unset config renders identically). `"tensor"` substitutes the structure-tensor
140
+ * minor eigenvector (the color field's own edge-tangent flow); the `vangogh` /
141
+ * `oil-pastel` mediums force it.
142
+ */
143
+ strokeOrient?: StrokeOrient;
144
+ strokeAmount: number;
145
+ strokeScale: number;
146
+ strokeAnisotropy: number;
147
+ strokeLayers: 1 | 2;
148
+ strokeMode: StrokeMode;
149
+ wetEdge: number;
150
+ granulation: number;
151
+ impasto: number;
152
+ brokenColor: number;
153
+ canvasGrain: number;
154
+ /**
155
+ * BC.W-VIZ-AURORA (T4) — the anisotropic-Kuwahara painterly-finish knobs (the
156
+ * `medium:"kuwahara"` register; the WGSL primary's keystone). Optional; omitted =
157
+ * the recipe defaults (radius 0.010 procedural-patch units, q 4.0 the SOFT
158
+ * variance-weight exponent). Sectors are fixed at 8 (the soft-blend overlap floor —
159
+ * not an authoring axis). These ride the appended WGSL `kuwahara`/`scalars5` struct
160
+ * lanes; a smooth/non-kuwahara config leaves them at the default (a no-op).
161
+ */
162
+ kuwaharaRadius?: number;
163
+ kuwaharaQ?: number;
164
+ /**
165
+ * BG.W-AUR-METAL-FINISH — the metal-medium knobs (the `medium:"metal"` /
166
+ * `"metal-gradient"` register; uMedium==8/9). Optional; omitted = the recipe
167
+ * defaults (`METAL_POLISH_DEFAULT` catch intensity, `METAL_HEIGHT_SCALE_DEFAULT`
168
+ * relief tilt). `metalPolish` scales the specular catch; `metalHeightScale` scales
169
+ * the luma-relief → normal tilt (a higher value reads as sharper folds). On the WGSL
170
+ * primary these ride the free cursor.z/.w pad lanes; the .frag carries them as its
171
+ * own uniforms. A non-metal config never reads them (no-op).
172
+ */
173
+ metalPolish?: number;
174
+ metalHeightScale?: number;
175
+ /**
176
+ * AW.W4.2 — the impasto relight direction (the movable directional source the
177
+ * accumulated paint-height field catches). Optional; omitted = upper-left
178
+ * (matching the prior fixed-rim default, so the still default reads identically).
179
+ * Unit-ish [x, y, z] in screen space (z toward the viewer). AW.W8 drives this
180
+ * from the cursor (cursor-as-light); the shader re-normalizes it.
181
+ */
182
+ lightDir?: [number, number, number];
183
+ /**
184
+ * AW.W4.2 / AX.W11 — the relight tint (the impasto catch-light). Optional;
185
+ * omitted = the canonical warm-white the shared `warmCatchLight` OKLCh helper
186
+ * derives (the `(0.985, 0.0125, 77.5°)` anchor — perceptually the prior eyeballed
187
+ * warm-white, now on the OKLCh core). Author it either as a raw LINEAR-light
188
+ * `[r,g,b]` triple OR as an `{L,C,h}` OKLCh anchor (the bridge derives the linear
189
+ * triple via `warmCatchLight`). The diffuse + Blinn-specular terms modulate by it.
190
+ */
191
+ lightColor?: [number, number, number] | OklchStop;
192
+ nucleiDrift: number;
193
+ paletteDrift: number;
194
+ breathDepth: number;
195
+ breathPeriod: number;
196
+ saturation: number;
197
+ paperGrain: number;
198
+ alpha: number;
199
+ /**
200
+ * BD.W-AUR-VIVIDNESS — the §3 chroma FLOOR (the warm-field vividness contract).
201
+ * Optional; omitted = `DEFAULT_VIVIDNESS` (1 — high, the library's vivid identity).
202
+ * A shader-resident OKLab chroma-floor lifts any pale zone toward `VIVID_TARGET`
203
+ * (mode-scaled in the shader) so the field never resolves toward gray BEHIND glass
204
+ * — the literal fix for the "missing colorful field → gray glass" defect. The lift
205
+ * is HUE-PRESERVING (scales chroma along the zone's existing OKLab direction); below
206
+ * `VIVID_EPS` the hue is precision noise, so the floor synthesizes along the WARM
207
+ * anchor (`VIVID_WARM_ANCHOR`) — NEVER teal/navy, the warm-floor guarantee. A
208
+ * deliberately-pale hero surface opts OUT with `vividness: 0` (the new lanes write 0,
209
+ * so a `vividness:0` config is byte-identical to the pre-floor render — the gated
210
+ * identity move). Range 0..1.
211
+ */
212
+ vividness?: number;
213
+ /**
214
+ * AW.W6/W8 — the pointer/scroll interactivity opt-in (default OFF — the wispy-sky
215
+ * default stays static). W6 declares the SHAPE; W8 wires the cursor-as-light /
216
+ * velocity-reactive flow / scroll-coupling / WebGPU-wake behavior. Omitted = every
217
+ * axis off. Aliased on `/api` as part of the `AuroraConfig` surface.
218
+ */
219
+ interactivity?: AuroraInteractivity;
220
+ }
221
+ /**
222
+ * Pointer-cursor API exposed by `createAurora`. Values in 0..1 (CSS-top-origin).
223
+ * Runtime flips Y and eases internally.
224
+ */
225
+ export interface AuroraCursorApi {
226
+ setCursor(x: number, y: number, strength?: number): void;
227
+ clearCursor(): void;
228
+ setCursorRadius(r: number): void;
229
+ }
230
+ export interface AuroraInstance extends AuroraCursorApi {
231
+ /**
232
+ * Run the expensive WebGL init — context creation, shader compile + GPU
233
+ * link, first uniform upload, rAF arm. Idempotent. On the `"eager"` /
234
+ * capture `initStrategy` `createAurora` already calls this before
235
+ * returning; on `"deferred"` the consumer (e.g. `useAurora`) invokes it
236
+ * past first paint. Throws on WebGL2/compile/link failure (O invariant
237
+ * 24). A no-op once armed or once `dispose()` has run.
238
+ */
239
+ arm(): void;
240
+ /**
241
+ * BC.W-VIZ-AURORA (T2) — the device-resolved arm PROMISE. On the WebGPU
242
+ * backend `renderAt`/`arm` are no-ops until this resolves the async
243
+ * adapter→device→configure→setup prelude. A CAPTURE consumer (thumbnail bake)
244
+ * MUST `await armAsync()` before the first `renderAt` or the frame is BLANK
245
+ * (the dead-preview defect). The WebGL2 fallback resolves immediately.
246
+ */
247
+ armAsync(): Promise<void>;
248
+ update(cfg: AuroraConfig): void;
249
+ /** Render a single deterministic frame at time `t` (seconds). Used for thumbnail bakes. */
250
+ renderAt(timeSec: number): void;
251
+ pause(): void;
252
+ resume(): void;
253
+ setReducedMotion(flag: boolean): void;
254
+ dispose(): void;
255
+ }
256
+ export declare const MAX_NUCLEI = 6;
257
+ export declare const MAX_STOPS = 8;
258
+ /**
259
+ * The default `vividness` for a bare `<Aurora>` — HIGH (the library's vivid identity).
260
+ * This INVERTS the pre-floor status quo: vivid is the default, pale is the explicit
261
+ * `vividness: 0` opt-out. The literal §3 fix — a warm glass plate over the default field
262
+ * now reads transmissive-not-gray because the field carries chroma.
263
+ */
264
+ export declare const DEFAULT_VIVIDNESS = 1;
265
+ /**
266
+ * The per-fragment OKLab chroma the floor lifts a pale zone TOWARD at `vividness:1`
267
+ * (the shader scales this by a mode factor — a dim/dark field needs more chroma to read
268
+ * vivid through glass). Tuned so the lifted DEFAULT field clears the §3 transmissive
269
+ * floor (mean OKLab chroma ≥ 0.045) with headroom; a vivid zone above this is untouched.
270
+ * Mirrored as `VIVID_TARGET` in the GLSL + WGSL twins.
271
+ */
272
+ export declare const VIVID_TARGET = 0.115;
273
+ /**
274
+ * The default `metalPolish` (specular catch intensity) for a `medium:"metal"` /
275
+ * `"metal-gradient"` config when omitted. The metal light rakes at unit intensity.
276
+ */
277
+ export declare const METAL_POLISH_DEFAULT = 1;
278
+ /**
279
+ * The default `metalHeightScale` (luma-relief → normal tilt) when omitted. A higher
280
+ * value reads as sharper metal folds; 1 is the calibrated warm-folded-metal default.
281
+ */
282
+ export declare const METAL_HEIGHT_SCALE_DEFAULT = 1;
283
+ /**
284
+ * The default near-sharp blur radius (uv units) at zone 0 for a `source:"image"` aurora
285
+ * — a whisper so the recognizable zones read crisp against the dissolved ones.
286
+ */
287
+ export declare const IMAGE_BLUR_MIN_DEFAULT = 0.004;
288
+ /**
289
+ * The default dissolved blur radius (uv units) at zone 1 — a heavy bokeh over the fixed
290
+ * 24-tap kernel reads as a "dramatically dissolved" abstract wash at field scale (the
291
+ * kuwahara-budget precedent: the RADIUS carries the dissolve, never the tap count).
292
+ */
293
+ export declare const IMAGE_BLUR_MAX_DEFAULT = 0.06;
294
+ /**
295
+ * A neutral starting point for consumers that build their own config from scratch.
296
+ * Not a themed preset — the demo's 11 authored presets override every field.
297
+ */
298
+ export declare const DEFAULT_AURORA_CONFIG: AuroraConfig;
299
+ /**
300
+ * `PAPER_WASH_GROUND` — the library-canon recessive-ground crayon calibration
301
+ * (BA.W-ATLAS-RECONCILE A-4a; d6 9467bd16 adopt). A pure PRESET PARTIAL (no
302
+ * palette/nuclei/motion) pinning the recessive crayon-ground deposition dials so a
303
+ * data-ground aurora reads as paper-on-tooth without each consumer dial-tuning the
304
+ * same recessive calibration by hand. It carries NO palette/nuclei — the consumer
305
+ * spreads it over its own pole-derived pigment (page-glow IS data-glow):
306
+ * `const cfg = { ...consumerBase, ...PAPER_WASH_GROUND }`.
307
+ *
308
+ * House-rule clean (presets-in-consumers): this is the LIBRARY's own recessive-ground
309
+ * IDENTITY, not a consumer theme — admissible at the root. `satisfies
310
+ * Partial<AuroraConfig>` holds (every key is a first-class `AuroraConfig` field at
311
+ * HEAD; the `crayon` medium is `uMedium==4`).
312
+ */
313
+ export declare const PAPER_WASH_GROUND: {
314
+ readonly medium: "crayon";
315
+ readonly strokeOrient: "tensor";
316
+ readonly granulation: 0.3;
317
+ readonly canvasGrain: 0.5;
318
+ readonly strokeAmount: 0.35;
319
+ readonly strokeAnisotropy: 0.5;
320
+ readonly strokeLayers: 1;
321
+ readonly impasto: 0;
322
+ readonly brokenColor: 0;
323
+ readonly wetEdge: 0;
324
+ readonly saturation: 0.92;
325
+ readonly paperGrain: 0.008;
326
+ };
@@ -0,0 +1,3 @@
1
+ export declare const IMAGE_BLUR_RINGS = 3;
2
+ export declare const IMAGE_BLUR_SECTORS = 8;
3
+ export declare const IMAGE_FRAGMENT_SRC: string;
@@ -0,0 +1,3 @@
1
+ export declare const IMAGE_BLUR_RINGS_WGSL = 3;
2
+ export declare const IMAGE_BLUR_SECTORS_WGSL = 8;
3
+ export declare const AURORA_IMAGE_WGSL = "\nconst MAX_NUCLEI: i32 = 6;\nconst PI: f32 = 3.141592653589793;\nconst BLUR_RINGS: i32 = 3;\nconst BLUR_SECTORS: i32 = 8;\n\n// The image program's OWN uniform struct (packed vec4 lanes \u2014 trivial std140/WGSL\n// alignment). DISTINCT from the palette program's 576-byte struct (a separate program).\nstruct ImageUniforms {\n // scalars0: (uTime, uWarpAmount, uWarpScale, uWarpDrift)\n scalars0: vec4<f32>,\n // scalars1: (uSoftmaxBeta, uNucleiDrift, uCursorStrength, uCursorRadius)\n scalars1: vec4<f32>,\n // scalars2: (uSaturation, uPaperGrain, uAlpha, uVividness)\n scalars2: vec4<f32>,\n // image: (uBlurMin, uBlurMax, uImageAspect, _)\n image: vec4<f32>,\n // cursor: (uCursor.x, uCursor.y, _, _)\n cursor: vec4<f32>,\n // ints: (uNucleiCount, uNoiseOctaves, _, _)\n ints: vec4<i32>,\n // nuc0[i] = (pos.x, pos.y, radius, valueBias); nuc1[i] = (driftRadius, driftPhase, elong, angle)\n nuc0: array<vec4<f32>, 6>,\n nuc1: array<vec4<f32>, 6>,\n};\n\n@group(0) @binding(0) var<uniform> u: ImageUniforms;\n@group(0) @binding(1) var imgTex: texture_2d<f32>;\n@group(0) @binding(2) var imgSampler: sampler;\n\nconst K_NUCLEI: f32 = 14.0;\nconst K_WARP: f32 = 5.0;\n\n// \u2500\u2500 Noise (aurora-local hash21/vnoise/fbm \u2014 the same compact foundation) \u2500\u2500\nfn hash21(p0: vec2<f32>) -> f32 {\n var p = fract(p0 * vec2<f32>(123.34, 456.21));\n p = p + dot(p, p + 45.32);\n return fract(p.x * p.y);\n}\nfn vnoise(p: vec2<f32>) -> f32 {\n let i = floor(p);\n let f = fract(p);\n let uu = f * f * (3.0 - 2.0 * f);\n let a = hash21(i);\n let b = hash21(i + vec2<f32>(1.0, 0.0));\n let c = hash21(i + vec2<f32>(0.0, 1.0));\n let d = hash21(i + vec2<f32>(1.0, 1.0));\n return mix(mix(a, b, uu.x), mix(c, d, uu.x), uu.y);\n}\nconst FBM_ROT: mat2x2<f32> = mat2x2<f32>(0.8, 0.6, -0.6, 0.8);\nfn fbm(p0: vec2<f32>) -> f32 {\n var v = 0.0;\n var a = 0.5;\n var p = p0;\n let octaves = u.ints.y;\n for (var i = 0; i < 5; i = i + 1) {\n if (i >= octaves) { break; }\n v = v + a * vnoise(p);\n p = FBM_ROT * p * 2.02;\n a = a * 0.5;\n }\n return v;\n}\nfn ign(p: vec2<f32>) -> f32 {\n return fract(52.9829189 * fract(dot(p, vec2<f32>(0.06711056, 0.00583715))));\n}\n\n\nfn srgbToLinearCh(c: f32) -> f32 {\n if (c <= 0.04045) { return c / 12.92; }\n return pow((c + 0.055) / 1.055, 2.4);\n}\nfn srgbToLinear(c: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(srgbToLinearCh(c.r), srgbToLinearCh(c.g), srgbToLinearCh(c.b));\n}\n\nfn linearToSrgbCh(c: f32) -> f32 {\n if (c <= 0.0031308) { return c * 12.92; }\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nfn linearToSrgb(c: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(linearToSrgbCh(c.r), linearToSrgbCh(c.g), linearToSrgbCh(c.b));\n}\n\n// value.js LINEAR_SRGB_TO_LMS, row-major \u2192 WGSL columns (= the transpose).\nconst LINEAR_SRGB_TO_LMS: mat3x3<f32> = mat3x3<f32>(\n 0.4122214708, 0.2119034982, 0.0883024619,\n 0.5363325363, 0.6806995451, 0.2817188376,\n 0.0514459929, 0.1073969566, 0.6299787005\n);\n\n// value.js srgbToOKLab's INLINE LMS\u2192OKLab coefficients, row-major \u2192 WGSL columns.\nconst LMS_TO_OKLAB: mat3x3<f32> = mat3x3<f32>(\n 0.2104542553, 1.9779984951, 0.0259040371,\n 0.7936177850, -2.4285922050, 0.7827717662,\n -0.0040720468, 0.4505937099, -0.8086757660\n);\n\n// value.js OKLAB_TO_LMS_COEFF, row-major \u2192 WGSL columns.\nconst OKLAB_TO_LMS: mat3x3<f32> = mat3x3<f32>(\n 1.0, 1.0, 1.0,\n 0.3963377774, -0.1055613458, -0.0894841775,\n 0.2158037573, -0.0638541728, -1.2914855480\n);\n\n// value.js LMS_TO_LINEAR_SRGB, row-major \u2192 WGSL columns.\nconst LMS_TO_LINEAR_SRGB: mat3x3<f32> = mat3x3<f32>(\n 4.0767416621, -1.2684380046, -0.0041960863,\n -3.3077115913, 2.6097574011, -0.7034186147,\n 0.2309699292, -0.3413193965, 1.7076147010\n);\n\nfn cbrt3(v: vec3<f32>) -> vec3<f32> {\n return sign(v) * pow(abs(v), vec3<f32>(1.0 / 3.0));\n}\n\n// Gamma sRGB \u2192 raw OKLab (L, a, b). Mirrors value.js srgbToOKLab.\nfn srgbToOklab(c: vec3<f32>) -> vec3<f32> {\n let lin = srgbToLinear(c);\n let lms = LINEAR_SRGB_TO_LMS * lin;\n return LMS_TO_OKLAB * cbrt3(lms);\n}\n\n// Raw OKLab (L, a, b) \u2192 linear sRGB. Mirrors value.js oklabToLinearSRGB.\nfn oklabToLinearSrgb(lab: vec3<f32>) -> vec3<f32> {\n let lms_ = OKLAB_TO_LMS * lab;\n let lms = lms_ * lms_ * lms_;\n return LMS_TO_LINEAR_SRGB * lms;\n}\n\n// OKLab \u2192 OKLCh: H in RADIANS, folded to [0, 2pi). Mirrors value.js rawOklabToOklch.\nfn oklabToOklch(lab: vec3<f32>) -> vec3<f32> {\n let C = length(lab.yz);\n var H = atan2(lab.z, lab.y);\n if (H < 0.0) { H = H + 2.0 * PI; }\n return vec3<f32>(lab.x, C, H);\n}\n\n// OKLCh (H radians) \u2192 OKLab. Mirrors value.js rawOklchToOklab.\nfn oklchToOklab(lch: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}\n\nfn linOklab(lin: vec3<f32>) -> vec3<f32> {\n let lms = LINEAR_SRGB_TO_LMS * lin;\n return LMS_TO_OKLAB * cbrt3(lms);\n}\n\n// The Quilez double-warp (fbm) + the cursor swirl \u2014 the drift that moves the blur zone.\nfn domainWarp(p: vec2<f32>, t: f32) -> vec2<f32> {\n let warpAmount = u.scalars0.y;\n let warpScale = u.scalars0.z;\n let warpDrift = u.scalars0.w;\n let cursorStrength = u.scalars1.z;\n let cursorRadius = u.scalars1.w;\n let cursor = u.cursor.xy;\n let q = vec2<f32>(fbm(p * warpScale + vec2<f32>(0.0, 0.0) + t * warpDrift * K_WARP),\n fbm(p * warpScale + vec2<f32>(5.2, 1.3) + t * warpDrift * K_WARP));\n let r = vec2<f32>(fbm(p * warpScale + 4.0 * q + vec2<f32>(1.7, 9.2)),\n fbm(p * warpScale + 4.0 * q + vec2<f32>(8.3, 2.8)));\n var warped = p + warpAmount * r;\n if (cursorStrength > 0.001) {\n let toP = p - cursor;\n let d = length(toP);\n let rr = max(cursorRadius, 0.01);\n let w = exp(-(d * d) / (rr * rr * 0.45));\n let ang = w * cursorStrength * 2.1;\n let ca = cos(ang);\n let sa = sin(ang);\n let rotated = vec2<f32>(ca * toP.x - sa * toP.y, sa * toP.x + ca * toP.y) + cursor;\n warped = mix(warped, rotated + warpAmount * r * 0.7, w * cursorStrength);\n }\n return warped;\n}\n\n// The drifting BLUR ZONE \u2014 the anisotropic-Gaussian nuclei softmax (the SAME field the\n// palette program reads), drift-coupled.\nfn zoneField(p: vec2<f32>, t: f32) -> f32 {\n let nucleiCount = u.ints.x;\n let nucleiDrift = u.scalars1.y;\n let softmaxBeta = u.scalars1.x;\n var accum = 0.0;\n var accumW = 0.0;\n for (var i = 0; i < MAX_NUCLEI; i = i + 1) {\n if (i >= nucleiCount) { break; }\n let n0 = u.nuc0[i]; // pos.x, pos.y, radius, valueBias\n let n1 = u.nuc1[i]; // driftRadius, driftPhase, elong, angle\n let posI = n0.xy + n1.x * vec2<f32>(\n cos(t * nucleiDrift * K_NUCLEI + n1.y),\n sin(t * nucleiDrift * K_NUCLEI + n1.y * 1.13));\n let diff = p - posI;\n let ca = cos(n1.w);\n let sa = sin(n1.w);\n let local = vec2<f32>(ca * diff.x + sa * diff.y, -sa * diff.x + ca * diff.y);\n let along = local.x / max(n1.z, 0.01);\n let d2 = along * along + local.y * local.y;\n let rad = max(n0.z, 0.01);\n let w = exp(-softmaxBeta * d2 / (rad * rad));\n accum = accum + w * (0.5 + 0.5 * n0.w);\n accumW = accumW + w;\n }\n return clamp(accum / max(accumW, 1e-4), 0.0, 1.0);\n}\n\nfn coverUv(uv: vec2<f32>) -> vec2<f32> {\n let aspect = max(u.image.z, 0.0001);\n var c = uv - vec2<f32>(0.5);\n c.x = c.x * aspect;\n let s = 1.0 / max(aspect, 1.0);\n return c * s + vec2<f32>(0.5);\n}\n\n// The bounded 24-tap zone blur \u2014 a FIXED 3-ring \u00D7 8-sector stratified kernel, radius\n// per-fragment, sampled in LINEAR light. textureSampleLevel (explicit LOD 0) \u2014 WGSL has\n// no implicit derivative in a varying-radius loop.\nfn zoneBlur(uv: vec2<f32>, radius: f32) -> vec3<f32> {\n let aspect = max(u.image.z, 0.0001);\n var sum = srgbToLinear(textureSampleLevel(imgTex, imgSampler, coverUv(uv), 0.0).rgb);\n var wsum = 1.0;\n for (var ring = 1; ring <= BLUR_RINGS; ring = ring + 1) {\n let rr = radius * (f32(ring) / f32(BLUR_RINGS));\n for (var s = 0; s < BLUR_SECTORS; s = s + 1) {\n let a = (f32(s) + 0.5 * f32(ring)) / f32(BLUR_SECTORS) * 2.0 * PI;\n let off = vec2<f32>(cos(a) / aspect, sin(a)) * rr;\n sum = sum + srgbToLinear(textureSampleLevel(imgTex, imgSampler, coverUv(uv + off), 0.0).rgb);\n wsum = wsum + 1.0;\n }\n }\n return sum / wsum;\n}\n\nconst VIVID_TARGET: f32 = 0.115;\nconst VIVID_EPS: f32 = 0.012;\nconst VIVID_WARM_ANCHOR: vec2<f32> = vec2<f32>(0.34202, 0.93969);\nfn vividnessFloor(c: vec3<f32>, vividness: f32) -> vec3<f32> {\n if (vividness <= 0.0001) { return c; }\n var lab = linOklab(c);\n let C = length(lab.yz);\n let modeLift = mix(1.18, 1.0, clamp(lab.x * 1.4, 0.0, 1.0));\n let Cmin = vividness * VIVID_TARGET * modeLift;\n var hueDir = VIVID_WARM_ANCHOR;\n if (C > VIVID_EPS) { hueDir = lab.yz / C; }\n let yz = hueDir * max(C, Cmin);\n lab = vec3<f32>(lab.x, yz.x, yz.y);\n return max(oklabToLinearSrgb(lab), vec3<f32>(0.0));\n}\n\nfn saturate3(c: vec3<f32>, amt: f32) -> vec3<f32> {\n var lch = oklabToOklch(linOklab(c));\n lch.y = max(lch.y * amt, 0.0);\n return max(oklabToLinearSrgb(oklchToOklab(lch)), vec3<f32>(0.0));\n}\n\nfn aces(color0: vec3<f32>) -> vec3<f32> {\n let startCompression = 0.8 - 0.04;\n let desaturation = 0.15;\n var color = color0;\n let x = min(color.r, min(color.g, color.b));\n var offset = 0.04;\n if (x < 0.08) { offset = x - 6.25 * x * x; }\n color = color - offset;\n let peak = max(color.r, max(color.g, color.b));\n if (peak < startCompression) { return clamp(color, vec3<f32>(0.0), vec3<f32>(1.0)); }\n let d = 1.0 - startCompression;\n let newPeak = 1.0 - d * d / (peak + d - startCompression);\n color = color * (newPeak / peak);\n let g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);\n return clamp(mix(color, newPeak * vec3<f32>(1.0), g), vec3<f32>(0.0), vec3<f32>(1.0));\n}\n\nstruct VSOut {\n @builtin(position) pos: vec4<f32>,\n @location(0) uv: vec2<f32>,\n};\n\n@vertex\nfn vs_main(@builtin(vertex_index) vi: u32) -> VSOut {\n var p = vec2<f32>(-1.0, -1.0);\n if (vi == 1u) { p = vec2<f32>(3.0, -1.0); }\n else if (vi == 2u) { p = vec2<f32>(-1.0, 3.0); }\n var out: VSOut;\n out.pos = vec4<f32>(p, 0.0, 1.0);\n out.uv = p * 0.5 + 0.5;\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4<f32> {\n let t = u.scalars0.x;\n let saturation = u.scalars2.x;\n let paperGrain = u.scalars2.y;\n let alpha = u.scalars2.z;\n let vividness = u.scalars2.w;\n let blurMin = u.image.x;\n let blurMax = u.image.y;\n\n let uv = in.uv;\n let p_warp = domainWarp(uv, t);\n let zone = zoneField(p_warp, t);\n\n let radius = mix(blurMin, blurMax, zone);\n var col = zoneBlur(uv, radius);\n\n col = saturate3(col, saturation);\n col = vividnessFloor(col, vividness);\n\n col = aces(col);\n let fragCoord = in.pos.xy;\n let grain = hash21(fragCoord + t * 17.0);\n col = col + (grain - 0.5) * paperGrain;\n col = clamp(col * 0.985 + 0.008, vec3<f32>(0.0), vec3<f32>(1.0));\n\n col = linearToSrgb(col);\n col = col + (1.0 / 255.0) * (ign(fragCoord) - 0.5);\n\n return vec4<f32>(col * alpha, alpha);\n}\n";
@@ -0,0 +1 @@
1
+ export declare const AURORA_MEDIUMS_WGSL = "\n// \u2500\u2500 Painterly luma + medium scalar accessors \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst W_LUMA: vec3<f32> = vec3<f32>(0.2126, 0.7152, 0.0722);\n\nfn mStrokeAmount() -> f32 { return u.scalars4.x; }\nfn mStrokeScale() -> f32 { return u.scalars4.y; }\nfn mStrokeAnisotropy() -> f32 { return u.scalars4.z; }\nfn mCanvasGrain() -> f32 { return u.scalars4.w; }\nfn mWetEdge() -> f32 { return u.scalars5.x; }\nfn mGranulation() -> f32 { return u.scalars5.y; }\nfn mBrokenColor() -> f32 { return u.scalars5.z; }\nfn mKuwaharaQ() -> f32 { return u.scalars5.w; }\nfn mKuwaharaRadius() -> f32 { return u.kuwahara.x; }\n// BG.W-AUR-METAL-FINISH \u2014 the metal-medium knobs ride the FREE cursor.z/.w pad lanes\n// (uniformBridgeWGPU packs them; written 0 on a non-metal config \u2192 no-op). These read\n// the IN-STRUCT cursor \u2014 the metal light is cursor-synthesized so it crosses to WGSL\n// (a phantom uLightDir read would be flat on the primary \u2014 uLightDir is .frag-only).\nfn mMetalPolish() -> f32 { return u.cursor.z; }\nfn mMetalHeightScale() -> f32 { return u.cursor.w; }\n\n// \u2500\u2500 Gradient pack (BG.W-AUR-METAL-FINISH; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// structureTensorField re-plumbs its already-computed luma gradient (Gx,Gy) out\n// through the return's .w lane so the metal medium pays ZERO extra taps. 12 bits per\n// bounded component ([-4,4]) into one f32; the crayon/kuwahara callers read only .xy/.z.\nfn packGrad(gx: f32, gy: f32) -> f32 {\n let qx = floor(clamp(gx * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n let qy = floor(clamp(gy * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n return qx + qy * 4096.0;\n}\nfn unpackGrad(packed: f32) -> vec2<f32> {\n let qy = floor(packed * (1.0 / 4096.0));\n let qx = packed - qy * 4096.0;\n return (vec2<f32>(qx, qy) * (1.0 / 4095.0) - 0.5) * 8.0;\n}\n\n// \u2500\u2500 Base color re-sample (the edge-mask operator the mediums Sobel/sector-sample) \u2500\u2500\n// The WGSL twin of mediums.glsl.ts sampleBase: warp -> nuclei field -> palette -> value.\nfn sampleBase(p: vec2<f32>, t: f32) -> vec3<f32> {\n let pw = domainWarp(p, t);\n let nf = nucleiField(pw, t);\n var c = samplePalette(nf.paletteId);\n c = c * (1.0 + u.scalars0.z * nf.valueMod);\n return c;\n}\n\n// \u2500\u2500 Broken color (hue + chroma jitter at constant OKLCh L) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn brokenColorJitter(c: vec3<f32>, hueSeed: f32, valueSeed: f32, strength: f32) -> vec3<f32> {\n let amt = clamp(mBrokenColor() * strength, 0.0, 1.0);\n if (amt <= 0.001) { return c; }\n var lch = oklabToOklch(linOklab(c));\n lch.z = lch.z + (hueSeed - 0.5) * (32.0 * PI / 180.0) * amt;\n lch.y = max(lch.y * (1.0 + (valueSeed - 0.5) * 0.28 * amt), 0.0);\n return max(oklabToLinearSrgb(oklchToOklab(lch)), vec3<f32>(0.0));\n}\n\n// \u2500\u2500 Structure-tensor / edge-tangent-flow (AW.W4.1; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Returns vec4(tangent.x, tangent.y, A, packGrad(Gx,Gy)) \u2014 the minor-eigenvector\n// edge-tangent + coherence + the metal medium's packed gradient (BG.W-AUR-METAL-FINISH;\n// the .xy/.z crayon/kuwahara callers are byte-unchanged).\nfn structureTensorField(p: vec2<f32>, t: f32, fallbackDir: vec2<f32>) -> vec4<f32> {\n let e = 0.0035;\n let l00 = dot(sampleBase(p + vec2<f32>(-e, -e), t), W_LUMA);\n let l10 = dot(sampleBase(p + vec2<f32>(0.0, -e), t), W_LUMA);\n let l20 = dot(sampleBase(p + vec2<f32>( e, -e), t), W_LUMA);\n let l01 = dot(sampleBase(p + vec2<f32>(-e, 0.0), t), W_LUMA);\n let l21 = dot(sampleBase(p + vec2<f32>( e, 0.0), t), W_LUMA);\n let l02 = dot(sampleBase(p + vec2<f32>(-e, e), t), W_LUMA);\n let l12 = dot(sampleBase(p + vec2<f32>(0.0, e), t), W_LUMA);\n let l22 = dot(sampleBase(p + vec2<f32>( e, e), t), W_LUMA);\n let Gx = (l20 + 2.0 * l21 + l22) - (l00 + 2.0 * l01 + l02);\n let Gy = (l02 + 2.0 * l12 + l22) - (l00 + 2.0 * l10 + l20);\n let Jxx = Gx * Gx;\n let Jyy = Gy * Gy;\n let Jxy = Gx * Gy;\n let tr = Jxx + Jyy;\n let disc = sqrt(max((Jxx - Jyy) * (Jxx - Jyy) + 4.0 * Jxy * Jxy, 0.0));\n let lambdaMaj = 0.5 * (tr + disc);\n let lambdaMin = 0.5 * (tr - disc);\n var tangent: vec2<f32>;\n if (disc < 1e-7) {\n tangent = fallbackDir;\n } else {\n let theta = 0.5 * atan2(2.0 * Jxy, Jxx - Jyy);\n tangent = vec2<f32>(-sin(theta), cos(theta));\n }\n var A = (lambdaMaj - lambdaMin) / (lambdaMaj + lambdaMin + 1e-6);\n A = clamp(A, 0.0, 1.0);\n if (dot(tangent, fallbackDir) < 0.0) { tangent = -tangent; }\n let blendW = pow(A, 0.28);\n let dir = normalize(mix(fallbackDir, tangent, blendW) + vec2<f32>(1e-6, 1e-6));\n return vec4<f32>(dir, A, packGrad(Gx, Gy));\n}\n\n// \u2500\u2500 Flow field (the WGSL twin \u2014 the simple flow seed the medium fallback dirs use) \u2500\u2500\nfn flowField(p: vec2<f32>, t: f32) -> vec2<f32> {\n // Curl-noise-driven swirl (the medium-default dir; the full radial/swirl/diagonal\n // dispatch rides uniforms the WGSL struct does not carry \u2014 the procedural mediums\n // use this multi/curl seed as the fallback the structure tensor relaxes toward).\n let n = fbm(p * 2.0 + vec2<f32>(t * 0.02, t * 0.02));\n let a = n * 6.2831853;\n var dir = vec2<f32>(cos(a), sin(a));\n // Cursor swirl bias (matches the GLSL flow cursor term \u2014 the steady attraction).\n let cursorStrength = u.scalars3.y;\n let cursorRadius = u.scalars3.z;\n let cursor = u.cursor.xy;\n if (cursorStrength > 0.001) {\n let toCur = cursor - p;\n let d = length(toCur);\n let r = max(cursorRadius, 0.01);\n let w = exp(-(d * d) / (r * r * 0.5));\n let tangent = vec2<f32>(-toCur.y, toCur.x) / max(d, 1e-4);\n let a0 = atan2(dir.y, dir.x);\n let a1 = atan2(tangent.y, tangent.x);\n var da = a1 - a0;\n da = atan2(sin(da), cos(da));\n let aa = a0 + da * w * cursorStrength;\n dir = vec2<f32>(cos(aa), sin(aa));\n }\n return dir;\n}\n\n// \u2500\u2500 Watercolor \u2014 wet-edge cauliflowers + granulation + wash banding \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn mediumWatercolor(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n var col = col0;\n let eps = 0.004;\n let cx1 = sampleBase(p + vec2<f32>(eps, 0.0), t);\n let cx2 = sampleBase(p - vec2<f32>(eps, 0.0), t);\n let cy1 = sampleBase(p + vec2<f32>(0.0, eps), t);\n let cy2 = sampleBase(p - vec2<f32>(0.0, eps), t);\n let gx = dot(cx1 - cx2, W_LUMA);\n let gy = dot(cy1 - cy2, W_LUMA);\n let edge = sqrt(gx * gx + gy * gy) / (2.0 * eps);\n let mask = smoothstep(0.0, 2.5, edge);\n col = col * mix(1.0, 0.78, mask * mWetEdge());\n\n let paper = 0.5 * vnoise(p * 160.0) + 0.5 * vnoise(p * 360.0);\n let pigLoad = 1.0 - dot(col, W_LUMA);\n col = col * (1.0 - mGranulation() * pigLoad * (paper - 0.5));\n\n let band = fbm(vec2<f32>(p.x * 1.5, p.y * 0.4));\n col = col * (1.0 + 0.04 * (band - 0.5));\n return col;\n}\n\n// \u2500\u2500 Pastel \u2014 anisotropic stroke noise along the flow + tooth grain \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn mediumPastel(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n var col = col0;\n let flow = flowField(p, t);\n let perp = vec2<f32>(-flow.y, flow.x);\n let strokeScale = mStrokeScale();\n let along = dot(p, flow) * strokeScale;\n var across = dot(p, perp) * strokeScale;\n across = across + 0.03 * (vnoise(p * 260.0) - 0.5);\n\n let aniso = mix(1.0, 0.18, mStrokeAnisotropy());\n let stroke = fbm(vec2<f32>(along * aniso, across));\n col = col * mix(1.0, 0.82 + 0.32 * stroke, mStrokeAmount());\n\n let tooth = vnoise(p * 800.0);\n col = col * (1.0 - 0.08 * mStrokeAmount() * (tooth - 0.5));\n return col;\n}\n\n// \u2500\u2500 Crayon \u2014 DRY wax pigment on paper tooth (the tooth-multiply + scumble) \u2500\u2500\nfn mediumCrayon(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let flow = structureTensorField(p, t, flowField(p, t)).xy;\n let ang = atan2(flow.y, flow.x);\n let ca = cos(-ang);\n let sa = sin(-ang);\n let pr = vec2<f32>(p.x * ca - p.y * sa, p.x * sa + p.y * ca);\n\n let aniso = mix(0.45, 0.95, mStrokeAnisotropy());\n let scale = max(mStrokeScale() * 1.6, 180.0);\n\n let t1 = vnoise(vec2<f32>(pr.x * scale * aniso, pr.y * scale));\n let t2 = vnoise(vec2<f32>(pr.x * scale * aniso * 0.4, pr.y * scale * 0.4) + vec2<f32>(11.0, 11.0));\n let t3 = vnoise(vec2<f32>(pr.x * scale * aniso * 2.1, pr.y * scale * 2.1) + vec2<f32>(23.0, 23.0));\n let tooth = 0.55 * t1 + 0.30 * t2 + 0.15 * t3;\n\n let pressure = clamp(mStrokeAmount(), 0.0, 1.0);\n let bite = mix(0.18, 0.46, pressure);\n var result = col0 * (1.0 - bite * (0.5 - tooth));\n\n let scumbleMask = smoothstep(0.42, 0.78, vnoise(vec2<f32>(pr.x * scale * 0.55, pr.y * scale * 0.22) + vec2<f32>(7.0, 7.0)));\n let scumbleCoverage = scumbleMask * pressure * 0.7;\n let paper = col0 * mix(0.80, 0.94, pressure);\n result = mix(paper, result, scumbleCoverage);\n\n let pigmentCell = floor(pr * max(scale * 0.18, 32.0));\n let pigmentMask = smoothstep(0.28, 0.82, vnoise(pr * scale * 0.21 + vec2<f32>(19.0, 19.0)));\n result = brokenColorJitter(\n result,\n hash21(pigmentCell + vec2<f32>(17.0, 17.0)),\n hash21(pigmentCell * 2.1 + vec2<f32>(31.0, 31.0)),\n 0.45 + 0.55 * pigmentMask\n );\n\n result = saturate3(result, 1.08);\n return result;\n}\n\n// \u2500\u2500 Kuwahara \u2014 the SOFT anisotropic generalized Kuwahara painterly finish \u2500\u2500\u2500\u2500\n// THE KEYSTONE (Kyprianidis 2010). Aurora is a PROCEDURAL field (no input texture) so the\n// operator runs over sampleBase directly: an elliptical kernel oriented along the structure\n// tensor (elongated along the edge-tangent, narrowed across by the anisotropy), 8 OVERLAPPING\n// sectors via SMOOTH gaussian-angular weights, blended by 1/(1+var^q) (the SOFT criterion \u2192\n// no 8-spoke pinwheel by construction). 4 rings \u00D7 8 angular taps = 32 procedural samples.\nfn mediumKuwahara(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n let tangent = stf.xy;\n let A = stf.z;\n // The studio knob drives the patch radius; clamp into the procedural patch band.\n let radius = clamp(mKuwaharaRadius() + mStrokeScale() * 0.00018, 0.006, 0.024);\n let aniso = mix(1.0, 0.34, clamp(A, 0.0, 1.0));\n let ax = tangent;\n let ay = vec2<f32>(-tangent.y, tangent.x);\n\n // Per-sector weighted sums (8 sectors). WGSL has no runtime-indexed local arrays of\n // vectors as cleanly as GLSL, so unroll the sector accumulators explicitly.\n var mSum: array<vec3<f32>, 8>;\n var sSum: array<vec3<f32>, 8>;\n var wSum: array<f32, 8>;\n for (var i = 0; i < 8; i = i + 1) {\n mSum[i] = vec3<f32>(0.0);\n sSum[i] = vec3<f32>(0.0);\n wSum[i] = 0.0;\n }\n\n let RINGS = 4;\n let TAPS = 8;\n for (var r = 1; r <= RINGS; r = r + 1) {\n let rr = f32(r) / f32(RINGS);\n let radial = 1.0 - 0.6 * rr;\n for (var a = 0; a < TAPS; a = a + 1) {\n let ang = 6.2831853 * f32(a) / f32(TAPS);\n let dirE = ax * cos(ang) + ay * (sin(ang) * aniso);\n let off = dirE * (radius * rr);\n let c = sampleBase(p + off, t);\n for (var k = 0; k < 8; k = k + 1) {\n let sectorAng = 6.2831853 * f32(k) / 8.0;\n var d = ang - sectorAng;\n d = atan2(sin(d), cos(d));\n let sw = exp(-d * d * 2.2) * radial;\n mSum[k] = mSum[k] + c * sw;\n sSum[k] = sSum[k] + c * c * sw;\n wSum[k] = wSum[k] + sw;\n }\n }\n }\n\n let q = max(mKuwaharaQ(), 1.0);\n var accum = vec3<f32>(0.0);\n var accumW = 0.0;\n for (var k = 0; k < 8; k = k + 1) {\n let wk = max(wSum[k], 1e-4);\n let mean = mSum[k] / wk;\n let var3 = max(sSum[k] / wk - mean * mean, vec3<f32>(0.0));\n let variance = dot(var3, W_LUMA);\n let sectorW = 1.0 / (1.0 + pow(variance * 320.0, q));\n accum = accum + mean * sectorW;\n accumW = accumW + sectorW;\n }\n var result = accum / max(accumW, 1e-4);\n\n // Anchor in near-flat zones so the smoothing only bites at edges.\n let center = sampleBase(p, t);\n result = mix(center, result, clamp(0.35 + 0.65 * A, 0.0, 1.0));\n\n // Faint canvas tooth + pigment-saturation so the flattened patches read as oil paint.\n let tooth = vnoise(p * 300.0) - 0.5;\n result = result * (1.0 + tooth * 0.06 * mCanvasGrain());\n result = saturate3(result, 1.04);\n\n return mix(col0, result, clamp(mStrokeAmount(), 0.0, 1.0));\n}\n\n// \u2500\u2500 Metal \u2014 the two-term anisotropic BRDF (uMedium==8/9; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\n// The field re-lights as warm folded metal: the luma HEIGHT field (the packed\n// structure-tensor gradient \u2192 the surface normal) catches an anisotropic Blinn streak\n// (brushed metal, running ALONG the coherent edge-tangent) plus a sharp crest, both\n// raked by the IN-STRUCT cursor-synth light (crosses to WGSL \u2014 never uLightDir). The\n// catch is the achromatic-warm anchor (never a cold chrome-blue). ZERO extra taps \u2014\n// the gradient is unpacked from the tensor's .w lane the caller already computed.\nconst METAL_CATCH_WARM: vec3<f32> = vec3<f32>(1.0, 0.97, 0.90);\nconst METAL_HEIGHT_SCALE: f32 = 2.2;\nconst METAL_LIGHT_Z: f32 = 0.55;\nconst METAL_IDLE_RAKE: vec2<f32> = vec2<f32>(0.32, 0.34);\nconst METAL_SHININESS_ANISO: f32 = 6.0;\nconst METAL_SHININESS_CREST: f32 = 40.0;\nconst METAL_COHERENCE_FLOOR: f32 = 0.22;\nconst METAL_BODY_FLOOR: f32 = 0.42;\nconst METAL_GRADIENT_FLATTEN: f32 = 0.55;\nconst METAL_SPARKLE_DENSITY: f32 = 240.0;\nconst METAL_SPARKLE_THRESH: f32 = 0.72;\nconst METAL_SPARKLE_AMP: f32 = 0.6;\n\nfn metalShade(baseCol: vec3<f32>, p: vec2<f32>, stf: vec4<f32>) -> vec3<f32> {\n let tangent = stf.xy;\n let A = stf.z;\n let grad = unpackGrad(stf.w);\n let N = normalize(vec3<f32>(grad * (METAL_HEIGHT_SCALE * mMetalHeightScale()), 1.0));\n let V = vec3<f32>(0.0, 0.0, 1.0);\n // Cursor-synth rake light (u.cursor is in-struct \u2014 crosses to WGSL).\n let L = normalize(vec3<f32>((u.cursor.xy - p) + METAL_IDLE_RAKE, METAL_LIGHT_Z));\n let H = normalize(L + V);\n // Anisotropic streak \u2014 brushed metal along the edge-tangent.\n let tH = dot(normalize(tangent), H.xy);\n let sinTH = sqrt(clamp(1.0 - tH * tH, 0.0, 1.0));\n let streak = pow(clamp(sinTH, 0.0, 1.0), METAL_SHININESS_ANISO);\n let crest = pow(clamp(dot(N, H), 0.0, 1.0), METAL_SHININESS_CREST);\n var spec = streak * crest;\n spec = spec * smoothstep(0.0, METAL_COHERENCE_FLOOR, A);\n // Technicolor valley base \u2014 the body keeps the FIELD hue; luma rides the relief.\n let diff = clamp(dot(N, L), 0.0, 1.0);\n let body = baseCol * (METAL_BODY_FLOOR + (1.0 - METAL_BODY_FLOOR) * diff);\n return body + METAL_CATCH_WARM * (spec * clamp(mMetalPolish(), 0.0, 4.0));\n}\n\nfn mediumMetal(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n return metalShade(col, p, stf);\n}\n\n// metal-gradient (uMedium==9) \u2014 the SAME BRDF over a pre-flattened base + the\n// twinkle-in-place flake sparkle (position FIXED per cell, phase-animated, facing-gated).\nfn mediumMetalGradient(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n let flat = mix(col, vec3<f32>(dot(col, W_LUMA)), METAL_GRADIENT_FLATTEN);\n var metal = metalShade(flat, p, stf);\n let grad = unpackGrad(stf.w);\n let facing = normalize(vec3<f32>(grad * (METAL_HEIGHT_SCALE * mMetalHeightScale()), 1.0)).z;\n let cell = floor(p * METAL_SPARKLE_DENSITY);\n let seed = hash21(cell);\n let tw = pow(clamp(sin(t + seed * 6.2831853), 0.0, 1.0), 40.0);\n let flakeGate = step(METAL_SPARKLE_THRESH, seed);\n metal = metal + METAL_CATCH_WARM * (tw * flakeGate * clamp(facing, 0.0, 1.0) * METAL_SPARKLE_AMP);\n return metal;\n}\n\n// \u2500\u2500 Medium dispatch (the WGSL twin of the GLSL main() if-ladder) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// uMedium: 0 smooth \u00B7 1 pastel \u00B7 2 watercolor \u00B7 3 oil \u00B7 4 crayon \u00B7 5 vangogh \u00B7\n// 6 oil-pastel \u00B7 7 kuwahara \u00B7 8 metal \u00B7 9 metal-gradient. The cheap peer mediums\n// (pastel/watercolor/crayon) + kuwahara + metal port their own bodies; the\n// oil/vangogh/oil-pastel STROKE cascade renders the anisotropic-Kuwahara PAINTERLY\n// finish here (a real oil-paint read, never the smooth core \u2014 the \"NO FALLBACKS on\n// Safari\" mandate; the full per-dab Starry-Night stroke WGSL is the booked\n// W-AURORA-WGPU-MEDIUMS-STROKES tail).\nfn applyMedium(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let medium = u.ints1.x;\n if (medium == 1) { return mediumPastel(col, p, t); }\n if (medium == 2) { return mediumWatercolor(col, p, t); }\n if (medium == 4) { return mediumCrayon(col, p, t); }\n // BG.W-AUR-METAL-FINISH \u2014 metal DUAL-PORTS (a .frag-only metal is invisible on the\n // WGSL primary of both browsers); 8 metal, 9 metal-gradient.\n if (medium == 8) { return mediumMetal(col, p, t); }\n if (medium == 9) { return mediumMetalGradient(col, p, t); }\n // oil(3) / vangogh(5) / oil-pastel(6) / kuwahara(7) all render the painterly\n // anisotropic-Kuwahara finish on the WGSL primary (the WebGL2 fallback carries the\n // full per-dab stroke cascade for oil/vangogh/oil-pastel).\n if (medium == 3 || medium == 5 || medium == 6 || medium == 7) {\n return mediumKuwahara(col, p, t);\n }\n return col;\n}\n";
@@ -0,0 +1 @@
1
+ export declare const AURORA_WGSL = "\nconst MAX_NUCLEI: i32 = 6;\nconst MAX_STOPS: i32 = 8;\nconst PI: f32 = 3.141592653589793;\n\n// \u2500\u2500 Uniforms (the typed-struct source-of-truth \u2014 see aurora.wgsl.uniforms.ts) \u2500\u2500\n// Scalars are packed into vec4 lanes to keep the std140/WGSL 16-byte struct alignment\n// trivial. nuc0[i] = (pos.x, pos.y, radius, paletteBias); nuc1[i] = (valueBias,\n// driftRadius, driftPhase, elong); nuc2[i] = (angle, _, _, _). palette[i].rgb is the\n// CPU-baked linear-sRGB stop.\nstruct Uniforms {\n // scalars0: (uTime, uSoftmaxBeta, uValueVariance, uWarpAmount)\n scalars0: vec4<f32>,\n // scalars1: (uWarpScale, uWarpDrift, uSaturation, uPaperGrain)\n scalars1: vec4<f32>,\n // scalars2: (uAlpha, uNucleiDrift, uPaletteDrift, uBreathDepth)\n scalars2: vec4<f32>,\n // scalars3: (uBreathPeriod, uCursorStrength, uCursorRadius, uVividness)\n // BD.W-AUR-VIVIDNESS \u2014 the .w pad lane now carries the \u00A73 chroma-floor strength.\n scalars3: vec4<f32>,\n // cursor: (uCursor.x, uCursor.y, uMetalPolish, uMetalHeightScale)\n // BG.W-AUR-METAL-FINISH \u2014 the two free pad lanes carry the metal-medium knobs (the\n // metal light is cursor-synthesized so it reads in-struct on the WGSL primary too).\n cursor: vec4<f32>,\n // ints: (uStopCount, uNucleiCount, uWarpMode, uNoiseOctaves)\n ints0: vec4<i32>,\n // ints1: (uMedium, uHuePath, _, _)\n ints1: vec4<i32>,\n palette: array<vec4<f32>, 8>,\n nuc0: array<vec4<f32>, 6>,\n nuc1: array<vec4<f32>, 6>,\n nuc2: array<vec4<f32>, 6>,\n // BC.W-VIZ-AURORA (T4) \u2014 the painterly-medium scalar lanes. APPENDED after the\n // arrays so EVERY existing offset (and the smooth-default parity capture) is\n // byte-identical (these lanes are written 0 on a smooth config). scalars4:\n // (uStrokeAmount, uStrokeScale, uStrokeAnisotropy, uCanvasGrain). scalars5:\n // (uWetEdge, uGranulation, uBrokenColor, uKuwaharaQ). kuwahara: (uKuwaharaRadius,\n // uKuwaharaSectors, _, _) \u2014 the Kuwahara radius/sectors/q in lockstep with\n // packAuroraWGPUUniforms (the typed-struct discipline).\n scalars4: vec4<f32>,\n scalars5: vec4<f32>,\n kuwahara: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u: Uniforms;\n\n// \u2500\u2500 Authoring-scale \u2192 rad/sec lifts (byte-identical to aurora.frag.ts) \u2500\u2500\nconst K_NUCLEI: f32 = 14.0;\nconst K_PAL: f32 = 24.0;\nconst K_WARP: f32 = 5.0;\n\n// \u2500\u2500 Noise (aurora-local hash21/vnoise/fbm \u2014 legitimately divergent per AV.W2 \u00A73a) \u2500\u2500\nfn hash21(p0: vec2<f32>) -> f32 {\n var p = fract(p0 * vec2<f32>(123.34, 456.21));\n p = p + dot(p, p + 45.32);\n return fract(p.x * p.y);\n}\n\nfn hash22(p0: vec2<f32>) -> vec2<f32> {\n let p = vec2<f32>(dot(p0, vec2<f32>(127.1, 311.7)),\n dot(p0, vec2<f32>(269.5, 183.3)));\n return fract(sin(p) * 43758.5453);\n}\n\nfn vnoise(p: vec2<f32>) -> f32 {\n let i = floor(p);\n let f = fract(p);\n let uu = f * f * (3.0 - 2.0 * f);\n let a = hash21(i);\n let b = hash21(i + vec2<f32>(1.0, 0.0));\n let c = hash21(i + vec2<f32>(0.0, 1.0));\n let d = hash21(i + vec2<f32>(1.0, 1.0));\n return mix(mix(a, b, uu.x), mix(c, d, uu.x), uu.y);\n}\n\nconst FBM_ROT: mat2x2<f32> = mat2x2<f32>(0.8, 0.6, -0.6, 0.8);\n\nfn fbm(p0: vec2<f32>) -> f32 {\n var v = 0.0;\n var a = 0.5;\n var p = p0;\n let octaves = u.ints0.w;\n for (var i = 0; i < 5; i = i + 1) {\n if (i >= octaves) { break; }\n v = v + a * vnoise(p);\n p = FBM_ROT * p * 2.02;\n a = a * 0.5;\n }\n return v;\n}\n\n\nfn srgbToLinearCh(c: f32) -> f32 {\n if (c <= 0.04045) { return c / 12.92; }\n return pow((c + 0.055) / 1.055, 2.4);\n}\nfn srgbToLinear(c: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(srgbToLinearCh(c.r), srgbToLinearCh(c.g), srgbToLinearCh(c.b));\n}\n\nfn linearToSrgbCh(c: f32) -> f32 {\n if (c <= 0.0031308) { return c * 12.92; }\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nfn linearToSrgb(c: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(linearToSrgbCh(c.r), linearToSrgbCh(c.g), linearToSrgbCh(c.b));\n}\n\n// value.js LINEAR_SRGB_TO_LMS, row-major \u2192 WGSL columns (= the transpose).\nconst LINEAR_SRGB_TO_LMS: mat3x3<f32> = mat3x3<f32>(\n 0.4122214708, 0.2119034982, 0.0883024619,\n 0.5363325363, 0.6806995451, 0.2817188376,\n 0.0514459929, 0.1073969566, 0.6299787005\n);\n\n// value.js srgbToOKLab's INLINE LMS\u2192OKLab coefficients, row-major \u2192 WGSL columns.\nconst LMS_TO_OKLAB: mat3x3<f32> = mat3x3<f32>(\n 0.2104542553, 1.9779984951, 0.0259040371,\n 0.7936177850, -2.4285922050, 0.7827717662,\n -0.0040720468, 0.4505937099, -0.8086757660\n);\n\n// value.js OKLAB_TO_LMS_COEFF, row-major \u2192 WGSL columns.\nconst OKLAB_TO_LMS: mat3x3<f32> = mat3x3<f32>(\n 1.0, 1.0, 1.0,\n 0.3963377774, -0.1055613458, -0.0894841775,\n 0.2158037573, -0.0638541728, -1.2914855480\n);\n\n// value.js LMS_TO_LINEAR_SRGB, row-major \u2192 WGSL columns.\nconst LMS_TO_LINEAR_SRGB: mat3x3<f32> = mat3x3<f32>(\n 4.0767416621, -1.2684380046, -0.0041960863,\n -3.3077115913, 2.6097574011, -0.7034186147,\n 0.2309699292, -0.3413193965, 1.7076147010\n);\n\nfn cbrt3(v: vec3<f32>) -> vec3<f32> {\n return sign(v) * pow(abs(v), vec3<f32>(1.0 / 3.0));\n}\n\n// Gamma sRGB \u2192 raw OKLab (L, a, b). Mirrors value.js srgbToOKLab.\nfn srgbToOklab(c: vec3<f32>) -> vec3<f32> {\n let lin = srgbToLinear(c);\n let lms = LINEAR_SRGB_TO_LMS * lin;\n return LMS_TO_OKLAB * cbrt3(lms);\n}\n\n// Raw OKLab (L, a, b) \u2192 linear sRGB. Mirrors value.js oklabToLinearSRGB.\nfn oklabToLinearSrgb(lab: vec3<f32>) -> vec3<f32> {\n let lms_ = OKLAB_TO_LMS * lab;\n let lms = lms_ * lms_ * lms_;\n return LMS_TO_LINEAR_SRGB * lms;\n}\n\n// OKLab \u2192 OKLCh: H in RADIANS, folded to [0, 2pi). Mirrors value.js rawOklabToOklch.\nfn oklabToOklch(lab: vec3<f32>) -> vec3<f32> {\n let C = length(lab.yz);\n var H = atan2(lab.z, lab.y);\n if (H < 0.0) { H = H + 2.0 * PI; }\n return vec3<f32>(lab.x, C, H);\n}\n\n// OKLCh (H radians) \u2192 OKLab. Mirrors value.js rawOklchToOklab.\nfn oklchToOklab(lch: vec3<f32>) -> vec3<f32> {\n return vec3<f32>(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}\n\n// value.js interpolateHue in the NORMALIZED-TURNS domain. methods: 0 shorter,\n// 1 longer, 2 increasing, 3 decreasing.\nfn interpolateHueTurns(h0: f32, h1: f32, t: f32, method: i32) -> f32 {\n let TAU = 2.0 * PI;\n var a = h0 / TAU;\n var b = h1 / TAU;\n let i = b - a;\n if (method == 0) { // shorter\n if (i > 0.5) { a = a + 1.0; } else if (i < -0.5) { b = b + 1.0; }\n } else if (method == 1) { // longer\n if (i > 0.0 && i < 0.5) { a = a + 1.0; } else if (i > -0.5 && i <= 0.0) { b = b + 1.0; }\n } else if (method == 2) { // increasing\n if (i < 0.0) { b = b + 1.0; }\n } else { // decreasing\n if (i > 0.0) { a = a + 1.0; }\n }\n var r = a + t * (b - a);\n r = fract(r); // fract is non-negative in WGSL\n return r * TAU; // back to radians\n}\n\n// Linear-sRGB endpoint pair \u2192 OKLab-rectangular interpolation \u2192 linear sRGB.\nfn mixPaletteOklab(linA: vec3<f32>, linB: vec3<f32>, t: f32) -> vec3<f32> {\n let labA = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * linA);\n let labB = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * linB);\n let lab = mix(labA, labB, t);\n return oklabToLinearSrgb(lab);\n}\n\n// Linear-sRGB endpoint pair \u2192 OKLCh hue-arc interpolation \u2192 linear sRGB.\nfn mixPaletteOklchArc(linA: vec3<f32>, linB: vec3<f32>, t: f32, method: i32) -> vec3<f32> {\n let labA = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * linA);\n let labB = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * linB);\n let lchA = oklabToOklch(labA);\n let lchB = oklabToOklch(labB);\n let L = mix(lchA.x, lchB.x, t);\n let C = mix(lchA.y, lchB.y, t);\n let H = interpolateHueTurns(lchA.z, lchB.z, t, method);\n return oklabToLinearSrgb(oklchToOklab(vec3<f32>(L, C, H)));\n}\n\n// The ramp dispatcher (the samplePalette splices it). tRaw is the raw inter-stop\n// parameter [0,1]; the smoothstep ease + the huePath branch live here so the ramp is\n// one source. increasing(2)/decreasing(3) take the OKLCh hue-arc; every other method\n// takes the OKLab-rectangular straight line.\nfn samplePaletteRamp(a: vec3<f32>, b: vec3<f32>, tRaw: f32, huePath: i32) -> vec3<f32> {\n let t = smoothstep(0.0, 1.0, tRaw);\n if (huePath == 2 || huePath == 3) {\n return mixPaletteOklchArc(a, b, t, huePath);\n }\n return mixPaletteOklab(a, b, t);\n}\n\n// Interleaved Gradient Noise (Jimenez) \u2014 display-space 1-LSB dither.\nfn ign(p: vec2<f32>) -> f32 {\n return fract(52.9829189 * fract(dot(p, vec2<f32>(0.06711056, 0.00583715))));\n}\n\n// Cellular / Worley f1.\nfn cellular(p: vec2<f32>) -> f32 {\n let i = floor(p);\n let f = fract(p);\n var m = 1e9;\n for (var y = -1; y <= 1; y = y + 1) {\n for (var x = -1; x <= 1; x = x + 1) {\n let g = vec2<f32>(f32(x), f32(y));\n let o = hash22(i + g);\n let r = g + o - f;\n m = min(m, dot(r, r));\n }\n }\n return sqrt(m);\n}\n\n// \u2500\u2500 Warp (Quilez double warp + the three warp modes + the cursor swirl) \u2500\u2500\nfn domainWarp(p: vec2<f32>, t: f32) -> vec2<f32> {\n let warpScale = u.scalars1.x;\n let warpDrift = u.scalars1.y;\n let warpAmount = u.scalars0.w;\n let warpMode = u.ints0.z;\n let cursorStrength = u.scalars3.y;\n let cursorRadius = u.scalars3.z;\n let cursor = u.cursor.xy;\n\n let q = vec2<f32>(fbm(p * warpScale + vec2<f32>(0.0, 0.0) + t * warpDrift * K_WARP),\n fbm(p * warpScale + vec2<f32>(5.2, 1.3) + t * warpDrift * K_WARP));\n let r = vec2<f32>(fbm(p * warpScale + 4.0 * q + vec2<f32>(1.7, 9.2)),\n fbm(p * warpScale + 4.0 * q + vec2<f32>(8.3, 2.8)));\n\n var warp = r;\n if (warpMode == 1) {\n // cellular \u2014 chunky territories\n let c1 = cellular(p * warpScale * 1.5 + vec2<f32>(t * warpDrift * K_WARP * 2.0, 0.0));\n let c2 = cellular(p * warpScale * 1.5 + vec2<f32>(11.0, 7.0 + t * warpDrift * K_WARP * 2.0));\n warp = vec2<f32>(c1, c2);\n } else if (warpMode == 2) {\n // hybrid \u2014 fbm + cellular averaged\n let c1 = cellular(p * warpScale * 1.2);\n let c2 = cellular(p * warpScale * 1.2 + vec2<f32>(11.0, 7.0));\n warp = mix(r, vec2<f32>(c1, c2), 0.5);\n }\n var warped = p + warpAmount * warp;\n\n // Cursor swirl \u2014 rotate p around the cursor with radial falloff.\n if (cursorStrength > 0.001) {\n let toP = p - cursor;\n let d = length(toP);\n let rr = max(cursorRadius, 0.01);\n let w = exp(-(d * d) / (rr * rr * 0.45));\n let ang = w * cursorStrength * 2.1;\n let ca = cos(ang);\n let sa = sin(ang);\n var rotated = vec2<f32>(ca * toP.x - sa * toP.y, sa * toP.x + ca * toP.y) + cursor;\n let pinch = w * cursorStrength * 0.08;\n rotated = mix(rotated, cursor, pinch);\n warped = mix(warped, rotated + warpAmount * warp * 0.7, w * cursorStrength);\n }\n return warped;\n}\n\n// \u2500\u2500 Palette LUT \u2500\u2500\nfn samplePalette(id0: f32) -> vec3<f32> {\n let id = clamp(id0, 0.0, 1.0);\n let stopCount = u.ints0.x;\n let scaled = id * f32(stopCount - 1);\n let i0 = i32(floor(scaled));\n let i1 = min(i0 + 1, stopCount - 1);\n let t = fract(scaled);\n return samplePaletteRamp(u.palette[i0].rgb, u.palette[i1].rgb, t, u.ints1.y);\n}\n\n// \u2500\u2500 Nuclei field (anisotropic Gaussian softmax + drift + palette drift) \u2500\u2500\nstruct NucleiResult { paletteId: f32, valueMod: f32 };\n\nfn nucleiField(p: vec2<f32>, t: f32) -> NucleiResult {\n let nucleiCount = u.ints0.y;\n let nucleiDrift = u.scalars2.y;\n let paletteDrift = u.scalars2.z;\n let softmaxBeta = u.scalars0.y;\n\n var accumBias = 0.0;\n var accumValue = 0.0;\n var accumW = 0.0;\n for (var i = 0; i < MAX_NUCLEI; i = i + 1) {\n if (i >= nucleiCount) { break; }\n let n0 = u.nuc0[i]; // pos.x, pos.y, radius, paletteBias\n let n1 = u.nuc1[i]; // valueBias, driftRadius, driftPhase, elong\n let angle = u.nuc2[i].x;\n let driftRadius = n1.y;\n let driftPhase = n1.z;\n let posI = n0.xy + driftRadius * vec2<f32>(\n cos(t * nucleiDrift * K_NUCLEI + driftPhase),\n sin(t * nucleiDrift * K_NUCLEI + driftPhase * 1.13)\n );\n let diff = p - posI;\n let ca = cos(angle);\n let sa = sin(angle);\n let local = vec2<f32>(ca * diff.x + sa * diff.y, -sa * diff.x + ca * diff.y);\n let along = local.x / max(n1.w, 0.01);\n let across = local.y;\n let d2 = along * along + across * across;\n let r = max(n0.z, 0.01);\n let w = exp(-softmaxBeta * d2 / (r * r));\n accumBias = accumBias + w * n0.w;\n accumValue = accumValue + w * n1.x;\n accumW = accumW + w;\n }\n var paletteId = accumBias / max(accumW, 1e-4);\n let valueMod = accumValue / max(accumW, 1e-4);\n\n let palAmp = clamp(paletteDrift * 6.0, 0.0, 0.06);\n paletteId = paletteId + palAmp * sin(t * paletteDrift * K_PAL);\n paletteId = clamp(paletteId, 0.0, 1.0);\n return NucleiResult(paletteId, valueMod);\n}\n\n// \u2500\u2500 Color utils (OKLCh saturation) \u2500\u2500\nfn linOklab(lin: vec3<f32>) -> vec3<f32> {\n let lms = LINEAR_SRGB_TO_LMS * lin;\n return LMS_TO_OKLAB * cbrt3(lms);\n}\n\nfn saturate3(c: vec3<f32>, amt: f32) -> vec3<f32> {\n var lch = oklabToOklch(linOklab(c));\n lch.y = max(lch.y * amt, 0.0);\n return max(oklabToLinearSrgb(oklchToOklab(lch)), vec3<f32>(0.0));\n}\n\n// BD.W-AUR-VIVIDNESS \u2014 the \u00A73 chroma FLOOR, the WGSL twin of the GLSL vividnessFloor.\n// OKLab chroma lifted toward the floor, hue + L preserved; below VIVID_EPS the (a,b)\n// direction is precision noise so the lift synthesizes along the WARM anchor (amber,\n// both components positive) \u2014 never teal/navy. vividness (scalars3.w) == 0 is a no-op\n// (the byte-identity opt-out). Mode factor lifts a dim field a touch (read through glass).\nconst VIVID_TARGET: f32 = 0.115;\nconst VIVID_EPS: f32 = 0.012;\nconst VIVID_WARM_ANCHOR: vec2<f32> = vec2<f32>(0.34202, 0.93969);\nfn vividnessFloor(c: vec3<f32>, vividness: f32) -> vec3<f32> {\n if (vividness <= 0.0001) { return c; }\n var lab = linOklab(c);\n let C = length(lab.yz);\n let modeLift = mix(1.18, 1.0, clamp(lab.x * 1.4, 0.0, 1.0));\n let Cmin = vividness * VIVID_TARGET * modeLift;\n var hueDir = VIVID_WARM_ANCHOR;\n if (C > VIVID_EPS) { hueDir = lab.yz / C; }\n let yz = hueDir * max(C, Cmin);\n lab = vec3<f32>(lab.x, yz.x, yz.y);\n return max(oklabToLinearSrgb(lab), vec3<f32>(0.0));\n}\n\n// \u2500\u2500 PBR-Neutral tonemap (named aces() in the GLSL \u2014 the tonemap slot) \u2500\u2500\nfn aces(color0: vec3<f32>) -> vec3<f32> {\n let startCompression = 0.8 - 0.04;\n let desaturation = 0.15;\n var color = color0;\n let x = min(color.r, min(color.g, color.b));\n var offset = 0.04;\n if (x < 0.08) { offset = x - 6.25 * x * x; }\n color = color - offset;\n let peak = max(color.r, max(color.g, color.b));\n if (peak < startCompression) { return clamp(color, vec3<f32>(0.0), vec3<f32>(1.0)); }\n let d = 1.0 - startCompression;\n let newPeak = 1.0 - d * d / (peak + d - startCompression);\n color = color * (newPeak / peak);\n let g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);\n return clamp(mix(color, newPeak * vec3<f32>(1.0), g), vec3<f32>(0.0), vec3<f32>(1.0));\n}\n\n// \u2500\u2500 BC.W-VIZ-AURORA (T4) \u2014 the painterly-medium bodies (the keystone WGSL port) \u2500\u2500\n// Spliced HERE, after every helper the mediums consume is defined (domainWarp,\n// nucleiField, samplePalette, linOklab, saturate3, oklabToOklch/oklchToOklab,\n// hash21/vnoise/fbm) and before the vertex/fragment stages. applyMedium(col,p,t)\n// is the dispatch the fragment stage calls.\n\n// \u2500\u2500 Painterly luma + medium scalar accessors \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst W_LUMA: vec3<f32> = vec3<f32>(0.2126, 0.7152, 0.0722);\n\nfn mStrokeAmount() -> f32 { return u.scalars4.x; }\nfn mStrokeScale() -> f32 { return u.scalars4.y; }\nfn mStrokeAnisotropy() -> f32 { return u.scalars4.z; }\nfn mCanvasGrain() -> f32 { return u.scalars4.w; }\nfn mWetEdge() -> f32 { return u.scalars5.x; }\nfn mGranulation() -> f32 { return u.scalars5.y; }\nfn mBrokenColor() -> f32 { return u.scalars5.z; }\nfn mKuwaharaQ() -> f32 { return u.scalars5.w; }\nfn mKuwaharaRadius() -> f32 { return u.kuwahara.x; }\n// BG.W-AUR-METAL-FINISH \u2014 the metal-medium knobs ride the FREE cursor.z/.w pad lanes\n// (uniformBridgeWGPU packs them; written 0 on a non-metal config \u2192 no-op). These read\n// the IN-STRUCT cursor \u2014 the metal light is cursor-synthesized so it crosses to WGSL\n// (a phantom uLightDir read would be flat on the primary \u2014 uLightDir is .frag-only).\nfn mMetalPolish() -> f32 { return u.cursor.z; }\nfn mMetalHeightScale() -> f32 { return u.cursor.w; }\n\n// \u2500\u2500 Gradient pack (BG.W-AUR-METAL-FINISH; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// structureTensorField re-plumbs its already-computed luma gradient (Gx,Gy) out\n// through the return's .w lane so the metal medium pays ZERO extra taps. 12 bits per\n// bounded component ([-4,4]) into one f32; the crayon/kuwahara callers read only .xy/.z.\nfn packGrad(gx: f32, gy: f32) -> f32 {\n let qx = floor(clamp(gx * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n let qy = floor(clamp(gy * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n return qx + qy * 4096.0;\n}\nfn unpackGrad(packed: f32) -> vec2<f32> {\n let qy = floor(packed * (1.0 / 4096.0));\n let qx = packed - qy * 4096.0;\n return (vec2<f32>(qx, qy) * (1.0 / 4095.0) - 0.5) * 8.0;\n}\n\n// \u2500\u2500 Base color re-sample (the edge-mask operator the mediums Sobel/sector-sample) \u2500\u2500\n// The WGSL twin of mediums.glsl.ts sampleBase: warp -> nuclei field -> palette -> value.\nfn sampleBase(p: vec2<f32>, t: f32) -> vec3<f32> {\n let pw = domainWarp(p, t);\n let nf = nucleiField(pw, t);\n var c = samplePalette(nf.paletteId);\n c = c * (1.0 + u.scalars0.z * nf.valueMod);\n return c;\n}\n\n// \u2500\u2500 Broken color (hue + chroma jitter at constant OKLCh L) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn brokenColorJitter(c: vec3<f32>, hueSeed: f32, valueSeed: f32, strength: f32) -> vec3<f32> {\n let amt = clamp(mBrokenColor() * strength, 0.0, 1.0);\n if (amt <= 0.001) { return c; }\n var lch = oklabToOklch(linOklab(c));\n lch.z = lch.z + (hueSeed - 0.5) * (32.0 * PI / 180.0) * amt;\n lch.y = max(lch.y * (1.0 + (valueSeed - 0.5) * 0.28 * amt), 0.0);\n return max(oklabToLinearSrgb(oklchToOklab(lch)), vec3<f32>(0.0));\n}\n\n// \u2500\u2500 Structure-tensor / edge-tangent-flow (AW.W4.1; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Returns vec4(tangent.x, tangent.y, A, packGrad(Gx,Gy)) \u2014 the minor-eigenvector\n// edge-tangent + coherence + the metal medium's packed gradient (BG.W-AUR-METAL-FINISH;\n// the .xy/.z crayon/kuwahara callers are byte-unchanged).\nfn structureTensorField(p: vec2<f32>, t: f32, fallbackDir: vec2<f32>) -> vec4<f32> {\n let e = 0.0035;\n let l00 = dot(sampleBase(p + vec2<f32>(-e, -e), t), W_LUMA);\n let l10 = dot(sampleBase(p + vec2<f32>(0.0, -e), t), W_LUMA);\n let l20 = dot(sampleBase(p + vec2<f32>( e, -e), t), W_LUMA);\n let l01 = dot(sampleBase(p + vec2<f32>(-e, 0.0), t), W_LUMA);\n let l21 = dot(sampleBase(p + vec2<f32>( e, 0.0), t), W_LUMA);\n let l02 = dot(sampleBase(p + vec2<f32>(-e, e), t), W_LUMA);\n let l12 = dot(sampleBase(p + vec2<f32>(0.0, e), t), W_LUMA);\n let l22 = dot(sampleBase(p + vec2<f32>( e, e), t), W_LUMA);\n let Gx = (l20 + 2.0 * l21 + l22) - (l00 + 2.0 * l01 + l02);\n let Gy = (l02 + 2.0 * l12 + l22) - (l00 + 2.0 * l10 + l20);\n let Jxx = Gx * Gx;\n let Jyy = Gy * Gy;\n let Jxy = Gx * Gy;\n let tr = Jxx + Jyy;\n let disc = sqrt(max((Jxx - Jyy) * (Jxx - Jyy) + 4.0 * Jxy * Jxy, 0.0));\n let lambdaMaj = 0.5 * (tr + disc);\n let lambdaMin = 0.5 * (tr - disc);\n var tangent: vec2<f32>;\n if (disc < 1e-7) {\n tangent = fallbackDir;\n } else {\n let theta = 0.5 * atan2(2.0 * Jxy, Jxx - Jyy);\n tangent = vec2<f32>(-sin(theta), cos(theta));\n }\n var A = (lambdaMaj - lambdaMin) / (lambdaMaj + lambdaMin + 1e-6);\n A = clamp(A, 0.0, 1.0);\n if (dot(tangent, fallbackDir) < 0.0) { tangent = -tangent; }\n let blendW = pow(A, 0.28);\n let dir = normalize(mix(fallbackDir, tangent, blendW) + vec2<f32>(1e-6, 1e-6));\n return vec4<f32>(dir, A, packGrad(Gx, Gy));\n}\n\n// \u2500\u2500 Flow field (the WGSL twin \u2014 the simple flow seed the medium fallback dirs use) \u2500\u2500\nfn flowField(p: vec2<f32>, t: f32) -> vec2<f32> {\n // Curl-noise-driven swirl (the medium-default dir; the full radial/swirl/diagonal\n // dispatch rides uniforms the WGSL struct does not carry \u2014 the procedural mediums\n // use this multi/curl seed as the fallback the structure tensor relaxes toward).\n let n = fbm(p * 2.0 + vec2<f32>(t * 0.02, t * 0.02));\n let a = n * 6.2831853;\n var dir = vec2<f32>(cos(a), sin(a));\n // Cursor swirl bias (matches the GLSL flow cursor term \u2014 the steady attraction).\n let cursorStrength = u.scalars3.y;\n let cursorRadius = u.scalars3.z;\n let cursor = u.cursor.xy;\n if (cursorStrength > 0.001) {\n let toCur = cursor - p;\n let d = length(toCur);\n let r = max(cursorRadius, 0.01);\n let w = exp(-(d * d) / (r * r * 0.5));\n let tangent = vec2<f32>(-toCur.y, toCur.x) / max(d, 1e-4);\n let a0 = atan2(dir.y, dir.x);\n let a1 = atan2(tangent.y, tangent.x);\n var da = a1 - a0;\n da = atan2(sin(da), cos(da));\n let aa = a0 + da * w * cursorStrength;\n dir = vec2<f32>(cos(aa), sin(aa));\n }\n return dir;\n}\n\n// \u2500\u2500 Watercolor \u2014 wet-edge cauliflowers + granulation + wash banding \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn mediumWatercolor(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n var col = col0;\n let eps = 0.004;\n let cx1 = sampleBase(p + vec2<f32>(eps, 0.0), t);\n let cx2 = sampleBase(p - vec2<f32>(eps, 0.0), t);\n let cy1 = sampleBase(p + vec2<f32>(0.0, eps), t);\n let cy2 = sampleBase(p - vec2<f32>(0.0, eps), t);\n let gx = dot(cx1 - cx2, W_LUMA);\n let gy = dot(cy1 - cy2, W_LUMA);\n let edge = sqrt(gx * gx + gy * gy) / (2.0 * eps);\n let mask = smoothstep(0.0, 2.5, edge);\n col = col * mix(1.0, 0.78, mask * mWetEdge());\n\n let paper = 0.5 * vnoise(p * 160.0) + 0.5 * vnoise(p * 360.0);\n let pigLoad = 1.0 - dot(col, W_LUMA);\n col = col * (1.0 - mGranulation() * pigLoad * (paper - 0.5));\n\n let band = fbm(vec2<f32>(p.x * 1.5, p.y * 0.4));\n col = col * (1.0 + 0.04 * (band - 0.5));\n return col;\n}\n\n// \u2500\u2500 Pastel \u2014 anisotropic stroke noise along the flow + tooth grain \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfn mediumPastel(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n var col = col0;\n let flow = flowField(p, t);\n let perp = vec2<f32>(-flow.y, flow.x);\n let strokeScale = mStrokeScale();\n let along = dot(p, flow) * strokeScale;\n var across = dot(p, perp) * strokeScale;\n across = across + 0.03 * (vnoise(p * 260.0) - 0.5);\n\n let aniso = mix(1.0, 0.18, mStrokeAnisotropy());\n let stroke = fbm(vec2<f32>(along * aniso, across));\n col = col * mix(1.0, 0.82 + 0.32 * stroke, mStrokeAmount());\n\n let tooth = vnoise(p * 800.0);\n col = col * (1.0 - 0.08 * mStrokeAmount() * (tooth - 0.5));\n return col;\n}\n\n// \u2500\u2500 Crayon \u2014 DRY wax pigment on paper tooth (the tooth-multiply + scumble) \u2500\u2500\nfn mediumCrayon(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let flow = structureTensorField(p, t, flowField(p, t)).xy;\n let ang = atan2(flow.y, flow.x);\n let ca = cos(-ang);\n let sa = sin(-ang);\n let pr = vec2<f32>(p.x * ca - p.y * sa, p.x * sa + p.y * ca);\n\n let aniso = mix(0.45, 0.95, mStrokeAnisotropy());\n let scale = max(mStrokeScale() * 1.6, 180.0);\n\n let t1 = vnoise(vec2<f32>(pr.x * scale * aniso, pr.y * scale));\n let t2 = vnoise(vec2<f32>(pr.x * scale * aniso * 0.4, pr.y * scale * 0.4) + vec2<f32>(11.0, 11.0));\n let t3 = vnoise(vec2<f32>(pr.x * scale * aniso * 2.1, pr.y * scale * 2.1) + vec2<f32>(23.0, 23.0));\n let tooth = 0.55 * t1 + 0.30 * t2 + 0.15 * t3;\n\n let pressure = clamp(mStrokeAmount(), 0.0, 1.0);\n let bite = mix(0.18, 0.46, pressure);\n var result = col0 * (1.0 - bite * (0.5 - tooth));\n\n let scumbleMask = smoothstep(0.42, 0.78, vnoise(vec2<f32>(pr.x * scale * 0.55, pr.y * scale * 0.22) + vec2<f32>(7.0, 7.0)));\n let scumbleCoverage = scumbleMask * pressure * 0.7;\n let paper = col0 * mix(0.80, 0.94, pressure);\n result = mix(paper, result, scumbleCoverage);\n\n let pigmentCell = floor(pr * max(scale * 0.18, 32.0));\n let pigmentMask = smoothstep(0.28, 0.82, vnoise(pr * scale * 0.21 + vec2<f32>(19.0, 19.0)));\n result = brokenColorJitter(\n result,\n hash21(pigmentCell + vec2<f32>(17.0, 17.0)),\n hash21(pigmentCell * 2.1 + vec2<f32>(31.0, 31.0)),\n 0.45 + 0.55 * pigmentMask\n );\n\n result = saturate3(result, 1.08);\n return result;\n}\n\n// \u2500\u2500 Kuwahara \u2014 the SOFT anisotropic generalized Kuwahara painterly finish \u2500\u2500\u2500\u2500\n// THE KEYSTONE (Kyprianidis 2010). Aurora is a PROCEDURAL field (no input texture) so the\n// operator runs over sampleBase directly: an elliptical kernel oriented along the structure\n// tensor (elongated along the edge-tangent, narrowed across by the anisotropy), 8 OVERLAPPING\n// sectors via SMOOTH gaussian-angular weights, blended by 1/(1+var^q) (the SOFT criterion \u2192\n// no 8-spoke pinwheel by construction). 4 rings \u00D7 8 angular taps = 32 procedural samples.\nfn mediumKuwahara(col0: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n let tangent = stf.xy;\n let A = stf.z;\n // The studio knob drives the patch radius; clamp into the procedural patch band.\n let radius = clamp(mKuwaharaRadius() + mStrokeScale() * 0.00018, 0.006, 0.024);\n let aniso = mix(1.0, 0.34, clamp(A, 0.0, 1.0));\n let ax = tangent;\n let ay = vec2<f32>(-tangent.y, tangent.x);\n\n // Per-sector weighted sums (8 sectors). WGSL has no runtime-indexed local arrays of\n // vectors as cleanly as GLSL, so unroll the sector accumulators explicitly.\n var mSum: array<vec3<f32>, 8>;\n var sSum: array<vec3<f32>, 8>;\n var wSum: array<f32, 8>;\n for (var i = 0; i < 8; i = i + 1) {\n mSum[i] = vec3<f32>(0.0);\n sSum[i] = vec3<f32>(0.0);\n wSum[i] = 0.0;\n }\n\n let RINGS = 4;\n let TAPS = 8;\n for (var r = 1; r <= RINGS; r = r + 1) {\n let rr = f32(r) / f32(RINGS);\n let radial = 1.0 - 0.6 * rr;\n for (var a = 0; a < TAPS; a = a + 1) {\n let ang = 6.2831853 * f32(a) / f32(TAPS);\n let dirE = ax * cos(ang) + ay * (sin(ang) * aniso);\n let off = dirE * (radius * rr);\n let c = sampleBase(p + off, t);\n for (var k = 0; k < 8; k = k + 1) {\n let sectorAng = 6.2831853 * f32(k) / 8.0;\n var d = ang - sectorAng;\n d = atan2(sin(d), cos(d));\n let sw = exp(-d * d * 2.2) * radial;\n mSum[k] = mSum[k] + c * sw;\n sSum[k] = sSum[k] + c * c * sw;\n wSum[k] = wSum[k] + sw;\n }\n }\n }\n\n let q = max(mKuwaharaQ(), 1.0);\n var accum = vec3<f32>(0.0);\n var accumW = 0.0;\n for (var k = 0; k < 8; k = k + 1) {\n let wk = max(wSum[k], 1e-4);\n let mean = mSum[k] / wk;\n let var3 = max(sSum[k] / wk - mean * mean, vec3<f32>(0.0));\n let variance = dot(var3, W_LUMA);\n let sectorW = 1.0 / (1.0 + pow(variance * 320.0, q));\n accum = accum + mean * sectorW;\n accumW = accumW + sectorW;\n }\n var result = accum / max(accumW, 1e-4);\n\n // Anchor in near-flat zones so the smoothing only bites at edges.\n let center = sampleBase(p, t);\n result = mix(center, result, clamp(0.35 + 0.65 * A, 0.0, 1.0));\n\n // Faint canvas tooth + pigment-saturation so the flattened patches read as oil paint.\n let tooth = vnoise(p * 300.0) - 0.5;\n result = result * (1.0 + tooth * 0.06 * mCanvasGrain());\n result = saturate3(result, 1.04);\n\n return mix(col0, result, clamp(mStrokeAmount(), 0.0, 1.0));\n}\n\n// \u2500\u2500 Metal \u2014 the two-term anisotropic BRDF (uMedium==8/9; the WGSL twin) \u2500\u2500\u2500\u2500\u2500\u2500\n// The field re-lights as warm folded metal: the luma HEIGHT field (the packed\n// structure-tensor gradient \u2192 the surface normal) catches an anisotropic Blinn streak\n// (brushed metal, running ALONG the coherent edge-tangent) plus a sharp crest, both\n// raked by the IN-STRUCT cursor-synth light (crosses to WGSL \u2014 never uLightDir). The\n// catch is the achromatic-warm anchor (never a cold chrome-blue). ZERO extra taps \u2014\n// the gradient is unpacked from the tensor's .w lane the caller already computed.\nconst METAL_CATCH_WARM: vec3<f32> = vec3<f32>(1.0, 0.97, 0.90);\nconst METAL_HEIGHT_SCALE: f32 = 2.2;\nconst METAL_LIGHT_Z: f32 = 0.55;\nconst METAL_IDLE_RAKE: vec2<f32> = vec2<f32>(0.32, 0.34);\nconst METAL_SHININESS_ANISO: f32 = 6.0;\nconst METAL_SHININESS_CREST: f32 = 40.0;\nconst METAL_COHERENCE_FLOOR: f32 = 0.22;\nconst METAL_BODY_FLOOR: f32 = 0.42;\nconst METAL_GRADIENT_FLATTEN: f32 = 0.55;\nconst METAL_SPARKLE_DENSITY: f32 = 240.0;\nconst METAL_SPARKLE_THRESH: f32 = 0.72;\nconst METAL_SPARKLE_AMP: f32 = 0.6;\n\nfn metalShade(baseCol: vec3<f32>, p: vec2<f32>, stf: vec4<f32>) -> vec3<f32> {\n let tangent = stf.xy;\n let A = stf.z;\n let grad = unpackGrad(stf.w);\n let N = normalize(vec3<f32>(grad * (METAL_HEIGHT_SCALE * mMetalHeightScale()), 1.0));\n let V = vec3<f32>(0.0, 0.0, 1.0);\n // Cursor-synth rake light (u.cursor is in-struct \u2014 crosses to WGSL).\n let L = normalize(vec3<f32>((u.cursor.xy - p) + METAL_IDLE_RAKE, METAL_LIGHT_Z));\n let H = normalize(L + V);\n // Anisotropic streak \u2014 brushed metal along the edge-tangent.\n let tH = dot(normalize(tangent), H.xy);\n let sinTH = sqrt(clamp(1.0 - tH * tH, 0.0, 1.0));\n let streak = pow(clamp(sinTH, 0.0, 1.0), METAL_SHININESS_ANISO);\n let crest = pow(clamp(dot(N, H), 0.0, 1.0), METAL_SHININESS_CREST);\n var spec = streak * crest;\n spec = spec * smoothstep(0.0, METAL_COHERENCE_FLOOR, A);\n // Technicolor valley base \u2014 the body keeps the FIELD hue; luma rides the relief.\n let diff = clamp(dot(N, L), 0.0, 1.0);\n let body = baseCol * (METAL_BODY_FLOOR + (1.0 - METAL_BODY_FLOOR) * diff);\n return body + METAL_CATCH_WARM * (spec * clamp(mMetalPolish(), 0.0, 4.0));\n}\n\nfn mediumMetal(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n return metalShade(col, p, stf);\n}\n\n// metal-gradient (uMedium==9) \u2014 the SAME BRDF over a pre-flattened base + the\n// twinkle-in-place flake sparkle (position FIXED per cell, phase-animated, facing-gated).\nfn mediumMetalGradient(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let stf = structureTensorField(p, t, flowField(p, t));\n let flat = mix(col, vec3<f32>(dot(col, W_LUMA)), METAL_GRADIENT_FLATTEN);\n var metal = metalShade(flat, p, stf);\n let grad = unpackGrad(stf.w);\n let facing = normalize(vec3<f32>(grad * (METAL_HEIGHT_SCALE * mMetalHeightScale()), 1.0)).z;\n let cell = floor(p * METAL_SPARKLE_DENSITY);\n let seed = hash21(cell);\n let tw = pow(clamp(sin(t + seed * 6.2831853), 0.0, 1.0), 40.0);\n let flakeGate = step(METAL_SPARKLE_THRESH, seed);\n metal = metal + METAL_CATCH_WARM * (tw * flakeGate * clamp(facing, 0.0, 1.0) * METAL_SPARKLE_AMP);\n return metal;\n}\n\n// \u2500\u2500 Medium dispatch (the WGSL twin of the GLSL main() if-ladder) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// uMedium: 0 smooth \u00B7 1 pastel \u00B7 2 watercolor \u00B7 3 oil \u00B7 4 crayon \u00B7 5 vangogh \u00B7\n// 6 oil-pastel \u00B7 7 kuwahara \u00B7 8 metal \u00B7 9 metal-gradient. The cheap peer mediums\n// (pastel/watercolor/crayon) + kuwahara + metal port their own bodies; the\n// oil/vangogh/oil-pastel STROKE cascade renders the anisotropic-Kuwahara PAINTERLY\n// finish here (a real oil-paint read, never the smooth core \u2014 the \"NO FALLBACKS on\n// Safari\" mandate; the full per-dab Starry-Night stroke WGSL is the booked\n// W-AURORA-WGPU-MEDIUMS-STROKES tail).\nfn applyMedium(col: vec3<f32>, p: vec2<f32>, t: f32) -> vec3<f32> {\n let medium = u.ints1.x;\n if (medium == 1) { return mediumPastel(col, p, t); }\n if (medium == 2) { return mediumWatercolor(col, p, t); }\n if (medium == 4) { return mediumCrayon(col, p, t); }\n // BG.W-AUR-METAL-FINISH \u2014 metal DUAL-PORTS (a .frag-only metal is invisible on the\n // WGSL primary of both browsers); 8 metal, 9 metal-gradient.\n if (medium == 8) { return mediumMetal(col, p, t); }\n if (medium == 9) { return mediumMetalGradient(col, p, t); }\n // oil(3) / vangogh(5) / oil-pastel(6) / kuwahara(7) all render the painterly\n // anisotropic-Kuwahara finish on the WGSL primary (the WebGL2 fallback carries the\n // full per-dab stroke cascade for oil/vangogh/oil-pastel).\n if (medium == 3 || medium == 5 || medium == 6 || medium == 7) {\n return mediumKuwahara(col, p, t);\n }\n return col;\n}\n\n\n// \u2500\u2500 Full-screen triangle vertex stage (the pilot idiom \u2014 no vertex buffer) \u2500\u2500\nstruct VSOut {\n @builtin(position) pos: vec4<f32>,\n @location(0) uv: vec2<f32>,\n};\n\n@vertex\nfn vs_main(@builtin(vertex_index) vi: u32) -> VSOut {\n // NDC corners of the covering triangle (-1,-1), (3,-1), (-1,3).\n var p = vec2<f32>(-1.0, -1.0);\n if (vi == 1u) { p = vec2<f32>(3.0, -1.0); }\n else if (vi == 2u) { p = vec2<f32>(-1.0, 3.0); }\n var out: VSOut;\n out.pos = vec4<f32>(p, 0.0, 1.0);\n // vUv = aPos * 0.5 + 0.5 (the aurora.vert convention).\n out.uv = p * 0.5 + 0.5;\n return out;\n}\n\n// \u2500\u2500 Fragment stage (the main() transcription) \u2500\u2500\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4<f32> {\n let t = u.scalars0.x;\n let valueVariance = u.scalars0.z;\n let breathDepth = u.scalars2.w;\n let breathPeriod = u.scalars3.x;\n let saturation = u.scalars1.z;\n let paperGrain = u.scalars1.w;\n let alpha = u.scalars2.x;\n let vividness = u.scalars3.w;\n\n let uv = in.uv;\n let pN = uv;\n\n let p_warp = domainWarp(pN, t);\n\n let nf = nucleiField(p_warp, t);\n var col = samplePalette(nf.paletteId);\n col = col * (1.0 + valueVariance * nf.valueMod);\n\n // Breath \u2014 slow global luminance wobble.\n let breath = sin(t * 6.2831 / max(breathPeriod, 1.0));\n col = col * (1.0 + breathDepth * breath * 0.5);\n\n // BC.W-VIZ-AURORA (T4) \u2014 the painterly-medium dispatch. uMedium 0 (smooth) is a\n // no-op pass-through so the DEFAULT smooth config is byte-identical to the prior\n // WGSL primary (the parity capture); uMedium 1-7 render the ported painterly\n // bodies (pastel/watercolor/crayon/kuwahara) or the anisotropic-Kuwahara finish\n // (oil/vangogh/oil-pastel) \u2014 never a silent smooth degrade on Safari 26.\n col = applyMedium(col, pN, t);\n\n // Saturation trim.\n col = saturate3(col, saturation);\n\n // BD.W-AUR-VIVIDNESS \u2014 the \u00A73 chroma floor (warm-anchored, hue-preserving). The WGSL\n // twin of the GLSL call; vividness:0 is a no-op so the smooth/pale default stays gated.\n col = vividnessFloor(col, vividness);\n\n // Tonemap + film grain.\n col = aces(col);\n // gl_FragCoord.xy \u2192 the device-pixel position (the WGSL @builtin(position)).\n let fragCoord = in.pos.xy;\n let grain = hash21(fragCoord + t * 17.0);\n col = col + (grain - 0.5) * paperGrain;\n\n col = clamp(col * 0.985 + 0.008, vec3<f32>(0.0), vec3<f32>(1.0));\n\n // MANDATORY OETF \u2014 closes the seam (the whole pipeline above runs in LINEAR).\n col = linearToSrgb(col);\n\n // 1-LSB triangular IGN dither in DISPLAY space, AFTER the OETF.\n col = col + (1.0 / 255.0) * (ign(fragCoord) - 0.5);\n\n // Premultiply on DISPLAY-space color (matches the WebGL2 path: OETF, then premul).\n return vec4<f32>(col * alpha, alpha);\n}\n";
@@ -0,0 +1 @@
1
+ export declare const AURORA_BRUSH_GLSL = "// \u2500\u2500 Curved swept brushstroke primitive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// A stroke is a curved spine from A to B with quadratic bulge K (sideways offset\n// at midpoint). Width varies along length via a shape profile. Edge is ragged\n// (bristle-modulated), ends are rounded blobs, inside has streak modulation.\n//\n// For pixel p, we invert an approximate projection onto the curved spine:\n// 1) project p onto straight AB axis -> along0, cross0\n// 2) at parameter along0, spine offset = 4\u00B7K\u00B7along0\u00B7(1-along0) perpendicular\n// 3) cross = cross0 - spineOffset, refine along one iteration\n// Coverage blends paint atop col based on per-stroke color sampled from the\n// underlying base at spine midpoint \u2014 so overlapping strokes from different\n// palette regions meet at hard, ragged demarcations.\n\nstruct StrokeHit {\n float coverage; // 0..1\n vec3 color;\n float alongT; // 0..1 along spine, for internal modulation\n float crossN; // cross distance / current half-width, signed\n float edgeN; // distance to edge in half-widths (0 = at edge, 1 = at spine)\n};\n\nStrokeHit noHit() { return StrokeHit(0.0, vec3(0.0), 0.0, 0.0, 0.0); }\n\nvec2 rotateDir(vec2 dir, float angle) {\n float ca = cos(angle), sa = sin(angle);\n return vec2(dir.x * ca - dir.y * sa, dir.x * sa + dir.y * ca);\n}\n\nvec2 safeDir(vec2 dir) {\n float len = length(dir);\n return len > 1e-4 ? dir / len : vec2(1.0, 0.0);\n}\n\n// Shape profile along the stroke. type:\n// 0 tapered \u2014 thin-fat-thin (classic brush)\n// 1 load-drag \u2014 fat start, tapers to a point\n// 2 dab \u2014 ellipse-like, round center\n// 3 even \u2014 near-constant, slight end taper\n// 4 comma \u2014 van-Gogh atomic dab: ASYMMETRIC taper, fat near one end and\n// drawn to a fine point at the other (the divisionist crescent\n// mark). The width peak sits off-centre (~0.32) so the two ends\n// taper at DIFFERENT rates \u2014 a loaded round head + a dragged tail.\nfloat strokeShape(float t, int type) {\n t = clamp(t, 0.0, 1.0);\n if (type == 1) {\n // loaded at t=0, tapering\n return pow(1.0 - t, 0.55) * smoothstep(0.0, 0.08, t);\n } else if (type == 2) {\n // dab / blob\n float d = t - 0.5;\n return exp(-d * d * 12.0);\n } else if (type == 3) {\n // mostly even, slight end softening\n return smoothstep(0.0, 0.08, t) * smoothstep(1.0, 0.92, t) * 0.95 + 0.05;\n } else if (type == 4) {\n // comma / crescent \u2014 width peaks at ~0.32 then drags to a fine tail. The two\n // sides of the peak fall at different exponents (a fat round head, a long thin\n // tail), so the mark reads as a directional van-Gogh comma, not a symmetric oval.\n float peak = 0.32;\n float head = smoothstep(0.0, peak, t); // rounded loaded head\n float tail = pow(clamp((1.0 - t) / (1.0 - peak), 0.0, 1.0), 1.6); // dragged thin tail\n return clamp(min(head, tail) * 1.04, 0.0, 1.0);\n }\n // 0 tapered\n return smoothstep(0.0, 0.22, t) * smoothstep(1.0, 0.78, t);\n}\n\n// A single curved stroke.\n// a, b \u2014 endpoints\n// halfW \u2014 base half-width (world units)\n// bulge \u2014 signed perpendicular midpoint offset, in world units\n// shapeType \u2014 0..3\n// bristleFreq \u2014 spatial frequency of edge raggedness\n// bristleAmp \u2014 0..0.5 fraction of halfW chewed away at edge extrema\n// streakSeed \u2014 uniqueness seed for internal streaks\n// colAtMid \u2014 pre-sampled color at midpoint\nStrokeHit curvedStroke(vec2 p, vec2 a, vec2 b, float halfW,\n float bulge, int shapeType,\n float bristleFreq, float bristleAmp,\n float streakSeed, vec3 colAtMid) {\n vec2 ab = b - a;\n float L = length(ab);\n if (L < 1e-5) return noHit();\n vec2 tang = ab / L;\n vec2 norm = vec2(-tang.y, tang.x);\n\n vec2 rel = p - a;\n float along0 = dot(rel, tang) / L; // straight projection 0..1 along AB\n float cross0 = dot(rel, norm); // signed cross\n\n // Spine sideways offset due to bulge (parabolic)\n float bend = 4.0 * bulge * along0 * (1.0 - along0);\n float cross1 = cross0 - bend;\n\n // One refinement step: as the spine bends, the closest-point along shifts.\n // Spine tangent differs from straight tangent; first-order correction:\n float dBend = 4.0 * bulge * (1.0 - 2.0 * along0); // d(bend)/d(along)\n float along1 = along0 + (cross1 * dBend) / (L * (1.0 + dBend * dBend / (L * L)));\n\n // Bristle-ragged edge: half-width gets chewed by 1D noise along the spine\n float edgeNoise = fbm(vec2(along1 * bristleFreq, streakSeed * 7.3)) - 0.5;\n float edgeNoise2 = fbm(vec2(along1 * bristleFreq * 2.3, streakSeed * 3.1 + 17.0)) - 0.5;\n float edgeMod = 1.0 - bristleAmp * (0.6 + 0.4 * edgeNoise) * (0.5 + edgeNoise2);\n\n // Width profile along the stroke\n float shape = strokeShape(along1, shapeType);\n float halfWNow = halfW * shape * edgeMod;\n\n // Inside-segment coverage\n float cov = 0.0;\n if (along1 >= 0.0 && along1 <= 1.0 && halfWNow > 1e-6) {\n float cn = abs(cross1) / halfWNow;\n // fwidth-derived AA: half-width from the field's screen-space gradient so the\n // edge holds ~1px regardless of zoom/DPR (mirrors metaball.frag.ts:252-255).\n float aaC = max(fwidth(cn), 1e-6);\n cov = 1.0 - smoothstep(1.0 - aaC, 1.0 + aaC, cn);\n }\n\n // End-cap blobs (rounded tips, not perpendicular cuts)\n float capA = 0.0, capB = 0.0;\n {\n vec2 capCenterA = a + norm * (bulge * 0.0); // at a\n vec2 capCenterB = a + tang * L + norm * bend * 0.0 + norm * 0.0; // at b; bend is 0 at endpoints\n capCenterB = b;\n float endShapeA = strokeShape(0.02, shapeType);\n float endShapeB = strokeShape(0.98, shapeType);\n float rA = halfW * endShapeA * (0.9 + 0.2 * fbm(vec2(streakSeed * 13.0)));\n float rB = halfW * endShapeB * (0.9 + 0.2 * fbm(vec2(streakSeed * 19.0 + 5.0)));\n float dA = length(p - capCenterA);\n float dB = length(p - capCenterB);\n // fwidth-derived AA on the clean Euclidean cap distances (mirrors metaball.frag.ts:252-255).\n float aaA = max(fwidth(dA), 1e-6);\n float aaB = max(fwidth(dB), 1e-6);\n capA = 1.0 - smoothstep(rA - aaA, rA + aaA, dA);\n capB = 1.0 - smoothstep(rB - aaB, rB + aaB, dB);\n // Only apply caps if we're BEYOND the segment; otherwise the segment wins.\n capA *= (along1 < 0.05) ? 1.0 : 0.0;\n capB *= (along1 > 0.95) ? 1.0 : 0.0;\n }\n\n float coverage = max(cov, max(capA, capB));\n if (coverage < 0.002) return noHit();\n\n // Edge distance (for impasto later): 0 at edge, 1 at spine\n float edgeDist = halfWNow > 1e-6 ? clamp(1.0 - abs(cross1) / halfWNow, 0.0, 1.0) : 0.0;\n\n return StrokeHit(\n coverage,\n colAtMid,\n clamp(along1, 0.0, 1.0),\n halfWNow > 1e-6 ? cross1 / halfWNow : 0.0,\n edgeDist\n );\n}\n\n// The painterly STROKE mediums (those that deposit via paintStrokeLayers/paintOver):\n// oil (3), van-Gogh (5), oil-pastel (6). For these the stroke OVER-composite runs in\n// OKLab so overlapping complementaries mix through a chromatic path, not the linear-\n// RGB grey mud; the smooth/atmospheric pole never reaches paintOver so it pays nothing.\nbool isPainterlyStroke() {\n return uMedium == 3 || uMedium == 5 || uMedium == 6;\n}\n\n// OKLab OVER-composite: lerp L,a,b of the over-color toward the under-color (the\n// Ottosson matrices spliced from procedural-color.glsl.ts \u2014 no new color math). Two\n// complementary-hued strokes overlapping transition through OKLab, where the midpoint\n// holds chroma, instead of the linear mix() that desaturates toward grey (slice 8 F2).\nvec3 paintOverOklab(vec3 under, vec3 over, float alpha) {\n vec3 labU = linOklab(under);\n vec3 labO = linOklab(over);\n return max(oklabToLinearSrgb(mix(labU, labO, alpha)), vec3(0.0));\n}\n\n// Composite stroke over col with internal streaking + ACCUMULATE paint HEIGHT.\n// streakAmp \u2014 0..0.2 how much internal streaks darken/lighten\n// impastoAmp \u2014 0..1 paint-thickness contribution (the height the relight reads)\n// hardness \u2014 0..1 how crisp the compositing transition is (1 = razor, 0 = creamy)\n//\n// AW.W4.2 \u2014 the fixed-RGB edge rim (the phantom upper-left light) is RETIRED. Each\n// stroke now deposits PAINT HEIGHT into the height accumulator (coverage x per-stroke\n// thickness, perturbed by the bristle/streak fbm for ridges/grooves); mediumOil\n// derives a normal from the accumulated height gradient (dFdx/dFdy) and relights it\n// once with the movable uLightDir source (relightImpasto), in linear before aces().\n//\n// AX.W13 \u2014 the internal streak now perturbs HUE + CHROMA in OKLCh (not value-only),\n// so a single stroke carries a small hue gradient (broken color at the ATOM level \u2014\n// adjacent strokes shimmer like real impasto, not flat stamped swatches; slice 8 F5);\n// and the OVER-composite runs in OKLab on the painterly stroke mediums so overlapping\n// complementaries mix as pigment, not the linear-mix grey (slice 8 F2).\n// impastoFloor \u2014 the per-stroke height-crown floor: oil's 0.4+0.6*edgeN reads\n// floor=0.4 (the crown tapers to 40% at the stroke edge); the van-Gogh\n// profile passes floor=1.0 so each atomic dab catches a FULL-height\n// glint (scope item 1d). The crown magnitude is floor + (1-floor)*edgeN.\nvoid paintOver(inout vec3 col, inout float height, StrokeHit s,\n float streakFreq, float streakAmp,\n float impastoAmp, float hardness, float streakSeed,\n float impastoFloor) {\n if (s.coverage < 0.002) return;\n float strokeOpacity = clamp(uStrokeAmount, 0.0, 1.0);\n if (strokeOpacity <= 0.001) return;\n vec3 c = s.color;\n\n // Internal streaks \u2014 fbm along spine, modulated by cross position. Gives\n // the loaded-brush look: some bristles carry more pigment than others.\n float streakA = fbm(vec2(s.alongT * streakFreq, s.crossN * 2.7 + streakSeed));\n float streakB = fbm(vec2(s.alongT * streakFreq * 0.6 + streakSeed * 3.7, s.crossN * 4.1));\n float streak = 0.6 * (streakA - 0.5) + 0.4 * (streakB - 0.5);\n\n // \u2500\u2500 WITHIN-stroke OKLCh broken color (AX.W13, slice 8 F5). The streak fBm perturbs\n // the stroke's HUE + CHROMA along alongT/crossN, seeded per-stroke, so a single\n // stroke reads a small hue gradient (the atom-level broken-color shimmer). Value is\n // carried by the same streak so the loaded-brush light/dark survives. Gated to the\n // painterly stroke mediums + uBrokenColor (the smooth pole keeps the cheap value-only\n // streak). A second decorrelated fBm drives the hue axis so hue \u2260 a scaled value.\n float hueStreak = fbm(vec2(s.alongT * streakFreq * 0.45 + streakSeed * 5.3,\n s.crossN * 1.9 + streakSeed * 1.7)) - 0.5;\n if (isPainterlyStroke() && uBrokenColor > 0.001) {\n vec3 lch = oklabToOklch(linOklab(c));\n // \u00B1~10\u00B0 within-stroke hue swing + \u00B1~9% chroma, scaled by uBrokenColor. Smaller\n // than the per-stroke cell jitter (brokenColorJitter) \u2014 this is the intra-stroke\n // gradient layered on top of the per-cell pigment patch.\n lch.z += hueStreak * (20.0 * PI / 180.0) * uBrokenColor;\n lch.y = max(lch.y * (1.0 + (streak) * 0.18 * uBrokenColor), 0.0);\n c = max(oklabToLinearSrgb(oklchToOklab(lch)), vec3(0.0));\n }\n // Value streak (the loaded-brush light/dark across the bristles) \u2014 kept for every\n // medium that reaches paintOver (the smooth pole never does). The along-spine value\n // modulation is the loaded-brush light/dark that gives each stroke its OWN directional\n // luminance band \u2014 the structure-tensor signal a low-contrast color field (a uniform-hue\n // oil field) has no other source for (the \u00A74.2 anisotropy lift on the flat-palette case).\n c *= 1.0 + streak * streakAmp * 3.2;\n\n // Cross-stroke ridge/valley shading \u2014 a catch-light along the spine centre, darkening to\n // the stroke edges. This is the strongest DIRECTIONAL luminance cue: it carves a bright\n // ridge down the stroke's length and dark grooves between adjacent strokes, so a field of\n // parallel strokes reads as parallel light/dark bands (the high-A van-Gogh signature) even\n // where the underlying colour is flat. s.edgeN is 0 at the edge, 1 at the spine.\n float ridgeShade = smoothstep(0.0, 0.55, s.edgeN);\n c *= 1.0 + (ridgeShade - 0.5) * 0.30;\n\n float softLimit = mix(0.35, 0.98, hardness);\n float alpha = smoothstep(0.0, 1.0 - softLimit, s.coverage) * strokeOpacity;\n // OKLab OVER-composite on the painterly stroke mediums (overlap mixes as pigment,\n // not grey); the smooth pole never reaches paintOver, so it keeps the cheap path.\n col = isPainterlyStroke() ? paintOverOklab(col, c, alpha) : mix(col, c, alpha);\n\n // \u2500\u2500 Accumulate paint HEIGHT (AW.W4.2). Thickness peaks at the stroke spine and\n // falls toward the impastoFloor at the edge (edgeN: 0=edge, 1=spine), perturbed by\n // the bristle streak so ridges/grooves form. The relight reads the gradient of this\n // field. The van-Gogh profile's floor=1.0 gives every atomic dab a full-height crown.\n float ridge = 0.7 + 0.3 * (streak + 0.5);\n float crown = impastoFloor + (1.0 - impastoFloor) * s.edgeN;\n height += s.coverage * impastoAmp * crown * ridge * alpha;\n}\n\n// AW.W4.2 \u2014 relight the accumulated paint height. Derive a normal from the height\n// gradient (dFdx/dFdy \u2014 derivatives are in-pattern; fwidth is already used for AA),\n// then apply diffuse + Blinn specular from the movable uLightDir/uLightColor source.\n// LINEAR-space lighting BEFORE aces() (the tonemap/OETF stay locked); thin strokes\n// inherit a low shininess, thick impasto raises it (high-height ridges catch a sharp\n// glint). canvasBase is the tooth height so the canvas weave also catches the light.\nvec3 relightImpasto(vec3 col, float height, float canvasBase) {\n float h = height + canvasBase;\n // Height-gradient normal. heightScale trades relief depth for surface flatness.\n float heightScale = 6.0;\n vec3 N = normalize(vec3(-dFdx(h) * 40.0, -dFdy(h) * 40.0, 1.0 / heightScale));\n vec3 L = normalize(uLightDir);\n vec3 V = vec3(0.0, 0.0, 1.0); // view straight on\n vec3 H = normalize(L + V);\n float diff = max(dot(N, L), 0.0);\n // Thick impasto \u2192 high shininess (sharp glint); thin paint \u2192 broad soft sheen.\n float shininess = mix(8.0, 64.0, clamp(height * 2.0, 0.0, 1.0));\n float spec = pow(max(dot(N, H), 0.0), shininess);\n // Modulate the lit terms by how much paint sits here (no relief on bare ground).\n float relief = clamp(h * 1.5, 0.0, 1.0);\n vec3 lit = col * (1.0 + uImpasto * relief * (diff - 0.5) * 0.5 * uLightColor);\n // The specular glint is gated to ACCUMULATED-thick paint (height\u00B2) \u2014 a per-fine-stroke\n // sharp glint on every thin fill dab read as bright isotropic SPECKLE that buried the\n // directional stroke bands (the \u00A74.2 anisotropy / \u00A74.3 slope sink on the low-contrast\n // oil field). Only where real impasto has built up does the raked glint fire, so the\n // highlight tracks the macro ridges, not the fine speckle.\n float specGate = clamp(height, 0.0, 1.0);\n lit += uImpasto * relief * spec * specGate * 0.5 * uLightColor;\n return lit;\n}\n\n// Best-of-9-neighbor placement: sample 3x3 surrounding cells and take the\n// stroke that covers this pixel most. Breaks the grid by per-cell jitter and\n// sparse density via noise thresholding.\n// energyGrade \u2014 the SBR energy-grade magnitude (0 = none, the oil/oil-pastel\n// baseline; 1 = the full van-Gogh Starry-Night cascade \u2014 long\n// confident strokes in the lights/coherent zones, short dabs in\n// the darks/flat zones). The van-Gogh profile carries 1.0 (the\n// energy grade is a PROFILE field, not a buried uMedium==5 branch).\nStrokeHit bestOil(vec2 p, float cellSize, float lenMul, float halfWMul,\n float jitterAmt, float density, int shapeType,\n float bristleAmp, vec2 flow, float t, float seed,\n float energyGrade) {\n vec2 cell = floor(p / cellSize);\n\n StrokeHit best = noHit();\n // 3x3 neighborhood\n for (int dy = -1; dy <= 1; dy++) {\n for (int dx = -1; dx <= 1; dx++) {\n vec2 cc = cell + vec2(float(dx), float(dy));\n vec2 hh = hash22(cc + seed) - 0.5;\n // Density gate \u2014 noise threshold; sparse placement.\n float gate = hash21(cc * 1.7 + seed * 0.3);\n if (gate > density) continue;\n\n vec2 center = (cc + 0.5 + hh * jitterAmt) * cellSize;\n\n // Per-stroke direction source \u2014 the AW.W4.1 strokeOrient switch:\n // uStrokeOrient==0 (flow) \u2014 the layer-provided hand-authored flowField.\n // uStrokeOrient==1 (tensor) \u2014 the structure-tensor minor eigenvector at the\n // cell center (the color field's edge-tangent),\n // so strokes hug the color zones (van Gogh).\n // coh carries the per-cell coherence A for the W4.3 energy grading (long\n // confident strokes where structure is coherent, stubby dabs in flat zones).\n vec2 f;\n float coh = 1.0;\n if (uStrokeOrient == 1) {\n // vec4 (the metal-finish widen) \u2014 .xy tangent + .z coherence; the .w gradient lane\n // is unused here. A vec3 local would be a type-mismatch WebKit rejects (L1c).\n vec4 tf = structureTensorField(center, t, safeDir(flow));\n f = safeDir(tf.xy);\n coh = tf.z;\n } else {\n f = safeDir(flow);\n }\n // Per-stroke deterministic local perturbation so alternate stroke layers stay\n // live. Tensor strokes get FAR less angular jitter (the field already orients them\n // \u2014 over-jittering the tensor strokes scatters their directions and the rendered\n // field reads isotropic, the \u00A74.2 anisotropy floor). The flow-oriented (non-tensor)\n // strokes keep the full jitter (they have no per-cell orientation source).\n float jScale = (uStrokeOrient == 1) ? 0.15 : 1.0;\n float angJ = (hash21(cc + seed + 11.0) - 0.5) * 0.9 * jScale; // +/- 0.45/0.07 rad\n float curlScale = (uStrokeOrient == 1) ? 0.30 : 1.0;\n float localCurl = (fbm(center * (2.6 + seed * 0.11) + seed * 1.9) - 0.5) * 0.55 * uFlowCurl * curlScale;\n vec2 dir = rotateDir(f, angJ + localCurl);\n\n // AX.W13 \u2014 the SBR energy grade is a PROFILE field (energyGrade), not a buried\n // uMedium==5 branch. The van-Gogh profile passes energyGrade=1.0 (the full\n // Starry-Night cascade); oil/oil-pastel pass 0.0 (uniform length). The grade\n // modulates stroke length by local luminance (bright \u2192 long confident strokes,\n // dark \u2192 short dabs, the Kolmogorov/Batchelor congruence) AND by coherence\n // (coherent zones \u2192 long, flat \u2192 stubby), lerped in by energyGrade so a profile\n // can dial the cascade from off (0) to full (1).\n float energy = 1.0;\n if (energyGrade > 0.001) {\n float luma = clamp(dot(sampleBase(center, t), W_LUMA), 0.0, 1.0);\n float graded = mix(0.5, 1.5, luma) * mix(0.6, 1.0, coh);\n energy = mix(1.0, graded, energyGrade);\n }\n\n float lenV = cellSize * lenMul * (0.65 + 0.55 * hash21(cc + seed + 23.0)) * energy;\n float halfW = cellSize * halfWMul * (0.70 + 0.55 * hash21(cc + seed + 41.0));\n float bulge = (hash21(cc + seed + 53.0) - 0.5) * lenV * 0.35;\n\n vec2 a = center - dir * (lenV * 0.5);\n vec2 b = center + dir * (lenV * 0.5);\n\n vec3 colMid = brokenColorJitter(\n sampleBase(center, t),\n hash21(cc + seed + 89.0),\n hash21(cc * 2.3 + seed + 97.0),\n 1.0\n );\n\n StrokeHit h = curvedStroke(p, a, b, halfW, bulge, shapeType,\n 7.0, bristleAmp,\n hash21(cc + seed + 67.0), colMid);\n if (h.coverage > best.coverage) best = h;\n }\n }\n return best;\n}\n";
@@ -0,0 +1 @@
1
+ export declare const AURORA_FLOW_GLSL = "// \u2500\u2500 Flow field \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Structure-tensor prototype (body defined post-sampleBase in the mediums block).\n// Returns vec4(dir.x, dir.y, coherence, packedGrad) \u2014 the minor-eigenvector tangent + A + the\n// metal-gradient .w lane (BG.W-AUR-METAL-FINISH widened vec3\u2192vec4). The forward decl MUST match\n// the vec4 definition or WebKit's compiler rejects the mismatched signature (L1b).\nvec4 structureTensorField(vec2 p, float t, vec2 fallbackDir);\n\nvec2 flowField(vec2 p, float t) {\n vec2 dir = vec2(1.0, 0.0);\n if (uFlowPattern == 1) {\n // radial\n dir = normalize(p - uFlowFocal + 1e-4);\n } else if (uFlowPattern == 2) {\n // swirl \u2014 tangent to radial\n vec2 rad = normalize(p - uFlowFocal + 1e-4);\n dir = vec2(-rad.y, rad.x);\n } else if (uFlowPattern == 3) {\n // diagonal\n float a = radians(uFlowAngle);\n dir = vec2(cos(a), sin(a));\n } else if (uFlowPattern == 4) {\n // multi \u2014 curl-noise driven\n float n = fbm(p * 2.0 + t * 0.02);\n float a = n * 6.2831;\n dir = vec2(cos(a), sin(a));\n } else if (uFlowPattern == 5) {\n // tensor / ETF \u2014 the color field's OWN edge-tangent flow (AW.W4.1). The\n // diagonal angle seeds the smooth fallback the coherence-weighted blend\n // relaxes toward in low-structure zones. Returns directly (no curl/cursor\n // post-mix \u2014 the tensor field already carries the structure orientation;\n // the cursor warp still drives the underlying color field in domainWarp).\n float a = radians(uFlowAngle);\n vec2 fallback = vec2(cos(a), sin(a));\n return structureTensorField(p, t, fallback).xy;\n }\n // curl \u2014 perturb by noise. Radial gets much less curl so rays stay clean.\n if (uFlowCurl > 0.0) {\n float n = fbm(p * 3.0) - 0.5;\n float curlAmt = uFlowCurl;\n if (uFlowPattern == 1) curlAmt *= 0.25; // radial: preserve ray clarity\n if (uFlowPattern == 2) curlAmt *= 0.55; // swirl: allow moderate curl\n float a = atan(dir.y, dir.x) + n * 3.14159 * curlAmt;\n dir = vec2(cos(a), sin(a));\n }\n // cursor influence \u2014 swirl around the cursor position\n if (uCursorStrength > 0.001) {\n vec2 toCur = uCursor - p;\n float d = length(toCur);\n float r = max(uCursorRadius, 0.01);\n float w = exp(-(d * d) / (r * r * 0.5));\n // swirl tangent\n vec2 tangent = vec2(-toCur.y, toCur.x) / max(d, 1e-4);\n float a0 = atan(dir.y, dir.x);\n float a1 = atan(tangent.y, tangent.x);\n // blend angle\n float da = a1 - a0;\n da = atan(sin(da), cos(da)); // wrap to [-pi, pi]\n float a = a0 + da * w * uCursorStrength;\n dir = vec2(cos(a), sin(a));\n }\n // AW.W8.1 \u2014 velocity-reactive swirl-BURST: a fast flick (uCursorBurst, decaying\n // over ~1s) injects a transient flow bias along the pointer velocity, distinct from\n // the steady attraction above (the stateless swirl is SUPERSEDED by this form). The\n // burst is gated by the master tempo scalar on the CPU side (it decays to 0 under\n // PRM/pause), so this term cannot leak motion under reduced-motion.\n if (uCursorBurst > 0.001) {\n vec2 toCur = uCursor - p;\n float d = length(toCur);\n float r = max(uCursorRadius, 0.01);\n float w = exp(-(d * d) / (r * r * 0.7));\n // Bias the flow toward the velocity direction, scaled by the decaying burst.\n vec2 velDir = uCursorVelocity / max(length(uCursorVelocity), 1e-4);\n float a0 = atan(dir.y, dir.x);\n float a1 = atan(velDir.y, velDir.x);\n float da = atan(sin(a1 - a0), cos(a1 - a0));\n float a = a0 + da * w * uCursorBurst * 0.8;\n dir = vec2(cos(a), sin(a));\n }\n return dir;\n}\n";
@@ -0,0 +1,2 @@
1
+ export declare const AURORA_MEDIUMS_PRE_BRUSH_GLSL: string;
2
+ export declare const AURORA_MEDIUMS_POST_BRUSH_GLSL: string;
@@ -0,0 +1,2 @@
1
+ export declare const AURORA_METAL_PACK_GLSL = "\n// \u2500\u2500 Gradient pack (BG.W-AUR-METAL-FINISH) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// structureTensorField re-plumbs its already-computed luma gradient (Gx,Gy) out through\n// the vec4 return's .w lane so the metal medium pays ZERO extra taps (a second Sobel is\n// 8 sampleBase() taps). 12 bits per bounded component ([-4,4]) into one f32, exact under\n// highp; the .xy/.z crayon/kuwahara callers are transparent to the widen.\nfloat packGrad(float gx, float gy) {\n float qx = floor(clamp(gx * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n float qy = floor(clamp(gy * 0.125 + 0.5, 0.0, 1.0) * 4095.0);\n return qx + qy * 4096.0;\n}\nvec2 unpackGrad(float packed) {\n float qy = floor(packed * (1.0 / 4096.0));\n float qx = packed - qy * 4096.0;\n return (vec2(qx, qy) * (1.0 / 4095.0) - 0.5) * 8.0;\n}\n";
2
+ export declare const AURORA_METAL_MEDIUM_GLSL = "#define MEDIUM_METAL 8\n#define MEDIUM_METALGRAD 9\n\n// \u2500\u2500 Metal \u2014 the two-term anisotropic BRDF over the field's own relief (uMedium==8/9,\n// BG.W-AUR-METAL-FINISH) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n// Metal is a MUTUALLY-EXCLUSIVE medium (NOT a finish axis) \u2014 the field re-lights as\n// warm folded metal: the luma HEIGHT field (the packed structure-tensor gradient \u2192\n// the surface normal) catches an anisotropic Blinn streak (brushed metal, the streak\n// runs ALONG the coherent edge-tangent) plus a sharp crest, both raked by a cursor-\n// synthesized light that reads on BOTH backends (uCursor is in-struct \u2014 a phantom\n// uLightDir read would be flat on the WGSL primary). The catch is the ACHROMATIC-WARM\n// anchor (AURORA_CATCH_LIGHT_ANCHOR \u2248 [1.0,0.97,0.90], never a cold chrome-blue). The\n// body keeps the field HUE (technicolor valley base); the height rides the relief.\n// ZERO new taps \u2014 structureTensorField ALREADY computed the gradient (unpacked from .w).\nconst vec3 METAL_CATCH_WARM = vec3(1.0, 0.97, 0.90); // AURORA_CATCH_LIGHT_ANCHOR\nconst float METAL_HEIGHT_SCALE = 2.2; // gradient \u2192 normal tilt (\u00D7 uMetalHeightScale)\nconst float METAL_LIGHT_Z = 0.55; // synth-light z (toward viewer)\nconst vec2 METAL_IDLE_RAKE = vec2(0.32, 0.34); // upper-right idle rake bias\nconst float METAL_SHININESS_ANISO = 6.0; // anisotropic streak exponent (brushed)\nconst float METAL_SHININESS_CREST = 40.0; // crest specular exponent (sharp)\nconst float METAL_COHERENCE_FLOOR = 0.22; // streak gates on edge coherence A\nconst float METAL_BODY_FLOOR = 0.42; // diffuse valley floor (dark side reads)\nconst float METAL_GRADIENT_FLATTEN = 0.55; // metal-gradient pre-flatten toward luma\nconst float METAL_SPARKLE_DENSITY = 240.0; // metal-gradient per-cell flake grid\nconst float METAL_SPARKLE_THRESH = 0.72; // only some cells flake\nconst float METAL_SPARKLE_AMP = 0.6; // flake glint amplitude\n\n// The shared metal BRDF core \u2014 takes the ALREADY-computed structureTensorField vec4 so\n// the caller pays ZERO extra taps (metal-gradient reuses the same stf). WebKit-fenced:\n// every pow base is clamped to [0,1], the exponents are compile-time constants.\nvec3 metalShade(vec3 baseCol, vec2 p, vec4 stf) {\n vec2 tangent = stf.xy;\n float A = stf.z;\n vec2 grad = unpackGrad(stf.w);\n // Height-field normal: N = normalize(vec3(grad * scale, 1)). The luma relief tilts\n // the surface; the flat field reads near vec3(0,0,1) (facing the viewer).\n vec3 N = normalize(vec3(grad * (METAL_HEIGHT_SCALE * uMetalHeightScale), 1.0));\n vec3 V = vec3(0.0, 0.0, 1.0);\n // Cursor-synthesized rake light (in-struct on BOTH backends \u2014 never uLightDir). The\n // idle bias keeps a still field lit from the upper-right; a moving cursor rakes it.\n vec3 L = normalize(vec3((uCursor - p) + METAL_IDLE_RAKE, METAL_LIGHT_Z));\n vec3 H = normalize(L + V);\n // Anisotropic streak \u2014 brushed metal: the highlight runs ALONG the edge-tangent, so\n // it is a function of the H-component PERPENDICULAR to the tangent (sinTH).\n float tH = dot(normalize(tangent), H.xy);\n float sinTH = sqrt(clamp(1.0 - tH * tH, 0.0, 1.0));\n float streak = pow(clamp(sinTH, 0.0, 1.0), METAL_SHININESS_ANISO);\n float crest = pow(clamp(dot(N, H), 0.0, 1.0), METAL_SHININESS_CREST);\n float spec = streak * crest;\n // Coherence gate \u2014 the anisotropic streak reads only where the field has a real edge\n // (a flat zone has no brush direction; A\u22480 \u2192 no streak).\n spec *= smoothstep(0.0, METAL_COHERENCE_FLOOR, A);\n // Technicolor valley base \u2014 the body keeps the FIELD hue; the diffuse term rides the\n // height relief so the ridges brighten and the pits fall toward the floor.\n float diff = clamp(dot(N, L), 0.0, 1.0);\n vec3 body = baseCol * (METAL_BODY_FLOOR + (1.0 - METAL_BODY_FLOOR) * diff);\n // The catch is the achromatic-warm anchor, scaled by the polish knob.\n return body + METAL_CATCH_WARM * (spec * clamp(uMetalPolish, 0.0, 4.0));\n}\n\nvec3 mediumMetal(vec3 col, vec2 p, float t) {\n vec4 stf = structureTensorField(p, t, flowField(p, t));\n return metalShade(col, p, stf);\n}\n\n// metal-gradient (uMedium==9) \u2014 the SAME BRDF over a pre-flattened/gradient base + a\n// twinkle-in-place flake sparkle (position FIXED per cell, PHASE-animated, gated on\n// facing \u2014 flake glint, never a boil).\nvec3 mediumMetalGradient(vec3 col, vec2 p, float t) {\n vec4 stf = structureTensorField(p, t, flowField(p, t));\n // Pre-flatten toward luma (the smoother gradient-metallic base) \u2014 same BRDF, calmer body.\n // NB: flat is a GLSL reserved interpolation qualifier \u2014 WebKit's compiler REJECTS it as an\n // identifier (ANGLE tolerates it); named flatCol so the WebKit aurora shader compiles (L1a).\n vec3 flatCol = mix(col, vec3(dot(col, W_LUMA)), METAL_GRADIENT_FLATTEN);\n vec3 metal = metalShade(flatCol, p, stf);\n // The height-field normal facing (recomputed from the same packed gradient \u2014 ZERO taps).\n vec2 grad = unpackGrad(stf.w);\n float facing = normalize(vec3(grad * (METAL_HEIGHT_SCALE * uMetalHeightScale), 1.0)).z;\n // Twinkle-in-place: a fixed per-cell flake seed, phase-animated glint gated on facing.\n vec2 cell = floor(p * METAL_SPARKLE_DENSITY);\n float seed = hash21(cell);\n float tw = pow(clamp(sin(t + seed * 6.2831853), 0.0, 1.0), 40.0);\n float flakeGate = step(METAL_SPARKLE_THRESH, seed);\n metal += METAL_CATCH_WARM * (tw * flakeGate * clamp(facing, 0.0, 1.0) * METAL_SPARKLE_AMP);\n return metal;\n}\n";
@@ -0,0 +1,13 @@
1
+ export { default as Aurora } from "./Aurora.vue";
2
+ export { resolveRenderMode, isSoftwareWebGLRenderer, type AuroraRenderMode, type ResolveRenderModeOptions, } from "./constants/renderMode";
3
+ export { useAurora } from "./composables/useAurora";
4
+ export type { UseAuroraReturn } from "./composables/useAurora";
5
+ export { useCursorInteraction } from "./composables/useCursorInteraction";
6
+ export { createAurora } from "./composables/runtime";
7
+ export type { AuroraRuntimeMode, AuroraRuntimeOptions } from "./composables/runtime";
8
+ export { DEFAULT_AURORA_CONFIG, PAPER_WASH_GROUND, DEFAULT_VIVIDNESS, VIVID_TARGET, IMAGE_BLUR_MIN_DEFAULT, IMAGE_BLUR_MAX_DEFAULT, MAX_NUCLEI, MAX_STOPS, type AuroraConfig, type AuroraCursorApi, type AuroraFlow, type AuroraInstance, type AuroraInteractivity, type AuroraMedium, type AuroraNucleus, type AuroraSource, type AuroraImageSource, type AuroraImageBlur, type FlowPattern, type OklchStop, type StrokeMode, type StrokeOrient, type WarpMode, } from "./constants/presets";
9
+ export { resolveAtoms, configToAtoms, nucleiPrior, DEFAULT_ATOMS, type AuroraAtoms, type AuroraMotionAtom, type AuroraZones, type AuroraZoneArrangement, type AuroraMediumAtom, type AuroraInteractivityAtom, } from "./composables/atoms";
10
+ export { cssToOklch, deriveAurora, flattenPalette, hexToOklchStop, oklchStopToHex, oklchToLinear, paletteToCssGradient, } from "./composables/color";
11
+ export { auroraFallbackGround, sampleAuroraField, nucleiFieldStatic, relativeLuminance, type AuroraFallbackGround, type AuroraFallbackGroundOptions, type AuroraGroundMetrics, } from "./composables/auroraFallbackGround";
12
+ export type { AuroraHarmony, DeriveAuroraOptions, DeriveEasing, } from "./composables/color";
13
+ export type { AuroraHuePath } from "./constants/presets";
@@ -0,0 +1,23 @@
1
+ import type { HTMLAttributes } from 'vue';
2
+ import { type AvatarVariants } from './';
3
+ type __VLS_Props = {
4
+ class?: HTMLAttributes['class'];
5
+ size?: AvatarVariants['size'];
6
+ shape?: AvatarVariants['shape'];
7
+ };
8
+ declare var __VLS_8: {};
9
+ type __VLS_Slots = {} & {
10
+ default?: (props: typeof __VLS_8) => any;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
13
+ size: "sm" | "md" | "lg" | null;
14
+ shape: "circle" | "square" | null;
15
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
17
+ declare const _default: typeof __VLS_export;
18
+ export default _default;
19
+ type __VLS_WithSlots<T, S> = T & {
20
+ new (): {
21
+ $slots: S;
22
+ };
23
+ };