@mkbabb/glass-ui 5.0.0 → 7.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 (1048) hide show
  1. package/README.md +61 -56
  2. package/dist/DropdownMenuTrigger-ClIq8RJE.js +93 -0
  3. package/dist/FeedbackMark-DZq5001h.js +23 -0
  4. package/dist/Input-9BlLluik.js +77 -0
  5. package/dist/PagerDots-BEq0MgtH.js +311 -0
  6. package/dist/Surface-kFQeYrYv.js +82 -0
  7. package/dist/accent-tone-solve-Cw7WkRD9.js +14 -0
  8. package/dist/animated-digit.js +5 -5
  9. package/dist/asElement-CRnm6A2v.js +9 -0
  10. package/dist/aurora.js +858 -793
  11. package/dist/axes.js +25 -14
  12. package/dist/badge-u65NClWn.js +62 -0
  13. package/dist/badge.js +1 -1
  14. package/dist/blob-config.d.ts +0 -4
  15. package/dist/blob-config.js +1 -1
  16. package/dist/blob.js +490 -424
  17. package/dist/button-Bu9F4uU6.js +98 -0
  18. package/dist/button.js +2 -2
  19. package/dist/canvas.js +1 -1
  20. package/dist/card-Bk96VI2R.js +234 -0
  21. package/dist/card.js +2 -2
  22. package/dist/carousel.d.ts +1 -2
  23. package/dist/carousel.js +109 -238
  24. package/dist/chip-DFZQr6rV.js +129 -0
  25. package/dist/chip.d.ts +0 -9
  26. package/dist/chip.js +2 -81
  27. package/dist/{class-names-5jotTFzp.js → class-names-Cpy5eaBk.js} +11 -4
  28. package/dist/collapsible-BAP95XTt.js +154 -0
  29. package/dist/collapsible.js +1 -1
  30. package/dist/color.js +83 -3
  31. package/dist/{procedural-color.wgsl-ByduxnzV.js → color.wgsl-Ct5o9dpf.js} +410 -3
  32. package/dist/command-SFqDQ65h.js +320 -0
  33. package/dist/command.js +1 -1
  34. package/dist/completion-seal.js +72 -63
  35. package/dist/components/_shared/FeedbackMark.vue.d.ts +11 -0
  36. package/dist/components/_shared/axes.d.ts +9 -3
  37. package/dist/components/_shared/class-names.d.ts +9 -8
  38. package/dist/components/_shared/control-size.d.ts +2 -0
  39. package/dist/components/_shared/disclosure-context.d.ts +7 -0
  40. package/dist/components/_shared/disclosure.css +1 -0
  41. package/dist/components/_shared/feedback.d.ts +7 -0
  42. package/dist/components/_shared/field-control.css +1 -0
  43. package/dist/components/_shared/field-surfaces.css +1 -0
  44. package/dist/components/_shared/fieldControl.d.ts +13 -0
  45. package/dist/components/_shared/floating.d.ts +14 -0
  46. package/dist/components/_shared/index.d.ts +2 -6
  47. package/dist/components/_shared/interaction.d.ts +23 -0
  48. package/dist/components/_shared/menu.css +1 -0
  49. package/dist/components/_shared/menuRowClass.d.ts +2 -0
  50. package/dist/components/_shared/primitive.d.ts +19 -0
  51. package/dist/components/_shared/resolveSurfaceClass.d.ts +3 -0
  52. package/dist/components/_shared/selection.d.ts +7 -0
  53. package/dist/components/_shared/useMotionAxis.d.ts +5 -4
  54. package/dist/components/_shared/valueDomain.d.ts +6 -0
  55. package/dist/components/accordion/Accordion.vue.d.ts +41 -16
  56. package/dist/components/accordion/AccordionContent.vue.d.ts +11 -9
  57. package/dist/components/accordion/AccordionItem.vue.d.ts +12 -9
  58. package/dist/components/accordion/AccordionTrigger.vue.d.ts +8 -11
  59. package/dist/components/accordion/index.d.ts +4 -4
  60. package/dist/components/alert/Alert.vue.d.ts +9 -5
  61. package/dist/components/alert/index.d.ts +17 -8
  62. package/dist/components/animated-digit/AnimatedDigit.vue.d.ts +3 -4
  63. package/dist/components/aurora/Aurora.vue.d.ts +44 -43
  64. package/dist/components/aurora/composables/atoms-fields.d.ts +13 -2
  65. package/dist/components/aurora/composables/atoms.d.ts +52 -50
  66. package/dist/components/aurora/composables/auroraFallbackGround.d.ts +13 -13
  67. package/dist/components/aurora/composables/auroraImageSource.d.ts +4 -5
  68. package/dist/components/aurora/composables/color.d.ts +15 -20
  69. package/dist/components/aurora/composables/frameLoop.d.ts +14 -11
  70. package/dist/components/aurora/composables/glSetup.d.ts +19 -2
  71. package/dist/components/aurora/composables/runtime.d.ts +58 -60
  72. package/dist/components/aurora/composables/uniformBridge.d.ts +9 -14
  73. package/dist/components/aurora/composables/uniformBridgeWGPU.d.ts +21 -22
  74. package/dist/components/aurora/composables/uniformBridgeWGPUImage.d.ts +13 -13
  75. package/dist/components/aurora/composables/useAurora.d.ts +21 -30
  76. package/dist/components/aurora/composables/wgpuSetup.d.ts +10 -8
  77. package/dist/components/aurora/constants/budget.d.ts +12 -25
  78. package/dist/components/aurora/constants/presets.d.ts +47 -58
  79. package/dist/components/aurora/constants/renderMode.d.ts +21 -36
  80. package/dist/components/aurora/constants/shaders/aurora-image.wgsl.d.ts +1 -1
  81. package/dist/components/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -1
  82. package/dist/components/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  83. package/dist/components/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  84. package/dist/components/aurora/constants/shaders/composition.glsl.d.ts +1 -1
  85. package/dist/components/aurora/constants/shaders/flow.glsl.d.ts +1 -1
  86. package/dist/components/aurora/constants/shaders/metal-medium.glsl.d.ts +2 -2
  87. package/dist/components/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -1
  88. package/dist/components/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -1
  89. package/dist/components/aurora/index.d.ts +2 -1
  90. package/dist/components/avatar/Avatar.vue.d.ts +72 -11
  91. package/dist/components/avatar/AvatarFallback.vue.d.ts +1 -2
  92. package/dist/components/avatar/AvatarImage.vue.d.ts +12 -6
  93. package/dist/components/avatar/index.d.ts +3 -9
  94. package/dist/components/avatar/styles.css +1 -0
  95. package/dist/components/badge/Badge.vue.d.ts +2 -9
  96. package/dist/components/badge/index.d.ts +32 -9
  97. package/dist/components/blob/Blob.vue.d.ts +16 -12
  98. package/dist/components/blob/composables/blobSimulation.d.ts +80 -0
  99. package/dist/components/blob/composables/buildMetaballProgram.d.ts +1 -1
  100. package/dist/components/blob/composables/resolveBlobSurface.d.ts +6 -0
  101. package/dist/components/blob/composables/satelliteKinematics.d.ts +3 -3
  102. package/dist/components/blob/composables/uniformBridgeWGPU.d.ts +1 -1
  103. package/dist/components/blob/composables/uploadBlobUniforms.d.ts +4 -31
  104. package/dist/components/blob/composables/useBlobMood.d.ts +5 -5
  105. package/dist/components/blob/composables/useBlobPointer.d.ts +11 -12
  106. package/dist/components/blob/composables/useMetaballRenderer.d.ts +29 -24
  107. package/dist/components/blob/composables/wgpuSetup.d.ts +7 -5
  108. package/dist/components/blob/config.d.ts +1 -1
  109. package/dist/components/blob/index.d.ts +2 -2
  110. package/dist/components/blob/presets.d.ts +2 -2
  111. package/dist/components/blob/shaders/metaball-palette.wgsl.d.ts +1 -1
  112. package/dist/components/blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  113. package/dist/components/blob/shaders/metaball.wgsl.d.ts +1 -1
  114. package/dist/components/blob/shaders/sdf-body.glsl.d.ts +1 -1
  115. package/dist/components/blob/shaders/watercolor-edges.glsl.d.ts +1 -1
  116. package/dist/components/blob/types.d.ts +28 -60
  117. package/dist/components/button/Button.vue.d.ts +27 -19
  118. package/dist/components/button/index.d.ts +1 -9
  119. package/dist/components/button/styles.css +1 -0
  120. package/dist/components/card/Card.vue.d.ts +20 -155
  121. package/dist/components/card/CardAction.vue.d.ts +0 -7
  122. package/dist/components/card/CardContent.vue.d.ts +2 -2
  123. package/dist/components/card/CardDescription.vue.d.ts +2 -2
  124. package/dist/components/card/CardFooter.vue.d.ts +2 -2
  125. package/dist/components/card/CardHeader.vue.d.ts +3 -42
  126. package/dist/components/card/CardTitle.vue.d.ts +6 -3
  127. package/dist/components/card/card-scroll.css +1 -0
  128. package/dist/components/card/index.d.ts +1 -3
  129. package/dist/components/card/styles.css +1 -0
  130. package/dist/components/carousel/Carousel.vue.d.ts +2 -2
  131. package/dist/components/carousel/index.d.ts +0 -3
  132. package/dist/components/carousel/interface.d.ts +2 -0
  133. package/dist/components/carousel/useCarousel.d.ts +2 -2
  134. package/dist/components/checkbox/Checkbox.vue.d.ts +17 -9
  135. package/dist/components/checkbox/index.d.ts +1 -1
  136. package/dist/components/checkbox/styles.css +1 -0
  137. package/dist/components/chip/Chip.vue.d.ts +12 -7
  138. package/dist/components/chip/chipVariants.d.ts +20 -43
  139. package/dist/components/chip/index.d.ts +1 -1
  140. package/dist/components/chip/types.d.ts +45 -30
  141. package/dist/components/collapsible/Collapsible.vue.d.ts +22 -9
  142. package/dist/components/collapsible/CollapsibleContent.vue.d.ts +11 -5
  143. package/dist/components/collapsible/CollapsibleTrigger.vue.d.ts +12 -9
  144. package/dist/components/collapsible/index.d.ts +3 -3
  145. package/dist/components/combobox/Combobox.vue.d.ts +10 -20
  146. package/dist/components/combobox/ComboboxAnchor.vue.d.ts +2 -6
  147. package/dist/components/combobox/ComboboxEmpty.vue.d.ts +2 -6
  148. package/dist/components/combobox/ComboboxGroup.vue.d.ts +2 -7
  149. package/dist/components/combobox/ComboboxInput.vue.d.ts +7 -12
  150. package/dist/components/combobox/ComboboxItem.vue.d.ts +7 -11
  151. package/dist/components/combobox/ComboboxItemIndicator.vue.d.ts +2 -6
  152. package/dist/components/combobox/ComboboxList.vue.d.ts +14 -17
  153. package/dist/components/combobox/ComboboxTrigger.vue.d.ts +16 -0
  154. package/dist/components/combobox/index.d.ts +2 -3
  155. package/dist/components/combobox/types.d.ts +87 -0
  156. package/dist/components/command/Command.vue.d.ts +9 -23
  157. package/dist/components/command/CommandDialog.vue.d.ts +8 -10
  158. package/dist/components/command/CommandEmpty.vue.d.ts +2 -6
  159. package/dist/components/command/CommandGroup.vue.d.ts +2 -7
  160. package/dist/components/command/CommandInput.vue.d.ts +6 -7
  161. package/dist/components/command/CommandItem.vue.d.ts +7 -11
  162. package/dist/components/command/CommandList.vue.d.ts +12 -19
  163. package/dist/components/command/CommandSeparator.vue.d.ts +2 -6
  164. package/dist/components/command/CommandShortcut.vue.d.ts +2 -2
  165. package/dist/components/command/dialogContext.d.ts +6 -0
  166. package/dist/components/command/index.d.ts +10 -10
  167. package/dist/components/command/styles.css +1 -0
  168. package/dist/components/command/types.d.ts +27 -0
  169. package/dist/components/completion-seal/CompletionSeal.vue.d.ts +2 -2
  170. package/dist/components/completion-seal/constants.d.ts +2 -2
  171. package/dist/components/completion-seal/styles.css +1 -0
  172. package/dist/components/configurator/Configurator.vue.d.ts +6 -6
  173. package/dist/components/configurator/ConfiguratorLayer.vue.d.ts +14 -18
  174. package/dist/components/configurator/ConfiguratorRow.vue.d.ts +14 -17
  175. package/dist/components/configurator/size.d.ts +5 -7
  176. package/dist/components/configurator/styles.css +1 -0
  177. package/dist/components/constellation/Constellation.vue.d.ts +7 -2
  178. package/dist/components/constellation/composables/createConstellationField.d.ts +2 -2
  179. package/dist/components/constellation/composables/useConstellation.d.ts +3 -16
  180. package/dist/components/constellation/constants.d.ts +14 -24
  181. package/dist/components/constellation/constellationField.d.ts +8 -11
  182. package/dist/components/constellation/constellationInteraction.d.ts +9 -9
  183. package/dist/components/constellation/constellationRender.d.ts +11 -21
  184. package/dist/components/constellation/constellationTypes.d.ts +64 -62
  185. package/dist/components/constellation/constellationWell.d.ts +2 -2
  186. package/dist/components/constellation/index.d.ts +1 -1
  187. package/dist/components/dark-mode-toggle/DarkModeToggle.vue.d.ts +12 -0
  188. package/dist/components/dark-mode-toggle/dark-mode-toggle.css +1 -0
  189. package/dist/components/dark-mode-toggle/index.d.ts +2 -0
  190. package/dist/components/data-table/DataTable.vue.d.ts +12 -48
  191. package/dist/components/data-table/composables/useDataTableRowIdentity.d.ts +5 -23
  192. package/dist/components/data-table/index.d.ts +1 -2
  193. package/dist/components/data-table/styles.css +1 -0
  194. package/dist/components/data-table/types.d.ts +36 -13
  195. package/dist/components/deck/constants.d.ts +0 -10
  196. package/dist/components/deck/index.d.ts +0 -2
  197. package/dist/components/dialog/Dialog.vue.d.ts +8 -3
  198. package/dist/components/dialog/DialogClose.vue.d.ts +3 -1
  199. package/dist/components/dialog/DialogContent.vue.d.ts +28 -85
  200. package/dist/components/dialog/DialogDescription.vue.d.ts +5 -6
  201. package/dist/components/dialog/DialogTitle.vue.d.ts +5 -6
  202. package/dist/components/dialog/DialogTrigger.vue.d.ts +3 -1
  203. package/dist/components/dialog/ModalOverlay.vue.d.ts +45 -0
  204. package/dist/components/dialog/dialogStageContext.d.ts +7 -0
  205. package/dist/components/dialog/index.d.ts +8 -9
  206. package/dist/components/dialog/placement.css +1 -0
  207. package/dist/components/dialog/sheet-motion.d.ts +17 -0
  208. package/dist/components/dock/DockControl.vue.d.ts +13 -16
  209. package/dist/components/dock/DockCrossfade.vue.d.ts +4 -8
  210. package/dist/components/dock/DockLayer.vue.d.ts +2 -3
  211. package/dist/components/dock/DockLayerGroup.vue.d.ts +6 -6
  212. package/dist/components/dock/DockSeparator.vue.d.ts +8 -8
  213. package/dist/components/dock/GlassDock.vue.d.ts +1 -0
  214. package/dist/components/dock/composables/dockContext.d.ts +4 -14
  215. package/dist/components/dock/composables/dockCrossfadeContext.d.ts +6 -7
  216. package/dist/components/dock/composables/dockMorphMeasure.d.ts +6 -75
  217. package/dist/components/dock/composables/index.d.ts +1 -1
  218. package/dist/components/dock/composables/useDockClickIntegrity.d.ts +5 -1
  219. package/dist/components/dock/composables/useDockHold.d.ts +4 -5
  220. package/dist/components/dock/composables/useDockMorph.d.ts +26 -0
  221. package/dist/components/dock/composables/useDockOverflowFit.d.ts +7 -9
  222. package/dist/components/dock/composables/useDockSearch.d.ts +8 -8
  223. package/dist/components/dock/composables/useDockShellProps.d.ts +53 -43
  224. package/dist/components/dock/composables/useDockSpring.d.ts +7 -11
  225. package/dist/components/dock/composables/useDockState.d.ts +14 -5
  226. package/dist/components/dock/composables/useDockTouchGate.d.ts +14 -23
  227. package/dist/components/dock/constants.d.ts +5 -90
  228. package/dist/components/dock/index.d.ts +2 -6
  229. package/dist/components/dock/styles/adaptive-legibility.css +1 -0
  230. package/dist/components/dock/styles/controls/icon-button.css +1 -0
  231. package/dist/{styles/dock-controls → components/dock/styles/controls}/touch-floor.css +1 -1
  232. package/dist/components/dock/styles/controls.css +1 -0
  233. package/dist/components/dock/styles/crossfade.css +1 -0
  234. package/dist/{styles/dock → components/dock/styles}/density.css +1 -1
  235. package/dist/components/dock/styles/dock.css +1 -0
  236. package/dist/components/dock/styles/index.css +1 -0
  237. package/dist/components/dock/styles/layer-group.css +1 -0
  238. package/dist/components/dock/styles/layers.css +1 -0
  239. package/dist/components/dock/styles/morph.css +1 -0
  240. package/dist/components/dock/styles/overflow.css +1 -0
  241. package/dist/components/dock/styles/shape.css +1 -0
  242. package/dist/components/dock/styles/shell.css +1 -0
  243. package/dist/components/drawer/Drawer.vue.d.ts +20 -23
  244. package/dist/components/drawer/DrawerContent.vue.d.ts +15 -16
  245. package/dist/components/drawer/DrawerDescription.vue.d.ts +5 -6
  246. package/dist/components/drawer/DrawerOverlay.vue.d.ts +6 -6
  247. package/dist/components/drawer/DrawerTitle.vue.d.ts +5 -6
  248. package/dist/components/drawer/composables/drawerSnapContext.d.ts +9 -1
  249. package/dist/components/drawer/composables/useDrawerSnap.d.ts +3 -1
  250. package/dist/components/drawer/constants.d.ts +10 -28
  251. package/dist/components/drawer/index.d.ts +13 -15
  252. package/dist/components/drawer/styles.css +1 -0
  253. package/dist/components/dropdown-menu/DropdownMenu.vue.d.ts +43 -16
  254. package/dist/components/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +22 -13
  255. package/dist/components/dropdown-menu/DropdownMenuContent.vue.d.ts +28 -19
  256. package/dist/components/dropdown-menu/DropdownMenuGroup.vue.d.ts +6 -4
  257. package/dist/components/dropdown-menu/DropdownMenuItem.vue.d.ts +21 -9
  258. package/dist/components/dropdown-menu/DropdownMenuLabel.vue.d.ts +9 -9
  259. package/dist/components/dropdown-menu/DropdownMenuRadioGroup.vue.d.ts +13 -6
  260. package/dist/components/dropdown-menu/DropdownMenuRadioItem.vue.d.ts +18 -11
  261. package/dist/components/dropdown-menu/DropdownMenuSeparator.vue.d.ts +5 -6
  262. package/dist/components/dropdown-menu/DropdownMenuShortcut.vue.d.ts +7 -8
  263. package/dist/components/dropdown-menu/DropdownMenuSub.vue.d.ts +15 -7
  264. package/dist/components/dropdown-menu/DropdownMenuSubContent.vue.d.ts +24 -17
  265. package/dist/components/dropdown-menu/DropdownMenuSubTrigger.vue.d.ts +11 -9
  266. package/dist/components/dropdown-menu/DropdownMenuTrigger.vue.d.ts +18 -5
  267. package/dist/components/dropdown-menu/index.d.ts +15 -16
  268. package/dist/components/dropdown-menu/styles.css +1 -0
  269. package/dist/components/dropdown-menu/useMenuTrigger.d.ts +2 -9
  270. package/dist/components/easing/EasingConfigurator.vue.d.ts +1 -1
  271. package/dist/components/easing/EasingPicker.vue.d.ts +2 -2
  272. package/dist/components/easing/composables/useEasingPicker.d.ts +8 -7
  273. package/dist/components/easing/constants.d.ts +3 -1
  274. package/dist/components/expandable-container/ExpandableContainer.vue.d.ts +1 -25
  275. package/dist/components/expandable-container/styles.css +1 -0
  276. package/dist/components/fading-scroll/FadingScroll.vue.d.ts +4 -0
  277. package/dist/components/fading-scroll/composables/useFadingScroll.d.ts +7 -3
  278. package/dist/components/fading-scroll/constants.d.ts +1 -2
  279. package/dist/components/fourier-field/FourierField.vue.d.ts +10 -6
  280. package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +1 -1
  281. package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +1 -1
  282. package/dist/components/fourier-field/composables/useFourierField.d.ts +6 -5
  283. package/dist/components/fourier-field/constants.d.ts +10 -10
  284. package/dist/components/fourier-field/index.d.ts +3 -3
  285. package/dist/components/fourier-field/presets.d.ts +3 -3
  286. package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +2 -2
  287. package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
  288. package/dist/components/handmark/HandMark.vue.d.ts +2 -2
  289. package/dist/components/handmark/brush.d.ts +1 -1
  290. package/dist/components/handmark/composables/useHandMark.d.ts +4 -4
  291. package/dist/components/handmark/constants.d.ts +10 -10
  292. package/dist/components/handmark/geometry.d.ts +9 -9
  293. package/dist/components/handmark/index.d.ts +11 -14
  294. package/dist/components/handmark/noise.d.ts +3 -3
  295. package/dist/components/handmark/types.d.ts +2 -2
  296. package/dist/components/header-ribbon/HeaderRibbon.vue.d.ts +3 -21
  297. package/dist/components/header-ribbon/styles.css +1 -0
  298. package/dist/components/header-ribbon/types.d.ts +5 -2
  299. package/dist/components/index.d.ts +0 -4
  300. package/dist/components/infinite-scroll/composables/types.d.ts +1 -1
  301. package/dist/components/infinite-scroll/index.d.ts +1 -0
  302. package/dist/components/input/Input.vue.d.ts +10 -35
  303. package/dist/components/input/index.d.ts +2 -1
  304. package/dist/components/input/types.d.ts +22 -0
  305. package/dist/components/instrument-chassis/InstrumentChassis.vue.d.ts +10 -84
  306. package/dist/components/instrument-chassis/index.d.ts +1 -2
  307. package/dist/components/instrument-chassis/styles.css +1 -0
  308. package/dist/components/instrument-chassis/types.d.ts +13 -0
  309. package/dist/components/label/Label.vue.d.ts +9 -14
  310. package/dist/components/label/index.d.ts +1 -1
  311. package/dist/components/labeled-field/LabeledField.vue.d.ts +11 -99
  312. package/dist/components/labeled-field/LabeledInput.vue.d.ts +5 -18
  313. package/dist/components/labeled-field/LabeledSelect.vue.d.ts +12 -18
  314. package/dist/components/labeled-field/LabeledSlider.vue.d.ts +12 -18
  315. package/dist/components/labeled-field/LabeledSwitch.vue.d.ts +14 -17
  316. package/dist/components/labeled-field/index.d.ts +1 -0
  317. package/dist/components/labeled-field/types.d.ts +50 -0
  318. package/dist/components/liquid-grid/LiquidGrid.vue.d.ts +4 -0
  319. package/dist/components/liquid-grid/composables/liquidGrid.d.ts +5 -5
  320. package/dist/components/liquid-grid/composables/useLiquidGrid.d.ts +2 -1
  321. package/dist/components/liquid-grid/constants.d.ts +6 -7
  322. package/dist/components/liquid-grid/shaders/liquid-grid.glsl.d.ts +1 -1
  323. package/dist/components/liquid-grid/shaders/liquid-grid.wgsl.d.ts +1 -1
  324. package/dist/components/metric/Metric.vue.d.ts +24 -0
  325. package/dist/components/metric/MetricCell.vue.d.ts +26 -0
  326. package/dist/components/metric/MetricRow.vue.d.ts +22 -0
  327. package/dist/components/metric/MetricStack.vue.d.ts +16 -0
  328. package/dist/components/metric/coalesce-metric.d.ts +7 -28
  329. package/dist/components/metric/index.d.ts +5 -0
  330. package/dist/components/metric/styles.css +1 -0
  331. package/dist/components/metric/types.d.ts +32 -0
  332. package/dist/components/number-field/NumberField.vue.d.ts +21 -9
  333. package/dist/components/number-field/NumberFieldContent.vue.d.ts +2 -2
  334. package/dist/components/number-field/NumberFieldDecrement.vue.d.ts +6 -6
  335. package/dist/components/number-field/NumberFieldIncrement.vue.d.ts +6 -6
  336. package/dist/components/number-field/NumberFieldInput.vue.d.ts +1 -6
  337. package/dist/components/number-field/context.d.ts +6 -0
  338. package/dist/components/number-field/index.d.ts +5 -5
  339. package/dist/components/number-field/styles.css +1 -0
  340. package/dist/components/pager-dots/PagerDots.vue.d.ts +1 -1
  341. package/dist/components/pager-dots/constants.d.ts +1 -2
  342. package/dist/components/pager-dots/index.d.ts +0 -2
  343. package/dist/components/paper-backdrop/PaperBackdrop.vue.d.ts +1 -14
  344. package/dist/components/paper-backdrop/index.d.ts +1 -1
  345. package/dist/components/popover/Popover.vue.d.ts +24 -36
  346. package/dist/components/popover/PopoverContent.vue.d.ts +23 -29
  347. package/dist/components/popover/PopoverTrigger.vue.d.ts +12 -7
  348. package/dist/components/popover/index.d.ts +3 -3
  349. package/dist/components/popover/popoverContext.d.ts +3 -4
  350. package/dist/components/progress/Progress.vue.d.ts +6 -49
  351. package/dist/components/progress/index.d.ts +1 -5
  352. package/dist/components/progress/types.d.ts +19 -0
  353. package/dist/components/pulse/Pulse.vue.d.ts +8 -47
  354. package/dist/components/pulse/index.d.ts +1 -0
  355. package/dist/components/radio-group/RadioGroup.vue.d.ts +27 -15
  356. package/dist/components/radio-group/RadioGroupItem.vue.d.ts +9 -6
  357. package/dist/components/radio-group/index.d.ts +2 -0
  358. package/dist/components/radio-group/styles.css +1 -0
  359. package/dist/components/scroll-progress-rim/styles.css +1 -0
  360. package/dist/components/search/FuzzySearch.vue.d.ts +4 -2
  361. package/dist/components/search/SearchBar.vue.d.ts +3 -3
  362. package/dist/components/search/searchVariants.d.ts +15 -17
  363. package/dist/components/select/Select.vue.d.ts +25 -14
  364. package/dist/components/select/SelectContent.vue.d.ts +26 -29
  365. package/dist/components/select/SelectGroup.vue.d.ts +7 -11
  366. package/dist/components/select/SelectItem.vue.d.ts +24 -13
  367. package/dist/components/select/SelectLabel.vue.d.ts +7 -11
  368. package/dist/components/select/SelectScrollDownButton.vue.d.ts +3 -4
  369. package/dist/components/select/SelectScrollUpButton.vue.d.ts +3 -4
  370. package/dist/components/select/SelectSeparator.vue.d.ts +5 -6
  371. package/dist/components/select/SelectTrigger.vue.d.ts +15 -41
  372. package/dist/components/select/SelectValue.vue.d.ts +13 -7
  373. package/dist/components/select/index.d.ts +16 -10
  374. package/dist/components/separator/Separator.vue.d.ts +11 -6
  375. package/dist/components/separator/index.d.ts +1 -1
  376. package/dist/components/skeleton/Skeleton.vue.d.ts +3 -31
  377. package/dist/components/slider/Slider.vue.d.ts +10 -35
  378. package/dist/components/slider/index.d.ts +1 -45
  379. package/dist/components/slider/types.d.ts +25 -0
  380. package/dist/components/sortable-list/SortableList.vue.d.ts +1 -1
  381. package/dist/components/sortable-list/composables/ghostRenderer.d.ts +1 -1
  382. package/dist/components/sortable-list/composables/touchGate.d.ts +1 -1
  383. package/dist/components/sortable-list/composables/transitionTiming.d.ts +1 -1
  384. package/dist/components/status-dot/StatusDot.vue.d.ts +7 -10
  385. package/dist/components/status-dot/index.d.ts +1 -0
  386. package/dist/components/surface/Surface.vue.d.ts +13 -21
  387. package/dist/components/surface/index.d.ts +2 -2
  388. package/dist/components/switch/Switch.vue.d.ts +20 -11
  389. package/dist/components/switch/index.d.ts +2 -1
  390. package/dist/components/switch/styles.css +1 -0
  391. package/dist/components/table/Table.vue.d.ts +5 -1
  392. package/dist/components/tabs/SegmentedTabs.vue.d.ts +31 -13
  393. package/dist/components/tabs/composables/useTabDragMorph.d.ts +6 -6
  394. package/dist/components/tabs/composables/useTabResponsive.d.ts +5 -6
  395. package/dist/components/tabs/composables/useTabRovingFocus.d.ts +16 -16
  396. package/dist/components/tabs/constants.d.ts +1 -1
  397. package/dist/components/tabs/index.d.ts +1 -1
  398. package/dist/components/tabs/styles/drag.css +1 -0
  399. package/dist/components/tabs/styles/segmented.css +1 -0
  400. package/dist/components/tags-input/TagsInput.vue.d.ts +28 -15
  401. package/dist/components/tags-input/TagsInputInput.vue.d.ts +8 -6
  402. package/dist/components/tags-input/TagsInputItem.vue.d.ts +9 -8
  403. package/dist/components/tags-input/TagsInputItemDelete.vue.d.ts +5 -6
  404. package/dist/components/tags-input/TagsInputItemText.vue.d.ts +5 -6
  405. package/dist/components/tags-input/context.d.ts +5 -0
  406. package/dist/components/tags-input/index.d.ts +5 -5
  407. package/dist/components/tags-input/styles.css +1 -0
  408. package/dist/components/textarea/Textarea.vue.d.ts +10 -55
  409. package/dist/components/textarea/index.d.ts +2 -1
  410. package/dist/components/textarea/types.d.ts +22 -0
  411. package/dist/components/timeline/ContinuousMarkers.vue.d.ts +2 -4
  412. package/dist/components/timeline/ContinuousRail.vue.d.ts +3 -6
  413. package/dist/components/timeline/ContinuousTimeline.vue.d.ts +11 -12
  414. package/dist/components/timeline/GlassTimeline.vue.d.ts +9 -10
  415. package/dist/components/timeline/ScrubberTimeline.vue.d.ts +4 -4
  416. package/dist/components/timeline/SegmentedTimeline.vue.d.ts +2 -3
  417. package/dist/components/timeline/geometry.d.ts +3 -4
  418. package/dist/components/timeline/types.d.ts +3 -3
  419. package/dist/components/toast/Toast.vue.d.ts +38 -80
  420. package/dist/components/toast/ToastAction.vue.d.ts +5 -5
  421. package/dist/components/toast/ToastClose.vue.d.ts +4 -5
  422. package/dist/components/toast/ToastDescription.vue.d.ts +4 -5
  423. package/dist/components/toast/ToastTitle.vue.d.ts +4 -5
  424. package/dist/components/toast/Toaster.vue.d.ts +1 -1
  425. package/dist/components/toast/index.d.ts +8 -9
  426. package/dist/components/toast/use-toast.d.ts +20 -163
  427. package/dist/components/toggle-group/ToggleGroup.vue.d.ts +44 -22
  428. package/dist/components/toggle-group/ToggleGroupItem.vue.d.ts +11 -9
  429. package/dist/components/toggle-group/index.d.ts +3 -2
  430. package/dist/components/toggle-group/styles.css +1 -0
  431. package/dist/components/toggle-group/toggleGroupContext.d.ts +4 -15
  432. package/dist/components/tooltip/Tooltip.vue.d.ts +20 -7
  433. package/dist/components/tooltip/TooltipContent.vue.d.ts +20 -12
  434. package/dist/components/tooltip/TooltipProvider.vue.d.ts +12 -5
  435. package/dist/components/tooltip/TooltipTrigger.vue.d.ts +12 -5
  436. package/dist/components/tooltip/index.d.ts +4 -4
  437. package/dist/components/typewriter/TypewriterText.vue.d.ts +1 -4
  438. package/dist/components/typewriter/composables/useTypewriter.d.ts +1 -1
  439. package/dist/components/typewriter/utils/graphemes.d.ts +1 -0
  440. package/dist/components/typewriter/utils/timing.d.ts +0 -2
  441. package/dist/components/watercolor-dot/WatercolorDot.vue.d.ts +5 -18
  442. package/dist/components/watercolor-dot/useWatercolorBlob.d.ts +1 -4
  443. package/dist/composables/color/accent-tone-solve.d.ts +2 -5
  444. package/dist/composables/color/index.d.ts +31 -38
  445. package/dist/composables/color/useAccentTone.d.ts +0 -3
  446. package/dist/composables/color/value.d.ts +21 -0
  447. package/dist/composables/context/createContext.d.ts +2 -2
  448. package/dist/composables/dark/index.d.ts +1 -1
  449. package/dist/composables/dark/useGlobalDark.d.ts +7 -6
  450. package/dist/composables/dom/useBreakpoint.d.ts +2 -2
  451. package/dist/composables/dom/useClipboard.d.ts +28 -52
  452. package/dist/composables/dom/useDocumentVisibility.d.ts +3 -1
  453. package/dist/composables/dom/useIdleReady.d.ts +5 -6
  454. package/dist/composables/dom/useTokenColor.d.ts +2 -2
  455. package/dist/composables/dom/useUserInvalidAria.d.ts +2 -3
  456. package/dist/composables/dom/useViewportReady.d.ts +4 -4
  457. package/dist/composables/glass/backdropLuminanceSample.d.ts +7 -6
  458. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +7 -1
  459. package/dist/composables/glass/textureUpload.d.ts +8 -10
  460. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +42 -19
  461. package/dist/composables/glass/useSpecularPointer.d.ts +6 -6
  462. package/dist/composables/glass/useSpecularTracking.d.ts +12 -15
  463. package/dist/composables/glass/wave/waveField.d.ts +2 -2
  464. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -1
  465. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -1
  466. package/dist/composables/glass/webgl/backingSize.d.ts +5 -8
  467. package/dist/composables/glass/webgl/compile.d.ts +1 -1
  468. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +20 -20
  469. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -28
  470. package/dist/composables/glass/webgl/visibility.d.ts +3 -4
  471. package/dist/composables/glass/webgpu/rendererStatus.d.ts +13 -0
  472. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +13 -10
  473. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -1
  474. package/dist/composables/glass/webgpu/webgpuCanvasTypes.d.ts +14 -10
  475. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +15 -16
  476. package/dist/composables/motion/core/asElement.d.ts +2 -0
  477. package/dist/composables/motion/{constants.d.ts → core/constants.d.ts} +2 -3
  478. package/dist/composables/motion/core/index.d.ts +20 -23
  479. package/dist/composables/motion/core/useReducedMotion.d.ts +5 -0
  480. package/dist/composables/motion/core/useViewTransition.d.ts +44 -0
  481. package/dist/composables/motion/index.d.ts +14 -16
  482. package/dist/composables/motion/{useDockCtaReceive.d.ts → morph/useDockCtaReceive.d.ts} +57 -3
  483. package/dist/composables/motion/{useDragMorph.d.ts → morph/useDragMorph.d.ts} +7 -7
  484. package/dist/composables/motion/morph/useElementMorph.d.ts +50 -0
  485. package/dist/composables/motion/{useLeadTrail.d.ts → morph/useLeadTrail.d.ts} +6 -6
  486. package/dist/composables/motion/{useSelectionGroup.d.ts → morph/useSelectionGroup.d.ts} +7 -5
  487. package/dist/composables/motion/{useSelectionIndicator.d.ts → morph/useSelectionIndicator.d.ts} +9 -16
  488. package/dist/composables/motion/{useAnimatedNumber.d.ts → number/useAnimatedNumber.d.ts} +1 -6
  489. package/dist/composables/motion/{useCountup.d.ts → number/useCountup.d.ts} +1 -6
  490. package/dist/composables/motion/{useNumericTransition.d.ts → number/useNumericTransition.d.ts} +4 -2
  491. package/dist/composables/motion/{pointerFieldMappings.d.ts → pointer/pointerFieldMappings.d.ts} +7 -10
  492. package/dist/composables/motion/{usePointerVelocityField.d.ts → pointer/usePointerVelocityField.d.ts} +1 -1
  493. package/dist/composables/motion/{bloomUpField.d.ts → reveal/bloomUpField.d.ts} +1 -1
  494. package/dist/composables/motion/reveal/useBloomUp.d.ts +33 -0
  495. package/dist/composables/motion/{useLiquidReveal.d.ts → reveal/useLiquidReveal.d.ts} +5 -5
  496. package/dist/composables/motion/{useStagger.d.ts → reveal/useStagger.d.ts} +3 -3
  497. package/dist/composables/motion/reveal/useStaggerReveal.d.ts +28 -0
  498. package/dist/composables/motion/{useTextHighlight.d.ts → reveal/useTextHighlight.d.ts} +2 -1
  499. package/dist/composables/motion/{useScrollChrome.d.ts → scroll/useScrollChrome.d.ts} +2 -2
  500. package/dist/composables/motion/{useScrollProgress.d.ts → scroll/useScrollProgress.d.ts} +12 -2
  501. package/dist/composables/motion/{springPresets.d.ts → spring/springPresets.d.ts} +8 -7
  502. package/dist/composables/motion/spring/springProjection.d.ts +19 -0
  503. package/dist/composables/motion/{useLiquidFlex.d.ts → spring/useLiquidFlex.d.ts} +11 -12
  504. package/dist/composables/motion/{useLiquidPress.d.ts → spring/useLiquidPress.d.ts} +15 -7
  505. package/dist/composables/motion/{useSpring.d.ts → spring/useSpring.d.ts} +5 -2
  506. package/dist/composables/motion/{useSpringMount.d.ts → spring/useSpringMount.d.ts} +8 -1
  507. package/dist/composables/sidebar/types.d.ts +3 -3
  508. package/dist/configurator-M5OaIlJd.js +311 -0
  509. package/dist/configurator.js +2 -3
  510. package/dist/{constants-D8lSMkOz.js → constants-nBz23tJE.js} +1 -1
  511. package/dist/constellation.js +230 -565
  512. package/dist/createCanvasLifecycle-DbXRwjU_.js +214 -0
  513. package/dist/dark-mode-toggle.d.ts +1 -0
  514. package/dist/dark-mode-toggle.js +43 -0
  515. package/dist/dark-z_P5QwqI.js +70 -0
  516. package/dist/dark.d.ts +1 -2
  517. package/dist/dark.js +2 -20
  518. package/dist/data-table-BygKg6ZA.js +491 -0
  519. package/dist/data-table.js +2 -2
  520. package/dist/deck.js +12 -23
  521. package/dist/dialog-TNRDkcE4.js +385 -0
  522. package/dist/dialog.js +2 -3
  523. package/dist/dock.js +624 -908
  524. package/dist/dockContext-BUTlGRNJ.js +13 -0
  525. package/dist/dom.js +134 -7
  526. package/dist/drawer.js +291 -193
  527. package/dist/dropdown-menu-BlbnvMaZ.js +507 -0
  528. package/dist/dropdown-menu.js +3 -2
  529. package/dist/easing.d.ts +0 -9
  530. package/dist/easing.js +385 -222
  531. package/dist/expandable-container.js +107 -85
  532. package/dist/fading-scroll-DhxXIhm2.js +96 -0
  533. package/dist/fading-scroll.js +1 -1
  534. package/dist/field-control.css_vue_type_style_index_0_src_true_lang-CeLay9Tk.js +21 -0
  535. package/dist/floating-dB5TD88k.js +7 -0
  536. package/dist/{flow.glsl-CVqPSj8_.js → flow.wgsl-Cd2GUkPx.js} +2 -2
  537. package/dist/fonts/README.md +14 -18
  538. package/dist/forms.js +268 -204
  539. package/dist/fourier-field.js +298 -288
  540. package/dist/fourier-math.d.ts +0 -6
  541. package/dist/fourier-math.js +112 -2
  542. package/dist/glass-ui.css +1 -1
  543. package/dist/glass-ui.js +512 -437
  544. package/dist/handmark.d.ts +0 -2
  545. package/dist/handmark.js +84 -84
  546. package/dist/header-ribbon.js +37 -57
  547. package/dist/index.d.ts +9 -19
  548. package/dist/infinite-scroll.d.ts +0 -1
  549. package/dist/infinite-scroll.js +39 -34
  550. package/dist/instrument-chassis.js +54 -2
  551. package/dist/keyboard.js +104 -2
  552. package/dist/label-DnMqH7jr.js +55 -0
  553. package/dist/label.js +1 -1
  554. package/dist/labeled-field.js +295 -192
  555. package/dist/liquid-grid.js +199 -198
  556. package/dist/menuRowClass-Nh7CtMON.js +12 -0
  557. package/dist/metric.d.ts +1 -0
  558. package/dist/metric.js +192 -0
  559. package/dist/motion-core.js +73 -166
  560. package/dist/motion.js +111 -167
  561. package/dist/number-field-Boe09SvX.js +154 -0
  562. package/dist/number-field.js +1 -1
  563. package/dist/pager-dots.js +2 -2
  564. package/dist/paper-backdrop.js +23 -2
  565. package/dist/{pointerFieldMappings-4VtmkOWv.js → pointerFieldMappings-DP5tla5z.js} +4 -7
  566. package/dist/popover-BQGYXZyO.js +244 -0
  567. package/dist/popover.js +1 -1
  568. package/dist/{presets-B07HzyKd.js → presets-5myqNv59.js} +1 -1
  569. package/dist/primitive-B2t2jdqM.js +11 -0
  570. package/dist/progress-DClbhRAT.js +88 -0
  571. package/dist/progress.js +2 -2
  572. package/dist/pulse.js +29 -41
  573. package/dist/reactive.js +19 -3
  574. package/dist/rendererStatus-BxUlBLVy.js +40 -0
  575. package/dist/resolveCanvasColor-DS_6DBxA.js +82 -0
  576. package/dist/resolveSurfaceClass-DCZ4PZcy.js +6 -0
  577. package/dist/scroll-progress-rim.js +1 -1
  578. package/dist/{scrollReader-DzYqPQ6V.js → scrollReader-Brf5cQNo.js} +1 -1
  579. package/dist/search.js +287 -218
  580. package/dist/select-BcBAyLXA.js +336 -0
  581. package/dist/select.js +2 -4
  582. package/dist/selection-DqIULxRG.js +6 -0
  583. package/dist/separator-CgZInrX-.js +75 -0
  584. package/dist/separator.js +1 -1
  585. package/dist/sidebar.js +53 -42
  586. package/dist/slider-DzqeQmMu.js +162 -0
  587. package/dist/slider.js +2 -2
  588. package/dist/sortable-list.js +51 -50
  589. package/dist/springPresets-rCii5KqX.js +52 -0
  590. package/dist/status-dot.js +26 -43
  591. package/dist/styles/accessibility.css +1 -0
  592. package/dist/styles/animations.css +1 -1
  593. package/dist/styles/components.css +1 -1
  594. package/dist/styles/glass/a11y-fallback.css +1 -1
  595. package/dist/styles/glass/accent-tone.css +1 -1
  596. package/dist/styles/glass/control-surfaces.css +1 -1
  597. package/dist/styles/glass/defined.css +1 -1
  598. package/dist/styles/glass/glass-atom.css +1 -1
  599. package/dist/styles/glass/glass-capsule.css +1 -1
  600. package/dist/styles/glass/glass-chip.css +1 -1
  601. package/dist/styles/glass/ladder.css +1 -1
  602. package/dist/styles/glass/liquid-fill.css +1 -1
  603. package/dist/styles/glass/material-roles.css +1 -0
  604. package/dist/styles/glass/material.css +1 -1
  605. package/dist/styles/glass/reveal.css +1 -1
  606. package/dist/styles/glass/squircle.css +1 -1
  607. package/dist/styles/glass/surface-axis.css +1 -1
  608. package/dist/styles/glass/surfaces-pager.css +1 -1
  609. package/dist/styles/glass/surfaces.css +1 -1
  610. package/dist/styles/glass-refract.css +1 -1
  611. package/dist/styles/glass.css +1 -1
  612. package/dist/styles/index.css +1 -1
  613. package/dist/styles/paper.css +1 -1
  614. package/dist/styles/scroll-driven.css +1 -1
  615. package/dist/styles/theme/bridges.css +1 -1
  616. package/dist/styles/theme/radius.css +1 -1
  617. package/dist/styles/tokens/color-radius.css +1 -1
  618. package/dist/styles/tokens/dark-arm.css +1 -1
  619. package/dist/styles/tokens/glass-deep.css +1 -1
  620. package/dist/styles/tokens/glass-fx.css +1 -1
  621. package/dist/styles/tokens/glass.css +1 -1
  622. package/dist/styles/tokens/light-dark.css +1 -1
  623. package/dist/styles/tokens/manifest.d.ts +14 -0
  624. package/dist/styles/tokens/manifest.ts +56 -0
  625. package/dist/styles/tokens/motion-registers.css +1 -1
  626. package/dist/styles/tokens/offsets.css +1 -1
  627. package/dist/styles/tokens/property-regs-specular.css +1 -1
  628. package/dist/styles/tokens/property-regs.css +1 -1
  629. package/dist/styles/tokens/scale-paper.css +1 -1
  630. package/dist/styles/tokens/scheme-motion.css +1 -1
  631. package/dist/styles/tokens/scheme-spring.css +1 -1
  632. package/dist/styles/tokens/scroll-tokens.css +1 -1
  633. package/dist/styles/tokens/shadow.css +1 -1
  634. package/dist/styles/tokens/sizing-config.css +1 -1
  635. package/dist/styles/tokens/sizing.css +1 -1
  636. package/dist/styles/tokens.d.ts +48 -0
  637. package/dist/styles/tokens.ts +54 -0
  638. package/dist/styles/transitions.css +1 -1
  639. package/dist/styles/typography/scale.css +1 -1
  640. package/dist/styles/typography/semantic.css +1 -1
  641. package/dist/styles/typography/utilities.css +1 -1
  642. package/dist/styles/utilities/a11y-overrides.css +1 -1
  643. package/dist/styles/utilities/base-misc.css +1 -1
  644. package/dist/styles/utilities/base.css +1 -1
  645. package/dist/styles/utilities/btn.css +1 -1
  646. package/dist/styles/utilities/components.css +1 -1
  647. package/dist/styles/utilities/metal.css +1 -1
  648. package/dist/styles/utilities/responsive.css +1 -0
  649. package/dist/styles/utilities.css +1 -1
  650. package/dist/styles/view-transition.css +1 -1
  651. package/dist/{supportsCssTimeline-Ie4xJFbD.js → supportsCssTimeline-C2zyWpl8.js} +1 -1
  652. package/dist/surface.js +2 -3
  653. package/dist/switch-DZjQuFLa.js +54 -0
  654. package/dist/switch.js +1 -1
  655. package/dist/tabs.js +146 -168
  656. package/dist/timeline.js +86 -87
  657. package/dist/toast-CH5mnsYT.js +267 -0
  658. package/dist/toast.js +1 -1
  659. package/dist/toggle-group-O6jBo7AE.js +150 -0
  660. package/dist/toggle-group.js +1 -1
  661. package/dist/tokens.d.ts +1 -53
  662. package/dist/tokens.js +96 -5
  663. package/dist/tooltip-Drx5qnw_.js +148 -0
  664. package/dist/tooltip.js +1 -1
  665. package/dist/typewriter.js +233 -219
  666. package/dist/{useAccentTone-D25DxviG.js → useAccentTone-DyInfHXE.js} +2 -2
  667. package/dist/{useAnimatedNumber-2XC4aRB6.js → useAnimatedNumber-WPtMz0AN.js} +2 -2
  668. package/dist/useClipboard-D36OTaeT.js +53 -0
  669. package/dist/useDockCtaReceive-DkrOTM0q.js +146 -0
  670. package/dist/useDocumentVisibility-Dh_TGXsU.js +21 -0
  671. package/dist/useDragMorph-BogSV_nv.js +293 -0
  672. package/dist/{useIntersectionPause-Cmt5Tnv9.js → useIntersectionPause-B5mAU6XY.js} +15 -15
  673. package/dist/useLeadTrail-AW1-zZcd.js +74 -0
  674. package/dist/{useLiquidFlex-Ch4exNvN.js → useLiquidFlex-TJZmRqyY.js} +1 -1
  675. package/dist/useLiquidPress-BOxuDkKa.js +101 -0
  676. package/dist/useMotionAxis-D-rtIhca.js +19 -0
  677. package/dist/usePointerVelocityField-DsIf7yyq.js +121 -0
  678. package/dist/useRAFLoop-B3YlWK4M.js +98 -0
  679. package/dist/useReducedMotion-vCXA_vyM.js +27 -0
  680. package/dist/useRoutePointer-B8itM7Ka.js +53 -0
  681. package/dist/useScrollProgress-CSFYXIZT.js +43 -0
  682. package/dist/useScrollTrigger-BDdqptlc.js +87 -0
  683. package/dist/useSelectionGroup-B5XplBbo.js +132 -0
  684. package/dist/{useSpring-BBSKFx_0.js → useSpring-9u2_shxV.js} +2 -2
  685. package/dist/useSpringMount-uQ8QL9Ff.js +74 -0
  686. package/dist/useTabRovingFocus-YnWh-Ytr.js +169 -0
  687. package/dist/useTextHighlight-mfwNIC1f.js +112 -0
  688. package/dist/{useTouchGate-BlegwvwL.js → useTouchGate-B4mzQcHJ.js} +1 -1
  689. package/dist/vSpecular-DMJo8pfD.js +68 -0
  690. package/dist/value-DMhh2R94.js +33 -0
  691. package/dist/valueDomain-SbVzoHMH.js +13 -0
  692. package/dist/watercolor-dot.js +77 -101
  693. package/package.json +166 -242
  694. package/dist/CardAction-2uUvjMQK.js +0 -285
  695. package/dist/CollapsibleContent-DiHcB_HH.js +0 -63
  696. package/dist/CommandShortcut-fmdbsEJL.js +0 -302
  697. package/dist/ConfiguratorRow-BV6zPjTM.js +0 -151
  698. package/dist/DataTable-Bxya8nBn.js +0 -518
  699. package/dist/DialogContent-Bl4v10AC.js +0 -192
  700. package/dist/DialogFooter-C0v4Hz2F.js +0 -168
  701. package/dist/FadingScroll-BSRLqQCx.js +0 -76
  702. package/dist/FocusScope-BzKwhsBn.js +0 -23
  703. package/dist/IconChip-CwLmBJ_K.js +0 -57
  704. package/dist/IconTooltip-D9sbK-Mk.js +0 -25
  705. package/dist/Input-DKf-XwUM.js +0 -57
  706. package/dist/InstrumentChassis-Dss5Tjcm.js +0 -65
  707. package/dist/Label-C84TaQiw.js +0 -36
  708. package/dist/Notification-DQv2cOh9.js +0 -43
  709. package/dist/NumberFieldContent-BkE7xPS9.js +0 -140
  710. package/dist/PagerDots-BP6jh7z4.js +0 -279
  711. package/dist/PaperBackdrop-BYwE8_kg.js +0 -31
  712. package/dist/PopoverContent-DOtszFWK.js +0 -251
  713. package/dist/Progress-uWLyXE7J.js +0 -308
  714. package/dist/SelectGroup-BuEptUsa.js +0 -31
  715. package/dist/SelectScrollDownButton-CDtwaWkZ.js +0 -261
  716. package/dist/SelectSeparator-4QGephvr.js +0 -49
  717. package/dist/Separator-DqJ6PfOd.js +0 -44
  718. package/dist/Surface-BWRfwyn8.js +0 -59
  719. package/dist/Switch-BPBfhMU3.js +0 -49
  720. package/dist/Toaster-C_-WeU9W.js +0 -281
  721. package/dist/ToggleGroupItem-DNWx2aSW.js +0 -175
  722. package/dist/TooltipProvider-GtfYdSVf.js +0 -110
  723. package/dist/accent-tone-solve-CBw3L0cy.js +0 -20
  724. package/dist/badge-C0C-rTBu.js +0 -80
  725. package/dist/button-BXzhydVB.js +0 -187
  726. package/dist/coalesce-metric-B8o7zT9u.js +0 -13
  727. package/dist/color-Bp5jmv4Z.js +0 -86
  728. package/dist/color-swatch.d.ts +0 -1
  729. package/dist/color-swatch.js +0 -47
  730. package/dist/components/_shared/ModalOverlay.vue.d.ts +0 -90
  731. package/dist/components/_shared/menuItemVariants.d.ts +0 -51
  732. package/dist/components/_shared/useControlSize.d.ts +0 -46
  733. package/dist/components/_shared/useStalePropWarning.d.ts +0 -27
  734. package/dist/components/_shared/useSurfaceAxis.d.ts +0 -64
  735. package/dist/components/card/ScrollCard.vue.d.ts +0 -33
  736. package/dist/components/card/ScrollCardHeader.vue.d.ts +0 -17
  737. package/dist/components/carousel/CarouselNext.vue.d.ts +0 -21
  738. package/dist/components/carousel/CarouselPrevious.vue.d.ts +0 -21
  739. package/dist/components/carousel/GlassCarouselPager.vue.d.ts +0 -50
  740. package/dist/components/color-swatch/ColorSwatch.vue.d.ts +0 -22
  741. package/dist/components/color-swatch/index.d.ts +0 -1
  742. package/dist/components/combobox/ComboboxSeparator.vue.d.ts +0 -18
  743. package/dist/components/combobox/ComboboxViewport.vue.d.ts +0 -18
  744. package/dist/components/constellation/composables/constellationGLSetup.d.ts +0 -10
  745. package/dist/components/constellation/composables/constellationWGPUSetup.d.ts +0 -19
  746. package/dist/components/constellation/composables/uniformBridgeWGPU.d.ts +0 -66
  747. package/dist/components/constellation/shaders/constellation-lines.glsl.d.ts +0 -2
  748. package/dist/components/constellation/shaders/constellation-lines.wgsl.d.ts +0 -1
  749. package/dist/components/constellation/shaders/constellation-points.glsl.d.ts +0 -2
  750. package/dist/components/constellation/shaders/constellation-points.wgsl.d.ts +0 -1
  751. package/dist/components/controls/DarkModeToggle.vue.d.ts +0 -34
  752. package/dist/components/controls/index.d.ts +0 -1
  753. package/dist/components/data-table/DataTablePagination.vue.d.ts +0 -13
  754. package/dist/components/deck/composables/useDeckSpring.d.ts +0 -22
  755. package/dist/components/dialog/DialogScrollContent.vue.d.ts +0 -33
  756. package/dist/components/dock/DockSection.vue.d.ts +0 -69
  757. package/dist/components/dock/DockStack.vue.d.ts +0 -73
  758. package/dist/components/dock/composables/dockMorphContext.d.ts +0 -89
  759. package/dist/components/dock/composables/useDockFisheye.d.ts +0 -24
  760. package/dist/components/dock/composables/useDockPopover.d.ts +0 -68
  761. package/dist/components/focus-scope/FocusScope.vue.d.ts +0 -20
  762. package/dist/components/focus-scope/index.d.ts +0 -2
  763. package/dist/components/goo-filter/GooFilter.vue.d.ts +0 -22
  764. package/dist/components/goo-filter/index.d.ts +0 -1
  765. package/dist/components/icon-chip/IconChip.vue.d.ts +0 -4
  766. package/dist/components/icon-chip/index.d.ts +0 -2
  767. package/dist/components/icon-chip/types.d.ts +0 -92
  768. package/dist/components/icon-tooltip/IconTooltip.vue.d.ts +0 -16
  769. package/dist/components/icon-tooltip/index.d.ts +0 -1
  770. package/dist/components/instrument-chassis/ChassisDivider.vue.d.ts +0 -30
  771. package/dist/components/metric-badge/MetricBadge.vue.d.ts +0 -40
  772. package/dist/components/metric-badge/index.d.ts +0 -2
  773. package/dist/components/metric-cell/MetricCell.vue.d.ts +0 -108
  774. package/dist/components/metric-cell/index.d.ts +0 -2
  775. package/dist/components/metric-stack/MetricRow.vue.d.ts +0 -120
  776. package/dist/components/metric-stack/MetricStack.vue.d.ts +0 -92
  777. package/dist/components/metric-stack/index.d.ts +0 -4
  778. package/dist/components/notification/Notification.vue.d.ts +0 -16
  779. package/dist/components/notification/index.d.ts +0 -1
  780. package/dist/components/progress/ProgressDefault.vue.d.ts +0 -25
  781. package/dist/components/progress/ProgressGradient.vue.d.ts +0 -25
  782. package/dist/components/progress/ProgressLiquid.vue.d.ts +0 -21
  783. package/dist/components/progress/ProgressSectioned.vue.d.ts +0 -47
  784. package/dist/components/progress/useProgressGeometry.d.ts +0 -60
  785. package/dist/components/section/Section.vue.d.ts +0 -73
  786. package/dist/components/section/index.d.ts +0 -1
  787. package/dist/components/spa-view/SpaView.vue.d.ts +0 -50
  788. package/dist/components/spa-view/index.d.ts +0 -2
  789. package/dist/components/split-chars/SplitChars.vue.d.ts +0 -53
  790. package/dist/components/split-chars/index.d.ts +0 -1
  791. package/dist/components/stacked-icons/StackedIconGroup.vue.d.ts +0 -30
  792. package/dist/components/stacked-icons/index.d.ts +0 -2
  793. package/dist/components/stacked-icons/types.d.ts +0 -19
  794. package/dist/components/tabs/composables/useEyeglassLive.d.ts +0 -17
  795. package/dist/components/toggle/Toggle.vue.d.ts +0 -29
  796. package/dist/components/toggle/index.d.ts +0 -26
  797. package/dist/composables/glass/webgl/shaders/glass-refract.glsl.d.ts +0 -36
  798. package/dist/composables/motion/curves.d.ts +0 -48
  799. package/dist/composables/motion/gooBarbellGeometry.d.ts +0 -79
  800. package/dist/composables/motion/morphSignatures.d.ts +0 -88
  801. package/dist/composables/motion/suite.d.ts +0 -2
  802. package/dist/composables/motion/useBloomUp.d.ts +0 -97
  803. package/dist/composables/motion/useCharStagger.d.ts +0 -44
  804. package/dist/composables/motion/useElementMorph.d.ts +0 -99
  805. package/dist/composables/motion/useGooMorph.d.ts +0 -72
  806. package/dist/composables/motion/usePrioritizedTask.d.ts +0 -41
  807. package/dist/composables/motion/useStaggerReveal.d.ts +0 -52
  808. package/dist/composables/motion/useViewTransition.d.ts +0 -81
  809. package/dist/composables/virtual/index.d.ts +0 -4
  810. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +0 -72
  811. package/dist/composables/virtual/useWindowedStore.d.ts +0 -43
  812. package/dist/composables/virtual/virtualSectionLayout.d.ts +0 -103
  813. package/dist/controls.d.ts +0 -1
  814. package/dist/controls.js +0 -91
  815. package/dist/createCanvasLifecycle-DlrcvWbb.js +0 -209
  816. package/dist/dockContext-d-WpJN2Z.js +0 -13
  817. package/dist/dropdown-menu-DaGlVdp9.js +0 -421
  818. package/dist/focus-scope.d.ts +0 -1
  819. package/dist/focus-scope.js +0 -2
  820. package/dist/icon-chip.d.ts +0 -1
  821. package/dist/icon-chip.js +0 -2
  822. package/dist/icon-tooltip.d.ts +0 -1
  823. package/dist/icon-tooltip.js +0 -2
  824. package/dist/math-CIEcwsYi.js +0 -112
  825. package/dist/menuItemVariants-DbO-Fr74.js +0 -36
  826. package/dist/metric-badge.d.ts +0 -1
  827. package/dist/metric-badge.js +0 -79
  828. package/dist/metric-cell.d.ts +0 -1
  829. package/dist/metric-cell.js +0 -61
  830. package/dist/metric-stack.d.ts +0 -1
  831. package/dist/metric-stack.js +0 -113
  832. package/dist/motion-curves.d.ts +0 -21
  833. package/dist/motion-curves.js +0 -146
  834. package/dist/notification.d.ts +0 -1
  835. package/dist/notification.js +0 -2
  836. package/dist/resolveCanvasColor-B3L-akX0.js +0 -93
  837. package/dist/slider-Cxuj_W_H.js +0 -151
  838. package/dist/spa-view.d.ts +0 -1
  839. package/dist/spa-view.js +0 -46
  840. package/dist/springPresets-h5VKJQqG.js +0 -58
  841. package/dist/stacked-icons.d.ts +0 -1
  842. package/dist/stacked-icons.js +0 -98
  843. package/dist/styles/card-scroll.css +0 -1
  844. package/dist/styles/cards.css +0 -1
  845. package/dist/styles/completion-seal.css +0 -1
  846. package/dist/styles/configurator.css +0 -1
  847. package/dist/styles/dialog-placement.css +0 -1
  848. package/dist/styles/dock/adaptive-legibility.css +0 -1
  849. package/dist/styles/dock/crossfade.css +0 -1
  850. package/dist/styles/dock/dock.css +0 -1
  851. package/dist/styles/dock/fisheye.css +0 -1
  852. package/dist/styles/dock/layer-group.css +0 -1
  853. package/dist/styles/dock/layers.css +0 -1
  854. package/dist/styles/dock/morph.css +0 -1
  855. package/dist/styles/dock/overflow.css +0 -1
  856. package/dist/styles/dock/popover.css +0 -1
  857. package/dist/styles/dock/section.css +0 -1
  858. package/dist/styles/dock/shape.css +0 -1
  859. package/dist/styles/dock/shell.css +0 -1
  860. package/dist/styles/dock-controls/dark-mode-toggle.css +0 -1
  861. package/dist/styles/dock-controls/icon-button.css +0 -1
  862. package/dist/styles/dock-controls.css +0 -1
  863. package/dist/styles/dock.css +0 -1
  864. package/dist/styles/drawer.css +0 -1
  865. package/dist/styles/glass/progress-rail.css +0 -1
  866. package/dist/styles/icon-chip.css +0 -1
  867. package/dist/styles/instrument-chassis.css +0 -1
  868. package/dist/styles/menu.css +0 -1
  869. package/dist/styles/scroll-progress-rim.css +0 -1
  870. package/dist/styles/segmented-tabs.css +0 -1
  871. package/dist/styles/select.css +0 -1
  872. package/dist/styles/tabs/segmented-tabs-drag.css +0 -1
  873. package/dist/styles/utilities/animate.css +0 -0
  874. package/dist/useConfiguratorState-Dq35N_7t.js +0 -167
  875. package/dist/useControlSize-DJwe-7ZQ.js +0 -9
  876. package/dist/useDockCtaReceive-BgMmeINo.js +0 -161
  877. package/dist/useDocumentVisibility-CpJGUgcJ.js +0 -17
  878. package/dist/useDragMorph-65ihHePq.js +0 -93
  879. package/dist/useGlobalDark-DjKMEQE2.js +0 -53
  880. package/dist/useGooMorph-CU1pwuC6.js +0 -268
  881. package/dist/useGpuSubstrate-DcY584kE.js +0 -347
  882. package/dist/useInterval-ZATRi-1T.js +0 -18
  883. package/dist/useKeyboardShortcuts-ynVmNFo3.js +0 -104
  884. package/dist/useLeadTrail-DOH4XkL1.js +0 -74
  885. package/dist/useLiquidPress-BXNHydZh.js +0 -40
  886. package/dist/useMotionAxis-DCCXMC-i.js +0 -20
  887. package/dist/usePointerVelocityField-CwXyeW0Z.js +0 -122
  888. package/dist/useRAFLoop-CvOo_kgb.js +0 -109
  889. package/dist/useRoutePointer-DL7I0gY4.js +0 -52
  890. package/dist/useScrollProgress-C-yImzhU.js +0 -35
  891. package/dist/useSelectionGroup-Btpf24aY.js +0 -215
  892. package/dist/useSpringMount-CNvvgGiC.js +0 -71
  893. package/dist/useSpringPress-BypV_KO-.js +0 -36
  894. package/dist/useSurfaceAxis-DudiZVOR.js +0 -10
  895. package/dist/useTabRovingFocus-CG1H1k1J.js +0 -143
  896. package/dist/useTextHighlight-C46Le9u_.js +0 -72
  897. package/dist/useViewportReady-c0isoKL8.js +0 -191
  898. package/dist/vReveal-DUmiEkX_.js +0 -10
  899. package/dist/vSpecular-DlYN0UZy.js +0 -68
  900. package/src/fonts/README.md +0 -124
  901. package/src/fonts/fira-code/OFL.txt +0 -93
  902. package/src/fonts/fira-code/fira-code-latin-ext.woff2 +0 -0
  903. package/src/fonts/fira-code/fira-code-latin.woff2 +0 -0
  904. package/src/fonts/plus-jakarta-sans/OFL.txt +0 -93
  905. package/src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin-ext.woff2 +0 -0
  906. package/src/fonts/plus-jakarta-sans/plus-jakarta-sans-latin.woff2 +0 -0
  907. package/src/styles/animations.css +0 -468
  908. package/src/styles/card-scroll.css +0 -189
  909. package/src/styles/cards.css +0 -485
  910. package/src/styles/completion-seal.css +0 -205
  911. package/src/styles/configurator.css +0 -359
  912. package/src/styles/dialog-placement.css +0 -68
  913. package/src/styles/dock/adaptive-legibility.css +0 -119
  914. package/src/styles/dock/crossfade.css +0 -139
  915. package/src/styles/dock/cta-seat.css +0 -87
  916. package/src/styles/dock/density.css +0 -458
  917. package/src/styles/dock/dock.css +0 -199
  918. package/src/styles/dock/fisheye.css +0 -81
  919. package/src/styles/dock/layer-group.css +0 -329
  920. package/src/styles/dock/layers.css +0 -438
  921. package/src/styles/dock/morph.css +0 -455
  922. package/src/styles/dock/overflow.css +0 -332
  923. package/src/styles/dock/popover.css +0 -249
  924. package/src/styles/dock/search.css +0 -68
  925. package/src/styles/dock/section.css +0 -59
  926. package/src/styles/dock/shape.css +0 -188
  927. package/src/styles/dock/shell-regions.css +0 -73
  928. package/src/styles/dock/shell.css +0 -500
  929. package/src/styles/dock-controls/dark-mode-toggle.css +0 -123
  930. package/src/styles/dock-controls/icon-button.css +0 -221
  931. package/src/styles/dock-controls/tab-button.css +0 -143
  932. package/src/styles/dock-controls/touch-floor.css +0 -119
  933. package/src/styles/dock-controls/triggers.css +0 -157
  934. package/src/styles/dock-controls.css +0 -92
  935. package/src/styles/dock.css +0 -219
  936. package/src/styles/draw-in.css +0 -89
  937. package/src/styles/drawer.css +0 -434
  938. package/src/styles/feedback-tone.css +0 -104
  939. package/src/styles/fonts.css +0 -143
  940. package/src/styles/glass/a11y-fallback.css +0 -188
  941. package/src/styles/glass/accent-tone.css +0 -66
  942. package/src/styles/glass/control-surfaces.css +0 -171
  943. package/src/styles/glass/deep.css +0 -114
  944. package/src/styles/glass/defined.css +0 -88
  945. package/src/styles/glass/glass-atom.css +0 -247
  946. package/src/styles/glass/glass-capsule.css +0 -175
  947. package/src/styles/glass/glass-chip.css +0 -211
  948. package/src/styles/glass/grain-overlay.css +0 -79
  949. package/src/styles/glass/ladder-undershadow.css +0 -61
  950. package/src/styles/glass/ladder.css +0 -452
  951. package/src/styles/glass/liquid-enter.css +0 -240
  952. package/src/styles/glass/liquid-fill.css +0 -65
  953. package/src/styles/glass/material.css +0 -494
  954. package/src/styles/glass/progress-rail.css +0 -78
  955. package/src/styles/glass/reveal.css +0 -333
  956. package/src/styles/glass/rim.css +0 -122
  957. package/src/styles/glass/squircle.css +0 -58
  958. package/src/styles/glass/surface-axis.css +0 -136
  959. package/src/styles/glass/surfaces-pager.css +0 -79
  960. package/src/styles/glass/surfaces.css +0 -434
  961. package/src/styles/glass-refract.css +0 -112
  962. package/src/styles/glass-specular-track.css +0 -74
  963. package/src/styles/glass.css +0 -110
  964. package/src/styles/icon-chip.css +0 -256
  965. package/src/styles/index.css +0 -280
  966. package/src/styles/instrument-chassis.css +0 -449
  967. package/src/styles/menu.css +0 -187
  968. package/src/styles/paper.css +0 -187
  969. package/src/styles/scroll-choreography.css +0 -294
  970. package/src/styles/scroll-chrome.css +0 -123
  971. package/src/styles/scroll-driven.css +0 -123
  972. package/src/styles/scroll-progress-rim.css +0 -87
  973. package/src/styles/segmented-tabs.css +0 -424
  974. package/src/styles/select.css +0 -201
  975. package/src/styles/tabs/segmented-tabs-drag.css +0 -200
  976. package/src/styles/theme/bridges.css +0 -386
  977. package/src/styles/theme/dark.css +0 -7
  978. package/src/styles/theme/literals.css +0 -104
  979. package/src/styles/theme/radius.css +0 -148
  980. package/src/styles/theme.css +0 -33
  981. package/src/styles/tokens/color-radius.css +0 -308
  982. package/src/styles/tokens/dark-arm-glass.css +0 -55
  983. package/src/styles/tokens/dark-arm.css +0 -455
  984. package/src/styles/tokens/glass-deep.css +0 -126
  985. package/src/styles/tokens/glass-fx.css +0 -484
  986. package/src/styles/tokens/glass.css +0 -478
  987. package/src/styles/tokens/light-dark.css +0 -216
  988. package/src/styles/tokens/motion-registers.css +0 -93
  989. package/src/styles/tokens/offsets.css +0 -143
  990. package/src/styles/tokens/on-glass-fg.css +0 -39
  991. package/src/styles/tokens/property-regs-specular.css +0 -160
  992. package/src/styles/tokens/property-regs.css +0 -447
  993. package/src/styles/tokens/scale-paper.css +0 -496
  994. package/src/styles/tokens/scheme-motion.css +0 -422
  995. package/src/styles/tokens/scheme-spring.css +0 -292
  996. package/src/styles/tokens/scroll-tokens.css +0 -137
  997. package/src/styles/tokens/shadow.css +0 -232
  998. package/src/styles/tokens/sizing-config.css +0 -110
  999. package/src/styles/tokens/sizing.css +0 -505
  1000. package/src/styles/tokens.css +0 -68
  1001. package/src/styles/transitions.css +0 -228
  1002. package/src/styles/typography/scale.css +0 -163
  1003. package/src/styles/typography/semantic.css +0 -233
  1004. package/src/styles/typography/utilities.css +0 -197
  1005. package/src/styles/typography.css +0 -46
  1006. package/src/styles/utilities/a11y-overrides.css +0 -184
  1007. package/src/styles/utilities/animate.css +0 -29
  1008. package/src/styles/utilities/base-misc.css +0 -307
  1009. package/src/styles/utilities/base.css +0 -337
  1010. package/src/styles/utilities/btn.css +0 -327
  1011. package/src/styles/utilities/components.css +0 -337
  1012. package/src/styles/utilities/metal.css +0 -272
  1013. package/src/styles/utilities.css +0 -26
  1014. package/src/styles/view-transition.css +0 -67
  1015. package/src/styles/viz-reveal.css +0 -63
  1016. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-B3ysoDQm.js} +0 -0
  1017. /package/dist/{compile-C55K3P9g.js → compile-D7VYG3gi.js} +0 -0
  1018. /package/dist/{styles → components/_shared}/feedback-tone.css +0 -0
  1019. /package/dist/{styles/dock-controls → components/dock/styles/controls}/tab-button.css +0 -0
  1020. /package/dist/{styles/dock-controls → components/dock/styles/controls}/triggers.css +0 -0
  1021. /package/dist/{styles/dock → components/dock/styles}/cta-seat.css +0 -0
  1022. /package/dist/{styles/dock → components/dock/styles}/search.css +0 -0
  1023. /package/dist/{styles/dock → components/dock/styles}/shell-regions.css +0 -0
  1024. /package/dist/composables/glass/{webgl/shaders/procedural-color.glsl.d.ts → procedural/color.glsl.d.ts} +0 -0
  1025. /package/dist/{components/aurora/constants/shaders/procedural-color.wgsl.d.ts → composables/glass/procedural/color.wgsl.d.ts} +0 -0
  1026. /package/dist/composables/motion/{motionTempo.d.ts → core/motionTempo.d.ts} +0 -0
  1027. /package/dist/composables/motion/{useIntersectionPause.d.ts → core/useIntersectionPause.d.ts} +0 -0
  1028. /package/dist/composables/motion/{useRAFLoop.d.ts → core/useRAFLoop.d.ts} +0 -0
  1029. /package/dist/composables/motion/{useYieldToMain.d.ts → core/useYieldToMain.d.ts} +0 -0
  1030. /package/dist/composables/motion/{useAnimatedNumberMap.d.ts → number/useAnimatedNumberMap.d.ts} +0 -0
  1031. /package/dist/composables/motion/{useRoutePointer.d.ts → pointer/useRoutePointer.d.ts} +0 -0
  1032. /package/dist/composables/motion/{vReveal.d.ts → reveal/vReveal.d.ts} +0 -0
  1033. /package/dist/composables/motion/{scrollReader.d.ts → scroll/scrollReader.d.ts} +0 -0
  1034. /package/dist/composables/motion/{supportsCssTimeline.d.ts → scroll/supportsCssTimeline.d.ts} +0 -0
  1035. /package/dist/composables/motion/{useScrollPin.d.ts → scroll/useScrollPin.d.ts} +0 -0
  1036. /package/dist/composables/motion/{useScrollScene.d.ts → scroll/useScrollScene.d.ts} +0 -0
  1037. /package/dist/composables/motion/{useScrollTrigger.d.ts → scroll/useScrollTrigger.d.ts} +0 -0
  1038. /package/dist/composables/motion/{useSpringPress.d.ts → spring/useSpringPress.d.ts} +0 -0
  1039. /package/dist/{createContext-BQ1Gy_LB.js → createContext-BhkE9mLH.js} +0 -0
  1040. /package/dist/{motionTempo-CMS5b0Vu.js → motionTempo-tscp92Nm.js} +0 -0
  1041. /package/dist/{prng-B0PLRmR6.js → prng-2uS6J_A1.js} +0 -0
  1042. /package/dist/{useDragVelocity-BWcNMCux.js → useDragVelocity-6ONX0sr0.js} +0 -0
  1043. /package/dist/{useFuzzySearch-KslRxiJY.js → useFuzzySearch-CUnZknpm.js} +0 -0
  1044. /package/dist/{useResizeObserver-DDuoBeBo.js → useResizeObserver-CdUlm2QZ.js} +0 -0
  1045. /package/dist/{useResolveTokenColor-DVT5kwv6.js → useResolveTokenColor-B2FfJnd9.js} +0 -0
  1046. /package/dist/{useTimer-CkDV8SC2.js → useTimer-C3yfti4C.js} +0 -0
  1047. /package/dist/{useUserInvalidAria-Bkruei7M.js → useUserInvalidAria-0GNrddMX.js} +0 -0
  1048. /package/dist/{writeVelocityWeight-D1rvdxJu.js → writeVelocityWeight-DoGOCW3e.js} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { type Ref } from "vue";
2
- import { type GpuBackend } from "../../../composables/glass/webgpu/useGpuSubstrate";
2
+ import { type GpuBackend, type RendererStatus } from "../../../composables/glass/webgpu/useGpuSubstrate";
3
3
  import type { LiquidGridConfig } from "../constants";
4
4
  export interface UseLiquidGridOptions {
5
5
  config: LiquidGridConfig;
@@ -20,6 +20,7 @@ export interface LiquidGridHandle {
20
20
  renderAt: (timeSec: number) => void;
21
21
  /** The live `prefers-reduced-motion: reduce` state. */
22
22
  readonly reducedMotion: boolean;
23
+ readonly rendererStatus: Readonly<Ref<RendererStatus>>;
23
24
  /** Tear down the renderer + release GPU/GL resources. */
24
25
  dispose: () => void;
25
26
  }
@@ -39,8 +39,7 @@ export interface LiquidGridConfig {
39
39
  lineColor: OklchStop;
40
40
  /**
41
41
  * The filled-FACE opacity — **default `0`** so the face EVAPORATES → byte-identical to the
42
- * line-only HEAD render (every `proof:viz-papergrid` cage clause + the warm-identity fence
43
- * stay GREEN). The demo `LIQUID_GRID_PRESET_RIPPLE` lifts it (presets-in-consumers).
42
+ * line-only default render. The demo `LIQUID_GRID_PRESET_RIPPLE` lifts it.
44
43
  */
45
44
  faceAlpha: number;
46
45
  /** The slope-shade gain (the ∇H Lambert relief — higher = steeper crest/trough contrast). */
@@ -52,7 +51,7 @@ export interface LiquidGridConfig {
52
51
  /**
53
52
  * The 3-stop warm-DIVERGENT face ramp (FOLD B — height-keyed, NOT a 2-point mid-park `mix`):
54
53
  * trough → mid → crest. ALL hues ∈ [20,90] (rose-umber → ember/amber → warm-wheat) so the
55
- * teal-navy purge is clear by construction. `proof:viz-papergrid` clause reds a hue ∈ [180,280].
54
+ * teal/navy exclusion is clear by construction.
56
55
  */
57
56
  faceWarmLo: OklchStop;
58
57
  faceWarmMid: OklchStop;
@@ -61,14 +60,14 @@ export interface LiquidGridConfig {
61
60
  lightDir: [number, number];
62
61
  /** The ground (default transparent so it suffuses over the page). */
63
62
  background: OklchStop | "transparent";
64
- /** Pointer bulge (§4/§8) — on (demo) / off (suffusion). */
63
+ /** Pointer bulge (§4/§8) — on (demo), off (suffusion). */
65
64
  interactive: boolean;
66
65
  /** ONE static frame then park under `prefers-reduced-motion: reduce`. */
67
66
  respectReducedMotion: boolean;
68
67
  }
69
68
  /**
70
69
  * The warm-cream identity line ink (the library default — NOT a themed hue). A warm-amber
71
- * ink in the `--foreground` family (OKLab hue ~62, the BA.W-NO-GRAY warm identity) so the
70
+ * ink in the `--foreground` family (OKLab hue ~62, the warm identity) so the
72
71
  * grid reads as warm ink over the page; the SFC resolves the live `--foreground` token at
73
72
  * mount, this stop is the SSR/no-token fallback identity. A consumer (the demo) themes it
74
73
  * through a PRESET, never a token edit. NEVER teal/navy (h in [180,280] reds P5).
@@ -76,9 +75,9 @@ export interface LiquidGridConfig {
76
75
  export declare const WARM_IDENTITY_INK: OklchStop;
77
76
  /**
78
77
  * The library-default FACE ramp stops — a CALM warm-divergent fold the face would paint IF lit
79
- * (the `faceAlpha:0` default keeps the face evaporated, so these never paint at HEAD; they are
78
+ * (the `faceAlpha:0` default keeps the face evaporated, so these never paint by default; they are
80
79
  * the warm-identity SSR fallback the vivid demo preset overrides). ALL hues ∈ [20,90] — the
81
- * teal-navy purge clear by construction (`proof:viz-papergrid` reds a hue ∈ [180,280] here).
80
+ * teal/navy exclusion is clear by construction.
82
81
  * trough → rose-umber, mid → ember-amber, crest → warm-wheat.
83
82
  */
84
83
  export declare const FACE_WARM_LO: OklchStop;
@@ -1,4 +1,4 @@
1
1
  /** The full-screen-triangle vertex shader (the substrate's standard fullscreen pass). */
2
2
  export declare const LIQUID_GRID_VERT_GLSL = "#version 300 es\nprecision highp float;\nin vec2 aPosition;\nout vec2 vUv;\nvoid main() {\n vUv = aPosition; // [-1,1]\u00B2 domain\n gl_Position = vec4(aPosition, 0.0, 1.0);\n}";
3
3
  /** The liquid-grid fragment source — the liquid AA-grid (the same field as the WGSL primary). */
4
- export declare const LIQUID_GRID_FRAG_GLSL = "#version 300 es\nprecision highp float;\n\n#define TAU 6.283185307179586\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform float uTime;\nuniform float uGridScale;\nuniform float uMajorEvery;\nuniform float uAspect;\nuniform vec4 uWarp; // (warpScale, warpSpeed, warpScale2, warpSpeed2)\nuniform float uAmplitude;\nuniform vec4 uGrid; // (targetWidth, targetWidthMajor, minorAlpha, majorAlpha)\nuniform float uFieldAlpha;\nuniform float uHasBackground;\nuniform vec4 uCursor; // (cursorX, cursorY, swirlStrength, swirlRadius)\nuniform float uBulgeMode; // +1 repel / \u22121 attract (signs the swirl)\nuniform float uInteractive; // 1 = cursor swirl on\nuniform vec4 uWave; // (waveDirX, waveDirY, waveK, waveOmega)\nuniform vec4 uWave2; // (waveSigma, twistMax, _pad, amp) \u2014 affine sheet-warp envelope\nuniform vec3 uLineColor; // linear-sRGB ink\nuniform vec3 uBg; // linear-sRGB themed bg\n// \u2500\u2500 The FACE (BD.W-PAPERGRID-FACE) \u2014 the height-lit filled cell interior \u2500\u2500\nuniform vec4 uFace; // (faceAlpha, faceRelief, squashK, baseInset)\nuniform vec2 uLightDir; // the cel key-light direction\nuniform vec3 uFaceLo; // linear-sRGB rose-umber trough (FOLD B, 3-stop)\nuniform vec3 uFaceMid; // linear-sRGB ember-amber mid\nuniform vec3 uFaceHi; // linear-sRGB warm-wheat crest\n\n\nfloat srgbToLinearCh(float c) {\n return c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4);\n}\nvec3 srgbToLinear(vec3 c) {\n return vec3(srgbToLinearCh(c.r), srgbToLinearCh(c.g), srgbToLinearCh(c.b));\n}\n\nfloat linearToSrgbCh(float c) {\n return c <= 0.0031308 ? c * 12.92 : 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nvec3 linearToSrgb(vec3 c) {\n return vec3(linearToSrgbCh(c.r), linearToSrgbCh(c.g), linearToSrgbCh(c.b));\n}\n\n// The 3-stop warm-divergent FACE ramp (FOLD B \u2014 height-keyed, NOT a 2-point mid-park). All stops\n// warm hue \u2208 [20,90]; linear-space (the OETF runs in main, FOLD E).\nvec3 faceRamp(float rampT) {\n float s = clamp(rampT, 0.0, 1.0);\n if (s < 0.5) {\n return mix(uFaceLo, uFaceMid, s * 2.0);\n }\n return mix(uFaceMid, uFaceHi, (s - 0.5) * 2.0);\n}\n\n// The shared divergence-free 2D-curl operator (flow.glsl.ts) \u2014 the prototype declares\n// potentialFBM; the host defines its BODY below the splice (GLSL forward-declaration).\n\nconst float CURL_EPS = 0.012;\n\n// Scalar fbm potential psi \u2014 the host's noise basis, wrapped so the curl operator is\n// basis-agnostic. A host carrying its own fbm defines this as: return fbm(p);\nfloat potentialFBM(vec2 p);\n\n// \u2207\u00D7\u03C8 in 2D \u2014 the divergence-free flow direction. Central finite differences of the\n// scalar potential give the partials; the cross-pairing (\u2202y, \u2212\u2202x) is the 2D curl.\nvec2 curlFBM(vec2 p) {\n float dx = potentialFBM(p + vec2(CURL_EPS, 0.0)) - potentialFBM(p - vec2(CURL_EPS, 0.0));\n float dy = potentialFBM(p + vec2(0.0, CURL_EPS)) - potentialFBM(p - vec2(0.0, CURL_EPS));\n // \u03C8-gradient is (dx, dy)/(2\u00B7eps); the curl rotates it 90\u00B0: (\u2202\u03C8/\u2202y, \u2212\u2202\u03C8/\u2202x).\n vec2 g = vec2(dx, dy) / (2.0 * CURL_EPS);\n return vec2(g.y, -g.x);\n}\n\n\n// \u2500\u2500 The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) \u2500\u2500\nfloat hash21(float x, float y) {\n float px = fract(x * 0.1031);\n float py = fract(y * 0.1031);\n float pz = fract(x * 0.1031);\n float d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);\n px += d;\n py += d;\n pz += d;\n return fract((px + py) * pz);\n}\n\nfloat valueNoise(float x, float y) {\n float ix = floor(x);\n float iy = floor(y);\n float fx = x - ix;\n float fy = y - iy;\n float ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);\n float uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);\n float a = hash21(ix, iy);\n float b = hash21(ix + 1.0, iy);\n float c = hash21(ix, iy + 1.0);\n float d2 = hash21(ix + 1.0, iy + 1.0);\n return mix(mix(a, b, ux), mix(c, d2, ux), uy);\n}\n\n// The 3-octave scalar fbm potential \u2014 the curl chunk's forward-declared potentialFBM body.\nfloat potentialFBM(vec2 p) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x;\n float py = p.y;\n for (int i = 0; i < 3; i++) {\n v += amp * valueNoise(px * freq, py * freq);\n // FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) \u2014 same rotation as the shared chunk.\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The shared traveling-wave WARP chunk (waveField.glsl.ts \u2014 waveFlow/cursorSwirl/\n// travelingEnvelope + the FACE leaf; spliced AFTER valueNoise + potentialFBM bodies + the curlFBM\n// chunk). liquid-grid + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY\n// coupling \u2014 a leaf tune moves both, never the retired per-cell twist / LINE-warp).\n\n#ifndef WAVE_FIELD_TAU\n#define WAVE_FIELD_TAU 6.283185307179586\n#endif\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfloat travelingEnvelope(vec2 pivot, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma) {\n float coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n float crest = fract(coord / WAVE_FIELD_TAU);\n float z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfloat curlScalar(vec2 cc, float t) {\n vec2 f = curlFBM(vec2(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\n#ifndef WAVE_FIELD_TWIST_FLOOR\n#define WAVE_FIELD_TWIST_FLOOR 0.62\n#endif\nfloat directedTwist(float s, float floorMag) {\n float mag = max(floorMag, abs(s));\n float sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// Defined ABOVE cellTwist: cellTwist rides cellHeight via the driver so twist + face read ONE\n// envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfloat cellHeight(vec2 cc, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma, float amp) {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (floor(twisted_g) at the\n// crest lights a NEIGHBOUR cell). cc in .xy, env in .z.\nvec3 cellDriver(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float cs = max(cellSize, 1e-3);\n vec2 cc = (floor(g / cs) + 0.5) * cs;\n float env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nvec2 faceRelief(vec2 cc, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float eps = max(cellSize, 1e-3) * 0.5;\n float hxp = cellHeight(cc + vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hxm = cellHeight(cc - vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hyp = cellHeight(cc + vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hym = cellHeight(cc - vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the distance\n// into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats as it grows\n// (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfloat facePlateau(vec2 g, float inset, vec2 uvDeriv) {\n vec2 tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n float d = min(tri.x, tri.y);\n float aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nvec2 cellTwist(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float twistMax, float shearMax, float amp) {\n vec3 drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n vec2 cc = drv.xy;\n float env = drv.z;\n float floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n float theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n float shear = shearMax * env * directedTwist(curlScalar(cc + vec2(17.3, 9.1), t), floorMag);\n vec2 local = g - cc;\n float ct = cos(theta);\n float st = sin(theta);\n vec2 rot = vec2(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x += shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// BG.W-GRID-AFFINE \u2014 warpFreq is the HOST-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as ONE smooth curve, no sub-cell crackle). liquid-grid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nvec2 waveFlow(vec2 g, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma,\n float twistMax, float amp, float warpFreq) {\n float env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n vec2 f = curlFBM(vec2(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n float wf2 = warpFreq * 1.833333;\n vec2 f2 = curlFBM(vec2(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n float k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nvec2 cursorSwirl(vec2 g, vec2 cursor, float strength, float radius) {\n vec2 to = g - cursor;\n float d2 = dot(to, to);\n float r = max(radius, 1e-4);\n float theta = strength * exp(-d2 / (2.0 * r * r));\n float ct = cos(theta);\n float st = sin(theta);\n return cursor + vec2(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfloat heightField(vec2 p, float octavesF, float seed) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x + seed;\n float py = p.y - seed;\n int n = int(clamp(octavesF, 1.0, 6.0));\n for (int i = 0; i < 6; i++) {\n if (i >= n) break;\n v += amp * valueNoise(px * freq, py * freq);\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfloat waveSwell(float t, float phase) {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n\n\n// \u2500\u2500 \u00A71 The Ben Golus derivative-AA grid coverage (transcribes liquidGrid.ts gridCoverage) \u2500\u2500\nfloat gridCoverage(vec2 g, float targetWidth, vec2 uvDeriv) {\n vec2 gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);\n vec2 drawWidth = clamp(vec2(targetWidth), uvDeriv, vec2(0.5));\n vec2 lineAA = uvDeriv * 1.5;\n vec2 grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);\n grid2 *= clamp(vec2(targetWidth) / max(drawWidth, vec2(1e-6)), vec2(0.0), vec2(1.0));\n grid2 = mix(grid2, vec2(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2(0.0), vec2(1.0)));\n return max(grid2.x, grid2.y);\n}\n\nvoid main() {\n float aspect = max(uAspect, 1e-4);\n vec2 uv = vec2(vUv.x * aspect, vUv.y);\n\n // \u00A75 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier\n // Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) \u2014\n // a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell\n // scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,\n // no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL\n // warped coord (the crisp-line fence survives).\n vec2 g0 = uv * uGridScale;\n // BG.W-GRID-AFFINE \u2014 g0 is CELL-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS\n // LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE\n // smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).\n vec2 g = waveFlow(g0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.y, uWave2.w, 0.03);\n if (uInteractive > 0.5) {\n g = cursorSwirl(g, uCursor.xy, uCursor.z * uBulgeMode, uCursor.w);\n }\n\n // The screen-space derivative of g (Golus): length(vec2(dFdx, dFdy)) per axis (the actual\n // backing-store pixel \u2014 NOT a CSS sub-pixel, the blur-kill).\n vec2 dv = vec2(\n length(vec2(dFdx(g.x), dFdy(g.x))),\n length(vec2(dFdx(g.y), dFdy(g.y)))\n );\n\n float minor = gridCoverage(g, uGrid.x, dv);\n float me = max(uMajorEvery, 1.0);\n float major = gridCoverage(g / me, uGrid.y, dv / me);\n float line = max(minor * uGrid.z, major * uGrid.w);\n\n // \u2500\u2500 The FACE (BD.W-PAPERGRID-FACE) \u2014 height-lit filled cell interior \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment\n // lands in under the affine warp); Lambert the \u2207H slope against the fixed cel key-light; squash\n // the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)\n // (FOLD B); the ink through the production OETF (FOLD E).\n vec2 cc = floor(g) + 0.5;\n float h = cellHeight(cc, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);\n vec2 grad = faceRelief(cc, 1.0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);\n vec3 n = normalize(vec3(-grad * uFace.y, 1.0));\n float shade = clamp(0.5 + dot(n, normalize(vec3(uLightDir, 1.0))) * 0.5, 0.0, 1.0);\n float inset = uFace.w * (1.0 - uFace.z * h); // squash & stretch\n float face = facePlateau(g, inset, dv);\n float rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B \u2014 height-keyed crest\n vec3 faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3(0.0), vec3(1.0));\n float faceA = face * uFace.x * uFieldAlpha; // FOLD D \u2014 one field-blend scalar\n\n vec3 col = clamp(linearToSrgb(uLineColor), vec3(0.0), vec3(1.0));\n if (uHasBackground > 0.5) {\n vec3 bg = clamp(linearToSrgb(uBg), vec3(0.0), vec3(1.0));\n vec3 base = mix(bg, faceInk, faceA);\n float a = line * uFieldAlpha;\n fragColor = vec4(mix(base, col, a), 1.0);\n return;\n }\n // transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in\n // PREMULTIPLIED space. faceAlpha:0 \u2192 faceA=0 \u2192 the face term vanishes \u2192 vec4(col\u00B7line, line) =\n // byte-identical to the HEAD line-only render.\n vec3 linePremult = (col * line) * uFieldAlpha; // line layer (the FieldAlpha subtlety)\n float lineA = line * uFieldAlpha;\n vec3 facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field)\n vec3 outPremult = linePremult + facePremult * (1.0 - lineA);\n float a = lineA + faceA * (1.0 - lineA);\n fragColor = vec4(outPremult, a); // premultiplied over transparent\n}";
4
+ export declare const LIQUID_GRID_FRAG_GLSL = "#version 300 es\nprecision highp float;\n\n#define TAU 6.283185307179586\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform float uTime;\nuniform float uGridScale;\nuniform float uMajorEvery;\nuniform float uAspect;\nuniform vec4 uWarp; // (warpScale, warpSpeed, warpScale2, warpSpeed2)\nuniform float uAmplitude;\nuniform vec4 uGrid; // (targetWidth, targetWidthMajor, minorAlpha, majorAlpha)\nuniform float uFieldAlpha;\nuniform float uHasBackground;\nuniform vec4 uCursor; // (cursorX, cursorY, swirlStrength, swirlRadius)\nuniform float uBulgeMode; // +1 repel / \u22121 attract (signs the swirl)\nuniform float uInteractive; // 1 = cursor swirl on\nuniform vec4 uWave; // (waveDirX, waveDirY, waveK, waveOmega)\nuniform vec4 uWave2; // (waveSigma, twistMax, _pad, amp) \u2014 affine sheet-warp envelope\nuniform vec3 uLineColor; // linear-sRGB ink\nuniform vec3 uBg; // linear-sRGB themed bg\n// \u2500\u2500 The FACE \u2014 the height-lit filled cell interior \u2500\u2500\nuniform vec4 uFace; // (faceAlpha, faceRelief, squashK, baseInset)\nuniform vec2 uLightDir; // the cel key-light direction\nuniform vec3 uFaceLo; // linear-sRGB rose-umber trough (FOLD B, 3-stop)\nuniform vec3 uFaceMid; // linear-sRGB ember-amber mid\nuniform vec3 uFaceHi; // linear-sRGB warm-wheat crest\n\n\nfloat srgbToLinearCh(float c) {\n return c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4);\n}\nvec3 srgbToLinear(vec3 c) {\n return vec3(srgbToLinearCh(c.r), srgbToLinearCh(c.g), srgbToLinearCh(c.b));\n}\n\nfloat linearToSrgbCh(float c) {\n return c <= 0.0031308 ? c * 12.92 : 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nvec3 linearToSrgb(vec3 c) {\n return vec3(linearToSrgbCh(c.r), linearToSrgbCh(c.g), linearToSrgbCh(c.b));\n}\n\n// The 3-stop warm-divergent FACE ramp (FOLD B \u2014 height-keyed, NOT a 2-point mid-park). All stops\n// warm hue \u2208 [20,90]; linear-space (the OETF runs in main, FOLD E).\nvec3 faceRamp(float rampT) {\n float s = clamp(rampT, 0.0, 1.0);\n if (s < 0.5) {\n return mix(uFaceLo, uFaceMid, s * 2.0);\n }\n return mix(uFaceMid, uFaceHi, (s - 0.5) * 2.0);\n}\n\n// The shared divergence-free 2D-curl operator (flow.glsl.ts) \u2014 the prototype declares\n// potentialFBM; the host defines its BODY below the splice (GLSL forward-declaration).\n\nconst float CURL_EPS = 0.012;\n\n// Scalar fbm potential psi \u2014 the host's noise basis, wrapped so the curl operator is\n// basis-agnostic. A host carrying its own fbm defines this as: return fbm(p);\nfloat potentialFBM(vec2 p);\n\n// \u2207\u00D7\u03C8 in 2D \u2014 the divergence-free flow direction. Central finite differences of the\n// scalar potential give the partials; the cross-pairing (\u2202y, \u2212\u2202x) is the 2D curl.\nvec2 curlFBM(vec2 p) {\n float dx = potentialFBM(p + vec2(CURL_EPS, 0.0)) - potentialFBM(p - vec2(CURL_EPS, 0.0));\n float dy = potentialFBM(p + vec2(0.0, CURL_EPS)) - potentialFBM(p - vec2(0.0, CURL_EPS));\n // \u03C8-gradient is (dx, dy)/(2\u00B7eps); the curl rotates it 90\u00B0: (\u2202\u03C8/\u2202y, \u2212\u2202\u03C8/\u2202x).\n vec2 g = vec2(dx, dy) / (2.0 * CURL_EPS);\n return vec2(g.y, -g.x);\n}\n\n\n// \u2500\u2500 The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) \u2500\u2500\nfloat hash21(float x, float y) {\n float px = fract(x * 0.1031);\n float py = fract(y * 0.1031);\n float pz = fract(x * 0.1031);\n float d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);\n px += d;\n py += d;\n pz += d;\n return fract((px + py) * pz);\n}\n\nfloat valueNoise(float x, float y) {\n float ix = floor(x);\n float iy = floor(y);\n float fx = x - ix;\n float fy = y - iy;\n float ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);\n float uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);\n float a = hash21(ix, iy);\n float b = hash21(ix + 1.0, iy);\n float c = hash21(ix, iy + 1.0);\n float d2 = hash21(ix + 1.0, iy + 1.0);\n return mix(mix(a, b, ux), mix(c, d2, ux), uy);\n}\n\n// The 3-octave scalar fbm potential \u2014 the curl chunk's forward-declared potentialFBM body.\nfloat potentialFBM(vec2 p) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x;\n float py = p.y;\n for (int i = 0; i < 3; i++) {\n v += amp * valueNoise(px * freq, py * freq);\n // FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) \u2014 same rotation as the shared chunk.\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The shared traveling-wave WARP chunk (waveField.glsl.ts \u2014 waveFlow/cursorSwirl/\n// travelingEnvelope + the FACE leaf; spliced AFTER valueNoise + potentialFBM bodies + the curlFBM\n// chunk). liquid-grid + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY\n// coupling \u2014 a leaf tune moves both, never the retired per-cell twist or line warp).\n\n#ifndef WAVE_FIELD_TAU\n#define WAVE_FIELD_TAU 6.283185307179586\n#endif\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfloat travelingEnvelope(vec2 pivot, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma) {\n float coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n float crest = fract(coord / WAVE_FIELD_TAU);\n float z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfloat curlScalar(vec2 cc, float t) {\n vec2 f = curlFBM(vec2(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\n#ifndef WAVE_FIELD_TWIST_FLOOR\n#define WAVE_FIELD_TWIST_FLOOR 0.62\n#endif\nfloat directedTwist(float s, float floorMag) {\n float mag = max(floorMag, abs(s));\n float sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// Defined ABOVE cellTwist: cellTwist rides cellHeight via the driver so twist + face read ONE\n// envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfloat cellHeight(vec2 cc, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma, float amp) {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (floor(twisted_g) at the\n// crest lights a neighbouring cell). cc is in .xy and env in .z.\nvec3 cellDriver(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float cs = max(cellSize, 1e-3);\n vec2 cc = (floor(g / cs) + 0.5) * cs;\n float env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nvec2 faceRelief(vec2 cc, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float amp) {\n float eps = max(cellSize, 1e-3) * 0.5;\n float hxp = cellHeight(cc + vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hxm = cellHeight(cc - vec2(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hyp = cellHeight(cc + vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n float hym = cellHeight(cc - vec2(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the distance\n// into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats as it grows\n// (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfloat facePlateau(vec2 g, float inset, vec2 uvDeriv) {\n vec2 tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n float d = min(tri.x, tri.y);\n float aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nvec2 cellTwist(vec2 g, float cellSize, float t, vec2 waveDir, float waveK, float waveOmega,\n float waveSigma, float twistMax, float shearMax, float amp) {\n vec3 drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n vec2 cc = drv.xy;\n float env = drv.z;\n float floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n float theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n float shear = shearMax * env * directedTwist(curlScalar(cc + vec2(17.3, 9.1), t), floorMag);\n vec2 local = g - cc;\n float ct = cos(theta);\n float st = sin(theta);\n vec2 rot = vec2(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x += shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nvec2 waveFlow(vec2 g, float t, vec2 waveDir, float waveK, float waveOmega, float waveSigma,\n float twistMax, float amp, float warpFreq) {\n float env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n vec2 f = curlFBM(vec2(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n float wf2 = warpFreq * 1.833333;\n vec2 f2 = curlFBM(vec2(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n float k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nvec2 cursorSwirl(vec2 g, vec2 cursor, float strength, float radius) {\n vec2 to = g - cursor;\n float d2 = dot(to, to);\n float r = max(radius, 1e-4);\n float theta = strength * exp(-d2 / (2.0 * r * r));\n float ct = cos(theta);\n float st = sin(theta);\n return cursor + vec2(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfloat heightField(vec2 p, float octavesF, float seed) {\n float v = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n float px = p.x + seed;\n float py = p.y - seed;\n int n = int(clamp(octavesF, 1.0, 6.0));\n for (int i = 0; i < 6; i++) {\n if (i >= n) break;\n v += amp * valueNoise(px * freq, py * freq);\n float rx = 0.8 * px - 0.6 * py;\n float ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq *= 2.0;\n amp *= 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfloat waveSwell(float t, float phase) {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n\n\n// \u2500\u2500 \u00A71 The Ben Golus derivative-AA grid coverage (transcribes liquidGrid.ts gridCoverage) \u2500\u2500\nfloat gridCoverage(vec2 g, float targetWidth, vec2 uvDeriv) {\n vec2 gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);\n vec2 drawWidth = clamp(vec2(targetWidth), uvDeriv, vec2(0.5));\n vec2 lineAA = uvDeriv * 1.5;\n vec2 grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);\n grid2 *= clamp(vec2(targetWidth) / max(drawWidth, vec2(1e-6)), vec2(0.0), vec2(1.0));\n grid2 = mix(grid2, vec2(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2(0.0), vec2(1.0)));\n return max(grid2.x, grid2.y);\n}\n\nvoid main() {\n float aspect = max(uAspect, 1e-4);\n vec2 uv = vec2(vUv.x * aspect, vUv.y);\n\n // \u00A75 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier\n // Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) \u2014\n // a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell\n // scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,\n // no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL\n // warped coord (the crisp-line fence survives).\n vec2 g0 = uv * uGridScale;\n // g0 is cell-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS\n // LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE\n // smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).\n vec2 g = waveFlow(g0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.y, uWave2.w, 0.03);\n if (uInteractive > 0.5) {\n g = cursorSwirl(g, uCursor.xy, uCursor.z * uBulgeMode, uCursor.w);\n }\n\n // The screen-space derivative of g (Golus): length(vec2(dFdx, dFdy)) per axis (the actual\n // backing-store pixel \u2014 NOT a CSS sub-pixel, the blur-kill).\n vec2 dv = vec2(\n length(vec2(dFdx(g.x), dFdy(g.x))),\n length(vec2(dFdx(g.y), dFdy(g.y)))\n );\n\n float minor = gridCoverage(g, uGrid.x, dv);\n float me = max(uMajorEvery, 1.0);\n float major = gridCoverage(g / me, uGrid.y, dv / me);\n float line = max(minor * uGrid.z, major * uGrid.w);\n\n // \u2500\u2500 The FACE \u2014 height-lit filled cell interior \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment\n // lands in under the affine warp); Lambert the \u2207H slope against the fixed cel key-light; squash\n // the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)\n // (FOLD B); the ink through the production OETF (FOLD E).\n vec2 cc = floor(g) + 0.5;\n float h = cellHeight(cc, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);\n vec2 grad = faceRelief(cc, 1.0, uTime, uWave.xy, uWave.z, uWave.w, uWave2.x, uWave2.w);\n vec3 n = normalize(vec3(-grad * uFace.y, 1.0));\n float shade = clamp(0.5 + dot(n, normalize(vec3(uLightDir, 1.0))) * 0.5, 0.0, 1.0);\n float inset = uFace.w * (1.0 - uFace.z * h); // squash & stretch\n float face = facePlateau(g, inset, dv);\n float rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B \u2014 height-keyed crest\n vec3 faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3(0.0), vec3(1.0));\n float faceA = face * uFace.x * uFieldAlpha; // FOLD D \u2014 one field-blend scalar\n\n vec3 col = clamp(linearToSrgb(uLineColor), vec3(0.0), vec3(1.0));\n if (uHasBackground > 0.5) {\n vec3 bg = clamp(linearToSrgb(uBg), vec3(0.0), vec3(1.0));\n vec3 base = mix(bg, faceInk, faceA);\n float a = line * uFieldAlpha;\n fragColor = vec4(mix(base, col, a), 1.0);\n return;\n }\n // transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in\n // PREMULTIPLIED space. faceAlpha:0 \u2192 faceA=0 \u2192 the face term vanishes \u2192 vec4(col\u00B7line, line) =\n // identical to the plain line-only render.\n vec3 linePremult = (col * line) * uFieldAlpha; // line layer (the FieldAlpha subtlety)\n float lineA = line * uFieldAlpha;\n vec3 facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field)\n vec3 outPremult = linePremult + facePremult * (1.0 - lineA);\n float a = lineA + faceA * (1.0 - lineA);\n fragColor = vec4(outPremult, a); // premultiplied over transparent\n}";
@@ -1 +1 @@
1
- export declare const LIQUID_GRID_WGSL = "\nconst TAU: f32 = 6.283185307179586;\n\n// \u2500\u2500 Paper-grid uniforms (the typed-struct source-of-truth \u2014 see uniformBridgeWGPU.ts) \u2500\u2500\nstruct LiquidGridUniforms {\n // u0: (uTime, uGridScale, uMinorPitch, uMajorEvery)\n u0: vec4<f32>,\n // face: (uFaceAlpha, uFaceRelief, uSquashK, uBaseInset) \u2014 the height-lit FACE (re-points the retired warp lane)\n face: vec4<f32>,\n // warp2: (uAmplitude, uAspect, uLightDirX, uLightDirY) \u2014 aspect + the cel key-light\n warp2: vec4<f32>,\n // grid: (uTargetWidth, uTargetWidthMajor, uMinorAlpha, uMajorAlpha)\n grid: vec4<f32>,\n // field: (uFieldAlpha, uHasBackground, _pad, _pad)\n field: vec4<f32>,\n // cursor: (uCursorX, uCursorY, uSwirlStrength, uSwirlRadius)\n cursor: vec4<f32>,\n // cursor2: (uBulgeMode, uInteractive, _pad, _pad)\n cursor2: vec4<f32>,\n // line: (uLineColor.rgb (linear), _pad)\n line: vec4<f32>,\n // bg: (uBg.rgb (linear), _pad)\n bg: vec4<f32>,\n // wave: (waveDirX, waveDirY, waveK, waveOmega) \u2014 the traveling-wave crest\n wave: vec4<f32>,\n // wave2: (waveSigma, twistMax, _pad, amp) \u2014 the affine sheet-warp envelope (amp: spring-eased)\n wave2: vec4<f32>,\n // faceLo: (rose-umber trough .rgb (linear), _pad) \u2014 the warm-divergent ramp (FOLD B, 3-stop)\n faceLo: vec4<f32>,\n // faceMid: (ember-amber mid .rgb (linear), _pad)\n faceMid: vec4<f32>,\n // faceHi: (warm-wheat crest .rgb (linear), _pad)\n faceHi: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u: LiquidGridUniforms;\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// \u2500\u2500 The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) \u2500\u2500\n// A quintic-faded 2D value-noise fbm potential \u2014 the SAME basis the dot-flow-field carries\n// (so the suite speaks ONE noise basis). DECLARED ABOVE the curl splice (WGSL has no forward\n// declaration \u2014 a function may only call one declared earlier).\nfn hash21(x: f32, y: f32) -> f32 {\n var px = fract(x * 0.1031);\n var py = fract(y * 0.1031);\n var pz = fract(x * 0.1031);\n let d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);\n px = px + d;\n py = py + d;\n pz = pz + d;\n return fract((px + py) * pz);\n}\n\nfn valueNoise(x: f32, y: f32) -> f32 {\n let ix = floor(x);\n let iy = floor(y);\n let fx = x - ix;\n let fy = y - iy;\n let ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);\n let uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);\n let a = hash21(ix, iy);\n let b = hash21(ix + 1.0, iy);\n let c = hash21(ix, iy + 1.0);\n let d2 = hash21(ix + 1.0, iy + 1.0);\n return mix(mix(a, b, ux), mix(c, d2, ux), uy);\n}\n\n// The 3-octave scalar fbm potential \u2014 the host noise basis the curl operator wraps.\nfn potentialFBM(p: vec2f) -> f32 {\n var v = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n var px = p.x;\n var py = p.y;\n for (var i = 0; i < 3; i = i + 1) {\n v = v + amp * valueNoise(px * freq, py * freq);\n // FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) \u2014 same rotation as the shared chunk.\n let rx = 0.8 * px - 0.6 * py;\n let ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq = freq * 2.0;\n amp = amp * 0.5;\n }\n return v;\n}\n\n// The shared divergence-free 2D-curl operator (flow.wgsl.ts \u2014 the FIRST WGSL curl consumer).\n\nconst CURL_EPS: f32 = 0.012;\n\n// \u2207\u00D7\u03C8 in 2D \u2014 the divergence-free flow direction. Central finite differences of the\n// scalar potential give the partials; the cross-pairing (\u2202y, \u2212\u2202x) is the 2D curl.\nfn curlFBM(p: vec2f) -> vec2f {\n let dx = potentialFBM(p + vec2f(CURL_EPS, 0.0)) - potentialFBM(p - vec2f(CURL_EPS, 0.0));\n let dy = potentialFBM(p + vec2f(0.0, CURL_EPS)) - potentialFBM(p - vec2f(0.0, CURL_EPS));\n // \u03C8-gradient is (dx, dy)/(2\u00B7eps); the curl rotates it 90\u00B0: (\u2202\u03C8/\u2202y, \u2212\u2202\u03C8/\u2202x).\n let g = vec2f(dx, dy) / (2.0 * CURL_EPS);\n return vec2f(g.y, -g.x);\n}\n\n\n// The shared traveling-wave WARP chunk (waveField.wgsl.ts \u2014 waveFlow/cursorSwirl/\n// travelingEnvelope + the FACE leaf; splices AFTER valueNoise + curlFBM are declared). liquid-grid\n// + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY coupling \u2014 a leaf\n// tune moves both).\n\nconst WAVE_FIELD_TAU: f32 = 6.283185307179586;\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfn travelingEnvelope(pivot: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32) -> f32 {\n let coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n let crest = fract(coord / WAVE_FIELD_TAU);\n let z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfn curlScalar(cc: vec2f, t: f32) -> f32 {\n let f = curlFBM(vec2f(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\nconst WAVE_FIELD_TWIST_FLOOR: f32 = 0.62;\nfn directedTwist(s: f32, floorMag: f32) -> f32 {\n let mag = max(floorMag, abs(s));\n let sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// DECLARED ABOVE cellTwist (no WGSL forward declaration): cellTwist rides cellHeight via the\n// driver so twist + face read ONE envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfn cellHeight(cc: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32, amp: f32) -> f32 {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (the crest twist crosses\n// the cell boundary \u2192 floor(twisted_g) would light a NEIGHBOUR cell). cc in .xy, env in .z.\nfn cellDriver(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec3f {\n let cs = max(cellSize, 1e-3);\n let cc = (floor(g / cs) + 0.5) * cs;\n let env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3f(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nfn faceRelief(cc: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec2f {\n let eps = max(cellSize, 1e-3) * 0.5;\n let hxp = cellHeight(cc + vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hxm = cellHeight(cc - vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hyp = cellHeight(cc + vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hym = cellHeight(cc - vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2f((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the\n// distance into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats\n// as it grows (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfn facePlateau(g: vec2f, inset: f32, uvDeriv: vec2f) -> f32 {\n let tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n let d = min(tri.x, tri.y);\n let aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nfn cellTwist(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, twistMax: f32, shearMax: f32, amp: f32) -> vec2f {\n let drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n let cc = drv.xy;\n let env = drv.z;\n let floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n let theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n let shear = shearMax * env * directedTwist(curlScalar(cc + vec2f(17.3, 9.1), t), floorMag);\n let local = g - cc;\n let ct = cos(theta);\n let st = sin(theta);\n var rot = vec2f(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x = rot.x + shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// BG.W-GRID-AFFINE \u2014 warpFreq is the HOST-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as ONE smooth curve, no sub-cell crackle). liquid-grid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nfn waveFlow(g: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32,\n twistMax: f32, amp: f32, warpFreq: f32) -> vec2f {\n let env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n let f = curlFBM(vec2f(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n let wf2 = warpFreq * 1.833333;\n let f2 = curlFBM(vec2f(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n let k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nfn cursorSwirl(g: vec2f, cursor: vec2f, strength: f32, radius: f32) -> vec2f {\n let to = g - cursor;\n let d2 = dot(to, to);\n let r = max(radius, 1e-4);\n let theta = strength * exp(-d2 / (2.0 * r * r));\n let ct = cos(theta);\n let st = sin(theta);\n return cursor + vec2f(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfn heightField(p: vec2f, octavesF: f32, seed: f32) -> f32 {\n var v = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n var px = p.x + seed;\n var py = p.y - seed;\n let n = i32(clamp(octavesF, 1.0, 6.0));\n for (var i = 0; i < 6; i = i + 1) {\n if (i >= n) { break; }\n v = v + amp * valueNoise(px * freq, py * freq);\n let rx = 0.8 * px - 0.6 * py;\n let ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq = freq * 2.0;\n amp = amp * 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfn waveSwell(t: f32, phase: f32) -> f32 {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n\n\n// \u2500\u2500 \u00A71 The crisp line: Ben Golus derivative-AA grid coverage (transcribes gridCoverage) \u2500\u2500\n// targetWidth is the line half-width in GRID UNITS (lineWidthPx / minorPitchPx); uvDeriv is\n// the per-axis screen-space derivative of g (length(vec2(dpdx, dpdy)) per axis). Returns\n// line coverage [0..1] \u2014 exactly N device-pixels wide at ANY DPR/zoom (the blur-kill).\nfn gridCoverage(g: vec2f, targetWidth: f32, uvDeriv: vec2f) -> f32 {\n // triangle wave per axis: 0 at a line, 1 at the cell center.\n let gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);\n let drawWidth = clamp(vec2f(targetWidth), uvDeriv, vec2f(0.5));\n let lineAA = uvDeriv * 1.5;\n // smoothstep with edge0 > edge1 (Golus) \u2192 a falling edge.\n var grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);\n // preserve thin-line intensity where the line is sub-drawWidth.\n grid2 = grid2 * clamp(vec2f(targetWidth) / max(drawWidth, vec2f(1e-6)), vec2f(0.0), vec2f(1.0));\n // Moir\u00E9 suppression: fade toward the average where the cell packs tighter than a pixel.\n grid2 = mix(grid2, vec2f(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2f(0.0), vec2f(1.0)));\n return max(grid2.x, grid2.y);\n}\n\n// \u2500\u2500 The 3-stop warm-divergent FACE ramp (FOLD B \u2014 height-keyed, NOT a 2-point mid-park) \u2500\u2500\n// trough (faceLo) \u2192 mid (faceMid) \u2192 crest (faceHi), keyed on rampT = mix(shade, h). All stops\n// are warm hue \u2208 [20,90] (the teal-navy purge clear by construction). Linear-space stops; the\n// fs_main routes the result through the production OETF (FOLD E).\nfn faceRamp(rampT: f32) -> vec3f {\n let s = clamp(rampT, 0.0, 1.0);\n if (s < 0.5) {\n return mix(u.faceLo.rgb, u.faceMid.rgb, s * 2.0);\n }\n return mix(u.faceMid.rgb, u.faceHi.rgb, (s - 0.5) * 2.0);\n}\n\n// Full-screen-triangle (the pilot idiom): NDC corners (-1,-1),(3,-1),(-1,3) cover the\n// viewport from a single 3-vertex draw \u2014 no vertex buffer.\nstruct VSOut {\n @builtin(position) pos: vec4f,\n @location(0) uv: vec2f, // domain [-1,1]\u00B2, aspect-corrected x\n};\n\n@vertex\nfn vs_main(@builtin(vertex_index) vi: u32) -> VSOut {\n var corners = array<vec2f, 3>(\n vec2f(-1.0, -1.0), vec2f(3.0, -1.0), vec2f(-1.0, 3.0),\n );\n let c = corners[vi];\n var out: VSOut;\n out.pos = vec4f(c, 0.0, 1.0);\n out.uv = vec2f(c.x, c.y);\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4f {\n let aspect = max(u.warp2.y, 1e-4);\n // aspect-correct the domain x so the cells read square.\n let uv = vec2f(in.uv.x * aspect, in.uv.y);\n let t = u.u0.x;\n let gridScale = u.u0.y;\n\n // \u00A75 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier\n // Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) \u2014\n // a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell\n // scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,\n // no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL\n // warped coord (the crisp-line fence survives).\n let g0 = uv * gridScale;\n // BG.W-GRID-AFFINE \u2014 g0 is CELL-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS\n // LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE\n // smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).\n var g = waveFlow(g0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.y, u.wave2.w, 0.03);\n if (u.cursor2.y > 0.5) {\n // bulgeMode (cursor2.x: +repel / \u2212attract) signs the swirl direction.\n g = cursorSwirl(g, u.cursor.xy, u.cursor.z * u.cursor2.x, u.cursor.w);\n }\n\n // The screen-space derivative of g (Golus): length(vec2(dpdx, dpdy)) per axis. fwidth-class\n // derivative reads the ACTUAL backing-store pixel (NOT fwidthFine \u2014 Compatibility-Mode safe).\n let dv = vec2f(\n length(vec2f(dpdx(g.x), dpdy(g.x))),\n length(vec2f(dpdx(g.y), dpdy(g.y))),\n );\n\n let minor = gridCoverage(g, u.grid.x, dv);\n // The major tier evals at g / majorEvery with its own derivative scaling.\n let me = max(u.u0.w, 1.0);\n let major = gridCoverage(g / me, u.grid.y, dv / me);\n let line = max(minor * u.grid.z, major * u.grid.w);\n\n // \u2500\u2500 The FACE (BD.W-PAPERGRID-FACE) \u2014 height-lit filled cell interior \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment\n // lands in under the affine warp); Lambert the \u2207H slope against the fixed cel key-light; squash\n // the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)\n // (FOLD B); the ink through the production OETF (FOLD E).\n let cc = floor(g) + vec2f(0.5);\n let h = cellHeight(cc, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);\n let grad = faceRelief(cc, 1.0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);\n let n = normalize(vec3f(-grad * u.face.y, 1.0));\n let shade = clamp(0.5 + dot(n, normalize(vec3f(u.warp2.zw, 1.0))) * 0.5, 0.0, 1.0);\n let inset = u.face.w * (1.0 - u.face.z * h); // squash & stretch\n let face = facePlateau(g, inset, dv);\n let rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B \u2014 height-keyed crest\n let faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3f(0.0), vec3f(1.0));\n let faceA = face * u.face.x * u.field.x; // FOLD D \u2014 one field-blend scalar\n\n let col = clamp(linearToSrgb(u.line.rgb), vec3f(0.0), vec3f(1.0));\n let hasBg = u.field.y;\n if (hasBg > 0.5) {\n // opaque ground: the face fills the cell, the ink over the themed bg, the line on top.\n let bg = clamp(linearToSrgb(u.bg.rgb), vec3f(0.0), vec3f(1.0));\n let base = mix(bg, faceInk, faceA);\n let a = line * u.field.x;\n let outRgb = mix(base, col, a);\n return vec4f(outRgb, 1.0);\n }\n // transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in\n // PREMULTIPLIED space (the page reads through the gutters). faceAlpha:0 \u2192 faceA=0 \u2192 the face\n // term vanishes \u2192 vec4f(col\u00B7line, line) = byte-identical to the HEAD line-only render.\n let linePremult = (col * line) * u.field.x; // line layer (the FieldAlpha global subtlety)\n let lineA = line * u.field.x;\n let facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field.x)\n let outPremult = linePremult + facePremult * (1.0 - lineA);\n let a = lineA + faceA * (1.0 - lineA);\n return vec4f(outPremult, a); // premultiplied over transparent\n}\n";
1
+ export declare const LIQUID_GRID_WGSL = "\nconst TAU: f32 = 6.283185307179586;\n\n// \u2500\u2500 Paper-grid uniforms (the typed-struct source-of-truth \u2014 see uniformBridgeWGPU.ts) \u2500\u2500\nstruct LiquidGridUniforms {\n // u0: (uTime, uGridScale, uMinorPitch, uMajorEvery)\n u0: vec4<f32>,\n // face: (uFaceAlpha, uFaceRelief, uSquashK, uBaseInset) \u2014 the height-lit FACE (re-points the retired warp lane)\n face: vec4<f32>,\n // warp2: (uAmplitude, uAspect, uLightDirX, uLightDirY) \u2014 aspect + the cel key-light\n warp2: vec4<f32>,\n // grid: (uTargetWidth, uTargetWidthMajor, uMinorAlpha, uMajorAlpha)\n grid: vec4<f32>,\n // field: (uFieldAlpha, uHasBackground, _pad, _pad)\n field: vec4<f32>,\n // cursor: (uCursorX, uCursorY, uSwirlStrength, uSwirlRadius)\n cursor: vec4<f32>,\n // cursor2: (uBulgeMode, uInteractive, _pad, _pad)\n cursor2: vec4<f32>,\n // line: (uLineColor.rgb (linear), _pad)\n line: vec4<f32>,\n // bg: (uBg.rgb (linear), _pad)\n bg: vec4<f32>,\n // wave: (waveDirX, waveDirY, waveK, waveOmega) \u2014 the traveling-wave crest\n wave: vec4<f32>,\n // wave2: (waveSigma, twistMax, _pad, amp) \u2014 the affine sheet-warp envelope (amp: spring-eased)\n wave2: vec4<f32>,\n // faceLo: (rose-umber trough.rgb (linear), _pad) \u2014 the warm-divergent ramp (FOLD B, 3-stop)\n faceLo: vec4<f32>,\n // faceMid: (ember-amber mid.rgb (linear), _pad)\n faceMid: vec4<f32>,\n // faceHi: (warm-wheat crest.rgb (linear), _pad)\n faceHi: vec4<f32>,\n};\n\n@group(0) @binding(0) var<uniform> u: LiquidGridUniforms;\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// \u2500\u2500 The host noise basis (transcribes liquidGrid.ts hash21/valueNoise/potentialFBM) \u2500\u2500\n// A quintic-faded 2D value-noise fbm potential \u2014 the SAME basis the dot-flow-field carries\n// (so the suite speaks ONE noise basis). DECLARED ABOVE the curl splice (WGSL has no forward\n// declaration \u2014 a function may only call one declared earlier).\nfn hash21(x: f32, y: f32) -> f32 {\n var px = fract(x * 0.1031);\n var py = fract(y * 0.1031);\n var pz = fract(x * 0.1031);\n let d = px * (py + 33.33) + py * (pz + 33.33) + pz * (px + 33.33);\n px = px + d;\n py = py + d;\n pz = pz + d;\n return fract((px + py) * pz);\n}\n\nfn valueNoise(x: f32, y: f32) -> f32 {\n let ix = floor(x);\n let iy = floor(y);\n let fx = x - ix;\n let fy = y - iy;\n let ux = fx * fx * fx * (fx * (fx * 6.0 - 15.0) + 10.0);\n let uy = fy * fy * fy * (fy * (fy * 6.0 - 15.0) + 10.0);\n let a = hash21(ix, iy);\n let b = hash21(ix + 1.0, iy);\n let c = hash21(ix, iy + 1.0);\n let d2 = hash21(ix + 1.0, iy + 1.0);\n return mix(mix(a, b, ux), mix(c, d2, ux), uy);\n}\n\n// The 3-octave scalar fbm potential \u2014 the host noise basis the curl operator wraps.\nfn potentialFBM(p: vec2f) -> f32 {\n var v = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n var px = p.x;\n var py = p.y;\n for (var i = 0; i < 3; i = i + 1) {\n v = v + amp * valueNoise(px * freq, py * freq);\n // FBM_ROT mat2(0.8, 0.6, -0.6, 0.8) \u2014 same rotation as the shared chunk.\n let rx = 0.8 * px - 0.6 * py;\n let ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq = freq * 2.0;\n amp = amp * 0.5;\n }\n return v;\n}\n\n// The shared divergence-free 2D-curl operator (flow.wgsl.ts \u2014 the FIRST WGSL curl consumer).\n\nconst CURL_EPS: f32 = 0.012;\n\n// \u2207\u00D7\u03C8 in 2D \u2014 the divergence-free flow direction. Central finite differences of the\n// scalar potential give the partials; the cross-pairing (\u2202y, \u2212\u2202x) is the 2D curl.\nfn curlFBM(p: vec2f) -> vec2f {\n let dx = potentialFBM(p + vec2f(CURL_EPS, 0.0)) - potentialFBM(p - vec2f(CURL_EPS, 0.0));\n let dy = potentialFBM(p + vec2f(0.0, CURL_EPS)) - potentialFBM(p - vec2f(0.0, CURL_EPS));\n // \u03C8-gradient is (dx, dy)/(2\u00B7eps); the curl rotates it 90\u00B0: (\u2202\u03C8/\u2202y, \u2212\u2202\u03C8/\u2202x).\n let g = vec2f(dx, dy) / (2.0 * CURL_EPS);\n return vec2f(g.y, -g.x);\n}\n\n\n// The shared traveling-wave WARP chunk (waveField.wgsl.ts \u2014 waveFlow/cursorSwirl/\n// travelingEnvelope + the FACE leaf; splices AFTER valueNoise + curlFBM are declared). liquid-grid\n// + concentric read the SAME waveFlow continuous affine sheet-warp (the DRY coupling \u2014 a leaf\n// tune moves both).\n\nconst WAVE_FIELD_TAU: f32 = 6.283185307179586;\n\n// The traveling-wave envelope \u2014 a moving Gaussian crest band sweeping along waveDir.\nfn travelingEnvelope(pivot: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32) -> f32 {\n let coord = dot(pivot, waveDir) * waveK - t * waveOmega;\n let crest = fract(coord / WAVE_FIELD_TAU);\n let z = (crest - 0.5) * 2.0;\n return exp(-(z * z) / max(waveSigma, 1e-3));\n}\n\n// The curl-direction scalar \u2014 the smooth low-freq director the per-cell twist follows.\nfn curlScalar(cc: vec2f, t: f32) -> f32 {\n let f = curlFBM(vec2f(cc.x * 0.5 + t * 0.08, cc.y * 0.5 - t * 0.06));\n return clamp(f.x, -1.0, 1.0);\n}\n\n// The directed-twist FLOOR (the visibility cure): keep the curl SIGN (adjacent cells lean\n// together) but floor the magnitude so a crest-band cell ALWAYS rotates decisively.\nconst WAVE_FIELD_TWIST_FLOOR: f32 = 0.62;\nfn directedTwist(s: f32, floorMag: f32) -> f32 {\n let mag = max(floorMag, abs(s));\n let sgn = tanh(s * 6.0);\n return sgn * mag;\n}\n\n// \u2500\u2500 The FACE leaf (the structurally-absent RE-INVENT \u2014 height-lit filled cell interior) \u2500\u2500\n// DECLARED ABOVE cellTwist (no WGSL forward declaration): cellTwist rides cellHeight via the\n// driver so twist + face read ONE envelope.\n\n// The sheet displacement at a cell center = the EXACT traveling-wave scalar the twist rides.\nfn cellHeight(cc: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32, amp: f32) -> f32 {\n return travelingEnvelope(cc, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n}\n\n// The pre-twist driver (FOLD A): the cell pivot cc + the crest envelope env the twist AND the\n// face both ride. The face samples height/relief at THIS pre-twist cc (the crest twist crosses\n// the cell boundary \u2192 floor(twisted_g) would light a neighbouring cell). cc is in .xy and env in .z.\nfn cellDriver(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec3f {\n let cs = max(cellSize, 1e-3);\n let cc = (floor(g / cs) + 0.5) * cs;\n let env = cellHeight(cc, t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec3f(cc, env);\n}\n\n// The central-difference slope of cellHeight across a cell (eps = 0.5\u00B7cellSize) \u2014 derivative-\n// FREE (NO dFdx on the height) \u2192 Safari WebGL2-safe. Returns \u2207H.\nfn faceRelief(cc: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, amp: f32) -> vec2f {\n let eps = max(cellSize, 1e-3) * 0.5;\n let hxp = cellHeight(cc + vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hxm = cellHeight(cc - vec2f(eps, 0.0), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hyp = cellHeight(cc + vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n let hym = cellHeight(cc - vec2f(0.0, eps), t, waveDir, waveK, waveOmega, waveSigma, amp);\n return vec2f((hxp - hxm) / (2.0 * eps), (hyp - hym) / (2.0 * eps));\n}\n\n// Soft inset-square coverage inside a (warped) cell \u2014 the filled FACE plateau. d is the\n// distance into the cell from the nearest gutter (the Golus triangle-wave); the inset retreats\n// as it grows (the squash). aa = the shader's fwidth(g) (JS passes a fixed uvDeriv).\nfn facePlateau(g: vec2f, inset: f32, uvDeriv: vec2f) -> f32 {\n let tri = 1.0 - abs(fract(g) * 2.0 - 1.0);\n let d = min(tri.x, tri.y);\n let aa = max(uvDeriv.x, uvDeriv.y) * 1.5;\n return smoothstep(inset, inset + 2.0 * aa, d);\n}\n\n// The cell-local twist about each cell's own center, gated by the traveling wave + directed\n// by the curl flow. amp is the spring-eased envelope amplitude the JS host drives. FOLD C: the\n// TWIST_FLOOR is crest-gated by env so OFF-crest cells relax to flat calm paper (the traveling\n// read, not static foil).\nfn cellTwist(g: vec2f, cellSize: f32, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32,\n waveSigma: f32, twistMax: f32, shearMax: f32, amp: f32) -> vec2f {\n let drv = cellDriver(g, cellSize, t, waveDir, waveK, waveOmega, waveSigma, amp);\n let cc = drv.xy;\n let env = drv.z;\n let floorMag = WAVE_FIELD_TWIST_FLOOR * env; // FOLD C: crest-gated floor\n let theta = twistMax * env * directedTwist(curlScalar(cc, t), floorMag);\n let shear = shearMax * env * directedTwist(curlScalar(cc + vec2f(17.3, 9.1), t), floorMag);\n let local = g - cc;\n let ct = cos(theta);\n let st = sin(theta);\n var rot = vec2f(ct * local.x - st * local.y, st * local.x + ct * local.y);\n rot.x = rot.x + shear * rot.y; // a small skew so the box MORPHS, not just rotates\n return cc + rot;\n}\n\n// The CONTINUOUS traveling-wave FLOW warp \u2014 the SMOOTH twin of cellTwist (no per-cell seam;\n// for the level-set contours that shatter into a mesh under the cell discontinuity).\n// warpFreq is the host-supplied curl-sampling spatial frequency (the caller's\n// own coordinate units): an order of magnitude BELOW its grid frequency so the warp is locally\n// affine (major lines bow as one smooth curve, no sub-cell crackle). LiquidGrid (cell-scale g0)\n// passes ~0.03; concentric (unit-scale p) passes 0.6. The 1.833333 second-flow ratio transcribes\n// WAVE_FLOW_SECOND_RATIO. Amplitude unchanged \u2014 curl magnitude is the intrinsic gradient at the\n// fixed CURL_EPS, independent of warpFreq; the t-drift is host-agnostic.\nfn waveFlow(g: vec2f, t: f32, waveDir: vec2f, waveK: f32, waveOmega: f32, waveSigma: f32,\n twistMax: f32, amp: f32, warpFreq: f32) -> vec2f {\n let env = travelingEnvelope(g, t, waveDir, waveK, waveOmega, waveSigma) * amp;\n let f = curlFBM(vec2f(g.x * warpFreq + t * 0.05, g.y * warpFreq - t * 0.04));\n let wf2 = warpFreq * 1.833333;\n let f2 = curlFBM(vec2f(g.x * wf2 - t * 0.03, g.y * wf2 + t * 0.035));\n let k = twistMax * env;\n return g + (f + f2 * 0.5) * k;\n}\n\n// The local cursor swirl \u2014 the finger twists the cells around it (re-aimed cursorBulge).\nfn cursorSwirl(g: vec2f, cursor: vec2f, strength: f32, radius: f32) -> vec2f {\n let to = g - cursor;\n let d2 = dot(to, to);\n let r = max(radius, 1e-4);\n let theta = strength * exp(-d2 / (2.0 * r * r));\n let ct = cos(theta);\n let st = sin(theta);\n return cursor + vec2f(ct * to.x - st * to.y, st * to.x + ct * to.y);\n}\n\n// The LOW-octave value-noise topography \u2014 the scalar field concentric extracts contours of.\nfn heightField(p: vec2f, octavesF: f32, seed: f32) -> f32 {\n var v = 0.0;\n var amp = 0.5;\n var freq = 1.0;\n var px = p.x + seed;\n var py = p.y - seed;\n let n = i32(clamp(octavesF, 1.0, 6.0));\n for (var i = 0; i < 6; i = i + 1) {\n if (i >= n) { break; }\n v = v + amp * valueNoise(px * freq, py * freq);\n let rx = 0.8 * px - 0.6 * py;\n let ry = 0.6 * px + 0.8 * py;\n px = rx;\n py = ry;\n freq = freq * 2.0;\n amp = amp * 0.5;\n }\n return v;\n}\n\n// The \u03C9=\u221A(g\u00B7k) breathing swell \u2014 basins inflate/deflate with weight.\nfn waveSwell(t: f32, phase: f32) -> f32 {\n return sin(t * 0.35 + phase) * 0.5 + sin(t * 0.21 + phase * 1.7) * 0.5;\n}\n\n\n// \u2500\u2500 \u00A71 The crisp line: Ben Golus derivative-AA grid coverage (transcribes gridCoverage) \u2500\u2500\n// targetWidth is the line half-width in grid units (lineWidthPx / minorPitchPx); uvDeriv is\n// the per-axis screen-space derivative of g (length(vec2(dpdx, dpdy)) per axis). Returns\n// line coverage [0..1] \u2014 exactly N device-pixels wide at ANY DPR/zoom (the blur-kill).\nfn gridCoverage(g: vec2f, targetWidth: f32, uvDeriv: vec2f) -> f32 {\n // triangle wave per axis: 0 at a line, 1 at the cell center.\n let gridUV = 1.0 - abs(fract(g) * 2.0 - 1.0);\n let drawWidth = clamp(vec2f(targetWidth), uvDeriv, vec2f(0.5));\n let lineAA = uvDeriv * 1.5;\n // smoothstep with edge0 > edge1 (Golus) \u2192 a falling edge.\n var grid2 = smoothstep(drawWidth + lineAA, drawWidth - lineAA, gridUV);\n // preserve thin-line intensity where the line is sub-drawWidth.\n grid2 = grid2 * clamp(vec2f(targetWidth) / max(drawWidth, vec2f(1e-6)), vec2f(0.0), vec2f(1.0));\n // Moir\u00E9 suppression: fade toward the average where the cell packs tighter than a pixel.\n grid2 = mix(grid2, vec2f(targetWidth), clamp(uvDeriv * 2.0 - 1.0, vec2f(0.0), vec2f(1.0)));\n return max(grid2.x, grid2.y);\n}\n\n// \u2500\u2500 The 3-stop warm-divergent FACE ramp (FOLD B \u2014 height-keyed, NOT a 2-point mid-park) \u2500\u2500\n// trough (faceLo) \u2192 mid (faceMid) \u2192 crest (faceHi), keyed on rampT = mix(shade, h). All stops\n// are warm hue \u2208 [20,90] (the teal-navy purge clear by construction). Linear-space stops; the\n// fs_main routes the result through the production OETF (FOLD E).\nfn faceRamp(rampT: f32) -> vec3f {\n let s = clamp(rampT, 0.0, 1.0);\n if (s < 0.5) {\n return mix(u.faceLo.rgb, u.faceMid.rgb, s * 2.0);\n }\n return mix(u.faceMid.rgb, u.faceHi.rgb, (s - 0.5) * 2.0);\n}\n\n// Full-screen-triangle (the pilot idiom): NDC corners (-1,-1),(3,-1),(-1,3) cover the\n// viewport from a single 3-vertex draw \u2014 no vertex buffer.\nstruct VSOut {\n @builtin(position) pos: vec4f,\n @location(0) uv: vec2f, // domain [-1,1]\u00B2, aspect-corrected x\n};\n\n@vertex\nfn vs_main(@builtin(vertex_index) vi: u32) -> VSOut {\n var corners = array<vec2f, 3>(\n vec2f(-1.0, -1.0), vec2f(3.0, -1.0), vec2f(-1.0, 3.0),\n );\n let c = corners[vi];\n var out: VSOut;\n out.pos = vec4f(c, 0.0, 1.0);\n out.uv = vec2f(c.x, c.y);\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4f {\n let aspect = max(u.warp2.y, 1e-4);\n // aspect-correct the domain x so the cells read square.\n let uv = vec2f(in.uv.x * aspect, in.uv.y);\n let t = u.u0.x;\n let gridScale = u.u0.y;\n\n // \u00A75 the per-pixel kernel: AFFINE sheet-warp + cursor-swirl the grid coordinate, then two-tier\n // Golus. waveFlow is the SMOOTH continuous domain transform (the SAME warp concentric reads) \u2014\n // a low-order curl-flow displacement gated by the traveling wave, locally affine at the cell\n // scale, so the sheet bows/shears as ONE coherent transform (major lines a single smooth curve,\n // no per-cell seam); cursorSwirl twists the cells about the finger. The Golus dv reads the FINAL\n // warped coord (the crisp-line fence survives).\n let g0 = uv * gridScale;\n // g0 is CELL-scale, so pass the tiny 0.03 curl-sampling frequency (== the JS\n // LIQUID_GRID_WARP_FREQ) so the warp is locally affine at the cell scale (major lines bow as ONE\n // smooth curve, no sub-cell crackle). Concentric passes 0.6 (its p is unit-scale).\n var g = waveFlow(g0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.y, u.wave2.w, 0.03);\n if (u.cursor2.y > 0.5) {\n // bulgeMode (cursor2.x: +repel, \u2212attract) signs the swirl direction.\n g = cursorSwirl(g, u.cursor.xy, u.cursor.z * u.cursor2.x, u.cursor.w);\n }\n\n // The screen-space derivative of g (Golus): length(vec2(dpdx, dpdy)) per axis. fwidth-class\n // derivative reads the ACTUAL backing-store pixel (NOT fwidthFine \u2014 Compatibility-Mode safe).\n let dv = vec2f(\n length(vec2f(dpdx(g.x), dpdy(g.x))),\n length(vec2f(dpdx(g.y), dpdy(g.y))),\n );\n\n let minor = gridCoverage(g, u.grid.x, dv);\n // The major tier evaluates at g / majorEvery with its own derivative scaling.\n let me = max(u.u0.w, 1.0);\n let major = gridCoverage(g / me, u.grid.y, dv / me);\n let line = max(minor * u.grid.z, major * u.grid.w);\n\n // \u2500\u2500 The FACE \u2014 height-lit filled cell interior \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n // Sample height/relief at the WARPED-space cell center (floor(g)+0.5, the cell the fragment\n // lands in under the affine warp); Lambert the \u2207H slope against the fixed cel key-light; squash\n // the inset so the crest face inflates; multi-stop warm-divergent ramp keyed on mix(shade, h)\n // (FOLD B); the ink through the production OETF (FOLD E).\n let cc = floor(g) + vec2f(0.5);\n let h = cellHeight(cc, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);\n let grad = faceRelief(cc, 1.0, t, u.wave.xy, u.wave.z, u.wave.w, u.wave2.x, u.wave2.w);\n let n = normalize(vec3f(-grad * u.face.y, 1.0));\n let shade = clamp(0.5 + dot(n, normalize(vec3f(u.warp2.zw, 1.0))) * 0.5, 0.0, 1.0);\n let inset = u.face.w * (1.0 - u.face.z * h); // squash & stretch\n let face = facePlateau(g, inset, dv);\n let rampT = clamp(shade * 0.5 + h * 0.5, 0.0, 1.0); // FOLD B \u2014 height-keyed crest\n let faceInk = clamp(linearToSrgb(faceRamp(rampT)), vec3f(0.0), vec3f(1.0));\n let faceA = face * u.face.x * u.field.x; // FOLD D \u2014 one field-blend scalar\n\n let col = clamp(linearToSrgb(u.line.rgb), vec3f(0.0), vec3f(1.0));\n let hasBg = u.field.y;\n if (hasBg > 0.5) {\n // opaque ground: the face fills the cell, the ink over the themed bg, the line on top.\n let bg = clamp(linearToSrgb(u.bg.rgb), vec3f(0.0), vec3f(1.0));\n let base = mix(bg, faceInk, faceA);\n let a = line * u.field.x;\n let outRgb = mix(base, col, a);\n return vec4f(outRgb, 1.0);\n }\n // transparent ground: the FACE composites UNDER the line, the SOURCE-OVER operator in\n // PREMULTIPLIED space (the page reads through the gutters). faceAlpha:0 \u2192 faceA=0 \u2192 the face\n // term vanishes \u2192 vec4f(col\u00B7line, line) = the line-only render.\n let linePremult = (col * line) * u.field.x; // line layer (the FieldAlpha global subtlety)\n let lineA = line * u.field.x;\n let facePremult = faceInk * faceA; // face layer premultiplied (faceA folds field.x)\n let outPremult = linePremult + facePremult * (1.0 - lineA);\n let a = lineA + faceA * (1.0 - lineA);\n return vec4f(outPremult, a); // premultiplied over transparent\n}\n";
@@ -0,0 +1,24 @@
1
+ import type { MetricProps } from "./types";
2
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
3
+ type __VLS_Slots = {} & {
4
+ label?: (props: typeof __VLS_1) => any;
5
+ } & {
6
+ value?: (props: typeof __VLS_3) => any;
7
+ } & {
8
+ unit?: (props: typeof __VLS_5) => any;
9
+ } & {
10
+ context?: (props: typeof __VLS_7) => any;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<MetricProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricProps> & Readonly<{}>, {
13
+ size: import("./types").MetricSize;
14
+ orientation: import("./types").MetricOrientation;
15
+ loading: boolean;
16
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
17
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,26 @@
1
+ import type { MetricCellProps } from "./types";
2
+ declare var __VLS_1: {}, __VLS_8: {}, __VLS_10: {}, __VLS_12: {}, __VLS_14: {};
3
+ type __VLS_Slots = {} & {
4
+ icon?: (props: typeof __VLS_1) => any;
5
+ } & {
6
+ label?: (props: typeof __VLS_8) => any;
7
+ } & {
8
+ value?: (props: typeof __VLS_10) => any;
9
+ } & {
10
+ unit?: (props: typeof __VLS_12) => any;
11
+ } & {
12
+ context?: (props: typeof __VLS_14) => any;
13
+ };
14
+ declare const __VLS_base: import("vue").DefineComponent<MetricCellProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricCellProps> & Readonly<{}>, {
15
+ loading: boolean;
16
+ iconSize: number;
17
+ iconStrokeWidth: number;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
20
+ declare const _default: typeof __VLS_export;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,22 @@
1
+ import type { MetricRowProps } from "./types";
2
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
3
+ type __VLS_Slots = {} & {
4
+ label?: (props: typeof __VLS_1) => any;
5
+ } & {
6
+ context?: (props: typeof __VLS_3) => any;
7
+ } & {
8
+ value?: (props: typeof __VLS_5) => any;
9
+ } & {
10
+ unit?: (props: typeof __VLS_7) => any;
11
+ };
12
+ declare const __VLS_base: import("vue").DefineComponent<MetricRowProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricRowProps> & Readonly<{}>, {
13
+ loading: boolean;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,16 @@
1
+ import type { MetricStackProps } from "./types";
2
+ declare var __VLS_1: {};
3
+ type __VLS_Slots = {} & {
4
+ default?: (props: typeof __VLS_1) => any;
5
+ };
6
+ declare const __VLS_base: import("vue").DefineComponent<MetricStackProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricStackProps> & Readonly<{}>, {
7
+ density: import("./types").MetricDensity;
8
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ type __VLS_WithSlots<T, S> = T & {
13
+ new (): {
14
+ $slots: S;
15
+ };
16
+ };
@@ -1,29 +1,8 @@
1
- /** The canonical em-dash placeholder for an empty Metric* value. */
2
- export declare const METRIC_PLACEHOLDER = "\u2014";
3
- /** The value type every Metric* primary field accepts. */
4
- export type MetricValue = string | number | null | undefined;
5
- /**
6
- * The shared value-props shape the four Metric* surfaces extend (each adds its
7
- * own register-specific props on top — icon, label, size, density, …).
8
- */
9
- export interface MetricValueProps {
10
- /** The primary metric. A valid `0` renders `"0"`, never the placeholder. */
11
- value?: MetricValue;
12
- /** Unit suffix appended after the value (e.g. "Mbps", "ms"). */
13
- unit?: string;
14
- /** Substitute glyph when the value is empty (null / undefined / ""). */
15
- placeholder?: string;
16
- }
17
- /**
18
- * The canonical empty-value substitution for the Metric* family.
19
- *
20
- * Returns BOTH the display string AND the `isEmpty` flag so a surface's
21
- * muted/color gates read `isEmpty` (the correct empty signal) rather than the
22
- * truthy `!value` (the bug — `!0` is `true`). `coalesceMetric(0)` →
23
- * `{ display: "0", isEmpty: false }`, so a `0` is NOT muted and DOES get its
24
- * color; only `null` / `undefined` / `""` are empty.
25
- */
26
- export declare function coalesceMetric(value: MetricValue, placeholder?: string): {
1
+ import type { MetricValue } from "./types";
2
+ interface CoalescedMetric {
27
3
  display: string;
28
- isEmpty: boolean;
29
- };
4
+ empty: boolean;
5
+ loading: boolean;
6
+ }
7
+ export declare function coalesceMetric(value: MetricValue, placeholder?: string, loading?: boolean): CoalescedMetric;
8
+ export {};
@@ -0,0 +1,5 @@
1
+ export { default as Metric } from "./Metric.vue";
2
+ export { default as MetricCell } from "./MetricCell.vue";
3
+ export { default as MetricRow } from "./MetricRow.vue";
4
+ export { default as MetricStack } from "./MetricStack.vue";
5
+ export type { MetricCellProps, MetricDensity, MetricOrientation, MetricProps, MetricRowProps, MetricSize, MetricStackProps, MetricValue, MetricValueProps, } from "./types";
@@ -0,0 +1 @@
1
+ @layer components { :where(.metric, .metric-cell, .metric-row) { min-inline-size: 0; color: var(--foreground); } .metric { display: inline-grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr); align-items: baseline; gap: 0.125rem 0.5rem; } .metric[data-orientation="stacked"] { grid-template-columns: minmax(0, 1fr); } .metric__label, .metric__context { min-inline-size: 0; overflow-wrap: anywhere; color: var(--muted-foreground); } .metric__label { font-size: var(--type-micro); font-weight: 550; letter-spacing: var(--type-tracking-wide); text-transform: uppercase; } .metric__context { grid-column: 1 / -1; font-size: var(--type-caption); line-height: 1.35; } .metric__reading { display: inline-flex; min-inline-size: 0; align-items: baseline; gap: 0.3em; } .metric__value { min-inline-size: 3ch; overflow-wrap: anywhere; font-family: var(--font-mono); font-size: var(--type-prose); font-weight: 650; font-variant-numeric: tabular-nums lining-nums; letter-spacing: var(--type-tracking-tight); line-height: 1; } .metric__unit { flex: none; color: var(--muted-foreground); font-family: var(--font-mono); font-size: var(--type-caption); line-height: 1; } .metric[data-size="sm"] .metric__value { font-size: var(--type-small); } .metric[data-size="lg"] .metric__value, .metric-cell .metric__value { font-size: var(--type-title); } .metric[data-size="xl"] .metric__value { font-size: var(--type-display-3); } :where(.metric, .metric-cell, .metric-row)[data-empty] .metric__value { color: var(--muted-foreground); } :where(.metric, .metric-cell, .metric-row)[data-loading] .metric__value { color: transparent; border-radius: var(--radius-sm); background: var(--surface-tint-15); } :where(.metric, .metric-cell, .metric-row)[data-loading] .metric__unit { visibility: hidden; } .metric-cell { display: grid; align-content: start; gap: 0.375rem; padding: clamp(0.75rem, 2cqi, 1rem); border: 1px solid var(--glass-border-wash); border-radius: var(--radius-card); background: var(--glass-bg-wash); -webkit-backdrop-filter: var(--glass-blur-wash); backdrop-filter: var(--glass-blur-wash); } .metric-cell__heading { display: flex; min-inline-size: 0; align-items: center; gap: 0.375rem; } .metric-cell__icon { flex: none; color: var(--muted-foreground); } .metric-stack { container: metric-stack / inline-size; display: grid; grid-template-columns: minmax(7rem, 1fr) minmax(0, auto); gap: 0.75rem 1.25rem; inline-size: 100%; } .metric-stack[data-density="compact"] { gap: 0.5rem 1rem; } .metric-row { display: grid; grid-column: 1 / -1; grid-template-columns: subgrid; align-items: baseline; padding-block: 0.25rem; } .metric-row__term { display: grid; min-inline-size: 0; gap: 0.125rem; } .metric-row > .metric__reading { justify-self: end; } .metric-row .metric__context { grid-column: auto; } @container metric-stack (max-width: 24rem) { .metric-row { grid-template-columns: minmax(0, 1fr); gap: 0.25rem; } .metric-row > .metric__reading { justify-self: start; } } }
@@ -0,0 +1,32 @@
1
+ import type { Component, FunctionalComponent, HTMLAttributes } from "vue";
2
+ export type MetricValue = string | number | null | undefined;
3
+ export type MetricSize = "sm" | "md" | "lg" | "xl";
4
+ export type MetricOrientation = "inline" | "stacked";
5
+ export type MetricDensity = "default" | "compact";
6
+ export interface MetricValueProps {
7
+ value?: MetricValue;
8
+ unit?: string;
9
+ placeholder?: string;
10
+ loading?: boolean;
11
+ }
12
+ interface MetricTextProps extends MetricValueProps {
13
+ label?: string;
14
+ context?: string;
15
+ class?: HTMLAttributes["class"];
16
+ }
17
+ export interface MetricProps extends MetricTextProps {
18
+ size?: MetricSize;
19
+ orientation?: MetricOrientation;
20
+ }
21
+ export interface MetricCellProps extends MetricTextProps {
22
+ icon?: Component | FunctionalComponent | object | null;
23
+ iconSize?: number;
24
+ iconStrokeWidth?: number;
25
+ }
26
+ export interface MetricRowProps extends MetricTextProps {
27
+ }
28
+ export interface MetricStackProps {
29
+ density?: MetricDensity;
30
+ class?: HTMLAttributes["class"];
31
+ }
32
+ export {};
@@ -1,16 +1,28 @@
1
- import type { NumberFieldRootProps } from 'reka-ui';
2
- import { type HTMLAttributes } from 'vue';
3
- type __VLS_Props = NumberFieldRootProps & {
4
- class?: HTMLAttributes['class'];
5
- };
1
+ import { type HTMLAttributes } from "vue";
2
+ import type { FormFieldProps, PrimitiveProps } from "../_shared/primitive";
3
+ export interface NumberFieldProps extends PrimitiveProps, FormFieldProps {
4
+ modelValue?: number | null;
5
+ defaultValue?: number;
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ formatOptions?: Intl.NumberFormatOptions;
10
+ locale?: string;
11
+ disabled?: boolean;
12
+ readonly?: boolean;
13
+ id?: string;
14
+ /** App-driven invalid state; locale parsing and native form behavior stay Reka-owned. */
15
+ invalid?: boolean;
16
+ class?: HTMLAttributes["class"];
17
+ }
6
18
  declare var __VLS_8: {};
7
19
  type __VLS_Slots = {} & {
8
20
  default?: (props: typeof __VLS_8) => any;
9
21
  };
10
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
- "update:modelValue": (val: number) => any;
12
- }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
- "onUpdate:modelValue"?: ((val: number) => any) | undefined;
22
+ declare const __VLS_base: import("vue").DefineComponent<NumberFieldProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ "update:modelValue": (value: number) => any;
24
+ }, string, import("vue").PublicProps, Readonly<NumberFieldProps> & Readonly<{
25
+ "onUpdate:modelValue"?: ((value: number) => any) | undefined;
14
26
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
28
  declare const _default: typeof __VLS_export;
@@ -1,6 +1,6 @@
1
- import type { HTMLAttributes } from 'vue';
1
+ import type { HTMLAttributes } from "vue";
2
2
  type __VLS_Props = {
3
- class?: HTMLAttributes['class'];
3
+ class?: HTMLAttributes["class"];
4
4
  };
5
5
  declare var __VLS_1: {};
6
6
  type __VLS_Slots = {} & {
@@ -1,13 +1,13 @@
1
- import type { NumberFieldDecrementProps } from 'reka-ui';
2
- import { type HTMLAttributes } from 'vue';
3
- type __VLS_Props = NumberFieldDecrementProps & {
4
- class?: HTMLAttributes['class'];
5
- };
1
+ import type { HTMLAttributes } from "vue";
2
+ export interface NumberFieldDecrementProps {
3
+ disabled?: boolean;
4
+ class?: HTMLAttributes["class"];
5
+ }
6
6
  declare var __VLS_14: {};
7
7
  type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_14) => any;
9
9
  };
10
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_base: import("vue").DefineComponent<NumberFieldDecrementProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NumberFieldDecrementProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
@@ -1,13 +1,13 @@
1
- import type { NumberFieldIncrementProps } from 'reka-ui';
2
- import { type HTMLAttributes } from 'vue';
3
- type __VLS_Props = NumberFieldIncrementProps & {
4
- class?: HTMLAttributes['class'];
5
- };
1
+ import type { HTMLAttributes } from "vue";
2
+ export interface NumberFieldIncrementProps {
3
+ disabled?: boolean;
4
+ class?: HTMLAttributes["class"];
5
+ }
6
6
  declare var __VLS_14: {};
7
7
  type __VLS_Slots = {} & {
8
8
  default?: (props: typeof __VLS_14) => any;
9
9
  };
10
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_base: import("vue").DefineComponent<NumberFieldIncrementProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NumberFieldIncrementProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
11
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
12
  declare const _default: typeof __VLS_export;
13
13
  export default _default;
@@ -1,8 +1,3 @@
1
- import { type ControlSize } from '../_shared/useControlSize';
2
1
  declare const _default: typeof __VLS_export;
3
2
  export default _default;
4
- declare const __VLS_export: import("vue").DefineComponent<{
5
- size?: ControlSize;
6
- }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
7
- size?: ControlSize;
8
- }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
3
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,6 @@
1
+ import type { AriaAttributes, ComputedRef, InjectionKey } from "vue";
2
+ export interface NumberFieldContext {
3
+ ariaInvalid: ComputedRef<AriaAttributes["aria-invalid"]>;
4
+ required: ComputedRef<boolean>;
5
+ }
6
+ export declare const numberFieldContextKey: InjectionKey<NumberFieldContext>;
@@ -1,5 +1,5 @@
1
- export { default as NumberField } from './NumberField.vue';
2
- export { default as NumberFieldInput } from './NumberFieldInput.vue';
3
- export { default as NumberFieldIncrement } from './NumberFieldIncrement.vue';
4
- export { default as NumberFieldDecrement } from './NumberFieldDecrement.vue';
5
- export { default as NumberFieldContent } from './NumberFieldContent.vue';
1
+ export { default as NumberField, type NumberFieldProps } from "./NumberField.vue";
2
+ export { default as NumberFieldInput } from "./NumberFieldInput.vue";
3
+ export { default as NumberFieldIncrement, type NumberFieldIncrementProps, } from "./NumberFieldIncrement.vue";
4
+ export { default as NumberFieldDecrement, type NumberFieldDecrementProps, } from "./NumberFieldDecrement.vue";
5
+ export { default as NumberFieldContent } from "./NumberFieldContent.vue";
@@ -0,0 +1 @@
1
+ @layer components { .number-field { display: grid; gap: 0.375rem; } .number-field__content { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; } .number-field__content > * { grid-row: 1; } .number-field__input { --field-control-height: var(--control-h-lg); grid-column: 1 / -1; font-family: var(--font-mono); font-variant-numeric: tabular-nums; text-align: center; } .number-field__content:has(> .number-field__step--decrement) > .number-field__input { padding-inline-start: calc(var(--control-h-lg) + 0.25rem); } .number-field__content:has(> .number-field__step--increment) > .number-field__input { padding-inline-end: calc(var(--control-h-lg) + 0.25rem); } .number-field__step { z-index: 1; align-self: stretch; } .number-field__step--decrement { grid-column: 1; } .number-field__step--increment { grid-column: 3; } .number-field__input[data-state="invalid"] { border-width: 2px; } }
@@ -39,8 +39,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
39
39
  onSelect?: ((index: number) => any) | undefined;
40
40
  "onUpdate:active"?: ((value: number) => any) | undefined;
41
41
  }>, {
42
- orientation: "horizontal" | "vertical";
43
42
  pattern: "tabs" | "group";
43
+ orientation: "horizontal" | "vertical";
44
44
  ariaLabel: string;
45
45
  ring: boolean;
46
46
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -7,8 +7,7 @@ export declare const DEFAULT_DOT_REM = 0.8125;
7
7
  /** Fallback max worm elongation (px) when `--pager-dot-elongated` cannot be read —
8
8
  * the clamp on the lead↔trail gap so a multi-hop worm travels bounded, never taffy. */
9
9
  export declare const DEFAULT_ELONGATED_PX = 36;
10
- /** Fallback max-stretch cap (`--pager-worm-max-stretch`) — the LOW velocity-swell
11
- * band (BI.W-PAGER-WORM R10; 1.08–1.2), the 1.45 taffy value retired. */
10
+ /** Fallback max-stretch cap (`--pager-worm-max-stretch`) for the 1.08–1.2 band. */
12
11
  export declare const DEFAULT_MAX_STRETCH = 1.2;
13
12
  /** The metaball NECK girth (the dumbbell-shoulder bridge height between the two
14
13
  * pip-bodies, ~0.7·D) — a tighter, gooier waist than the wider carousel. */
@@ -1,4 +1,2 @@
1
1
  export { default as PagerDots } from "./PagerDots.vue";
2
2
  export type { PagerDotsProps } from "./PagerDots.vue";
3
- export { pagerWindow } from "./pagerWindow";
4
- export type { PagerWindow } from "./pagerWindow";
@@ -1,18 +1,5 @@
1
- import { type HTMLAttributes } from "vue";
2
- /**
3
- * Turbulence-texture register on `<PaperBackdrop>`. `"clean"` is the default
4
- * 0.65-baseFrequency / 4-octave grain; `"aged"` swaps to the 0.5-baseFrequency
5
- * / 5-octave variant via the `--paper-aged-texture` CSS custom property.
6
- * Consumers extend the register by adding their own `--paper-*-texture` vars
7
- * at `:root` and applying via raw `class="paper-grain-overlay"` plus an inline
8
- * `style` override — the texture-system canonical cascade per DESIGN.md.
9
- */
10
- export type PaperBackdropFrequency = "clean" | "aged";
1
+ import type { HTMLAttributes } from "vue";
11
2
  export interface PaperBackdropProps {
12
- /** Override grain opacity (defaults to --glass-grain-opacity). */
13
- opacity?: number | string;
14
- /** Override turbulence frequency (advisory only — swaps the texture var). */
15
- frequency?: PaperBackdropFrequency;
16
3
  /** Additional class names. */
17
4
  class?: HTMLAttributes["class"];
18
5
  }
@@ -1,2 +1,2 @@
1
1
  export { default as PaperBackdrop } from "./PaperBackdrop.vue";
2
- export type { PaperBackdropFrequency, PaperBackdropProps } from "./PaperBackdrop.vue";
2
+ export type { PaperBackdropProps } from "./PaperBackdrop.vue";