@mkbabb/glass-ui 4.0.0 → 4.1.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 (609) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-8whJrLWt.js +268 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-D3yxgHNn.js} +25 -14
  4. package/dist/ConfiguratorRow-CaP7U3ZA.js +143 -0
  5. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-DDRID3qC.js} +28 -33
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-Bc9kUtu_.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-6JtTB5x2.js} +11 -8
  9. package/dist/DialogFooter-9phqcRIS.js +80 -0
  10. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  11. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DLRbH5Xr.js} +1 -1
  12. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  13. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-BcIxvyqZ.js} +2 -2
  14. package/dist/{IconChip-BDw1j5mu.js → IconChip-DhbdGdFQ.js} +2 -1
  15. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-B0zimd2H.js} +1 -1
  16. package/dist/Input-Cg9DF62r.js +57 -0
  17. package/dist/{MetricBadge-BpC0R_Ec.js → MetricBadge-RHdBP72w.js} +1 -1
  18. package/dist/Notification-CphK7AAm.js +43 -0
  19. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  20. package/dist/PagerDots-Cjx96la-.js +98 -0
  21. package/dist/{PopoverContent-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  22. package/dist/{Progress-hAT4gqGH.js → Progress-CnqB7gLm.js} +4 -4
  23. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-CTZbA_cG.js} +2 -2
  24. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-DAKCBEdW.js} +65 -61
  25. package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-C2UGOkXF.js} +1 -1
  26. package/dist/Separator-DQcwC2TR.js +44 -0
  27. package/dist/Switch-B8RscmRu.js +49 -0
  28. package/dist/Toaster-D9qIHjBI.js +274 -0
  29. package/dist/ToggleGroupItem-BLtr3TJq.js +170 -0
  30. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +21 -33
  33. package/dist/api/types-extra.d.ts +37 -0
  34. package/dist/api.js +1 -1
  35. package/dist/aurora.js +1231 -260
  36. package/dist/badge.js +1 -1
  37. package/dist/border-progress.d.ts +1 -0
  38. package/dist/border-progress.js +98 -0
  39. package/dist/button-5dY1Dvhd.js +125 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +2 -2
  43. package/dist/carousel.js +93 -110
  44. package/dist/collapsible.js +1 -1
  45. package/dist/color-Cs0-oxYL.js +116 -0
  46. package/dist/color.js +2 -2
  47. package/dist/command.js +1 -1
  48. package/dist/compile-nZ1xVYTp.js +19 -0
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  53. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  54. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  55. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  56. package/dist/components/custom/aurora/composables/runtime.d.ts +31 -0
  57. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  58. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +60 -0
  59. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +37 -0
  60. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  61. package/dist/components/custom/aurora/constants/presets.d.ts +20 -2
  62. package/dist/components/custom/aurora/constants/renderMode.d.ts +77 -18
  63. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  64. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  65. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  66. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  67. package/dist/components/custom/aurora/index.d.ts +2 -1
  68. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  69. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  70. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +18 -0
  71. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  72. package/dist/components/custom/border-progress/index.d.ts +4 -0
  73. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  74. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  75. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  76. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  77. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  78. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +18 -0
  79. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +22 -0
  80. package/dist/components/custom/concentric/composables/ringField.d.ts +85 -0
  81. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +14 -0
  82. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  83. package/dist/components/custom/concentric/constants.d.ts +67 -0
  84. package/dist/components/custom/concentric/index.d.ts +5 -0
  85. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  86. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  87. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  88. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  89. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  90. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  91. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  92. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  93. package/dist/components/custom/constellation/constants.d.ts +33 -0
  94. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  95. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  96. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  97. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  98. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  99. package/dist/components/custom/constellation/index.d.ts +5 -5
  100. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  101. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  102. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  103. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  104. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  105. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  106. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  107. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  108. package/dist/components/custom/deck/constants.d.ts +14 -0
  109. package/dist/components/custom/deck/index.d.ts +8 -0
  110. package/dist/components/custom/dock/DockIconButton.vue.d.ts +25 -4
  111. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  112. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  113. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  114. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +155 -0
  115. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  116. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  117. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  118. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  119. package/dist/components/custom/dock/constants.d.ts +18 -14
  120. package/dist/components/custom/dock/index.d.ts +5 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +42 -0
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +83 -0
  123. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +39 -0
  124. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +35 -0
  125. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +31 -0
  126. package/dist/components/custom/dot-flow-field/constants.d.ts +69 -0
  127. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  128. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  129. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -0
  130. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  131. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  132. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  133. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  134. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  135. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  136. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  137. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  138. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  139. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  140. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  141. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  142. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +80 -0
  143. package/dist/components/custom/easing/constants.d.ts +28 -0
  144. package/dist/components/custom/easing/index.d.ts +3 -0
  145. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  146. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +43 -40
  147. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  148. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  149. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  150. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +42 -0
  151. package/dist/components/custom/fourier-field/constants.d.ts +64 -0
  152. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  153. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  156. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +13 -3
  158. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  159. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  160. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  161. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  163. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  165. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  167. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  168. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  172. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  173. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  174. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  176. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  177. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  178. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  179. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  180. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  181. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  182. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  183. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  184. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  185. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  186. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  187. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  188. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  189. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  190. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  191. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  192. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  193. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  194. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  195. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  196. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  197. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  198. package/dist/components/custom/search/index.d.ts +2 -0
  199. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  200. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  201. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  202. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  203. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  204. package/dist/components/custom/spa-view/index.d.ts +2 -0
  205. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  206. package/dist/components/custom/split-chars/index.d.ts +1 -0
  207. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +12 -0
  208. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  209. package/dist/components/custom/tabs/constants.d.ts +20 -2
  210. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +30 -17
  211. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  212. package/dist/components/ui/_shared/index.d.ts +2 -0
  213. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  214. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  215. package/dist/components/ui/badge/index.d.ts +1 -1
  216. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  217. package/dist/components/ui/button/index.d.ts +2 -2
  218. package/dist/components/ui/card/Card.vue.d.ts +79 -4
  219. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  220. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  221. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  222. package/dist/components/ui/card/index.d.ts +3 -1
  223. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  224. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  225. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  226. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  227. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  228. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  229. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  230. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  231. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  232. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  233. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  234. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  235. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  236. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  237. package/dist/components/ui/drawer/constants.d.ts +45 -0
  238. package/dist/components/ui/drawer/index.d.ts +23 -15
  239. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  240. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  241. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  242. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  243. package/dist/components/ui/index.d.ts +1 -0
  244. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  245. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  246. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  247. package/dist/components/ui/select/SelectContent.vue.d.ts +4 -1
  248. package/dist/components/ui/sheet/index.d.ts +1 -1
  249. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  250. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  251. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  252. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  253. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  254. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  255. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  256. package/dist/composables/color/index.d.ts +2 -0
  257. package/dist/composables/color/useAccentTone.d.ts +34 -0
  258. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  259. package/dist/composables/glass/index.d.ts +5 -2
  260. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  261. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  262. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  263. package/dist/composables/glass/vSpecular.d.ts +2 -0
  264. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  265. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  266. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  267. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  268. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  269. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +75 -0
  270. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +85 -0
  271. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  272. package/dist/composables/motion/core/index.d.ts +4 -0
  273. package/dist/composables/motion/index.d.ts +4 -0
  274. package/dist/composables/motion/scrollReader.d.ts +25 -0
  275. package/dist/composables/motion/springPresets.d.ts +20 -1
  276. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  277. package/dist/composables/motion/useDockCtaReceive.d.ts +84 -0
  278. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  279. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  280. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  281. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  282. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  283. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  284. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  285. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  286. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  287. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  288. package/dist/composables/sidebar/index.d.ts +4 -1
  289. package/dist/composables/sidebar/types.d.ts +68 -3
  290. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  291. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  292. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  293. package/dist/composables/virtual/index.d.ts +4 -0
  294. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  295. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  296. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  297. package/dist/concentric.d.ts +1 -0
  298. package/dist/concentric.js +836 -0
  299. package/dist/configurator.js +3 -2
  300. package/dist/confirm-dialog.js +62 -49
  301. package/dist/constellation.js +635 -235
  302. package/dist/context-menu.js +3 -3
  303. package/dist/controls.js +2 -2
  304. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  305. package/dist/dark.js +1 -1
  306. package/dist/data-table.js +1 -1
  307. package/dist/deck.d.ts +1 -0
  308. package/dist/deck.js +105 -0
  309. package/dist/dialog.js +4 -3
  310. package/dist/dock.js +819 -568
  311. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  312. package/dist/dom.js +5 -5
  313. package/dist/dot-flow-field.d.ts +1 -0
  314. package/dist/dot-flow-field.js +894 -0
  315. package/dist/dot-matrix.d.ts +1 -0
  316. package/dist/dot-matrix.js +630 -0
  317. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  318. package/dist/drawer.d.ts +1 -0
  319. package/dist/drawer.js +380 -0
  320. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-aJmV5SqE.js} +82 -79
  321. package/dist/dropdown-menu.js +1 -1
  322. package/dist/easing.d.ts +1 -0
  323. package/dist/easing.js +475 -0
  324. package/dist/expandable-container.js +46 -21
  325. package/dist/fading-scroll.js +1 -1
  326. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  327. package/dist/focus-scope.d.ts +1 -0
  328. package/dist/focus-scope.js +23 -0
  329. package/dist/forms.js +65 -63
  330. package/dist/fourier-field.js +831 -172
  331. package/dist/fourier-math.js +1 -1
  332. package/dist/glass-panel.js +2 -2
  333. package/dist/glass-ui.css +1 -1
  334. package/dist/glass-ui.js +187 -338
  335. package/dist/goo-blob.js +241 -692
  336. package/dist/goo-dot-matrix.d.ts +1 -0
  337. package/dist/goo-dot-matrix.js +591 -0
  338. package/dist/handmark.js +2 -2
  339. package/dist/header-ribbon.js +1 -1
  340. package/dist/hover-card.js +1 -1
  341. package/dist/hover-popover.js +1 -1
  342. package/dist/icon-chip.js +1 -1
  343. package/dist/icon-tooltip.js +1 -1
  344. package/dist/index.d.ts +3 -1
  345. package/dist/instrument-chassis.js +1 -1
  346. package/dist/keyboard.js +1 -1
  347. package/dist/label.js +1 -1
  348. package/dist/labeled-field.js +70 -60
  349. package/dist/metric-badge.js +1 -1
  350. package/dist/metric-cell.js +1 -1
  351. package/dist/metric-stack.js +14 -9
  352. package/dist/motion-core.js +58 -36
  353. package/dist/motion-curves.js +11 -1
  354. package/dist/motion.js +90 -53
  355. package/dist/notification.js +1 -1
  356. package/dist/number-field.js +1 -1
  357. package/dist/pager-dots.js +2 -91
  358. package/dist/paper-backdrop.js +1 -1
  359. package/dist/paper-grid.d.ts +1 -0
  360. package/dist/paper-grid.js +788 -0
  361. package/dist/popover.js +1 -1
  362. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  363. package/dist/{compile-EXXzEr1q.js → procedural-color.wgsl-m7Zgv35j.js} +2 -156
  364. package/dist/progress.js +1 -1
  365. package/dist/pulse.js +2 -2
  366. package/dist/reactive.js +1 -1
  367. package/dist/resolveCanvasColor-yPyIpJt9.js +93 -0
  368. package/dist/scrollReader-DI1NWxUw.js +42 -0
  369. package/dist/scrolling-text.js +1 -1
  370. package/dist/search.js +162 -308
  371. package/dist/select.js +3 -3
  372. package/dist/selectable-chip.d.ts +1 -0
  373. package/dist/selectable-chip.js +65 -0
  374. package/dist/separator.js +1 -1
  375. package/dist/{sheet-CquRYOAw.js → sheet-B2flBfLH.js} +5 -5
  376. package/dist/sheet.js +1 -1
  377. package/dist/sidebar.js +216 -114
  378. package/dist/{slider-DQ95MET2.js → slider-2A0rPn79.js} +3 -3
  379. package/dist/slider.js +1 -1
  380. package/dist/sortable-list.js +2 -2
  381. package/dist/spa-view.d.ts +1 -0
  382. package/dist/spa-view.js +46 -0
  383. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  384. package/dist/{springPresets-WXaLbu8u.js → springPresets-Ce7OYCm9.js} +12 -6
  385. package/dist/styles/animations.css +46 -12
  386. package/dist/styles/border-progress.css +109 -0
  387. package/dist/styles/cards.css +145 -0
  388. package/dist/styles/completion-seal.css +131 -0
  389. package/dist/styles/components.css +2 -3
  390. package/dist/styles/configurator.css +55 -0
  391. package/dist/styles/critical-partition.mjs +162 -0
  392. package/dist/styles/critical.css +12 -0
  393. package/dist/styles/deferred.css +33 -0
  394. package/dist/styles/dock/cta-seat.css +87 -0
  395. package/dist/styles/dock/density.css +198 -0
  396. package/dist/styles/dock/layers.css +101 -29
  397. package/dist/styles/dock/morph-bridge.css +54 -18
  398. package/dist/styles/dock/morph.css +132 -7
  399. package/dist/styles/dock/overflow.css +28 -2
  400. package/dist/styles/dock/search.css +68 -0
  401. package/dist/styles/dock/shape.css +124 -0
  402. package/dist/styles/dock/shell.css +77 -21
  403. package/dist/styles/dock/stack-rail.css +264 -0
  404. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  405. package/dist/styles/dock-controls/icon-button.css +14 -0
  406. package/dist/styles/dock.css +43 -1
  407. package/dist/styles/drawer.css +81 -35
  408. package/dist/styles/glass/accent-tone.css +66 -0
  409. package/dist/styles/glass/control-surfaces.css +167 -0
  410. package/dist/styles/glass/deep.css +44 -0
  411. package/dist/styles/glass/ladder.css +147 -41
  412. package/dist/styles/glass/material.css +78 -15
  413. package/dist/styles/glass/reveal.css +136 -0
  414. package/dist/styles/glass/rim.css +110 -0
  415. package/dist/styles/glass/surfaces.css +148 -129
  416. package/dist/styles/glass-refract.css +96 -44
  417. package/dist/styles/glass-specular-track.css +7 -0
  418. package/dist/styles/glass.css +13 -0
  419. package/dist/styles/hover-popover.css +7 -6
  420. package/dist/styles/icon-chip.css +77 -15
  421. package/dist/styles/index.css +36 -9
  422. package/dist/styles/instrument-chassis.css +66 -3
  423. package/dist/styles/scroll-choreography.css +300 -0
  424. package/dist/styles/scroll-chrome.css +123 -0
  425. package/dist/styles/scroll-driven.css +38 -0
  426. package/dist/styles/segmented-tabs.css +81 -14
  427. package/dist/styles/theme/bridges.css +33 -0
  428. package/dist/styles/theme/literals.css +11 -2
  429. package/dist/styles/theme/radius.css +24 -2
  430. package/dist/styles/tokens/color-radius.css +13 -3
  431. package/dist/styles/tokens/dark-arm.css +137 -32
  432. package/dist/styles/tokens/glass-deep.css +100 -0
  433. package/dist/styles/tokens/glass-fx.css +376 -0
  434. package/dist/styles/tokens/glass.css +131 -351
  435. package/dist/styles/tokens/light-dark.css +16 -3
  436. package/dist/styles/tokens/offsets.css +143 -0
  437. package/dist/styles/tokens/on-glass-fg.css +39 -0
  438. package/dist/styles/tokens/property-regs.css +260 -0
  439. package/dist/styles/tokens/scale-paper.css +168 -96
  440. package/dist/styles/tokens/scheme-motion.css +114 -38
  441. package/dist/styles/tokens/scroll-tokens.css +123 -0
  442. package/dist/styles/tokens/sizing-config.css +110 -0
  443. package/{src/styles/tokens/offsets-sizing.css → dist/styles/tokens/sizing.css} +92 -204
  444. package/dist/styles/tokens.css +14 -3
  445. package/dist/styles/typography/semantic.css +26 -13
  446. package/dist/styles/typography/utilities.css +22 -7
  447. package/dist/styles/utilities/a11y-overrides.css +20 -5
  448. package/dist/styles/utilities/animate.css +27 -24
  449. package/dist/styles/utilities/base-misc.css +307 -0
  450. package/dist/styles/utilities/base.css +47 -261
  451. package/dist/styles/utilities/btn.css +17 -4
  452. package/dist/styles/utilities/components.css +31 -6
  453. package/dist/styles/utilities/metal.css +215 -0
  454. package/dist/styles/utilities.css +14 -7
  455. package/dist/switch.js +1 -1
  456. package/dist/tabs.js +220 -107
  457. package/dist/timeline.js +2 -2
  458. package/dist/toast.js +1 -1
  459. package/dist/toggle-chip.js +10 -10
  460. package/dist/toggle-group.js +1 -1
  461. package/dist/tooltip.js +1 -1
  462. package/dist/typewriter.js +2 -2
  463. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  464. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  465. package/dist/useConfiguratorState-4xblKfwd.js +162 -0
  466. package/dist/useControlSize-SH1UmJCi.js +9 -0
  467. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  468. package/dist/useDragMorph-BUgAC-zK.js +102 -0
  469. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  470. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  471. package/dist/useLiquidPress-BooG97RY.js +39 -0
  472. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  473. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  474. package/dist/useSpring-C0jyvEJB.js +40 -0
  475. package/dist/useSpringMount-BWDnKIwh.js +71 -0
  476. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  477. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  478. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  479. package/dist/vSpecular-EX7loENl.js +68 -0
  480. package/dist/vendor-B2qOlYY3.js +239 -0
  481. package/dist/virtual.d.ts +1 -0
  482. package/dist/virtual.js +225 -0
  483. package/dist/watercolor-dot.js +117 -74
  484. package/package.json +252 -28
  485. package/src/styles/animations.css +46 -12
  486. package/src/styles/border-progress.css +109 -0
  487. package/src/styles/cards.css +145 -0
  488. package/src/styles/completion-seal.css +131 -0
  489. package/src/styles/configurator.css +55 -0
  490. package/src/styles/critical-partition.mjs +162 -0
  491. package/src/styles/dock/cta-seat.css +87 -0
  492. package/src/styles/dock/density.css +198 -0
  493. package/src/styles/dock/layers.css +101 -29
  494. package/src/styles/dock/morph-bridge.css +54 -18
  495. package/src/styles/dock/morph.css +132 -7
  496. package/src/styles/dock/overflow.css +28 -2
  497. package/src/styles/dock/search.css +68 -0
  498. package/src/styles/dock/shape.css +124 -0
  499. package/src/styles/dock/shell.css +77 -21
  500. package/src/styles/dock/stack-rail.css +264 -0
  501. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  502. package/src/styles/dock-controls/icon-button.css +14 -0
  503. package/src/styles/dock.css +43 -1
  504. package/src/styles/drawer.css +81 -35
  505. package/src/styles/glass/accent-tone.css +66 -0
  506. package/src/styles/glass/control-surfaces.css +167 -0
  507. package/src/styles/glass/deep.css +44 -0
  508. package/src/styles/glass/ladder.css +147 -41
  509. package/src/styles/glass/material.css +78 -15
  510. package/src/styles/glass/reveal.css +136 -0
  511. package/src/styles/glass/rim.css +110 -0
  512. package/src/styles/glass/surfaces.css +148 -129
  513. package/src/styles/glass-refract.css +96 -44
  514. package/src/styles/glass-specular-track.css +7 -0
  515. package/src/styles/glass.css +13 -0
  516. package/src/styles/hover-popover.css +7 -6
  517. package/src/styles/icon-chip.css +77 -15
  518. package/src/styles/index.css +27 -0
  519. package/src/styles/instrument-chassis.css +66 -3
  520. package/src/styles/scroll-choreography.css +300 -0
  521. package/src/styles/scroll-chrome.css +123 -0
  522. package/src/styles/scroll-driven.css +38 -0
  523. package/src/styles/segmented-tabs.css +81 -14
  524. package/src/styles/theme/bridges.css +33 -0
  525. package/src/styles/theme/literals.css +11 -2
  526. package/src/styles/theme/radius.css +24 -2
  527. package/src/styles/tokens/color-radius.css +13 -3
  528. package/src/styles/tokens/dark-arm.css +137 -32
  529. package/src/styles/tokens/glass-deep.css +100 -0
  530. package/src/styles/tokens/glass-fx.css +376 -0
  531. package/src/styles/tokens/glass.css +131 -351
  532. package/src/styles/tokens/light-dark.css +16 -3
  533. package/src/styles/tokens/offsets.css +143 -0
  534. package/src/styles/tokens/on-glass-fg.css +39 -0
  535. package/src/styles/tokens/property-regs.css +260 -0
  536. package/src/styles/tokens/scale-paper.css +168 -96
  537. package/src/styles/tokens/scheme-motion.css +114 -38
  538. package/src/styles/tokens/scroll-tokens.css +123 -0
  539. package/src/styles/tokens/sizing-config.css +110 -0
  540. package/{dist/styles/tokens/offsets-sizing.css → src/styles/tokens/sizing.css} +92 -204
  541. package/src/styles/tokens.css +14 -3
  542. package/src/styles/typography/semantic.css +26 -13
  543. package/src/styles/typography/utilities.css +22 -7
  544. package/src/styles/utilities/a11y-overrides.css +20 -5
  545. package/src/styles/utilities/animate.css +27 -24
  546. package/src/styles/utilities/base-misc.css +307 -0
  547. package/src/styles/utilities/base.css +47 -261
  548. package/src/styles/utilities/btn.css +17 -4
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +215 -0
  551. package/src/styles/utilities.css +14 -7
  552. package/dist/CardAction-XH4YBVEK.js +0 -158
  553. package/dist/ContextMenuContent-ON3x7cuk.js +0 -85
  554. package/dist/DialogFooter-8eZbdmPc.js +0 -165
  555. package/dist/HoverCardContent-DkMaQzH5.js +0 -83
  556. package/dist/Input-DVG_J0ne.js +0 -55
  557. package/dist/Notification-DKjKsQq8.js +0 -100
  558. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  559. package/dist/Separator-BArl4OaB.js +0 -37
  560. package/dist/Switch-Dr--uLGH.js +0 -47
  561. package/dist/Toaster-Bm_HQSpc.js +0 -263
  562. package/dist/ToggleGroupItem-Dzk9hWsF.js +0 -157
  563. package/dist/TooltipProvider-B3MkB_8P.js +0 -104
  564. package/dist/button-BNDWhAZb.js +0 -81
  565. package/dist/check-njhk-vfu.js +0 -7
  566. package/dist/chevron-down-DKkxb4VV.js +0 -7
  567. package/dist/chevron-right-CPXbqQQz.js +0 -7
  568. package/dist/chevron-up-n_24SqI-.js +0 -7
  569. package/dist/color-DweYl7pE.js +0 -86
  570. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  571. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  572. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  573. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  574. package/dist/minimize-2-BV31Ob_h.js +0 -38
  575. package/dist/resolveCanvasColor-BBiYfp8g.js +0 -11
  576. package/dist/search-BSGrf2Sk.js +0 -12
  577. package/dist/styles/dock/rail-extend.css +0 -397
  578. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  579. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  580. package/dist/useRAFLoop-CdwJ7284.js +0 -109
  581. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  582. package/dist/useSpringMount-CvopqiFr.js +0 -108
  583. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  584. package/dist/x-BUwTKe50.js +0 -10
  585. package/src/styles/dock/rail-extend.css +0 -397
  586. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  587. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  588. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  589. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  590. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  591. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-BFiod7X2.js} +0 -0
  592. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  593. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  594. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  595. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  596. /package/dist/{math-DeuJwLFx.js → math-Eb0w3LqU.js} +0 -0
  597. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  598. /package/dist/{prng-Cg22zv8g.js → prng-B-d9eYX8.js} +0 -0
  599. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  600. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  601. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  602. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  603. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  604. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  605. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  606. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  607. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  608. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  609. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1 @@
1
+ export * from "./components/custom/dot-matrix";
@@ -0,0 +1,630 @@
1
+ import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
+ import { t } from "./usePointerVelocityField-QLsy3_kv.js";
3
+ import { n, o as r, r as i, s as a } from "./procedural-color.wgsl-m7Zgv35j.js";
4
+ import { a as o, t as s } from "./useGpuSubstrate-4pTcp6mX.js";
5
+ import { c } from "./color-Cs0-oxYL.js";
6
+ import { a as l, c as u, d, i as f, l as p, n as m, o as h, r as g, s as _, t as v, u as y } from "./dotMatrixField-D_x9_1qq.js";
7
+ import { computed as b, createElementBlock as x, createElementVNode as S, defineComponent as C, normalizeStyle as w, onScopeDispose as T, openBlock as E, useTemplateRef as D, watch as O } from "vue";
8
+ //#region src/components/custom/dot-matrix/shaders/dot-matrix.wgsl.ts
9
+ var k = `
10
+ const PI: f32 = 3.141592653589793;
11
+ const TAU: f32 = 6.283185307179586;
12
+ const MAX_DOT_STOPS: i32 = 4;
13
+ // The golden-angle constant (transcribes dotMatrixField.ts GOLDEN_ANGLE = PI*(3-sqrt5)).
14
+ const GOLDEN_ANGLE: f32 = 2.399963229728653;
15
+
16
+ struct Dot {
17
+ // (unitPos.xyz, sphereIdx)
18
+ data: vec4<f32>,
19
+ };
20
+
21
+ // ── Render uniforms (the typed-struct source-of-truth — see uniformBridgeWGPU.ts) ──
22
+ struct Uniforms {
23
+ // u0: (uResolutionX, uResolutionY, uDpr, uTime)
24
+ u0: vec4<f32>,
25
+ // u1: (uRadius, uDotSize, uBaseOpacity, uAspect)
26
+ u1: vec4<f32>,
27
+ // u2: (uFacingLo, uFacingHi, uSizeLo, uSizeHi)
28
+ u2: vec4<f32>,
29
+ // u3: (uParallax, uPointerPush, uPointerBloom, uPointerActive)
30
+ u3: vec4<f32>,
31
+ // u4: (uPointerX, uPointerY, uSphere2Scale, uBreathRadius)
32
+ u4: vec4<f32>,
33
+ // u5: (uSphere2OffsetX, uSphere2OffsetY, uHasBackground, _pad)
34
+ u5: vec4<f32>,
35
+ spin: mat3x3<f32>,
36
+ // ints: (uStopCount, uDotCount, uSpheres, _pad)
37
+ ints: vec4<i32>,
38
+ // bg: (background.rgb, _pad)
39
+ bg: vec4<f32>,
40
+ palette: array<vec4<f32>, 4>,
41
+ };
42
+
43
+ @group(0) @binding(0) var<uniform> u: Uniforms;
44
+ @group(0) @binding(1) var<storage, read> dots: array<Dot>;
45
+
46
+ ${n}
47
+ ${i}
48
+
49
+ // The §T2 depth-fade (transcribes dotMatrixField.ts facingFade): the rotated-normal's z
50
+ // → a SOFT facing term → opacity + size ramps. NOT a binary back-face cull.
51
+ fn facingTerm(n: vec3<f32>) -> f32 {
52
+ return clamp(n.z * 0.5 + 0.5, 0.0, 1.0); // 1 = dead-front, 0 = dead-back
53
+ }
54
+
55
+ // Sample the multi-stop palette (linear-sRGB stops, OKLab mix). t in [0,1].
56
+ fn samplePaletteLin(t: f32) -> vec3<f32> {
57
+ let stopCount = u.ints.x;
58
+ if (stopCount <= 1) { return u.palette[0].rgb; }
59
+ let n = f32(stopCount);
60
+ let ft = clamp(t, 0.0, 1.0) * (n - 1.0);
61
+ let i0 = i32(floor(ft));
62
+ let i1 = min(i0 + 1, stopCount - 1);
63
+ let f = ft - f32(i0);
64
+ let labA = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * u.palette[i0].rgb);
65
+ let labB = LMS_TO_OKLAB * cbrt3(LINEAR_SRGB_TO_LMS * u.palette[i1].rgb);
66
+ return oklabToLinearSrgb(mix(labA, labB, f));
67
+ }
68
+
69
+ struct VSOut {
70
+ @builtin(position) pos: vec4<f32>,
71
+ @location(0) local: vec2<f32>, // [-1,1] billboard-local coords for the SDF circle
72
+ @location(1) bright: f32, // facing-driven brightness [0, ~1.6]
73
+ @location(2) alpha: f32, // facing-driven opacity
74
+ @location(3) tone: f32, // palette tone (0 = bright cream near-front, 1 = amber rim)
75
+ };
76
+
77
+ @vertex
78
+ fn vs_main(
79
+ @builtin(vertex_index) vi: u32,
80
+ @builtin(instance_index) ii: u32,
81
+ ) -> VSOut {
82
+ // Two-triangle quad corners in billboard-local space (camera-facing by construction).
83
+ var corners = array<vec2<f32>, 6>(
84
+ vec2<f32>(-1.0, -1.0), vec2<f32>(1.0, -1.0), vec2<f32>(-1.0, 1.0),
85
+ vec2<f32>(-1.0, 1.0), vec2<f32>(1.0, -1.0), vec2<f32>(1.0, 1.0),
86
+ );
87
+ let local = corners[vi];
88
+
89
+ let dot = dots[ii].data;
90
+ var unitPos = dot.xyz; // the STATIC phyllotaxis position (JS-computed)
91
+ let sphereIdx = dot.w;
92
+
93
+ // The breathing radius pulse (transcribes breathRadius — 1 at rest).
94
+ let breath = u.u4.w;
95
+ // Per-sphere offset/scale (the reference two-globe composition).
96
+ var sphereScale = u.u1.x; // uRadius
97
+ var sphereOffset = vec2<f32>(0.0, 0.0);
98
+ if (sphereIdx > 0.5) {
99
+ sphereScale = u.u1.x * u.u4.z; // uRadius * uSphere2Scale
100
+ sphereOffset = vec2<f32>(u.u5.x, u.u5.y); // uSphere2Offset
101
+ }
102
+
103
+ // The rotated surface NORMAL = spin · unitPos (the §T2 facing source). The spin matrix
104
+ // is the slow tilted Y-rotation (dotMatrixField.ts spinMatrix).
105
+ let n = u.spin * unitPos;
106
+ let facing = facingTerm(n);
107
+
108
+ // Pointer-repel/attract — a soft Gaussian dimple lifts the dot radially off the surface
109
+ // near the cursor (the §T7 local perturbation). The pointer is in NDC (-1..1); a repel
110
+ // (push>0) pushes the dot OUT, an attract (push<0) pulls IN. Velocity scales the push.
111
+ let pAct = u.u3.w;
112
+ let pointerNdc = vec2<f32>(u.u4.x * 2.0 - 1.0, 1.0 - u.u4.y * 2.0);
113
+ let screenN = n.xy * sphereScale + sphereOffset;
114
+ let toPointer = screenN - pointerNdc;
115
+ let pd = length(toPointer);
116
+ let dimple = exp(-pd * pd * 18.0) * u.u3.y * pAct; // soft Gaussian falloff × push
117
+ // Lift along the rotated normal's screen projection (radially through the shell).
118
+ let lift = n.xy * dimple;
119
+
120
+ // Project the rotated normal to the screen (orthographic — the §T5 flat hero look),
121
+ // scaled by the sphere radius + the breathing, plus the per-sphere offset + the dimple
122
+ // lift + the pointer-parallax screen-center track.
123
+ let parallaxOff = (pointerNdc) * u.u3.x * pAct; // uParallax · pointer · active
124
+ let center2d = n.xy * sphereScale * breath + sphereOffset + lift + parallaxOff;
125
+
126
+ // The depth-of-field dot-size taper (transcribes facingFade size): 0.6 + 0.4·facing,
127
+ // plus the accel-burst bloom scale near the cursor.
128
+ let sizeTaper = u.u2.z + u.u2.w * facing;
129
+ let burstScale = 1.0 + u.u3.z * exp(-pd * pd * 12.0);
130
+ let dotR = u.u1.y * sizeTaper * burstScale; // uDotSize · taper · burst
131
+
132
+ let offX = local.x * dotR;
133
+ let offY = local.y * dotR;
134
+
135
+ // The opacity ramp (transcribes facingFade opacity): facingLo + facingHi·facing, scaled
136
+ // by the base opacity + a faint burst brightness lift near the cursor.
137
+ let facingOpacity = u.u2.x + u.u2.y * facing; // facingLo + facingHi·facing
138
+ let burstBright = 1.0 + u.u3.z * 0.8 * exp(-pd * pd * 12.0);
139
+
140
+ // The whole sphere + quad is built in a SQUARE space (so the globe stays circular); the
141
+ // final clip-space x divides by aspect so a wide canvas does not squash it into an
142
+ // ellipse (aspect ≥ 1 → x shrinks; aspect < 1 → x grows). This keeps the dot quads round
143
+ // AND the sphere circular in PIXELS regardless of the canvas aspect.
144
+ let aspect = max(u.u1.w, 1e-4);
145
+ let clipX = (center2d.x + offX) / aspect;
146
+ let clipY = center2d.y + offY;
147
+
148
+ var out: VSOut;
149
+ out.pos = vec4<f32>(clipX, clipY, 0.0, 1.0);
150
+ out.local = local;
151
+ out.bright = facingOpacity * burstBright;
152
+ out.alpha = clamp(u.u1.z * facingOpacity * burstBright, 0.0, 1.0);
153
+ // The palette tone reads the DEPTH (not the opacity): the near-front samples the bright
154
+ // cream stop[0] (tone 0), the rim/far the darker amber stop (tone → 1), so the depth-shell
155
+ // reads TONALLY on BOTH a dark AND a light ground (a light-ground globe can't lean on the
156
+ // opacity fade alone — over a light card a faded dot reads brighter, inverting the shell).
157
+ out.tone = clamp(1.0 - facing, 0.0, 1.0);
158
+ return out;
159
+ }
160
+
161
+ @fragment
162
+ fn fs_main(in: VSOut) -> @location(0) vec4<f32> {
163
+ // The crisp fwidth-smoothstep SDF circle (the ONE AA canon — the band is ~1px wide at
164
+ // any DPR/zoom, so fine sub-2px dots stay crisp). d = |uv| - 1; aa = fwidth(d).
165
+ let d = length(in.local) - 1.0;
166
+ let aa = max(fwidth(d), 1e-4);
167
+ let coverage = 1.0 - smoothstep(-aa, aa, d);
168
+ if (coverage < 0.002) { discard; }
169
+
170
+ // The palette tints the dot by DEPTH (near-front cream → rim amber); the brightness lights
171
+ // the core. The near hemisphere reads as the bright warm-cream stop, the rim/far fading to
172
+ // the darker amber — the translucent dot-shell on both grounds.
173
+ let lin = samplePaletteLin(in.tone) * clamp(in.bright, 0.0, 1.6);
174
+ let alpha = in.alpha * coverage;
175
+ let rgb = clamp(linearToSrgb(lin), vec3<f32>(0.0), vec3<f32>(1.0));
176
+ // Premultiplied-alpha output (the translucent dot-shell additive over the clear).
177
+ return vec4<f32>(rgb * alpha, alpha);
178
+ }
179
+ `, A = "#version 300 es\nprecision highp float;\n\n#define MAX_DOT_STOPS 4\n#define GOLDEN_ANGLE 2.399963229728653\n\n// The static quad corner (6 verts: two triangles) + the instanced per-dot data.\nin vec2 aCorner; // billboard-local [-1,1]\nin vec4 aDot; // (unitPos.xyz, sphereIdx) — instanced (divisor 1)\n\nuniform vec4 uU0; // (resX, resY, dpr, time)\nuniform vec4 uU1; // (radius, dotSize, baseOpacity, aspect)\nuniform vec4 uU2; // (facingLo, facingHi, sizeLo, sizeHi)\nuniform vec4 uU3; // (parallax, pointerPush, pointerBloom, pointerActive)\nuniform vec4 uU4; // (pointerX, pointerY, sphere2Scale, breathRadius)\nuniform vec4 uU5; // (sphere2OffsetX, sphere2OffsetY, hasBackground, _pad)\nuniform mat3 uSpin; // the slow tilted Y-rotation\n\nout vec2 vLocal; // [-1,1] billboard-local for the SDF circle\nout float vBright; // facing-driven brightness\nout float vAlpha; // facing-driven opacity\nout float vTone; // palette tone (0 = bright cream near-front, 1 = amber rim)\n\nfloat facingTerm(vec3 n) {\n return clamp(n.z * 0.5 + 0.5, 0.0, 1.0); // 1 = dead-front\n}\n\nvoid main() {\n vec3 unitPos = aDot.xyz;\n float sphereIdx = aDot.w;\n\n float breath = uU4.w;\n float sphereScale = uU1.x;\n vec2 sphereOffset = vec2(0.0);\n if (sphereIdx > 0.5) {\n sphereScale = uU1.x * uU4.z;\n sphereOffset = vec2(uU5.x, uU5.y);\n }\n\n // The rotated surface normal = spin · unitPos (the §T2 facing source).\n vec3 n = uSpin * unitPos;\n float facing = facingTerm(n);\n\n // Pointer-repel/attract dimple (the §T7 local perturbation).\n float pAct = uU3.w;\n vec2 pointerNdc = vec2(uU4.x * 2.0 - 1.0, 1.0 - uU4.y * 2.0);\n vec2 screenN = n.xy * sphereScale + sphereOffset;\n vec2 toPointer = screenN - pointerNdc;\n float pd = length(toPointer);\n float dimple = exp(-pd * pd * 18.0) * uU3.y * pAct;\n vec2 lift = n.xy * dimple;\n\n vec2 parallaxOff = pointerNdc * uU3.x * pAct;\n vec2 center2d = n.xy * sphereScale * breath + sphereOffset + lift + parallaxOff;\n\n // The depth-of-field size taper + the accel-burst bloom scale.\n float sizeTaper = uU2.z + uU2.w * facing;\n float burstScale = 1.0 + uU3.z * exp(-pd * pd * 12.0);\n float dotR = uU1.y * sizeTaper * burstScale;\n\n float offX = aCorner.x * dotR;\n float offY = aCorner.y * dotR;\n\n float facingOpacity = uU2.x + uU2.y * facing;\n float burstBright = 1.0 + uU3.z * 0.8 * exp(-pd * pd * 12.0);\n\n vLocal = aCorner;\n vBright = facingOpacity * burstBright;\n vAlpha = clamp(uU1.z * facingOpacity * burstBright, 0.0, 1.0);\n // The palette tone reads the DEPTH (near-front bright cream → rim amber) so the depth-shell\n // reads tonally on BOTH a dark AND a light ground.\n vTone = clamp(1.0 - facing, 0.0, 1.0);\n\n // The whole sphere + quad is built in a SQUARE space (so the globe stays circular); the\n // final clip-space x divides by aspect so a wide canvas does not squash it into an ellipse.\n float aspect = max(uU1.w, 1e-4);\n gl_Position = vec4((center2d.x + offX) / aspect, center2d.y + offY, 0.0, 1.0);\n}", j = `#version 300 es
180
+ precision highp float;
181
+
182
+ #define MAX_DOT_STOPS 4
183
+
184
+ in vec2 vLocal;
185
+ in float vBright;
186
+ in float vAlpha;
187
+ in float vTone;
188
+ out vec4 fragColor;
189
+
190
+ uniform vec4 uBg; // (background.rgb, hasBackground)
191
+ uniform int uStopCount;
192
+ uniform vec3 uPalette[MAX_DOT_STOPS]; // linear-sRGB stops
193
+
194
+ const mat2 FBM_ROT = mat2(0.8, 0.6, -0.6, 0.8);
195
+
196
+ ${r}
197
+ ${a}
198
+
199
+ vec3 samplePaletteLin(float t) {
200
+ if (uStopCount <= 1) return uPalette[0];
201
+ float n = float(uStopCount);
202
+ float ft = clamp(t, 0.0, 1.0) * (n - 1.0);
203
+ int i0 = int(floor(ft));
204
+ int i1 = min(i0 + 1, uStopCount - 1);
205
+ float f = ft - float(i0);
206
+ vec3 lmsA = LINEAR_SRGB_TO_LMS * uPalette[i0];
207
+ vec3 lmsB = LINEAR_SRGB_TO_LMS * uPalette[i1];
208
+ vec3 labA = LMS_TO_OKLAB * (sign(lmsA) * pow(abs(lmsA), vec3(1.0 / 3.0)));
209
+ vec3 labB = LMS_TO_OKLAB * (sign(lmsB) * pow(abs(lmsB), vec3(1.0 / 3.0)));
210
+ return oklabToLinearSrgb(mix(labA, labB, f));
211
+ }
212
+
213
+ void main() {
214
+ // The crisp fwidth-smoothstep SDF circle (the ONE AA canon; ~1px band at any DPR).
215
+ float d = length(vLocal) - 1.0;
216
+ float aa = max(fwidth(d), 1e-4);
217
+ float coverage = 1.0 - smoothstep(-aa, aa, d);
218
+ if (coverage < 0.002) discard;
219
+
220
+ vec3 lin = samplePaletteLin(vTone) * clamp(vBright, 0.0, 1.6);
221
+ float alpha = vAlpha * coverage;
222
+ vec3 rgb = clamp(linearToSrgb(lin), vec3(0.0), vec3(1.0));
223
+ fragColor = vec4(rgb * alpha, alpha);
224
+ }`, M = 4e3, N = 4, P = [{
225
+ L: .92,
226
+ C: .03,
227
+ h: 78
228
+ }, {
229
+ L: .84,
230
+ C: .07,
231
+ h: 62
232
+ }], F = {
233
+ dotCount: 2400,
234
+ radius: .42,
235
+ dotSize: 1.8,
236
+ baseOpacity: .5,
237
+ depthFade: .85,
238
+ rotationSpeed: .07,
239
+ axisTilt: 23,
240
+ spheres: 1,
241
+ breathing: 0,
242
+ palette: P,
243
+ background: "transparent",
244
+ interactive: !1,
245
+ pointerMode: "repel",
246
+ parallax: .08,
247
+ respectReducedMotion: !0
248
+ }, I = {
249
+ x: .62,
250
+ y: .32
251
+ }, L = .46;
252
+ function R() {
253
+ return {
254
+ x: .5,
255
+ y: .5,
256
+ active: 0,
257
+ push: 0,
258
+ bloom: 0
259
+ };
260
+ }
261
+ var z = 240, B = {
262
+ u0: 0,
263
+ u1: 4,
264
+ u2: 8,
265
+ u3: 12,
266
+ u4: 16,
267
+ u5: 20,
268
+ spin0: 24,
269
+ spin1: 28,
270
+ spin2: 32,
271
+ ints: 36,
272
+ bg: 40,
273
+ palette: 44
274
+ };
275
+ function V() {
276
+ let e = new ArrayBuffer(z);
277
+ return {
278
+ buffer: e,
279
+ f32: new Float32Array(e),
280
+ i32: new Int32Array(e)
281
+ };
282
+ }
283
+ function H(e) {
284
+ let t = Math.min(Math.max(Math.floor(e.dotCount), 1), 4e3), n = e.spheres === 2 ? 2 : 1, r = t * n, i = new Float32Array(r * 4), a = 0;
285
+ for (let e = 0; e < n; e++) for (let n = 0; n < t; n++) {
286
+ let r = y(n, t);
287
+ i[a + 0] = r.x, i[a + 1] = r.y, i[a + 2] = r.z, i[a + 3] = e, a += 4;
288
+ }
289
+ return i;
290
+ }
291
+ function U(e) {
292
+ return Math.min(Math.max(Math.floor(e.dotCount), 1), 4e3) * (e.spheres === 2 ? 2 : 1);
293
+ }
294
+ function W(e, t, n) {
295
+ return e * t * 2 / Math.max(n, 1);
296
+ }
297
+ function G(e, t, n, r, i, a, o, s) {
298
+ let { f32: l, i32: u } = e, f = Math.min(r.w, r.h) || 1, p = r.w / Math.max(r.h, 1);
299
+ l[B.u0 + 0] = r.w, l[B.u0 + 1] = r.h, l[B.u0 + 2] = i, l[B.u0 + 3] = n, l[B.u1 + 0] = t.radius, l[B.u1 + 1] = W(t.dotSize, i, f), l[B.u1 + 2] = t.baseOpacity, l[B.u1 + 3] = p, l[B.u2 + 0] = .15, l[B.u2 + 1] = .85 * t.depthFade, l[B.u2 + 2] = .6, l[B.u2 + 3] = .4, l[B.u3 + 0] = t.parallax, l[B.u3 + 1] = a.push, l[B.u3 + 2] = a.bloom, l[B.u3 + 3] = a.active, l[B.u4 + 0] = a.x, l[B.u4 + 1] = a.y, l[B.u4 + 2] = L, l[B.u4 + 3] = o, l[B.u5 + 0] = I.x, l[B.u5 + 1] = I.y, l[B.u5 + 2] = t.background === "transparent" ? 0 : 1, l[B.u5 + 3] = 0;
300
+ let m = d(n, t.axisTilt * Math.PI / 180, t.rotationSpeed);
301
+ l[B.spin0 + 0] = m[0], l[B.spin0 + 1] = m[3], l[B.spin0 + 2] = m[6], l[B.spin0 + 3] = 0, l[B.spin1 + 0] = m[1], l[B.spin1 + 1] = m[4], l[B.spin1 + 2] = m[7], l[B.spin1 + 3] = 0, l[B.spin2 + 0] = m[2], l[B.spin2 + 1] = m[5], l[B.spin2 + 2] = m[8], l[B.spin2 + 3] = 0;
302
+ let h = Math.min(s.length, 4);
303
+ if (u[B.ints + 0] = h, u[B.ints + 1] = U(t), u[B.ints + 2] = t.spheres === 2 ? 2 : 1, u[B.ints + 3] = 0, t.background === "transparent") l[B.bg + 0] = 0, l[B.bg + 1] = 0, l[B.bg + 2] = 0, l[B.bg + 3] = 0;
304
+ else {
305
+ let e = c(t.background);
306
+ l[B.bg + 0] = e[0], l[B.bg + 1] = e[1], l[B.bg + 2] = e[2], l[B.bg + 3] = 1;
307
+ }
308
+ for (let e = 0; e < 4; e++) {
309
+ let t = B.palette + e * 4, n = c(s[Math.min(e, h - 1)] ?? s[0]);
310
+ l[t + 0] = n[0], l[t + 1] = n[1], l[t + 2] = n[2], l[t + 3] = 0;
311
+ }
312
+ return e;
313
+ }
314
+ //#endregion
315
+ //#region src/components/custom/dot-matrix/composables/useDotSphere.ts
316
+ var K = 64, q = 128, J = 8, Y = 1, X = 2;
317
+ function Z(e) {
318
+ return {
319
+ w: e.width || 1,
320
+ h: e.height || 1
321
+ };
322
+ }
323
+ function ee(e) {
324
+ let { canvas: t, config: n, getPalette: r, pointer: i, shouldContinue: a, onFrame: s } = e;
325
+ return function(e, c, l) {
326
+ let d = e.createShaderModule({
327
+ label: "[DotMatrix] dot-matrix.wgsl",
328
+ code: k
329
+ }), f = H(n), p = U(n), m = e.createBuffer({
330
+ label: "[DotMatrix] dots",
331
+ size: p * 16,
332
+ usage: q | J,
333
+ mappedAtCreation: !0
334
+ });
335
+ new Float32Array(m.getMappedRange()).set(f), m.unmap();
336
+ let h = e.createBuffer({
337
+ label: "[DotMatrix] render-uniforms",
338
+ size: V().buffer.byteLength,
339
+ usage: K | J
340
+ }), g = e.createBindGroupLayout({
341
+ label: "[DotMatrix] bgl",
342
+ entries: [{
343
+ binding: 0,
344
+ visibility: Y | X,
345
+ buffer: { type: "uniform" }
346
+ }, {
347
+ binding: 1,
348
+ visibility: Y,
349
+ buffer: { type: "read-only-storage" }
350
+ }]
351
+ }), _ = e.createRenderPipeline({
352
+ label: "[DotMatrix] render-pipeline",
353
+ layout: e.createPipelineLayout({ bindGroupLayouts: [g] }),
354
+ vertex: {
355
+ module: d,
356
+ entryPoint: "vs_main"
357
+ },
358
+ fragment: {
359
+ module: d,
360
+ entryPoint: "fs_main",
361
+ targets: [{
362
+ format: l,
363
+ blend: {
364
+ color: {
365
+ srcFactor: "one",
366
+ dstFactor: "one-minus-src-alpha",
367
+ operation: "add"
368
+ },
369
+ alpha: {
370
+ srcFactor: "one",
371
+ dstFactor: "one-minus-src-alpha",
372
+ operation: "add"
373
+ }
374
+ }
375
+ }]
376
+ },
377
+ primitive: { topology: "triangle-list" }
378
+ }), v = e.createBindGroup({
379
+ label: "[DotMatrix] bg",
380
+ layout: g,
381
+ entries: [{
382
+ binding: 0,
383
+ resource: { buffer: h }
384
+ }, {
385
+ binding: 1,
386
+ resource: { buffer: m }
387
+ }]
388
+ }), y = V();
389
+ function b() {
390
+ let e = o(), n = t.clientWidth || 320, r = t.clientHeight || 320, i = Math.max(1, Math.round(n * e)), a = Math.max(1, Math.round(r * e));
391
+ (t.width !== i || t.height !== a) && (t.width = i, t.height = a);
392
+ }
393
+ function x(a) {
394
+ s?.(a);
395
+ let l = o(), d = u(a, n.breathing, .6);
396
+ G(y, n, a, Z(t), l, i, d, r()), e.queue.writeBuffer(h, 0, y.buffer);
397
+ let f = c.getCurrentTexture().createView(), m = e.createCommandEncoder({ label: "[DotMatrix] frame" }), g = m.beginRenderPass({ colorAttachments: [{
398
+ view: f,
399
+ clearValue: te(n),
400
+ loadOp: "clear",
401
+ storeOp: "store"
402
+ }] });
403
+ g.setPipeline(_), g.setBindGroup(0, v), g.draw(6, p, 0, 0), g.end(), e.queue.submit([m.finish()]);
404
+ }
405
+ return {
406
+ frame: x,
407
+ shouldContinue: a,
408
+ resize: b,
409
+ teardown: () => {
410
+ m.destroy(), h.destroy();
411
+ }
412
+ };
413
+ };
414
+ }
415
+ function te(e) {
416
+ if (e.background === "transparent") return {
417
+ r: 0,
418
+ g: 0,
419
+ b: 0,
420
+ a: 0
421
+ };
422
+ let t = c(e.background);
423
+ return {
424
+ r: t[0],
425
+ g: t[1],
426
+ b: t[2],
427
+ a: 1
428
+ };
429
+ }
430
+ function Q(e, t, n) {
431
+ let r = e.createShader(t);
432
+ if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) {
433
+ let t = e.getShaderInfoLog(r);
434
+ throw e.deleteShader(r), Error(`[DotMatrix] shader compile failed: ${t}`);
435
+ }
436
+ return r;
437
+ }
438
+ function ne(e) {
439
+ let { canvas: t, config: n, getPalette: r, pointer: i, shouldContinue: a, onFrame: s } = e;
440
+ return function(e) {
441
+ let l = Q(e, e.VERTEX_SHADER, A), f = Q(e, e.FRAGMENT_SHADER, j), p = e.createProgram();
442
+ if (e.attachShader(p, l), e.attachShader(p, f), e.linkProgram(p), !e.getProgramParameter(p, e.LINK_STATUS)) throw Error(`[DotMatrix] link failed: ${e.getProgramInfoLog(p)}`);
443
+ e.deleteShader(l), e.deleteShader(f);
444
+ let m = H(n), h = U(n), g = e.createVertexArray();
445
+ e.bindVertexArray(g);
446
+ let _ = e.createBuffer();
447
+ e.bindBuffer(e.ARRAY_BUFFER, _), e.bufferData(e.ARRAY_BUFFER, new Float32Array([
448
+ -1,
449
+ -1,
450
+ 1,
451
+ -1,
452
+ -1,
453
+ 1,
454
+ -1,
455
+ 1,
456
+ 1,
457
+ -1,
458
+ 1,
459
+ 1
460
+ ]), e.STATIC_DRAW);
461
+ let v = e.getAttribLocation(p, "aCorner");
462
+ e.enableVertexAttribArray(v), e.vertexAttribPointer(v, 2, e.FLOAT, !1, 0, 0);
463
+ let y = e.createBuffer();
464
+ e.bindBuffer(e.ARRAY_BUFFER, y), e.bufferData(e.ARRAY_BUFFER, m, e.STATIC_DRAW);
465
+ let b = e.getAttribLocation(p, "aDot");
466
+ e.enableVertexAttribArray(b), e.vertexAttribPointer(b, 4, e.FLOAT, !1, 0, 0), e.vertexAttribDivisor(b, 1), e.bindVertexArray(null);
467
+ let x = (t) => e.getUniformLocation(p, t), S = x("uU0"), C = x("uU1"), w = x("uU2"), T = x("uU3"), E = x("uU4"), D = x("uU5"), O = x("uSpin"), k = x("uBg"), M = x("uStopCount"), N = x("uPalette[0]");
468
+ function P() {
469
+ let n = o(), r = t.clientWidth || 320, i = t.clientHeight || 320, a = Math.max(1, Math.round(r * n)), s = Math.max(1, Math.round(i * n));
470
+ (t.width !== a || t.height !== s) && (t.width = a, t.height = s), e.viewport(0, 0, t.width, t.height);
471
+ }
472
+ function F(a) {
473
+ s?.(a);
474
+ let l = o(), f = t.width || 1, m = t.height || 1, _ = Math.min(f, m) || 1, v = f / Math.max(m, 1), y = u(a, n.breathing, .6);
475
+ if (e.useProgram(p), e.bindVertexArray(g), e.enable(e.BLEND), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA), n.background === "transparent") e.clearColor(0, 0, 0, 0);
476
+ else {
477
+ let t = c(n.background);
478
+ e.clearColor(t[0], t[1], t[2], 1);
479
+ }
480
+ e.clear(e.COLOR_BUFFER_BIT);
481
+ let b = n.dotSize * l * 2 / _;
482
+ e.uniform4f(S, f, m, l, a), e.uniform4f(C, n.radius, b, n.baseOpacity, v), e.uniform4f(w, .15, .85 * n.depthFade, .6, .4), e.uniform4f(T, n.parallax, i.push, i.bloom, i.active), e.uniform4f(E, i.x, i.y, L, y), e.uniform4f(D, I.x, I.y, n.background === "transparent" ? 0 : 1, 0);
483
+ let x = d(a, n.axisTilt * Math.PI / 180, n.rotationSpeed);
484
+ e.uniformMatrix3fv(O, !1, [
485
+ x[0],
486
+ x[3],
487
+ x[6],
488
+ x[1],
489
+ x[4],
490
+ x[7],
491
+ x[2],
492
+ x[5],
493
+ x[8]
494
+ ]);
495
+ let A = r(), j = Math.min(A.length, 4);
496
+ if (e.uniform1i(M, j), n.background === "transparent") e.uniform4f(k, 0, 0, 0, 0);
497
+ else {
498
+ let t = c(n.background);
499
+ e.uniform4f(k, t[0], t[1], t[2], 1);
500
+ }
501
+ let P = new Float32Array(12);
502
+ for (let e = 0; e < 4; e++) {
503
+ let t = c(A[Math.min(e, j - 1)] ?? A[0]);
504
+ P[e * 3 + 0] = t[0], P[e * 3 + 1] = t[1], P[e * 3 + 2] = t[2];
505
+ }
506
+ e.uniform3fv(N, P), e.drawArraysInstanced(e.TRIANGLES, 0, 6, h), e.bindVertexArray(null);
507
+ }
508
+ return {
509
+ frame: F,
510
+ shouldContinue: a,
511
+ resize: P,
512
+ teardown: () => {
513
+ e.deleteProgram(p), e.deleteVertexArray(g), e.deleteBuffer(_), e.deleteBuffer(y);
514
+ }
515
+ };
516
+ };
517
+ }
518
+ //#endregion
519
+ //#region src/components/custom/dot-matrix/composables/useDotMatrix.ts
520
+ function re(e) {
521
+ return e === "attract" ? -1 : 1;
522
+ }
523
+ function $(e, n) {
524
+ let { config: r, getPalette: i } = n, a = n.mode ?? "live", o = t({ respectReducedMotion: r.respectReducedMotion }), c = R(), l = null, u = 0;
525
+ function d(e) {
526
+ let t = u > 0 ? (e - u) * 1e3 : 16.7;
527
+ if (u = e, o.tick(t), !r.interactive || !o.active.value) {
528
+ c.active += (0 - c.active) * .12, c.push *= .9, c.bloom *= .9;
529
+ return;
530
+ }
531
+ let n = o.smoothedPosition.value;
532
+ c.x = n.x, c.y = n.y, c.active += (1 - c.active) * .2;
533
+ let i = o.speed.value, a = re(r.pointerMode) * Math.min(.35, .08 + i * .6);
534
+ c.push += (a - c.push) * .2, c.bloom = Math.max(c.bloom * .9, o.burst.value);
535
+ }
536
+ let f = () => {
537
+ o.onPointerEnter(), r.interactive && l?.wake();
538
+ }, p = (e) => {
539
+ o.onPointerMove(e), r.interactive && l?.wake();
540
+ }, m = (e) => e.parentElement ?? e;
541
+ function h(e) {
542
+ let t = m(e);
543
+ t.addEventListener("pointermove", p), t.addEventListener("pointerenter", f), t.addEventListener("pointerleave", o.onPointerLeave);
544
+ }
545
+ function g(e) {
546
+ let t = m(e);
547
+ t.removeEventListener("pointermove", p), t.removeEventListener("pointerenter", f), t.removeEventListener("pointerleave", o.onPointerLeave);
548
+ }
549
+ let _ = () => {
550
+ let t = e.value;
551
+ if (!t) return null;
552
+ if (!l) {
553
+ h(t);
554
+ let e = {
555
+ canvas: t,
556
+ config: r,
557
+ getPalette: i,
558
+ pointer: c,
559
+ shouldContinue: () => !0,
560
+ onFrame: d
561
+ };
562
+ l = s(t, {
563
+ mode: a,
564
+ respectReducedMotion: r.respectReducedMotion,
565
+ setupWGPU: ee(e),
566
+ setupGL: ne(e)
567
+ }), l.armAsync();
568
+ }
569
+ return l;
570
+ };
571
+ queueMicrotask(() => _());
572
+ let v = {
573
+ get backend() {
574
+ return _()?.backend ?? "webgpu";
575
+ },
576
+ pause: () => _()?.suspend("manual"),
577
+ resume: () => _()?.resume("manual"),
578
+ wake: () => _()?.wake(),
579
+ renderAt: (e) => _()?.renderAt(e),
580
+ get reducedMotion() {
581
+ return l?.reducedMotion ?? !1;
582
+ },
583
+ dispose: () => {
584
+ let t = e.value;
585
+ t && g(t), o.dispose(), l?.dispose();
586
+ }
587
+ };
588
+ return T(() => v.dispose()), v;
589
+ }
590
+ //#endregion
591
+ //#region src/components/custom/dot-matrix/DotMatrix.vue
592
+ var ie = /* @__PURE__ */ e(/* @__PURE__ */ C({
593
+ __name: "DotMatrix",
594
+ props: {
595
+ config: { default: () => F },
596
+ paused: {
597
+ type: Boolean,
598
+ default: !1
599
+ }
600
+ },
601
+ emits: ["update:paused"],
602
+ setup(e, { expose: t }) {
603
+ let n = D("canvasRef"), r = $(n, {
604
+ config: e.config,
605
+ getPalette: () => e.config.palette
606
+ });
607
+ O(() => e.paused, (e) => e ? r.pause() : r.resume(), { immediate: !0 });
608
+ let i = b(() => {
609
+ let t = e.config.background;
610
+ if (t !== "transparent") return `oklch(${t.L} ${t.C} ${t.h})`;
611
+ });
612
+ return t({
613
+ pause: r.pause,
614
+ resume: r.resume,
615
+ wake: r.wake,
616
+ renderAt: r.renderAt
617
+ }), (e, t) => (E(), x("div", {
618
+ class: "dot-matrix-wrapper",
619
+ style: w(i.value ? { background: i.value } : void 0)
620
+ }, [S("canvas", {
621
+ ref_key: "canvasRef",
622
+ ref: n,
623
+ class: "dot-matrix-canvas",
624
+ "aria-hidden": "true",
625
+ "data-testid": "dot-matrix-canvas"
626
+ }, null, 512)], 4));
627
+ }
628
+ }), [["__scopeId", "data-v-1f36e34c"]]);
629
+ //#endregion
630
+ export { F as DEFAULT_DOT_MATRIX_CONFIG, ie as DotMatrix, v as FACING_HI, m as FACING_LO, g as GOLDEN_ANGLE, f as GOLDEN_RATIO, M as MAX_DOTS, N as MAX_DOT_STOPS, l as SIZE_TAPER_BASE, h as SIZE_TAPER_GAIN, P as WARM_IDENTITY_PALETTE, _ as applyMat3, u as breathRadius, p as facingFade, y as fibonacciDot, d as spinMatrix, $ as useDotMatrix };
@@ -0,0 +1,48 @@
1
+ //#region src/components/custom/dot-matrix/composables/dotMatrixField.ts
2
+ var e = (1 + Math.sqrt(5)) / 2, t = Math.PI * (3 - Math.sqrt(5));
3
+ function n(e, n) {
4
+ let r = Math.max(n, 1), i = 1 - 2 * (e + .5) / r, a = Math.sqrt(Math.max(0, 1 - i * i)), o = e * t;
5
+ return {
6
+ x: Math.cos(o) * a,
7
+ y: i,
8
+ z: Math.sin(o) * a
9
+ };
10
+ }
11
+ var r = .15, i = .85, a = .6, o = .4;
12
+ function s(e, t = 1) {
13
+ let n = d(e.z * .5 + .5);
14
+ return {
15
+ opacity: r + i * t * n,
16
+ size: a + o * n,
17
+ facing: n
18
+ };
19
+ }
20
+ function c(e, t, n) {
21
+ let r = n * e, i = Math.sin(t), a = Math.cos(t), o = Math.cos(r), s = Math.sin(r), c = 1 - o;
22
+ return [
23
+ o + i * i * c,
24
+ i * a * c - 0 * s,
25
+ i * 0 * c + a * s,
26
+ a * i * c + 0 * s,
27
+ o + a * a * c,
28
+ a * 0 * c - i * s,
29
+ 0 * i * c - a * s,
30
+ 0 * a * c + i * s,
31
+ o + 0 * c
32
+ ];
33
+ }
34
+ function l(e, t) {
35
+ return {
36
+ x: e[0] * t.x + e[1] * t.y + e[2] * t.z,
37
+ y: e[3] * t.x + e[4] * t.y + e[5] * t.z,
38
+ z: e[6] * t.x + e[7] * t.y + e[8] * t.z
39
+ };
40
+ }
41
+ function u(e, t, n) {
42
+ return 1 + t * Math.sin(e * n);
43
+ }
44
+ function d(e) {
45
+ return e < 0 ? 0 : e > 1 ? 1 : e;
46
+ }
47
+ //#endregion
48
+ export { a, u as c, c as d, e as i, s as l, r as n, o, t as r, l as s, i as t, n as u };
@@ -0,0 +1 @@
1
+ export * from "./components/ui/drawer";