@mkbabb/glass-ui 3.1.1 → 3.3.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 (337) hide show
  1. package/dist/{CardFooter-CSGcJkqa.js → CardFooter-C390imy7.js} +3 -3
  2. package/dist/{CollapsibleContent-CVMOcYlV.js → CollapsibleContent-cauTbZEM.js} +1 -1
  3. package/dist/{CommandShortcut-DWT19a2Y.js → CommandShortcut-BiVyqipe.js} +7 -6
  4. package/dist/{ContextMenuSubContent-gAFxJ-qi.js → ContextMenuSubContent-DrWkXKQP.js} +4 -4
  5. package/dist/DataTable-FfkaAg2z.js +465 -0
  6. package/dist/DialogContent-IQ8_BRrC.js +100 -0
  7. package/dist/{DialogFooter-ClrNEOVU.js → DialogFooter-Er0wA3K6.js} +2 -2
  8. package/dist/{DiscoGlyph-C3JfMnRV.js → DiscoGlyph-BaZ8OawK.js} +1 -1
  9. package/dist/{GlyphFace-BRS8vUb7.js → GlyphFace-B_7vOmYn.js} +1 -1
  10. package/dist/HoverPopover-DTSYkJtw.js +96 -0
  11. package/dist/{IconTooltip-BkaA7tZ2.js → IconTooltip-BTyYn4mr.js} +1 -1
  12. package/dist/Input-CU9CNKmo.js +52 -0
  13. package/dist/{MetricBadge-DmAihkXd.js → MetricBadge-BlrdbOGN.js} +2 -2
  14. package/dist/{Notification-OqIpADml.js → Notification-DP_ApJLo.js} +3 -3
  15. package/dist/{NumberFieldContent-DTH9gb_N.js → NumberFieldContent-iOTQ5rGO.js} +9 -5
  16. package/dist/{PopoverContent-EiklFrna.js → PopoverContent-B8WtJECb.js} +1 -1
  17. package/dist/Progress-DjM86vfb.js +254 -0
  18. package/dist/{ScrollingText-BFd0i2zJ.js → ScrollingText-P9o_DuMn.js} +2 -2
  19. package/dist/{SelectScrollDownButton-Dth8-wXQ.js → SelectScrollDownButton-BGn3rjs9.js} +12 -11
  20. package/dist/TabsIndicator-DA0x9gPr.js +97 -0
  21. package/dist/{Toaster-Bjlunvq4.js → Toaster-DdhMKfus.js} +1 -1
  22. package/dist/{ToggleGroupItem-OesUouE7.js → ToggleGroupItem-gyXj998A.js} +37 -40
  23. package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
  24. package/dist/animated-digit.js +3 -3
  25. package/dist/api/index.d.ts +2 -0
  26. package/dist/api.js +1 -1
  27. package/dist/aurora.js +471 -320
  28. package/dist/badge.js +1 -1
  29. package/dist/{button-C0aHmBbt.js → button-Ckn3eDfB.js} +27 -22
  30. package/dist/button.js +1 -1
  31. package/dist/card.js +1 -1
  32. package/dist/carousel.js +6 -6
  33. package/dist/{check-dwgetki8.js → check-CdkxGxXJ.js} +1 -1
  34. package/dist/{chevron-down-DILQA1t6.js → chevron-down-pBY8sYfV.js} +1 -1
  35. package/dist/{chevron-right-fS7fal2t.js → chevron-right-BjeKC22V.js} +1 -1
  36. package/dist/{chevron-up-BtYjYQOS.js → chevron-up-DBeNHUm1.js} +1 -1
  37. package/dist/collapsible.js +1 -1
  38. package/dist/color-rkK4RMx2.js +33 -0
  39. package/dist/color.d.ts +1 -0
  40. package/dist/color.js +2 -0
  41. package/dist/command.js +1 -1
  42. package/dist/compile-DVgAxagk.js +106 -0
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
  44. package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
  45. package/dist/components/custom/aurora/composables/color.d.ts +42 -16
  46. package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
  47. package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
  48. package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
  51. package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
  52. package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
  53. package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
  54. package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +3 -6
  55. package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
  56. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
  59. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
  60. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/index.d.ts +4 -3
  62. package/dist/components/custom/configurator/Configurator.vue.d.ts +26 -0
  63. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
  64. package/dist/components/custom/configurator/density.d.ts +3 -8
  65. package/dist/components/custom/configurator/index.d.ts +1 -1
  66. package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
  67. package/dist/components/custom/dock/DockIconButton.vue.d.ts +15 -4
  68. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
  69. package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -13
  70. package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
  71. package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
  72. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
  73. package/dist/components/custom/dock/index.d.ts +1 -0
  74. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  75. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  76. package/dist/components/custom/glyph-face/keys.d.ts +3 -29
  77. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
  78. package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
  79. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
  80. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
  81. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
  82. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
  83. package/dist/components/custom/goo-blob/index.d.ts +7 -0
  84. package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
  85. package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
  86. package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
  87. package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
  88. package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
  89. package/dist/components/custom/goo-blob/types.d.ts +77 -0
  90. package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
  91. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
  92. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
  93. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
  94. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
  95. package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
  96. package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
  97. package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
  98. package/dist/components/custom/sortable-list/context.d.ts +2 -3
  99. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
  100. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
  101. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
  102. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
  103. package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
  104. package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
  105. package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
  106. package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
  107. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
  108. package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
  109. package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
  110. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
  111. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  112. package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
  113. package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
  114. package/dist/components/ui/avatar/index.d.ts +1 -1
  115. package/dist/components/ui/badge/index.d.ts +2 -2
  116. package/dist/components/ui/button/Button.vue.d.ts +3 -1
  117. package/dist/components/ui/button/index.d.ts +2 -2
  118. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  119. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  120. package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
  121. package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
  122. package/dist/components/ui/command/Command.vue.d.ts +3 -3
  123. package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
  124. package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
  125. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
  126. package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
  127. package/dist/components/ui/input/Input.vue.d.ts +19 -1
  128. package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
  129. package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
  130. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
  131. package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
  132. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
  133. package/dist/components/ui/progress/index.d.ts +5 -2
  134. package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
  135. package/dist/components/ui/select/Select.vue.d.ts +2 -2
  136. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  137. package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
  138. package/dist/components/ui/sheet/index.d.ts +1 -1
  139. package/dist/components/ui/slider/index.d.ts +12 -11
  140. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  141. package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
  142. package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
  143. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  144. package/dist/components/ui/toggle/index.d.ts +1 -1
  145. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
  146. package/dist/composables/color/index.d.ts +49 -0
  147. package/dist/composables/context/createContext.d.ts +56 -0
  148. package/dist/composables/context/index.d.ts +1 -0
  149. package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
  150. package/dist/composables/dark/index.d.ts +3 -0
  151. package/dist/composables/dark/useGlobalDark.d.ts +19 -2
  152. package/dist/composables/dom/index.d.ts +1 -3
  153. package/dist/composables/dom/useClipboard.d.ts +35 -12
  154. package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
  155. package/dist/composables/dom/useTextHighlight.d.ts +40 -0
  156. package/dist/composables/glass/webgl/compile.d.ts +15 -0
  157. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
  159. package/dist/composables/motion/core/index.d.ts +2 -1
  160. package/dist/composables/motion/index.d.ts +1 -1
  161. package/dist/composables/motion/useCountup.d.ts +29 -0
  162. package/dist/composables/motion/usePrioritizedTask.d.ts +41 -0
  163. package/dist/composables/motion/vReveal.d.ts +2 -0
  164. package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
  165. package/dist/composables/sortable/dragController.d.ts +44 -0
  166. package/dist/composables/sortable/dropResolver.d.ts +34 -0
  167. package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
  168. package/dist/composables/sortable/index.d.ts +1 -1
  169. package/dist/composables/sortable/touchGate.d.ts +26 -0
  170. package/dist/composables/sortable/transitionTiming.d.ts +50 -0
  171. package/dist/composables/sortable/types.d.ts +133 -0
  172. package/dist/composables/sortable/useSortable.d.ts +25 -140
  173. package/dist/configurator.js +1 -1
  174. package/dist/confirm-dialog.js +3 -3
  175. package/dist/context-menu.js +2 -2
  176. package/dist/controls.js +5 -5
  177. package/dist/createContext-DBMGRlx4.js +25 -0
  178. package/dist/dark.d.ts +2 -1
  179. package/dist/dark.js +9 -2
  180. package/dist/data-table.js +1 -1
  181. package/dist/dialog.js +2 -2
  182. package/dist/disco-glyph.js +1 -1
  183. package/dist/dock.js +410 -254
  184. package/dist/dockContext-spUj_-E5.js +9 -0
  185. package/dist/dom.js +6 -5
  186. package/dist/{dropdown-menu-BvRUamNs.js → dropdown-menu-EFjl5iKo.js} +4 -4
  187. package/dist/dropdown-menu.js +1 -1
  188. package/dist/expandable-container.js +28 -22
  189. package/dist/fonts/README.md +21 -0
  190. package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
  191. package/dist/forms.js +70 -61
  192. package/dist/glass-carousel.js +59 -52
  193. package/dist/glass-panel.js +2 -2
  194. package/dist/glass-ui.css +1 -1
  195. package/dist/glass-ui.js +159 -254
  196. package/dist/glyph-face.js +2 -2
  197. package/dist/goo-blob.d.ts +1 -0
  198. package/dist/goo-blob.js +538 -0
  199. package/dist/header-ribbon.js +3 -3
  200. package/dist/hover-card.js +1 -1
  201. package/dist/hover-popover.js +1 -1
  202. package/dist/icon-tooltip.js +1 -1
  203. package/dist/index.d.ts +1 -0
  204. package/dist/instrument-chassis.js +1 -1
  205. package/dist/instrument-rail.js +1 -1
  206. package/dist/keyboard.js +1 -1
  207. package/dist/keys-BFoma9vm.js +9 -0
  208. package/dist/label.js +1 -1
  209. package/dist/labeled-field.js +57 -39
  210. package/dist/metric-badge.js +1 -1
  211. package/dist/metric-stack.js +1 -1
  212. package/dist/{minimize-2-LsCJ_eNt.js → minimize-2-BP27-qBY.js} +1 -1
  213. package/dist/motion-core.js +154 -135
  214. package/dist/motion.js +63 -15
  215. package/dist/notification.js +1 -1
  216. package/dist/number-field.js +1 -1
  217. package/dist/paper-backdrop.js +1 -1
  218. package/dist/popover.js +1 -1
  219. package/dist/{presets-a-D93K1S.js → presets-1OhFpaIC.js} +5 -5
  220. package/dist/prng-Bz_1Tydc.js +15 -0
  221. package/dist/progress.js +2 -2
  222. package/dist/pulse.js +1 -1
  223. package/dist/reactive.js +2 -2
  224. package/dist/responsive-tabs.js +38 -32
  225. package/dist/scrolling-text.js +1 -1
  226. package/dist/{search-DBAiUABx.js → search-DBG8qaRs.js} +1 -1
  227. package/dist/search.js +153 -149
  228. package/dist/select.js +3 -3
  229. package/dist/separator.js +1 -1
  230. package/dist/{sheet-CukNDezz.js → sheet-CQYYrkr9.js} +3 -3
  231. package/dist/sheet.js +1 -1
  232. package/dist/{slider-DJvHkTRe.js → slider-BOh8ycfZ.js} +8 -12
  233. package/dist/slider.js +1 -1
  234. package/dist/sortable-list.js +37 -39
  235. package/dist/stacked-icons.js +2 -2
  236. package/dist/styles/animations.css +1 -1
  237. package/dist/styles/cards.css +1 -1
  238. package/dist/styles/components.css +45 -0
  239. package/dist/styles/dock-controls.css +486 -0
  240. package/dist/styles/dock.css +325 -431
  241. package/dist/styles/fonts.css +25 -0
  242. package/dist/styles/glass-specular-track.css +154 -0
  243. package/dist/styles/glass.css +74 -2
  244. package/dist/styles/index.css +25 -2
  245. package/dist/styles/instrument-chassis.css +11 -4
  246. package/dist/styles/theme.css +73 -21
  247. package/dist/styles/tokens.css +282 -140
  248. package/dist/styles/typography.css +14 -8
  249. package/dist/styles/utilities.css +92 -8
  250. package/dist/styles/view-transition.css +10 -4
  251. package/dist/switch.js +1 -1
  252. package/dist/tabs.js +148 -106
  253. package/dist/timeline.js +220 -159
  254. package/dist/toast.js +1 -1
  255. package/dist/toggle-group.js +1 -1
  256. package/dist/tokens.d.ts +1 -1
  257. package/dist/tooltip.js +1 -1
  258. package/dist/typewriter.js +1 -1
  259. package/dist/{useAnimatedNumber-DKQYVB7s.js → useAnimatedNumber-BF6r64lA.js} +1 -1
  260. package/dist/useClipboard-D8vFyRCa.js +97 -0
  261. package/dist/useConfiguratorState-DUtC1jxr.js +276 -0
  262. package/dist/useGlobalDark-CWiaCoEw.js +34 -0
  263. package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
  264. package/dist/useSortable-DnyGXKKY.js +246 -0
  265. package/dist/useTextHighlight-Dmtofpk2.js +72 -0
  266. package/dist/{useTouchGate-D9Zvrzyc.js → useTouchGate-CS5Csc2h.js} +1 -1
  267. package/dist/{useViewTransition-DYIK6Gzb.js → useViewTransition-D4ssvnXZ.js} +5 -3
  268. package/dist/utils/index.d.ts +2 -1
  269. package/dist/utils/platformSupport.d.ts +8 -0
  270. package/dist/utils/prng.d.ts +4 -0
  271. package/dist/vReveal-u2wSG2El.js +35 -0
  272. package/dist/watercolor-dot.d.ts +1 -0
  273. package/dist/watercolor-dot.js +129 -0
  274. package/dist/{x-q7pJa83X.js → x-C4pz9nbD.js} +1 -1
  275. package/package.json +110 -16
  276. package/src/fonts/README.md +21 -0
  277. package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
  278. package/src/styles/animations.css +1 -1
  279. package/src/styles/cards.css +1 -1
  280. package/src/styles/dock-controls.css +486 -0
  281. package/src/styles/dock.css +325 -431
  282. package/src/styles/fonts.css +25 -0
  283. package/src/styles/glass-specular-track.css +154 -0
  284. package/src/styles/glass.css +74 -2
  285. package/src/styles/index.css +21 -2
  286. package/src/styles/instrument-chassis.css +11 -4
  287. package/src/styles/theme.css +73 -21
  288. package/src/styles/tokens.css +282 -140
  289. package/src/styles/typography.css +14 -8
  290. package/src/styles/utilities.css +92 -8
  291. package/src/styles/view-transition.css +10 -4
  292. package/dist/DataTable-R8-Zidms.js +0 -460
  293. package/dist/DialogContent-2fALDSvc.js +0 -93
  294. package/dist/HoverPopover-CWFCfLx3.js +0 -96
  295. package/dist/Input-DDpFn568.js +0 -30
  296. package/dist/Progress-FApA9fm_.js +0 -126
  297. package/dist/UnderlineTabs-DAWMLmJG.js +0 -37
  298. package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
  299. package/dist/composables/dom/useBreakpoint.d.ts +0 -38
  300. package/dist/composables/dom/useIdleReady.d.ts +0 -63
  301. package/dist/composables/dom/useViewportReady.d.ts +0 -87
  302. package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
  303. package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
  304. package/dist/composables/motion/useStagger.d.ts +0 -50
  305. package/dist/dockContext-D5NZCWJs.js +0 -16
  306. package/dist/keys-CaTQS-vx.js +0 -11
  307. package/dist/useConfiguratorState-CtRBE0m_.js +0 -268
  308. package/dist/useGlobalDark-B0WvLJE3.js +0 -24
  309. package/dist/useIdleReady-Cmkhm03v.js +0 -162
  310. package/dist/useIntersectionPause-IY2CwPQb.js +0 -39
  311. package/dist/useSortable-Cq2Y1JLO.js +0 -175
  312. /package/dist/{ContextMenuContent-otjFIu8v.js → ContextMenuContent-De01_83g.js} +0 -0
  313. /package/dist/{HoverCardContent-DaGrgJBO.js → HoverCardContent-ICfIMZX1.js} +0 -0
  314. /package/dist/{InstrumentChassis-CnHTMxds.js → InstrumentChassis-DaHIZCqy.js} +0 -0
  315. /package/dist/{InstrumentRail-C6dEbi8E.js → InstrumentRail-B0qqLFN0.js} +0 -0
  316. /package/dist/{Label-DJty89bp.js → Label-CZk-3nTc.js} +0 -0
  317. /package/dist/{ModalOverlay-iWiAgbYH.js → ModalOverlay-B_CBtqcE.js} +0 -0
  318. /package/dist/{PaperBackdrop-CeZ-w0R0.js → PaperBackdrop-D_YZW47j.js} +0 -0
  319. /package/dist/{SelectGroup-DdR4tdDY.js → SelectGroup-CMdoCjRE.js} +0 -0
  320. /package/dist/{SelectSeparator-CXm_hlqA.js → SelectSeparator-CaJnPF3_.js} +0 -0
  321. /package/dist/{Separator-D8AUMhxY.js → Separator-C2XtAXRp.js} +0 -0
  322. /package/dist/{Switch-Cr1t_F_U.js → Switch-x8n6husW.js} +0 -0
  323. /package/dist/{TooltipProvider-DE78vbEP.js → TooltipProvider-D-JrSqDu.js} +0 -0
  324. /package/dist/{_plugin-vue_export-helper-Dq1MygBL.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  325. /package/dist/{badge-x46my_Fo.js → badge-Cl6JZ1B7.js} +0 -0
  326. /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
  327. /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
  328. /package/dist/{constants-DwBwnG8N.js → constants-DsCdlK9I.js} +0 -0
  329. /package/dist/{createLucideIcon-Bn9a1b70.js → createLucideIcon-DuDoe_ra.js} +0 -0
  330. /package/dist/{menuItemVariants-BsbGNq9C.js → menuItemVariants-C2QlXqT3.js} +0 -0
  331. /package/dist/{useGlassRenderer-Ds-nmrGz.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
  332. /package/dist/{useInterval-DVgGUf_y.js → useInterval-CHVYFpXV.js} +0 -0
  333. /package/dist/{useKeyboardShortcuts-Dpw_RUcB.js → useKeyboardShortcuts-BQfnAHHW.js} +0 -0
  334. /package/dist/{useResizeObserver-Cg9npuM3.js → useResizeObserver-DX-STszm.js} +0 -0
  335. /package/dist/{useSpringMount-Cfk1XK1R.js → useSpringMount-CnizvZGm.js} +0 -0
  336. /package/dist/{useTimer-NAaj9zNq.js → useTimer-DGgoxTXL.js} +0 -0
  337. /package/dist/{useUserInvalidAria-DVu1eTXG.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
@@ -1,3 +1,3 @@
1
- import { n as e, r as t, t as n } from "./keys-CaTQS-vx.js";
2
- import { t as r } from "./GlyphFace-BRS8vUb7.js";
1
+ import { n as e, r as t, t as n } from "./keys-BFoma9vm.js";
2
+ import { t as r } from "./GlyphFace-B_7vOmYn.js";
3
3
  export { n as GLYPH_FACE_SILHOUETTE_KEY, r as GlyphFace, e as provideGlyphFaceSilhouette, t as useOptionalGlyphFaceSilhouette };
@@ -0,0 +1 @@
1
+ export * from "./components/custom/goo-blob";
@@ -0,0 +1,538 @@
1
+ import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
+ import { a as t, i as n, n as r, o as i, r as a, s as o, t as s } from "./compile-DVgAxagk.js";
3
+ import { t as c } from "./useIntersectionPause-DAdVPVp4.js";
4
+ import { n as l, t as u } from "./prng-Bz_1Tydc.js";
5
+ import { createElementBlock as d, createElementVNode as f, defineComponent as p, inject as m, normalizeStyle as h, onUnmounted as g, openBlock as _, readonly as v, ref as y, toRef as b, useTemplateRef as x, watch as S } from "vue";
6
+ //#region src/components/custom/goo-blob/types.ts
7
+ var C = {
8
+ canvasSize: 200,
9
+ bodyRadius: .25,
10
+ satelliteCount: 3,
11
+ satelliteRadius: .13,
12
+ orbitRadius: .35,
13
+ smoothK: .22,
14
+ noiseAmp: .025,
15
+ noiseFreq: 3.5,
16
+ noiseSpeed: .08,
17
+ pulseFreq: .3,
18
+ pulseAmp: .008,
19
+ hueRange: 5,
20
+ satShift: 0,
21
+ brightnessShift: 0,
22
+ colorNoiseFreq: 2,
23
+ colorNoiseSpeed: .05,
24
+ pointerAttraction: 0,
25
+ pointerStrength: .08,
26
+ eccentricity: .25,
27
+ orbitSpeedScale: 1,
28
+ wobbleScale: 1,
29
+ mergeRate: 1,
30
+ mergeDuration: 1800,
31
+ absorbedDuration: [2e3, 4e3],
32
+ emergeDuration: 2200,
33
+ orbitDuration: [8e3, 14e3]
34
+ }, w = Symbol("blobConfig");
35
+ //#endregion
36
+ //#region src/components/custom/goo-blob/composables/easing.ts
37
+ function T(e) {
38
+ return e < .5 ? 2 * e * e : 1 - 2 * (1 - e) * (1 - e);
39
+ }
40
+ function E(e) {
41
+ return e * e;
42
+ }
43
+ function ee(e) {
44
+ return 1 - (1 - e) * (1 - e);
45
+ }
46
+ //#endregion
47
+ //#region src/components/custom/goo-blob/composables/useBlobMood.ts
48
+ var D = {
49
+ idle: {
50
+ orbitSpeedScale: 1,
51
+ wobbleScale: 1,
52
+ pulseFreq: .3,
53
+ pulseAmp: .015,
54
+ noiseAmp: .025,
55
+ hueRange: 5,
56
+ satShift: 0,
57
+ brightnessShift: 0,
58
+ smoothK: .22,
59
+ pointerAttraction: 0,
60
+ mergeRate: 1
61
+ },
62
+ happy: {
63
+ orbitSpeedScale: 1.4,
64
+ wobbleScale: 1.3,
65
+ pulseFreq: .8,
66
+ pulseAmp: .03,
67
+ noiseAmp: .035,
68
+ hueRange: 15,
69
+ satShift: .05,
70
+ brightnessShift: .05,
71
+ smoothK: .28,
72
+ pointerAttraction: .3,
73
+ mergeRate: .6
74
+ },
75
+ curious: {
76
+ orbitSpeedScale: .8,
77
+ wobbleScale: 1.5,
78
+ pulseFreq: .5,
79
+ pulseAmp: .02,
80
+ noiseAmp: .03,
81
+ hueRange: 10,
82
+ satShift: .03,
83
+ brightnessShift: .02,
84
+ smoothK: .25,
85
+ pointerAttraction: .6,
86
+ mergeRate: 1.2
87
+ },
88
+ sleepy: {
89
+ orbitSpeedScale: .4,
90
+ wobbleScale: .5,
91
+ pulseFreq: .15,
92
+ pulseAmp: .008,
93
+ noiseAmp: .015,
94
+ hueRange: 3,
95
+ satShift: -.05,
96
+ brightnessShift: -.03,
97
+ smoothK: .16,
98
+ pointerAttraction: -.2,
99
+ mergeRate: 2
100
+ },
101
+ excited: {
102
+ orbitSpeedScale: 2.2,
103
+ wobbleScale: 2,
104
+ pulseFreq: 1.5,
105
+ pulseAmp: .05,
106
+ noiseAmp: .045,
107
+ hueRange: 25,
108
+ satShift: .1,
109
+ brightnessShift: .08,
110
+ smoothK: .32,
111
+ pointerAttraction: .1,
112
+ mergeRate: .3
113
+ }
114
+ }, O = {
115
+ idle: 1500,
116
+ happy: 1200,
117
+ curious: 800,
118
+ sleepy: 2500,
119
+ excited: 600
120
+ };
121
+ function k(e, t, n) {
122
+ let r = (e, t) => e + (t - e) * n;
123
+ return {
124
+ orbitSpeedScale: r(e.orbitSpeedScale, t.orbitSpeedScale),
125
+ wobbleScale: r(e.wobbleScale, t.wobbleScale),
126
+ pulseFreq: r(e.pulseFreq, t.pulseFreq),
127
+ pulseAmp: r(e.pulseAmp, t.pulseAmp),
128
+ noiseAmp: r(e.noiseAmp, t.noiseAmp),
129
+ hueRange: r(e.hueRange, t.hueRange),
130
+ satShift: r(e.satShift, t.satShift),
131
+ brightnessShift: r(e.brightnessShift, t.brightnessShift),
132
+ smoothK: r(e.smoothK, t.smoothK),
133
+ pointerAttraction: r(e.pointerAttraction, t.pointerAttraction),
134
+ mergeRate: r(e.mergeRate, t.mergeRate)
135
+ };
136
+ }
137
+ function A() {
138
+ let e = y("idle"), t = y({ ...D.idle }), n = { ...D.idle }, r = { ...D.idle }, i = 0, a = 0, o = !1;
139
+ function s(s) {
140
+ s === e.value && !o || (e.value = s, n = { ...t.value }, r = D[s], a = O[s], i = 0, o = !0);
141
+ }
142
+ function c(e) {
143
+ if (!o) return;
144
+ i += e;
145
+ let s = Math.min(i / a, 1), c = T(s);
146
+ t.value = k(n, r, c), s >= 1 && (o = !1);
147
+ }
148
+ return {
149
+ currentMood: v(e),
150
+ params: v(t),
151
+ setMood: s,
152
+ tick: c
153
+ };
154
+ }
155
+ //#endregion
156
+ //#region src/components/custom/goo-blob/composables/useBlobPointer.ts
157
+ var j = .12;
158
+ function M(e) {
159
+ let t = y({
160
+ x: 0,
161
+ y: 0
162
+ }), n = y(!1), r = 0, i = 0, a = 0, o = 0;
163
+ function s(t) {
164
+ let a = e.value;
165
+ if (!a) return;
166
+ let o = a.getBoundingClientRect();
167
+ r = (t.clientX - o.left) / o.width * 2 - 1, i = (t.clientY - o.top) / o.height * 2 - 1, n.value = !0;
168
+ }
169
+ function c() {
170
+ n.value = !1;
171
+ }
172
+ let l = null;
173
+ S(e, (e) => {
174
+ l &&= (l(), null), e && (e.addEventListener("pointermove", s), e.addEventListener("pointerleave", c), l = () => {
175
+ e.removeEventListener("pointermove", s), e.removeEventListener("pointerleave", c);
176
+ });
177
+ }, { immediate: !0 }), g(() => l?.());
178
+ function u() {
179
+ n.value ? (a += (r - a) * j, o += (i - o) * j) : (a *= 1 - j, o *= 1 - j), t.value = {
180
+ x: a,
181
+ y: o
182
+ };
183
+ }
184
+ return {
185
+ pointer: v(t),
186
+ active: v(n),
187
+ tick: u
188
+ };
189
+ }
190
+ //#endregion
191
+ //#region src/components/custom/goo-blob/composables/useBlobSatellites.ts
192
+ function N(e, t, n) {
193
+ return t + e() * (n - t);
194
+ }
195
+ function P(e) {
196
+ return e < 0 ? 0 : e > 1 ? 1 : e;
197
+ }
198
+ function F(e, t, n) {
199
+ return e + (t - e) * n;
200
+ }
201
+ function I(e, t, n, r) {
202
+ let i = performance.now(), a = t / 4 * Math.PI * 2 + (e() - .5) * Math.PI, o = n * (.8 + e() * .4), s = r * (.3 + e() * .7);
203
+ return {
204
+ phase: "orbiting",
205
+ phaseStart: i,
206
+ phaseDuration: 6e3 + e() * 1e4,
207
+ timeOrigin: i,
208
+ angularSpeed: .08 + e() * .16,
209
+ phaseOffset: a,
210
+ baseRadiusX: o * (1 - s),
211
+ baseRadiusY: o * (1 + s),
212
+ wobbleAmp1: .02 + e() * .06,
213
+ wobbleFreq1: .08 + e() * .22,
214
+ wobbleAmp2: .015 + e() * .04,
215
+ wobbleFreq2: .18 + e() * .32,
216
+ pertXAmp: .03 + e() * .05,
217
+ pertXFreq: .06 + e() * .18,
218
+ pertXPhase: e() * Math.PI * 2,
219
+ pertYAmp: .03 + e() * .05,
220
+ pertYFreq: .07 + e() * .17,
221
+ pertYPhase: e() * Math.PI * 2,
222
+ startX: 0,
223
+ startY: 0,
224
+ endX: 0,
225
+ endY: 0
226
+ };
227
+ }
228
+ function L(e, t, n, r) {
229
+ e.phase = t, e.phaseStart = n, e.phaseDuration = r;
230
+ }
231
+ function R(e, t) {
232
+ let n = (t - e.timeOrigin) / 1e3, r = e.angularSpeed * n + e.phaseOffset, i = e.wobbleAmp1 * Math.sin(e.wobbleFreq1 * n) + e.wobbleAmp2 * Math.sin(e.wobbleFreq2 * n + 1.3);
233
+ return {
234
+ x: (e.baseRadiusX + i) * Math.cos(r) + e.pertXAmp * Math.sin(e.pertXFreq * n + e.pertXPhase),
235
+ y: (e.baseRadiusY + i) * Math.sin(r) + e.pertYAmp * Math.cos(e.pertYFreq * n + e.pertYPhase)
236
+ };
237
+ }
238
+ function z(e, t, n, r, i) {
239
+ e.timeOrigin = i, e.angularSpeed = .08 + t() * .16, e.phaseOffset = t() * Math.PI * 2;
240
+ let a = n * (.8 + t() * .4), o = r * (.3 + t() * .7);
241
+ e.baseRadiusX = a * (1 - o), e.baseRadiusY = a * (1 + o), e.wobbleAmp1 = .02 + t() * .06, e.wobbleFreq1 = .08 + t() * .22, e.wobbleAmp2 = .015 + t() * .04, e.wobbleFreq2 = .18 + t() * .32, e.pertXAmp = .03 + t() * .05, e.pertXFreq = .06 + t() * .18, e.pertXPhase = t() * Math.PI * 2, e.pertYAmp = .03 + t() * .05, e.pertYFreq = .07 + t() * .17, e.pertYPhase = t() * Math.PI * 2;
242
+ }
243
+ var B = .75, V = 2e3;
244
+ function H(e, t) {
245
+ let n = l(u(t + "goo")), r = [], i = [], a = [], o = -Infinity, s = e.orbitRadius;
246
+ function c() {
247
+ let t = e.orbitRadius;
248
+ if (t !== s && s > 0) {
249
+ let e = t / s;
250
+ for (let t of r) t.baseRadiusX *= e, t.baseRadiusY *= e;
251
+ s = t;
252
+ }
253
+ }
254
+ function d() {
255
+ let t = e.satelliteCount;
256
+ for (; r.length < t;) r.push(I(n, r.length, e.orbitRadius, e.eccentricity)), i.push({
257
+ x: 0,
258
+ y: 0,
259
+ radius: e.satelliteRadius,
260
+ opacity: 0
261
+ }), a.push({
262
+ x: 0,
263
+ y: 0,
264
+ start: 0
265
+ });
266
+ r.length > t && (r.length = t, i.length = t, a.length = t);
267
+ }
268
+ d();
269
+ function f(t, s) {
270
+ d(), c();
271
+ let l = r.length, u = s.mergeRate, f = e.satelliteRadius, p = e.mergeDuration, m = e.emergeDuration, h = e.orbitDuration, g = e.absorbedDuration;
272
+ for (let s = 0; s < l; s++) {
273
+ let c = r[s], l = t - c.phaseStart, d = P(c.phaseDuration > 0 ? l / c.phaseDuration : 1);
274
+ switch (c.phase) {
275
+ case "orbiting":
276
+ if (d >= 1) if (t - o < 3e3 * u) c.phaseStart = t, c.phaseDuration = N(n, h[0], h[1]);
277
+ else {
278
+ let e = R(c, t);
279
+ c.startX = e.x, c.startY = e.y;
280
+ let n = Math.hypot(e.x, e.y), r = n > .01 ? .08 / n : 0;
281
+ c.endX = e.x * r, c.endY = e.y * r, L(c, "merging", t, p), o = t;
282
+ }
283
+ break;
284
+ case "merging":
285
+ d >= 1 && L(c, "absorbed", t, N(n, g[0], g[1]));
286
+ break;
287
+ case "absorbed":
288
+ if (d >= 1) {
289
+ z(c, n, e.orbitRadius, e.eccentricity, t);
290
+ let r = R(c, t + 3e3);
291
+ c.endX = r.x, c.endY = r.y;
292
+ let i = Math.hypot(r.x, r.y), a = i > .01 ? .08 / i : 0;
293
+ c.startX = r.x * a, c.startY = r.y * a, L(c, "emerging", t, m);
294
+ }
295
+ break;
296
+ case "emerging":
297
+ if (d >= 1) {
298
+ let e = a[s];
299
+ e.x = c.endX, e.y = c.endY, e.start = t, c.timeOrigin = t, c.phaseOffset = Math.atan2(c.endY, c.endX), L(c, "orbiting", t, N(n, h[0], h[1]));
300
+ }
301
+ break;
302
+ }
303
+ let _, v, y, b;
304
+ switch (c.phase) {
305
+ case "orbiting": {
306
+ let e = R(c, t), n = a[s], r = t - n.start;
307
+ if (n.start > 0 && r < V) {
308
+ let t = P(r / V), i = t * t * (3 - 2 * t);
309
+ _ = F(n.x, e.x, i), v = F(n.y, e.y, i);
310
+ } else _ = e.x, v = e.y;
311
+ y = B, b = 1;
312
+ break;
313
+ }
314
+ case "merging": {
315
+ let e = E(P((t - c.phaseStart) / c.phaseDuration));
316
+ _ = F(c.startX, c.endX, e), v = F(c.startY, c.endY, e);
317
+ let n = P((t - c.phaseStart) / c.phaseDuration);
318
+ y = n > .85 ? F(B, 0, (n - .85) / .15) : B, b = F(1, .65, e);
319
+ break;
320
+ }
321
+ case "absorbed":
322
+ _ = 0, v = 0, y = 0, b = .5;
323
+ break;
324
+ case "emerging": {
325
+ let e = ee(P((t - c.phaseStart) / c.phaseDuration));
326
+ _ = F(c.startX, c.endX, e), v = F(c.startY, c.endY, e);
327
+ let n = P((t - c.phaseStart) / c.phaseDuration);
328
+ y = n < .1 ? F(0, B, n / .1) : B, b = F(.65, 1, e);
329
+ break;
330
+ }
331
+ }
332
+ let x = i[s];
333
+ x.x = _, x.y = v, x.radius = f * b, x.opacity = y;
334
+ }
335
+ }
336
+ function p() {
337
+ for (let e of r) e.phaseOffset += (n() - .5) * .6, e.pertXPhase += n() * Math.PI, e.pertYPhase += n() * Math.PI;
338
+ }
339
+ function m(e) {
340
+ n = l(u(e + "goo"));
341
+ }
342
+ return {
343
+ sources: i,
344
+ tick: f,
345
+ nudge: p,
346
+ reseed: m
347
+ };
348
+ }
349
+ //#endregion
350
+ //#region src/components/custom/goo-blob/shaders/metaball.vert.ts
351
+ var U = "#version 300 es\n\nin vec2 aPosition;\nout vec2 vUv;\n\nvoid main() {\n vUv = 0.5 * (aPosition + 1.0);\n gl_Position = vec4(aPosition, 0.0, 1.0);\n}", W = "// --- SDF ---\n\nfloat sdCircle(vec2 p, vec2 center, float radius) {\n return length(p - center) - radius;\n}\n\n// Edit #2 — Inigo Quilez quadratic polynomial smin (same uSmoothK uniform). The\n// quadratic h*h*k*0.25 form has a cleaner C1 seam than the prior cubic smin.\nfloat smin(float a, float b, float k) {\n float h = max(k - abs(a - b), 0.0) / k;\n return min(a, b) - h * h * k * 0.25;\n}", G = "// --- Noise ---\n\nfloat hash21(vec2 p) {\n vec3 p3 = fract(vec3(p.xyx) * 0.1031);\n p3 += dot(p3, p3.yzx + 33.33);\n return fract((p3.x + p3.y) * p3.z);\n}\n\nfloat valueNoise(vec2 p) {\n vec2 i = floor(p);\n vec2 f = fract(p);\n f = f * f * (3.0 - 2.0 * f);\n\n float a = hash21(i);\n float b = hash21(i + vec2(1.0, 0.0));\n float c = hash21(i + vec2(0.0, 1.0));\n float d = hash21(i + vec2(1.0, 1.0));\n\n return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);\n}\n\n// Edit #3 — rotated-octave FBM: a fixed ~0.5 rad 2x2 rotation between octaves\n// breaks the axis-aligned banding the un-rotated lattice noise produces. The\n// rotation CONSTANT is spliced from the shared chunk (AV.W2 — the one FBM_ROT);\n// the loop below stays blob-local (param octaves + 2.0 lacunarity, per §3a).", K = "float fbm(vec2 p, int octaves) {\n float value = 0.0;\n float amp = 0.5;\n float freq = 1.0;\n for (int i = 0; i < 4; i++) {\n if (i >= octaves) break;\n value += amp * valueNoise(p * freq);\n p = FBM_ROT * p;\n freq *= 2.0;\n amp *= 0.5;\n }\n return value;\n}\n", q = "// Edit #4's gamut step — hue-preserving inward chroma clamp. If the linear result\n// is out of [0,1], bisect chroma toward 0 (L + h fixed) until in gamut. Preserves\n// hue exactly (only C shrinks). 16 steps resolve C to < 2^-16 of its span.\nbool inGamut(vec3 lin) {\n return all(greaterThanEqual(lin, vec3(0.0))) && all(lessThanEqual(lin, vec3(1.0)));\n}\nvec3 gamutClampOklch(vec3 lch) {\n vec3 lin = oklabToLinearSrgb(oklchToOklab(lch));\n if (inGamut(lin)) return lch;\n float lo = 0.0;\n float hi = lch.y;\n for (int i = 0; i < 16; i++) {\n float mid = 0.5 * (lo + hi);\n vec3 test = vec3(lch.x, mid, lch.z);\n if (inGamut(oklabToLinearSrgb(oklchToOklab(test)))) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return vec3(lch.x, lo, lch.z);\n}", J = "\n", Y = "#version 300 es\nprecision highp float;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform vec2 uResolution;\nuniform float uTime;\nuniform vec3 uBaseColor;\n\n// Pointer\nuniform vec2 uPointer;\nuniform float uPointerActive;\nuniform float uPointerAttraction;\nuniform float uPointerStrength;\n\n// Main body\nuniform float uBodyRadius;\n\n// Pulsation\nuniform float uPulsePhase;\nuniform float uPulseAmp;\n\n// Surface noise\nuniform float uNoiseAmp;\nuniform float uNoiseFreq;\nuniform float uNoiseSpeed;\n\n// Gooey\nuniform float uSmoothK;\n\n// Color perturbation (perceptually uniform — OKLCh L/C/h)\nuniform float uHueRange; // degrees of hue swing (converted to radians)\nuniform float uSatShift; // OKLCh chroma swing\nuniform float uBrightnessShift; // OKLCh lightness bias\nuniform float uColorNoiseFreq;\nuniform float uColorNoiseSpeed;\n\n// Satellites (max 4)\n#define MAX_SATS 4\nuniform int uSatCount;\nuniform vec2 uSatPos[MAX_SATS];\nuniform float uSatRadius[MAX_SATS];\nuniform float uSatOpacity[MAX_SATS];\n\nconst float PI = 3.141592653589793;\n\n" + G + J + `${t}
352
+
353
+ ` + K + J + W + J + `
354
+ // --- Color (Ottosson OKLab/OKLCh — value.js EXACT constants, transposed) ---
355
+ //
356
+ // The OETF (srgbToLinear/linearToSrgb) + the four Ottosson matrices + their space
357
+ // conversions are SPLICED from the shared chunk (AV.W2 —
358
+ // src/composables/glass/webgl/shaders/procedural-color.glsl.ts). They live there
359
+ // ONCE so the OETF can never diverge from aurora's; the line-for-line TS port
360
+ // (__tests__/metaball-color.glsl-port.ts) mirrors that chunk. The gamut-clamp
361
+ // below stays blob-local (aurora has no in-shader OKLCh path).
362
+ ${i}
363
+ ${o}
364
+
365
+ ` + q + J + "\nvoid main() {\n vec2 uv = vUv - 0.5;\n\n // Pointer deformation\n if (uPointerActive > 0.5) {\n vec2 pointerDir = uPointer - uv;\n float pointerDist = length(pointerDir);\n float influence = smoothstep(0.4, 0.0, pointerDist) * uPointerAttraction * uPointerStrength;\n uv -= normalize(pointerDir + 1e-6) * influence;\n }\n\n // Main body with pulsation\n float bodyR = uBodyRadius + sin(uPulsePhase) * uPulseAmp;\n\n // FBM displacement for organic watercolor edge\n float noiseVal = fbm(uv * uNoiseFreq + uTime * uNoiseSpeed, 3);\n float bodyDisplacement = (noiseVal - 0.5) * uNoiseAmp;\n\n float d = sdCircle(uv, vec2(0.0), bodyR + bodyDisplacement);\n\n // Satellites\n for (int i = 0; i < MAX_SATS; i++) {\n if (i >= uSatCount) break;\n float satD = sdCircle(uv, uSatPos[i], uSatRadius[i]);\n satD += (1.0 - uSatOpacity[i]) * 0.3;\n d = smin(d, satD, uSmoothK);\n }\n\n // Edit #1 — fwidth-based anti-aliased edge: derive the smoothstep half-width\n // from the SDF screen-space gradient so the edge stays ~1px regardless of zoom.\n float aa = max(fwidth(d), 1e-6);\n float alpha = 1.0 - smoothstep(-aa, aa, d);\n\n if (alpha < 0.001) {\n fragColor = vec4(0.0);\n return;\n }\n\n // Edit #4 — perceptually-uniform OKLCh variation. Gamma base → linear → OKLab\n // → OKLCh; perturb L/C/h; OKLCh → OKLab → linear; hue-preserving gamut clamp.\n vec3 oklch = oklabToOklch(srgbToOklab(uBaseColor));\n\n float colorNoise = fbm(uv * uColorNoiseFreq + uTime * uColorNoiseSpeed, 3);\n oklch.z += (colorNoise - 0.5) * uHueRange * (PI / 180.0); // hue swing, radians\n oklch.y = max(oklch.y + (colorNoise - 0.5) * uSatShift, 0.0); // chroma swing\n oklch.x = clamp(oklch.x + uBrightnessShift, 0.0, 1.0); // lightness bias\n\n // Subtle inner glow near the edge — lifts OKLCh lightness inward.\n float edgeGlow = smoothstep(0.0, -bodyR * 0.6, d);\n oklch.x = mix(oklch.x, min(oklch.x + 0.06, 1.0), 1.0 - edgeGlow);\n\n oklch = gamutClampOklch(oklch);\n\n vec3 lin = oklabToLinearSrgb(oklchToOklab(oklch));\n vec3 rgb = clamp(linearToSrgb(lin), 0.0, 1.0); // MANDATORY OETF — closes the seam\n\n // Edit #8 — premultiply AFTER the OETF: straight-alpha gamma → premultiplied.\n fragColor = vec4(rgb * alpha, alpha);\n}", X = 4, Z = "[GooBlob]", Q = 1 / 1.6, te = [
366
+ "uResolution",
367
+ "uTime",
368
+ "uBaseColor",
369
+ "uPointer",
370
+ "uPointerActive",
371
+ "uPointerAttraction",
372
+ "uPointerStrength",
373
+ "uBodyRadius",
374
+ "uPulsePhase",
375
+ "uPulseAmp",
376
+ "uNoiseAmp",
377
+ "uNoiseFreq",
378
+ "uNoiseSpeed",
379
+ "uSmoothK",
380
+ "uHueRange",
381
+ "uSatShift",
382
+ "uBrightnessShift",
383
+ "uColorNoiseFreq",
384
+ "uColorNoiseSpeed",
385
+ "uSatCount"
386
+ ];
387
+ function $(e) {
388
+ let { canvasRef: t, color: i, mood: o, pointer: l, satellites: u, config: d, colorResolver: f } = e;
389
+ if (typeof f != "function") throw Error("[GooBlob] a `colorResolver` is required. Pass `defaultBlobColorResolver` from `@mkbabb/glass-ui/color` (or your own `ColorResolver`) — the blob resolves its base CSS color through this seam and will not paint without it.");
390
+ let p = 0, m = /* @__PURE__ */ new Map();
391
+ function h(e) {
392
+ let t = m.get(e);
393
+ if (t) return t;
394
+ let n = f(e);
395
+ return m.size > 256 && m.clear(), m.set(e, n), n;
396
+ }
397
+ let _ = null, v = !1;
398
+ c(t, {
399
+ pause: () => _?.suspend("off-screen"),
400
+ resume: () => _?.resume("off-screen")
401
+ }, {
402
+ rootMargin: "200px",
403
+ pauseWhenHidden: !1
404
+ });
405
+ function y(e) {
406
+ _ = a(e, {
407
+ contextAttrs: {
408
+ alpha: !0,
409
+ premultipliedAlpha: !0,
410
+ antialias: !1,
411
+ preserveDrawingBuffer: !1
412
+ },
413
+ setup: (t) => {
414
+ let a = s(t, t.VERTEX_SHADER, U, Z), c = s(t, t.FRAGMENT_SHADER, Y, Z), f = r(t, a, c, Z);
415
+ t.useProgram(f);
416
+ let m = t.createVertexArray();
417
+ t.bindVertexArray(m);
418
+ let g = t.createBuffer();
419
+ t.bindBuffer(t.ARRAY_BUFFER, g), t.bufferData(t.ARRAY_BUFFER, new Float32Array([
420
+ -1,
421
+ -1,
422
+ 1,
423
+ -1,
424
+ -1,
425
+ 1,
426
+ -1,
427
+ 1,
428
+ 1,
429
+ -1,
430
+ 1,
431
+ 1
432
+ ]), t.STATIC_DRAW);
433
+ let _ = t.getAttribLocation(f, "aPosition");
434
+ t.enableVertexAttribArray(_), t.vertexAttribPointer(_, 2, t.FLOAT, !1, 0, 0);
435
+ let y = {};
436
+ for (let e of te) y[e] = t.getUniformLocation(f, e);
437
+ let b = [], x = [], S = [];
438
+ for (let e = 0; e < X; e++) b.push(t.getUniformLocation(f, `uSatPos[${e}]`)), x.push(t.getUniformLocation(f, `uSatRadius[${e}]`)), S.push(t.getUniformLocation(f, `uSatOpacity[${e}]`));
439
+ t.enable(t.BLEND), t.blendFunc(t.ONE, t.ONE_MINUS_SRC_ALPHA);
440
+ function C() {
441
+ let r = n(), i = e.clientWidth || d.canvasSize, a = e.clientHeight || d.canvasSize, o = Math.round(i * r), s = Math.round(a * r);
442
+ (e.width !== o || e.height !== s) && (e.width = o, e.height = s), t.viewport(0, 0, o, s);
443
+ }
444
+ function w(n) {
445
+ let r = performance.now(), a = p ? (n - p) * 1e3 : 16;
446
+ p = n, o.tick(a), l.tick(), u.tick(r, o.params.value);
447
+ let s = o.params.value, c = h(i.value);
448
+ t.useProgram(f), t.bindVertexArray(m), t.uniform2f(y.uResolution, e.width, e.height), t.uniform1f(y.uTime, n), t.uniform3f(y.uBaseColor, c[0], c[1], c[2]);
449
+ let g = l.pointer.value;
450
+ t.uniform2f(y.uPointer, g.x * .5 * Q, g.y * .5 * Q), t.uniform1f(y.uPointerActive, +!!l.active.value), t.uniform1f(y.uPointerAttraction, d.pointerAttraction + s.pointerAttraction), t.uniform1f(y.uPointerStrength, d.pointerStrength * Q), t.uniform1f(y.uBodyRadius, d.bodyRadius * Q), t.uniform1f(y.uPulsePhase, n * d.pulseFreq * s.pulseFreq * Math.PI * 2), t.uniform1f(y.uPulseAmp, d.pulseAmp * s.pulseAmp / .015 * Q), t.uniform1f(y.uNoiseAmp, d.noiseAmp * s.noiseAmp / .025 * Q), t.uniform1f(y.uNoiseFreq, d.noiseFreq), t.uniform1f(y.uNoiseSpeed, d.noiseSpeed), t.uniform1f(y.uSmoothK, d.smoothK * s.smoothK / .22 * Q), t.uniform1f(y.uHueRange, d.hueRange + s.hueRange), t.uniform1f(y.uSatShift, d.satShift + s.satShift), t.uniform1f(y.uBrightnessShift, d.brightnessShift + s.brightnessShift), t.uniform1f(y.uColorNoiseFreq, d.colorNoiseFreq), t.uniform1f(y.uColorNoiseSpeed, d.colorNoiseSpeed);
451
+ let _ = u.sources;
452
+ t.uniform1i(y.uSatCount, _.length);
453
+ for (let e = 0; e < X; e++) {
454
+ let n = b[e] ?? null, r = x[e] ?? null, i = S[e] ?? null, a = _[e];
455
+ a ? (t.uniform2f(n, a.x * Q, a.y * Q), t.uniform1f(r, a.radius * Q), t.uniform1f(i, a.opacity)) : (t.uniform2f(n, 0, 0), t.uniform1f(r, 0), t.uniform1f(i, 0));
456
+ }
457
+ t.clearColor(0, 0, 0, 0), t.clear(t.COLOR_BUFFER_BIT), t.drawArrays(t.TRIANGLES, 0, 6), t.bindVertexArray(null);
458
+ }
459
+ function T() {
460
+ return !v;
461
+ }
462
+ return {
463
+ frame: w,
464
+ shouldContinue: T,
465
+ resize: C,
466
+ teardown: () => {
467
+ t.deleteProgram(f), t.deleteShader(a), t.deleteShader(c), t.deleteBuffer(g), t.deleteVertexArray(m);
468
+ }
469
+ };
470
+ }
471
+ }), _.arm();
472
+ }
473
+ return S(t, (e) => {
474
+ e && !_ && y(e);
475
+ }, { immediate: !0 }), S(i, () => _?.wake()), g(() => {
476
+ _?.dispose(), _ = null;
477
+ }), {
478
+ pause: () => {
479
+ v = !0, _?.suspend("manual");
480
+ },
481
+ resume: () => {
482
+ v = !1, _?.resume("manual");
483
+ }
484
+ };
485
+ }
486
+ //#endregion
487
+ //#region src/components/custom/goo-blob/GooBlob.vue
488
+ var ne = /* @__PURE__ */ e(/* @__PURE__ */ p({
489
+ __name: "GooBlob",
490
+ props: {
491
+ color: {},
492
+ colorResolver: { type: Function },
493
+ config: {},
494
+ seed: { default: "" }
495
+ },
496
+ emits: ["click"],
497
+ setup(e, { expose: t, emit: n }) {
498
+ let r = n, i = m(w, null), a = e.config ?? i;
499
+ if (!a) throw Error("[glass-ui] GooBlob: no blob config. Pass an explicit `config` prop (e.g. BLOB_CONFIG_DEFAULTS) or provide(BLOB_CONFIG_KEY, cfg) from an ancestor. There is no silent defaults synthesis.");
500
+ let o = x("canvasRef"), s = x("wrapperRef"), c = A(), l = M(s), u = H(a, e.color + e.seed), p = b(() => e.color);
501
+ $({
502
+ canvasRef: o,
503
+ color: p,
504
+ mood: c,
505
+ pointer: l,
506
+ satellites: u,
507
+ config: a,
508
+ colorResolver: e.colorResolver
509
+ }), S(p, (t) => {
510
+ u.reseed(t + e.seed);
511
+ });
512
+ function g() {
513
+ u.nudge();
514
+ }
515
+ function v(e) {
516
+ c.setMood(e);
517
+ }
518
+ return t({
519
+ nudge: g,
520
+ setMood: v,
521
+ currentMood: c.currentMood
522
+ }), (t, n) => (_(), d("div", {
523
+ ref_key: "wrapperRef",
524
+ ref: s,
525
+ class: "goo-blob-wrapper",
526
+ style: h({ "--blob-color": e.color }),
527
+ onClick: n[0] ||= (e) => r("click")
528
+ }, [f("canvas", {
529
+ ref_key: "canvasRef",
530
+ ref: o,
531
+ class: "goo-blob-canvas",
532
+ "aria-hidden": "true",
533
+ "data-testid": "goo-blob-canvas"
534
+ }, null, 512)], 4));
535
+ }
536
+ }), [["__scopeId", "data-v-ff366d67"]]);
537
+ //#endregion
538
+ export { C as BLOB_CONFIG_DEFAULTS, w as BLOB_CONFIG_KEY, ne as GooBlob, A as useBlobMood, M as useBlobPointer, H as useBlobSatellites, $ as useMetaballRenderer };
@@ -1,4 +1,4 @@
1
- import { t as e } from "./_plugin-vue_export-helper-Dq1MygBL.js";
1
+ import { t as e } from "./_plugin-vue_export-helper-C1je1s0u.js";
2
2
  import { computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, onBeforeUnmount as s, openBlock as c, ref as l, renderSlot as u } from "vue";
3
3
  //#region src/components/custom/header-ribbon/HeaderRibbon.vue?vue&type=script&setup=true&lang.ts
4
4
  var d = {
@@ -35,7 +35,7 @@ var d = {
35
35
  isVisible: v,
36
36
  isToggled: h
37
37
  }), (t, a) => (c(), r("div", {
38
- class: o(["fixed z-[var(--z-dock)] pointer-events-none w-fit flex items-center px-4 pt-4 pb-2", e.position === "left" ? "top-0 left-0" : "top-0 right-0"]),
38
+ class: o(["fixed z-dock pointer-events-none w-fit flex items-center px-4 pt-4 pb-2", e.position === "left" ? "top-0 left-0" : "top-0 right-0"]),
39
39
  onMouseleave: S
40
40
  }, [t.$slots.left ? (c(), r("div", d, [u(t.$slots, "left", {}, void 0, !0)])) : n("", !0), i("div", {
41
41
  class: "pointer-events-auto flex items-center h-6",
@@ -58,6 +58,6 @@ var d = {
58
58
  }, [u(t.$slots, "items", {}, void 0, !0)], 2)) : n("", !0)
59
59
  ], 32)], 34));
60
60
  }
61
- }), [["__scopeId", "data-v-4ec8212f"]]);
61
+ }), [["__scopeId", "data-v-7f77154a"]]);
62
62
  //#endregion
63
63
  export { f as HeaderRibbon };
@@ -1,2 +1,2 @@
1
- import { n as e, r as t, t as n } from "./HoverCardContent-DaGrgJBO.js";
1
+ import { n as e, r as t, t as n } from "./HoverCardContent-ICfIMZX1.js";
2
2
  export { t as HoverCard, n as HoverCardContent, e as HoverCardTrigger };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./HoverPopover-CWFCfLx3.js";
1
+ import { t as e } from "./HoverPopover-DTSYkJtw.js";
2
2
  export { e as HoverPopover };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./IconTooltip-BkaA7tZ2.js";
1
+ import { t as e } from "./IconTooltip-BTyYn4mr.js";
2
2
  export { e as IconTooltip };
package/dist/index.d.ts CHANGED
@@ -47,4 +47,5 @@ export * from "./composables/dom";
47
47
  export * from "./composables/glass";
48
48
  export * from "./composables/sortable";
49
49
  export { startViewTransition, supportsViewTransitions, type ViewTransitionResult, } from "./composables/motion/useViewTransition";
50
+ export { vReveal } from "./composables/motion/vReveal";
50
51
  export * from "./utils";
@@ -1,2 +1,2 @@
1
- import { n as e, t } from "./InstrumentChassis-CnHTMxds.js";
1
+ import { n as e, t } from "./InstrumentChassis-DaHIZCqy.js";
2
2
  export { e as ChassisDivider, t as InstrumentChassis };
@@ -1,2 +1,2 @@
1
- import { t as e } from "./InstrumentRail-C6dEbi8E.js";
1
+ import { t as e } from "./InstrumentRail-B0qqLFN0.js";
2
2
  export { e as InstrumentRail };
package/dist/keyboard.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./useKeyboardShortcuts-Dpw_RUcB.js";
1
+ import { a as e, i as t, n, r, t as i } from "./useKeyboardShortcuts-BQfnAHHW.js";
2
2
  export { i as formatCombo, n as formatComboParts, r as isMac, t as registerShortcut, e as useRegisteredShortcuts };
@@ -0,0 +1,9 @@
1
+ import { t as e } from "./createContext-DBMGRlx4.js";
2
+ //#region src/components/custom/glyph-face/keys.ts
3
+ var t = e("glass-ui:glyph-face-silhouette"), n = t.KEY;
4
+ function r(e) {
5
+ t.provide(e);
6
+ }
7
+ var i = t.use;
8
+ //#endregion
9
+ export { r as n, i as r, n as t };
package/dist/label.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./Label-DJty89bp.js";
1
+ import { t as e } from "./Label-CZk-3nTc.js";
2
2
  export { e as Label };