@mkbabb/glass-ui 4.0.1 → 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 (459) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-8whJrLWt.js} +23 -8
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-D3yxgHNn.js} +23 -12
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-CaP7U3ZA.js} +11 -11
  4. package/dist/ContextMenuContent-B3ZsheLV.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DDRID3qC.js} +15 -15
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-Bc9kUtu_.js} +2 -2
  7. package/dist/{DialogContent-DcKK8k9i.js → DialogContent-6JtTB5x2.js} +8 -5
  8. package/dist/DialogFooter-9phqcRIS.js +80 -0
  9. package/dist/DialogScrollContent-TTuovQst.js +93 -0
  10. package/dist/HoverCardContent-Bel1gdLZ.js +88 -0
  11. package/dist/{IconChip-BTD-nay5.js → IconChip-DhbdGdFQ.js} +1 -1
  12. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-B0zimd2H.js} +1 -1
  13. package/dist/Input-Cg9DF62r.js +57 -0
  14. package/dist/{Notification-VUwexFUf.js → Notification-CphK7AAm.js} +3 -3
  15. package/dist/NumberFieldContent-D8cXeyO4.js +140 -0
  16. package/dist/PagerDots-Cjx96la-.js +98 -0
  17. package/dist/{SelectScrollDownButton-CrA8F0iV.js → SelectScrollDownButton-DAKCBEdW.js} +62 -57
  18. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-C2UGOkXF.js} +1 -1
  19. package/dist/Separator-DQcwC2TR.js +44 -0
  20. package/dist/Switch-B8RscmRu.js +49 -0
  21. package/dist/{Toaster-Bw4xR8xV.js → Toaster-D9qIHjBI.js} +1 -1
  22. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BLtr3TJq.js} +2 -2
  23. package/dist/TooltipProvider-BJ_Y5EGX.js +109 -0
  24. package/dist/animated-digit.js +1 -1
  25. package/dist/api/index.d.ts +15 -32
  26. package/dist/api/types-extra.d.ts +31 -0
  27. package/dist/api.js +1 -1
  28. package/dist/aurora.js +579 -251
  29. package/dist/border-progress.js +49 -57
  30. package/dist/{button-DYCUa-tH.js → button-5dY1Dvhd.js} +13 -14
  31. package/dist/button.js +1 -1
  32. package/dist/canvas.js +2 -3
  33. package/dist/card.js +1 -1
  34. package/dist/carousel.js +20 -20
  35. package/dist/color-Cs0-oxYL.js +116 -0
  36. package/dist/color.js +2 -2
  37. package/dist/command.js +1 -1
  38. package/dist/completion-seal.d.ts +1 -0
  39. package/dist/completion-seal.js +89 -0
  40. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  41. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  42. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  43. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  44. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +11 -2
  45. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  46. package/dist/components/custom/aurora/constants/presets.d.ts +18 -0
  47. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  48. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  49. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  50. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  51. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  52. package/dist/components/custom/border-progress/index.d.ts +1 -1
  53. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  54. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  55. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  56. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  57. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +7 -0
  58. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +9 -0
  59. package/dist/components/custom/concentric/composables/ringField.d.ts +57 -16
  60. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +2 -1
  61. package/dist/components/custom/concentric/composables/useConcentric.d.ts +4 -4
  62. package/dist/components/custom/concentric/constants.d.ts +30 -6
  63. package/dist/components/custom/concentric/index.d.ts +2 -2
  64. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  65. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  66. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  67. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  68. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  69. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  70. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  71. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  72. package/dist/components/custom/constellation/constants.d.ts +33 -0
  73. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  74. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  75. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  76. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  77. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  78. package/dist/components/custom/constellation/index.d.ts +5 -5
  79. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  80. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  81. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  82. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  83. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  84. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  85. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  86. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  87. package/dist/components/custom/deck/constants.d.ts +14 -0
  88. package/dist/components/custom/deck/index.d.ts +8 -0
  89. package/dist/components/custom/dock/DockIconButton.vue.d.ts +12 -0
  90. package/dist/components/custom/dock/DockStack.vue.d.ts +65 -0
  91. package/dist/components/custom/dock/GlassDock.vue.d.ts +4 -2
  92. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +80 -0
  93. package/dist/components/custom/dock/composables/index.d.ts +2 -0
  94. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  95. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +11 -0
  96. package/dist/components/custom/dock/constants.d.ts +18 -14
  97. package/dist/components/custom/dock/index.d.ts +5 -2
  98. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  99. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +48 -6
  100. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +23 -8
  101. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  102. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -5
  103. package/dist/components/custom/dot-flow-field/constants.d.ts +42 -21
  104. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  105. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  106. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +4 -20
  107. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -1
  108. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  109. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  110. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +52 -0
  111. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  112. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +27 -0
  113. package/dist/components/custom/dot-matrix/constants.d.ts +58 -0
  114. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  115. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  116. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  117. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  118. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  119. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  120. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +40 -47
  121. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +15 -0
  122. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +20 -0
  123. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +41 -0
  124. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +40 -37
  125. package/dist/components/custom/fourier-field/constants.d.ts +61 -4
  126. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  127. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  128. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  129. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  130. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  131. package/dist/components/custom/goo-blob/constants.d.ts +1 -1
  132. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  133. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  134. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  135. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  136. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  137. package/dist/components/custom/goo-blob/types.d.ts +36 -0
  138. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  139. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  140. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +50 -0
  141. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +35 -0
  142. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  143. package/dist/components/custom/goo-dot-matrix/constants.d.ts +76 -0
  144. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  145. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +11 -0
  146. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +3 -0
  147. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  148. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  149. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  150. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  151. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  152. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  153. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +90 -0
  154. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +16 -0
  155. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +19 -0
  156. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  157. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  158. package/dist/components/custom/paper-grid/constants.d.ts +57 -0
  159. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  160. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  161. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  162. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  163. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  164. package/dist/components/custom/search/index.d.ts +2 -0
  165. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  166. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  167. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  168. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +23 -0
  169. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  170. package/dist/components/custom/split-chars/index.d.ts +1 -0
  171. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  172. package/dist/components/custom/tabs/constants.d.ts +20 -2
  173. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +29 -16
  174. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  175. package/dist/components/ui/_shared/index.d.ts +2 -0
  176. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  177. package/dist/components/ui/button/index.d.ts +1 -1
  178. package/dist/components/ui/card/Card.vue.d.ts +45 -0
  179. package/dist/components/ui/card/index.d.ts +1 -1
  180. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  181. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  182. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  183. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  184. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  185. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  186. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  187. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  188. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  189. package/dist/components/ui/select/SelectContent.vue.d.ts +3 -0
  190. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  191. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  192. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  193. package/dist/composables/color/index.d.ts +2 -0
  194. package/dist/composables/color/useAccentTone.d.ts +34 -0
  195. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  196. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +10 -0
  197. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  198. package/dist/composables/glass/webgpu/index.d.ts +1 -1
  199. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +28 -7
  200. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +1 -0
  201. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  202. package/dist/composables/motion/core/index.d.ts +3 -0
  203. package/dist/composables/motion/scrollReader.d.ts +25 -0
  204. package/dist/composables/motion/springPresets.d.ts +20 -1
  205. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  206. package/dist/composables/motion/useDockCtaReceive.d.ts +31 -6
  207. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  208. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  209. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  210. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  211. package/dist/composables/sidebar/index.d.ts +4 -1
  212. package/dist/composables/sidebar/types.d.ts +68 -3
  213. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  214. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  215. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  216. package/dist/composables/virtual/index.d.ts +4 -0
  217. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  218. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  219. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  220. package/dist/concentric.js +495 -221
  221. package/dist/configurator.js +2 -2
  222. package/dist/confirm-dialog.js +62 -47
  223. package/dist/constellation.js +635 -235
  224. package/dist/context-menu.js +2 -2
  225. package/dist/controls.js +1 -1
  226. package/dist/createCanvasLifecycle-Gh45Ce-p.js +93 -0
  227. package/dist/dark.js +1 -1
  228. package/dist/data-table.js +1 -1
  229. package/dist/deck.d.ts +1 -0
  230. package/dist/deck.js +105 -0
  231. package/dist/dialog.js +4 -3
  232. package/dist/dock.js +602 -458
  233. package/dist/dot-flow-field.js +580 -290
  234. package/dist/dot-matrix.d.ts +1 -0
  235. package/dist/dot-matrix.js +630 -0
  236. package/dist/dotMatrixField-D_x9_1qq.js +48 -0
  237. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-aJmV5SqE.js} +83 -79
  238. package/dist/dropdown-menu.js +1 -1
  239. package/dist/easing.js +188 -176
  240. package/dist/expandable-container.js +42 -20
  241. package/dist/fading-scroll.js +1 -1
  242. package/dist/flow.glsl-B2P7e0MT.js +4 -0
  243. package/dist/forms.js +62 -60
  244. package/dist/fourier-field.js +825 -178
  245. package/dist/fourier-math.js +1 -1
  246. package/dist/glass-ui.css +1 -1
  247. package/dist/glass-ui.js +145 -104
  248. package/dist/goo-blob.js +171 -1228
  249. package/dist/goo-dot-matrix.d.ts +1 -0
  250. package/dist/goo-dot-matrix.js +591 -0
  251. package/dist/handmark.js +1 -1
  252. package/dist/hover-card.js +1 -1
  253. package/dist/hover-popover.js +1 -1
  254. package/dist/icon-chip.js +1 -1
  255. package/dist/icon-tooltip.js +1 -1
  256. package/dist/index.d.ts +2 -0
  257. package/dist/instrument-chassis.js +1 -1
  258. package/dist/keyboard.js +1 -1
  259. package/dist/labeled-field.js +70 -60
  260. package/dist/metric-cell.js +1 -1
  261. package/dist/metric-stack.js +11 -2
  262. package/dist/motion-core.js +54 -32
  263. package/dist/motion-curves.js +11 -1
  264. package/dist/motion.js +46 -111
  265. package/dist/notification.js +1 -1
  266. package/dist/number-field.js +1 -1
  267. package/dist/pager-dots.js +2 -91
  268. package/dist/paper-backdrop.js +1 -1
  269. package/dist/paper-grid.d.ts +1 -0
  270. package/dist/paper-grid.js +788 -0
  271. package/dist/{presets-BW2b-fr1.js → presets-CvOUqtdY.js} +3 -3
  272. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-m7Zgv35j.js} +2 -2
  273. package/dist/progress.js +1 -1
  274. package/dist/pulse.js +1 -1
  275. package/dist/reactive.js +1 -1
  276. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-yPyIpJt9.js} +12 -2
  277. package/dist/scrollReader-DI1NWxUw.js +42 -0
  278. package/dist/scrolling-text.js +1 -1
  279. package/dist/search.js +160 -304
  280. package/dist/select.js +3 -3
  281. package/dist/selectable-chip.d.ts +1 -0
  282. package/dist/selectable-chip.js +65 -0
  283. package/dist/separator.js +1 -1
  284. package/dist/{sheet-tZMg0E0w.js → sheet-B2flBfLH.js} +2 -2
  285. package/dist/sheet.js +1 -1
  286. package/dist/sidebar.js +216 -114
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +1 -1
  289. package/dist/spectrum-walk-BVzA7Biz.js +33 -0
  290. package/dist/{springPresets-CFQGQfdl.js → springPresets-Ce7OYCm9.js} +12 -6
  291. package/dist/styles/animations.css +13 -3
  292. package/dist/styles/cards.css +69 -0
  293. package/dist/styles/completion-seal.css +131 -0
  294. package/dist/styles/components.css +2 -3
  295. package/dist/styles/configurator.css +55 -0
  296. package/dist/styles/critical-partition.mjs +33 -11
  297. package/dist/styles/deferred.css +2 -0
  298. package/dist/styles/dock/cta-seat.css +87 -0
  299. package/dist/styles/dock/density.css +153 -0
  300. package/dist/styles/dock/layers.css +55 -7
  301. package/dist/styles/dock/morph-bridge.css +54 -18
  302. package/dist/styles/dock/morph.css +41 -33
  303. package/dist/styles/dock/overflow.css +12 -0
  304. package/dist/styles/dock/search.css +68 -0
  305. package/dist/styles/dock/shape.css +124 -0
  306. package/dist/styles/dock/shell.css +23 -5
  307. package/dist/styles/dock/stack-rail.css +264 -0
  308. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  309. package/dist/styles/dock-controls/icon-button.css +14 -0
  310. package/dist/styles/dock.css +11 -1
  311. package/dist/styles/glass/accent-tone.css +66 -0
  312. package/dist/styles/glass/control-surfaces.css +167 -0
  313. package/dist/styles/glass/ladder.css +67 -17
  314. package/dist/styles/glass/rim.css +19 -9
  315. package/dist/styles/glass/surfaces.css +69 -148
  316. package/dist/styles/glass.css +10 -0
  317. package/dist/styles/index.css +15 -0
  318. package/dist/styles/scroll-chrome.css +123 -0
  319. package/dist/styles/scroll-driven.css +38 -0
  320. package/dist/styles/segmented-tabs.css +50 -14
  321. package/dist/styles/theme/bridges.css +22 -0
  322. package/dist/styles/theme/radius.css +18 -1
  323. package/dist/styles/tokens/color-radius.css +13 -3
  324. package/dist/styles/tokens/dark-arm.css +39 -6
  325. package/dist/styles/tokens/glass-deep.css +28 -3
  326. package/dist/styles/tokens/glass-fx.css +44 -1
  327. package/dist/styles/tokens/glass.css +91 -31
  328. package/dist/styles/tokens/light-dark.css +1 -1
  329. package/dist/styles/tokens/offsets.css +27 -0
  330. package/dist/styles/tokens/property-regs.css +133 -0
  331. package/dist/styles/tokens/scale-paper.css +73 -29
  332. package/dist/styles/tokens/scheme-motion.css +44 -6
  333. package/dist/styles/tokens/sizing-config.css +110 -0
  334. package/dist/styles/tokens/sizing.css +55 -104
  335. package/dist/styles/tokens.css +5 -0
  336. package/dist/styles/typography/semantic.css +18 -5
  337. package/dist/styles/utilities/a11y-overrides.css +20 -5
  338. package/dist/styles/utilities/base-misc.css +52 -0
  339. package/dist/styles/utilities/btn.css +14 -3
  340. package/dist/styles/utilities/components.css +31 -6
  341. package/dist/styles/utilities/metal.css +26 -0
  342. package/dist/switch.js +1 -1
  343. package/dist/tabs.js +8 -8
  344. package/dist/timeline.js +1 -1
  345. package/dist/toast.js +1 -1
  346. package/dist/toggle-chip.js +10 -10
  347. package/dist/toggle-group.js +1 -1
  348. package/dist/tooltip.js +1 -1
  349. package/dist/typewriter.js +1 -1
  350. package/dist/uniformBridgeWGPU-CtAKl45L.js +1204 -0
  351. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-CLrxicG9.js} +1 -1
  352. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-4xblKfwd.js} +25 -24
  353. package/dist/useControlSize-SH1UmJCi.js +9 -0
  354. package/dist/useDockCtaReceive-DfFkmgL1.js +82 -0
  355. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-BUgAC-zK.js} +4 -4
  356. package/dist/useFuzzySearch-DIhcYtcw.js +177 -0
  357. package/dist/useGpuSubstrate-4pTcp6mX.js +294 -0
  358. package/dist/{useLiquidPress-kfb4KX79.js → useLiquidPress-BooG97RY.js} +2 -2
  359. package/dist/usePointerVelocityField-QLsy3_kv.js +91 -0
  360. package/dist/useScrollChrome-D66AVP7C.js +258 -0
  361. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-BWDnKIwh.js} +1 -1
  362. package/dist/useSpringPress-B1-Czp-V.js +36 -0
  363. package/dist/useViewTransition-CUI1nAgn.js +95 -0
  364. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  365. package/dist/virtual.d.ts +1 -0
  366. package/dist/virtual.js +225 -0
  367. package/dist/watercolor-dot.js +116 -73
  368. package/package.json +127 -7
  369. package/src/styles/animations.css +13 -3
  370. package/src/styles/cards.css +69 -0
  371. package/src/styles/completion-seal.css +131 -0
  372. package/src/styles/configurator.css +55 -0
  373. package/src/styles/critical-partition.mjs +33 -11
  374. package/src/styles/dock/cta-seat.css +87 -0
  375. package/src/styles/dock/density.css +153 -0
  376. package/src/styles/dock/layers.css +55 -7
  377. package/src/styles/dock/morph-bridge.css +54 -18
  378. package/src/styles/dock/morph.css +41 -33
  379. package/src/styles/dock/overflow.css +12 -0
  380. package/src/styles/dock/search.css +68 -0
  381. package/src/styles/dock/shape.css +124 -0
  382. package/src/styles/dock/shell.css +23 -5
  383. package/src/styles/dock/stack-rail.css +264 -0
  384. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  385. package/src/styles/dock-controls/icon-button.css +14 -0
  386. package/src/styles/dock.css +11 -1
  387. package/src/styles/glass/accent-tone.css +66 -0
  388. package/src/styles/glass/control-surfaces.css +167 -0
  389. package/src/styles/glass/ladder.css +67 -17
  390. package/src/styles/glass/rim.css +19 -9
  391. package/src/styles/glass/surfaces.css +69 -148
  392. package/src/styles/glass.css +10 -0
  393. package/src/styles/index.css +15 -0
  394. package/src/styles/scroll-chrome.css +123 -0
  395. package/src/styles/scroll-driven.css +38 -0
  396. package/src/styles/segmented-tabs.css +50 -14
  397. package/src/styles/theme/bridges.css +22 -0
  398. package/src/styles/theme/radius.css +18 -1
  399. package/src/styles/tokens/color-radius.css +13 -3
  400. package/src/styles/tokens/dark-arm.css +39 -6
  401. package/src/styles/tokens/glass-deep.css +28 -3
  402. package/src/styles/tokens/glass-fx.css +44 -1
  403. package/src/styles/tokens/glass.css +91 -31
  404. package/src/styles/tokens/light-dark.css +1 -1
  405. package/src/styles/tokens/offsets.css +27 -0
  406. package/src/styles/tokens/property-regs.css +133 -0
  407. package/src/styles/tokens/scale-paper.css +73 -29
  408. package/src/styles/tokens/scheme-motion.css +44 -6
  409. package/src/styles/tokens/sizing-config.css +110 -0
  410. package/src/styles/tokens/sizing.css +55 -104
  411. package/src/styles/tokens.css +5 -0
  412. package/src/styles/typography/semantic.css +18 -5
  413. package/src/styles/utilities/a11y-overrides.css +20 -5
  414. package/src/styles/utilities/base-misc.css +52 -0
  415. package/src/styles/utilities/btn.css +14 -3
  416. package/src/styles/utilities/components.css +31 -6
  417. package/src/styles/utilities/metal.css +26 -0
  418. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  419. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  420. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  421. package/dist/Input-h9v5LeXf.js +0 -55
  422. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  423. package/dist/Separator-pKF0oA4M.js +0 -37
  424. package/dist/Switch-CwYNf8bo.js +0 -47
  425. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  426. package/dist/color-DweYl7pE.js +0 -86
  427. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  428. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  429. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  430. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  431. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  432. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  433. package/dist/styles/dock/rail-extend.css +0 -397
  434. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  435. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  436. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  437. package/src/styles/dock/rail-extend.css +0 -397
  438. /package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-DLRbH5Xr.js} +0 -0
  439. /package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-BcIxvyqZ.js} +0 -0
  440. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-CxsHSyMj.js} +0 -0
  441. /package/dist/{PaperBackdrop-Vf3tlpvd.js → PaperBackdrop-CqwjnfLv.js} +0 -0
  442. /package/dist/{Progress-DctG61iZ.js → Progress-CnqB7gLm.js} +0 -0
  443. /package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-CTZbA_cG.js} +0 -0
  444. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-BFiod7X2.js} +0 -0
  445. /package/dist/{compile-CQEFRTmx.js → compile-nZ1xVYTp.js} +0 -0
  446. /package/dist/{constants-BPOqYJAm.js → constants--C2DkLW8.js} +0 -0
  447. /package/dist/{math-BINYmg5z.js → math-Eb0w3LqU.js} +0 -0
  448. /package/dist/{prng-Za0Rmgag.js → prng-B-d9eYX8.js} +0 -0
  449. /package/dist/{slider-DVb4HXU-.js → slider-2A0rPn79.js} +0 -0
  450. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-CmjB9E32.js} +0 -0
  451. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Dbozzjgm.js} +0 -0
  452. /package/dist/{useInterval-CvK1mL92.js → useInterval-CNdua40W.js} +0 -0
  453. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BPRp33Im.js} +0 -0
  454. /package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-UmA6LMZu.js} +0 -0
  455. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-c3yxmH6a.js} +0 -0
  456. /package/dist/{useSortable-DHjtZSEd.js → useSortable-BVqlJRBR.js} +0 -0
  457. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  458. /package/dist/{vReveal-Czsb7zQC.js → vReveal-D9k0jADx.js} +0 -0
  459. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.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 };