@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
@@ -5,8 +5,6 @@ type __VLS_Props = {
5
5
  fitContent?: boolean;
6
6
  position?: "fixed" | "inline" | "sticky";
7
7
  alwaysExpanded?: boolean;
8
- /** Allow expanded content to wrap to multiple lines. */
9
- wrap?: boolean;
10
8
  /**
11
9
  * Visual/behavioral preset.
12
10
  * `dock` — the horizontal floating dock (default).
@@ -43,17 +41,40 @@ type __VLS_Props = {
43
41
  * dock control sizing. Root CSS variables can override each density.
44
42
  */
45
43
  density?: DockDensity;
44
+ /**
45
+ * Overflow strategy when the expanded content exceeds the dock's
46
+ * axis cap (`--dock-max-inline-size` horizontally,
47
+ * `--dock-max-block-size` vertically). The ONE knob governing every
48
+ * overflow behaviour (AT.W7-dock-a clean break — collapsed from the
49
+ * prior `wrap` boolean + `overflow` pair + `containerName` clip-lift,
50
+ * which all touched overflow divergently).
51
+ * `"grow"` — content grows to fit then overflows visibly past
52
+ * the cap (the default; nothing clips or scrolls).
53
+ * `"wrap"` — expanded content wraps to multiple lines/rows (the
54
+ * `.dock-overflow-wrap` recipe — a multi-row pill that narrows
55
+ * to the viewport gutter on small screens and snaps
56
+ * back to a single nowrap row past `--dock-overflow-bp`).
57
+ * `"scroll"` — the dock becomes the scroll port. Horizontal docks
58
+ * scroll the active layer on the inline axis
59
+ * (`.dock-scroll-x`); vertical rails scroll on the
60
+ * block axis (`.dock-scroll-y`), keeping the
61
+ * `max-block-size` cap. The rounded pill masks the
62
+ * scroll edge; the scrollbar is hidden. The axis is
63
+ * chosen automatically from `orientation`.
64
+ */
65
+ overflow?: "grow" | "wrap" | "scroll";
46
66
  /**
47
67
  * When set, the dock root establishes an inline-size container query
48
- * subject (`container-type: inline-size; container-name: <value>`)
49
- * and lifts its `overflow: hidden` clip so descendants can wrap or
50
- * report intrinsic widths at narrow viewports. Consumers query the
51
- * named container via `@container <value> (...)` rules.
68
+ * subject (`container-type: inline-size; container-name: <value>`) so
69
+ * descendants can query the named container via `@container <value>
70
+ * (...)` rules. ORTHOGONAL to the `overflow` clip: opting into a
71
+ * container subject does NOT silently change the dock's clip shell
72
+ * (AT.W7-dock-a — the prior clip-lift was folded out; use
73
+ * `overflow="wrap"` to allow multi-line content).
52
74
  *
53
- * Without this prop the dock retains its default `overflow: hidden`
54
- * shell the pre-T behaviour. T.B audit §1.3 cornerstone: the
55
- * cluster's container subject must live on the dock primitive, never
56
- * on a descendant whose intrinsic size the dock relies on.
75
+ * T.B audit §1.3 cornerstone: the cluster's container subject must
76
+ * live on the dock primitive, never on a descendant whose intrinsic
77
+ * size the dock relies on.
57
78
  */
58
79
  containerName?: string;
59
80
  };
@@ -76,15 +97,15 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
76
97
  release: () => void;
77
98
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
78
99
  position: "fixed" | "inline" | "sticky";
79
- variant: "dock" | "rail" | "instrument-strip";
100
+ overflow: "grow" | "wrap" | "scroll";
80
101
  orientation: "horizontal" | "vertical";
81
- wrap: boolean;
102
+ variant: "dock" | "rail" | "instrument-strip";
82
103
  density: DockDensity;
104
+ shape: "pill" | "rounded";
83
105
  collapseDelay: number;
84
106
  alwaysExpanded: boolean;
85
107
  startCollapsed: boolean;
86
108
  fitContent: boolean;
87
- shape: "pill" | "rounded";
88
109
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
89
110
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
90
111
  declare const _default: typeof __VLS_export;
@@ -1,4 +1,4 @@
1
- import { type ComputedRef, type InjectionKey } from "vue";
1
+ import type { ComputedRef } from "vue";
2
2
  export type DockOrientation = "horizontal" | "vertical";
3
3
  /**
4
4
  * Dock context surfaces the dock id + orientation + held-state coordination
@@ -32,9 +32,9 @@ export interface DockContext {
32
32
  /** Reactive `keepOpenCount > 0` flag; descendants reflect via `data-held`. */
33
33
  held: ComputedRef<boolean>;
34
34
  }
35
- export declare const DOCK_CONTEXT_KEY: InjectionKey<DockContext>;
35
+ export declare const DOCK_CONTEXT_KEY: import("vue").InjectionKey<DockContext>;
36
36
  export declare function provideDockContext(context: DockContext): void;
37
37
  /** Strict — throws when used outside `<GlassDock>`. */
38
- export declare function useDockContext(): DockContext;
38
+ export declare const useDockContext: () => DockContext;
39
39
  /** Befitting silent default for primitives that may render outside a dock. */
40
- export declare function useOptionalDockContext(): DockContext | null;
40
+ export declare const useOptionalDockContext: () => DockContext | null;
@@ -1,4 +1,4 @@
1
- import { type Component, type InjectionKey, type Ref } from "vue";
1
+ import type { Component, Ref } from "vue";
2
2
  /**
3
3
  * DockLayerGroup context — DI surface for `<DockLayer>` children registering
4
4
  * with their parent `<DockLayerGroup>` for the switcher rail + crossfade
@@ -18,12 +18,19 @@ export interface DockLayerDescriptor {
18
18
  export interface DockLayerGroupContext {
19
19
  register(desc: DockLayerDescriptor): void;
20
20
  unregister(id: string): void;
21
- currentLayerId: Ref<string>;
22
- leavingLayerId: Ref<string | null>;
21
+ /**
22
+ * AU.W8b.6 group-orchestrated layer state, exposed READ-ONLY. The
23
+ * `<DockLayerGroup>` (via `useLayerTransition`) owns the writable refs and
24
+ * provides `readonly()` projections; a `<DockLayer>` child can read but
25
+ * never write this state. A child `currentLayerId.value = …` is a compile
26
+ * error (see `__tests__/dockLayerContext.readonly.test-d.ts`).
27
+ */
28
+ currentLayerId: Readonly<Ref<string>>;
29
+ leavingLayerId: Readonly<Ref<string | null>>;
23
30
  }
24
- export declare const DOCK_LAYER_GROUP_KEY: InjectionKey<DockLayerGroupContext>;
31
+ export declare const DOCK_LAYER_GROUP_KEY: import("vue").InjectionKey<DockLayerGroupContext>;
25
32
  export declare function provideDockLayerGroupContext(context: DockLayerGroupContext): void;
26
33
  /** Strict — throws when used outside `<DockLayerGroup>`. */
27
- export declare function useDockLayerGroupContext(): DockLayerGroupContext;
34
+ export declare const useDockLayerGroupContext: () => DockLayerGroupContext;
28
35
  /** Befitting silent default; reserved for future consumers. */
29
- export declare function useOptionalDockLayerGroupContext(): DockLayerGroupContext | null;
36
+ export declare const useOptionalDockLayerGroupContext: () => DockLayerGroupContext | null;
@@ -31,14 +31,38 @@ export interface UseLayerTransitionReturn {
31
31
  * the size + crossfades the pane content with ZERO `getBoundingClientRect`
32
32
  * reads. No pin/measure/re-pin dance, no inline size, no rAF.
33
33
  *
34
- * - **Fallback path** (no `startViewTransition`): the existing axis-aware FLIP
35
- * runs verbatim, KEPT as the sole feature-detected fallback (no alias — one
36
- * path or the other runs per swap, never both):
37
- * 1. Capture current container size
34
+ * - **Fallback path** (no `startViewTransition`): the axis-aware FLIP, KEPT as
35
+ * the sole feature-detected fallback (no alias — one path or the other runs per
36
+ * swap, never both). It is now the ONLY driver that writes inline size on a
37
+ * non-VT engine (AV.W9.0 retired the `interpolate-size`/`calc-size` CSS arm that
38
+ * used to second-drive width on Chrome 129+ and freeze the dock):
39
+ * 1. Capture current container size (or the live spring's pixel value on a
40
+ * retarget)
38
41
  * 2. Pin container to that size
39
- * 3. Swap classes: old layer → leaving, new layer → active
40
- * 4. nextTick: measure new natural size, re-pin to old
41
- * 5. Animate to new size via CSS transition
42
- * 6. On transitionend(size), clear inline size
42
+ * 3. nextTick → rAF: swap classes (old → leaving, new → active) AND measure new
43
+ * natural size in ONE frame origin
44
+ * 4. Drive size off ONE `SpringProgress` clock in PIXEL space (its `value` IS
45
+ * the live width/height)
46
+ * 5. On settle, clear inline size + restore the CSS transition
47
+ *
48
+ * AV.W9.2 — velocity-continuity: an interrupted swap (a re-toggle while the
49
+ * spring is still live) RE-SEATS the existing solver's target from its current
50
+ * `(value, velocity)` instead of dispose+reconstruct-from-rest, so the morph is
51
+ * continuous through a retarget (the iOS interruptible-spring contract).
52
+ *
53
+ * AV.W7 perf folds:
54
+ * - F3 — on-demand `will-change`: the morphing box gets `will-change:<dim>`
55
+ * ONLY for the gesture's duration (set just before the spring drives it,
56
+ * cleared to `auto` on settle/`transitionend`). NEVER a standing hint — a
57
+ * permanent `will-change` holds a compositor layer + VRAM for an idle dock.
58
+ * - F5 — inheritance-bomb guard (CONVENTION): this driver animates ONLY the
59
+ * element's own `width`/`height` (the spring's pixel-space `value`) and the
60
+ * pane opacity rides a class-driven CSS transition on the SEPARATE
61
+ * `.dock-layer-item-host`. NO INHERITED custom property (`--phase-color` /
62
+ * `--shadow-color`) is TWEENED per frame here — animating an inherited
63
+ * custom property forces a whole-subtree style recalc every frame (the
64
+ * inheritance bomb). Phase/shadow colors are SET on a discrete state change,
65
+ * never interpolated frame-by-frame. Keep new motion on `transform`/`opacity`
66
+ * /`width`/`height`; route any color shift through a discrete class swap.
43
67
  */
44
68
  export declare function useLayerTransition(options: UseLayerTransitionOptions): UseLayerTransitionReturn;
@@ -2,6 +2,7 @@ export { default as GlassDock } from "./GlassDock.vue";
2
2
  export { default as DockLayerGroup } from "./DockLayerGroup.vue";
3
3
  export { default as DockLayer } from "./DockLayer.vue";
4
4
  export { default as DockIconButton } from "./DockIconButton.vue";
5
+ export { default as DockBackgroundToggle } from "./DockBackgroundToggle.vue";
5
6
  export { default as DockTabButton } from "./DockTabButton.vue";
6
7
  export { default as DockSelectTrigger } from "./DockSelectTrigger.vue";
7
8
  export { default as DockDropdownTrigger } from "./DockDropdownTrigger.vue";
@@ -2,6 +2,10 @@ declare const _default: typeof __VLS_export;
2
2
  export default _default;
3
3
  declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
4
4
  buttonPosition?: "left" | "right";
5
+ /** Accessible name for the expand (fullscreen) button. */
6
+ expandLabel?: string;
7
+ /** Accessible name for the collapse (exit fullscreen) button. */
8
+ collapseLabel?: string;
5
9
  } & {
6
10
  /**
7
11
  * Two-way `open` model so consumers can drive fullscreen externally
@@ -13,6 +17,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
13
17
  "update:open": (value: boolean) => any;
14
18
  }, string, import("vue").PublicProps, Readonly<{
15
19
  buttonPosition?: "left" | "right";
20
+ /** Accessible name for the expand (fullscreen) button. */
21
+ expandLabel?: string;
22
+ /** Accessible name for the collapse (exit fullscreen) button. */
23
+ collapseLabel?: string;
16
24
  } & {
17
25
  /**
18
26
  * Two-way `open` model so consumers can drive fullscreen externally
@@ -24,6 +32,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
24
32
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
25
33
  }>, {
26
34
  buttonPosition: "left" | "right";
35
+ expandLabel: string;
36
+ collapseLabel: string;
27
37
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
28
38
  default?: (props: {
29
39
  fullscreen: boolean;
@@ -26,8 +26,8 @@ type __VLS_Slots = {} & {
26
26
  default?: (props: typeof __VLS_1) => any;
27
27
  };
28
28
  declare const __VLS_base: import("vue").DefineComponent<GlassPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<GlassPanelProps> & Readonly<{}>, {
29
- blur: number;
30
29
  variant: GlassPanelVariant;
30
+ blur: number;
31
31
  refraction: number;
32
32
  chromaticAberration: boolean;
33
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,35 +1,9 @@
1
- import { type InjectionKey, type Ref } from "vue";
2
- /**
3
- * Silhouette injection slot used by `<GlyphFace>` to receive a silhouette
4
- * path from a descendant such as `<DiscoGlyph>`. The descendant writes
5
- * the path on mount (and on subsequent silhouette changes); the wrapping
6
- * `<GlyphFace>` reads it as a fallback when no `silhouette` prop resolves
7
- * — closes the disco-glyph cap-clip path without consumer-side prop plumb.
8
- *
9
- * P.W2 Lane C — canonical typed-key + helper-pair DI shape per invariant 25.
10
- *
11
- * Naming: `GLYPH_FACE_SILHOUETTE_KEY` (UPPER_SNAKE_CASE) matches every other
12
- * typed key at HEAD (`DOCK_CONTEXT_KEY`, `DOCK_LAYER_GROUP_KEY`,
13
- * `TOGGLE_GROUP_KEY`, `CONFIGURATOR_DENSITY_KEY`, `SORTABLE_CONTEXT`). The
14
- * pre-P.W2 PascalCase variant was a convention outlier;
15
- * renamed clean per P invariant 5 (no legacy aliases). Only callers live
16
- * inside glass-ui (GlyphFace.vue + DiscoGlyph.vue + this barrel).
17
- *
18
- * Paired helpers (optional-only by intent per Pδ §2.2):
19
- * - `provideGlyphFaceSilhouette(slot)` — provider wrapper.
20
- * - `useOptionalGlyphFaceSilhouette()` — befitting silent default for
21
- * `<DiscoGlyph>`, which stands alone OR cooperates with a wrapping
22
- * `<GlyphFace>` when present.
23
- *
24
- * NO strict counterpart is shipped — silent absence is the design intent;
25
- * `<DiscoGlyph>` rendering outside `<GlyphFace>` is a first-class use case,
26
- * not an error condition.
27
- */
28
- export declare const GLYPH_FACE_SILHOUETTE_KEY: InjectionKey<Ref<string | undefined>>;
1
+ import type { Ref } from "vue";
2
+ export declare const GLYPH_FACE_SILHOUETTE_KEY: import("vue").InjectionKey<Ref<string | undefined, string | undefined>>;
29
3
  export declare function provideGlyphFaceSilhouette(slot: Ref<string | undefined>): void;
30
4
  /**
31
5
  * Befitting silent default — returns `null` when no parent `<GlyphFace>`
32
6
  * is present. `<DiscoGlyph>` cooperates with a wrapping `<GlyphFace>` when
33
7
  * the slot is available; otherwise stands alone.
34
8
  */
35
- export declare function useOptionalGlyphFaceSilhouette(): Ref<string | undefined> | null;
9
+ export declare const useOptionalGlyphFaceSilhouette: () => Ref<string | undefined, string | undefined> | null;
@@ -0,0 +1,48 @@
1
+ import type { ColorResolver } from "../../../composables/color";
2
+ import type { BlobMood, BlobConfig } from "./types";
3
+ /**
4
+ * GooBlob — a gooey metaball creature on a WebGL2 canvas.
5
+ *
6
+ * Renders a pulsing SDF body with orbiting satellites that periodically merge in,
7
+ * get absorbed, then re-emerge. Mood, pointer-attraction and a deterministic
8
+ * satellite system drive the motion. The renderer composes the `useWebGLCanvas`
9
+ * substrate — it never bootstraps its own context.
10
+ *
11
+ * Color is resolved through an INJECTED `colorResolver` seam (DEC-AT-2): the blob
12
+ * paints the GAMMA-sRGB triple it returns. The prop is REQUIRED — pass
13
+ * `defaultBlobColorResolver` from `@mkbabb/glass-ui/color` (or your own) so a
14
+ * `lab()`/`oklch()`/`hsl()`/hex string resolves correctly. A missing resolver
15
+ * throws (the loud failure, not a silent gray).
16
+ *
17
+ * Config is resolved with the SAME loud discipline as the resolver: either
18
+ * `provide(BLOB_CONFIG_KEY, cfg)` from an ancestor OR pass an explicit `config`
19
+ * prop. A mount with NEITHER throws — there is no silent reactive-defaults
20
+ * synthesis. A consumer that genuinely wants the stock tuning passes
21
+ * `BLOB_CONFIG_DEFAULTS` explicitly.
22
+ */
23
+ type __VLS_Props = {
24
+ /** Base CSS color string (any form the `colorResolver` understands). */
25
+ color: string;
26
+ /** REQUIRED color seam — resolves `color` to a gamma-sRGB [r,g,b] triple in [0,1]. */
27
+ colorResolver: ColorResolver;
28
+ /**
29
+ * REQUIRED unless an ancestor `provide(BLOB_CONFIG_KEY, …)` supplies it.
30
+ * The metaball tuning. Pass `BLOB_CONFIG_DEFAULTS` for the stock look.
31
+ */
32
+ config?: BlobConfig;
33
+ /** Extra seed string mixed into the satellite PRNG for a unique-but-reproducible system. */
34
+ seed?: string;
35
+ };
36
+ declare function nudge(): void;
37
+ declare function setMood(m: BlobMood): void;
38
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
39
+ nudge: typeof nudge;
40
+ setMood: typeof setMood;
41
+ currentMood: Readonly<import("vue").Ref<BlobMood, BlobMood>>;
42
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
43
+ click: () => any;
44
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
45
+ onClick?: (() => any) | undefined;
46
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
47
+ declare const _default: typeof __VLS_export;
48
+ export default _default;
@@ -0,0 +1,6 @@
1
+ /** Quadratic ease-in-out (the useBlobMood mood cross-fade curve). */
2
+ export declare function easeInOut(t: number): number;
3
+ /** Quadratic ease-in (the satellite spawn ramp). */
4
+ export declare function easeIn(t: number): number;
5
+ /** Quadratic ease-out (the satellite retract ramp). */
6
+ export declare function easeOut(t: number): number;
@@ -0,0 +1,14 @@
1
+ import { type Ref } from "vue";
2
+ import type { BlobMood, MoodParams } from "../types";
3
+ /**
4
+ * Animates the blob's mood parameters — a cross-fade between named mood targets
5
+ * driven per frame by `tick(dt)`. `setMood` retargets; `params` is the eased
6
+ * current value the renderer reads.
7
+ */
8
+ export declare function useBlobMood(): {
9
+ currentMood: Readonly<Ref<BlobMood>>;
10
+ params: Readonly<Ref<MoodParams>>;
11
+ setMood: (mood: BlobMood) => void;
12
+ tick: (dt: number) => void;
13
+ };
14
+ export type BlobMoodSystem = ReturnType<typeof useBlobMood>;
@@ -0,0 +1,18 @@
1
+ import { type Ref } from "vue";
2
+ /**
3
+ * Tracks the pointer over a host element, normalised to [-1, 1] relative to the
4
+ * element centre, and smooths it per frame via `tick()`. On pointer-leave the
5
+ * smoothed position decays back toward centre.
6
+ */
7
+ export declare function useBlobPointer(el: Ref<HTMLElement | null>): {
8
+ pointer: Readonly<Ref<{
9
+ readonly x: number;
10
+ readonly y: number;
11
+ }, {
12
+ readonly x: number;
13
+ readonly y: number;
14
+ }>>;
15
+ active: Readonly<Ref<boolean, boolean>>;
16
+ tick: () => void;
17
+ };
18
+ export type BlobPointer = ReturnType<typeof useBlobPointer>;
@@ -0,0 +1,13 @@
1
+ import type { BlobConfig, MetaballSource, MoodParams } from "../types";
2
+ /**
3
+ * The satellite system — a small pool of orbiting metaball sources that
4
+ * periodically merge into the body, get absorbed, then re-emerge on a fresh
5
+ * orbit. Deterministic given `initialColor` (seeds the PRNG); `reseed` rekeys it.
6
+ */
7
+ export declare function useBlobSatellites(config: BlobConfig, initialColor: string): {
8
+ sources: MetaballSource[];
9
+ tick: (now: number, mood: MoodParams) => void;
10
+ nudge: () => void;
11
+ reseed: (color: string) => void;
12
+ };
13
+ export type BlobSatelliteSystem = ReturnType<typeof useBlobSatellites>;
@@ -0,0 +1,42 @@
1
+ import { type Ref } from "vue";
2
+ import type { ColorResolver } from "../../../../composables/color";
3
+ import type { BlobConfig } from "../types";
4
+ import type { BlobMoodSystem } from "./useBlobMood";
5
+ import type { BlobPointer } from "./useBlobPointer";
6
+ import type { BlobSatelliteSystem } from "./useBlobSatellites";
7
+ export interface UseMetaballRendererOptions {
8
+ canvasRef: Ref<HTMLCanvasElement | null>;
9
+ color: Ref<string>;
10
+ mood: BlobMoodSystem;
11
+ pointer: BlobPointer;
12
+ satellites: BlobSatelliteSystem;
13
+ config: BlobConfig;
14
+ /**
15
+ * The injected color seam (DEC-AT-2). Resolves a CSS color string to a GAMMA-
16
+ * sRGB triple in [0,1] fed straight into the shader's base-color uniform — the
17
+ * faithful AU.W7 lift paints gamma. REQUIRED: a no-resolver mount throws (the
18
+ * loud failure, not a silent gray) instructing the consumer to pass
19
+ * `defaultBlobColorResolver` from `@mkbabb/glass-ui/color` (or their own).
20
+ */
21
+ colorResolver: ColorResolver;
22
+ }
23
+ /**
24
+ * The GooBlob WebGL renderer — composes the `useWebGLCanvas` substrate (AU.W6).
25
+ *
26
+ * This module owns ONLY the metaball-specific concerns: compiling the shader,
27
+ * building the quad + uniform cache, and uploading the per-frame uniforms derived
28
+ * from the mood / pointer / satellite systems and the injected color resolver. The
29
+ * generic WebGL2 lifecycle — context creation, the suspend/resume model, the
30
+ * demand-driven rAF loop, the tab-visibility owner, the ResizeObserver, and the
31
+ * webglcontextlost/restored robustness — lives in the substrate; this renderer
32
+ * threads its behaviour through the substrate's
33
+ * `setup`/`frame`/`shouldContinue`/`resize`/`teardown` callbacks. It does NOT call
34
+ * `getContext("webgl2")` itself (the single-bootstrap contract).
35
+ *
36
+ * Colors arrive ALREADY resolved to a gamma-sRGB triple via the injected
37
+ * `colorResolver`; the value.js 1×1-canvas DOM probe is gone (the seam replaces it).
38
+ */
39
+ export declare function useMetaballRenderer(options: UseMetaballRendererOptions): {
40
+ pause: () => void;
41
+ resume: () => void;
42
+ };
@@ -0,0 +1,7 @@
1
+ export { default as GooBlob } from "./GooBlob.vue";
2
+ export type { BlobMood, MoodParams, MetaballSource, BlobConfig, SatellitePhase, SatelliteInternal, } from "./types";
3
+ export { BLOB_CONFIG_DEFAULTS, BLOB_CONFIG_KEY } from "./types";
4
+ export { useBlobMood, type BlobMoodSystem } from "./composables/useBlobMood";
5
+ export { useBlobPointer, type BlobPointer } from "./composables/useBlobPointer";
6
+ export { useBlobSatellites, type BlobSatelliteSystem, } from "./composables/useBlobSatellites";
7
+ export { useMetaballRenderer, type UseMetaballRendererOptions, } from "./composables/useMetaballRenderer";
@@ -0,0 +1 @@
1
+ export declare const METABALL_FRAGMENT_SRC: string;
@@ -0,0 +1 @@
1
+ export declare const METABALL_VERTEX_SRC = "#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}";
@@ -0,0 +1 @@
1
+ export declare const METABALL_OKLCH_PERTURB_GLSL = "// Edit #4's gamut step \u2014 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}";
@@ -0,0 +1 @@
1
+ export declare const METABALL_SDF_GLSL = "// --- SDF ---\n\nfloat sdCircle(vec2 p, vec2 center, float radius) {\n return length(p - center) - radius;\n}\n\n// Edit #2 \u2014 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}";
@@ -0,0 +1,2 @@
1
+ export declare const METABALL_EDGE_NOISE_PRE_GLSL = "// --- 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 \u2014 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 \u2014 the one FBM_ROT);\n// the loop below stays blob-local (param octaves + 2.0 lacunarity, per \u00A73a).";
2
+ export declare const METABALL_EDGE_NOISE_POST_GLSL = "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";
@@ -0,0 +1,77 @@
1
+ import type { InjectionKey } from "vue";
2
+ export type BlobMood = "idle" | "happy" | "curious" | "sleepy" | "excited";
3
+ export interface MoodParams {
4
+ orbitSpeedScale: number;
5
+ wobbleScale: number;
6
+ pulseFreq: number;
7
+ pulseAmp: number;
8
+ noiseAmp: number;
9
+ hueRange: number;
10
+ satShift: number;
11
+ brightnessShift: number;
12
+ smoothK: number;
13
+ pointerAttraction: number;
14
+ mergeRate: number;
15
+ }
16
+ export interface MetaballSource {
17
+ x: number;
18
+ y: number;
19
+ radius: number;
20
+ opacity: number;
21
+ }
22
+ export type SatellitePhase = "orbiting" | "merging" | "absorbed" | "emerging";
23
+ export interface SatelliteInternal {
24
+ phase: SatellitePhase;
25
+ phaseStart: number;
26
+ phaseDuration: number;
27
+ timeOrigin: number;
28
+ angularSpeed: number;
29
+ phaseOffset: number;
30
+ baseRadiusX: number;
31
+ baseRadiusY: number;
32
+ wobbleAmp1: number;
33
+ wobbleFreq1: number;
34
+ wobbleAmp2: number;
35
+ wobbleFreq2: number;
36
+ pertXAmp: number;
37
+ pertXFreq: number;
38
+ pertXPhase: number;
39
+ pertYAmp: number;
40
+ pertYFreq: number;
41
+ pertYPhase: number;
42
+ startX: number;
43
+ startY: number;
44
+ endX: number;
45
+ endY: number;
46
+ }
47
+ /** Externally tunable blob configuration — all fields concrete, defaults applied via `BLOB_CONFIG_DEFAULTS`. */
48
+ export interface BlobConfig {
49
+ canvasSize: number;
50
+ bodyRadius: number;
51
+ satelliteCount: number;
52
+ satelliteRadius: number;
53
+ orbitRadius: number;
54
+ smoothK: number;
55
+ noiseAmp: number;
56
+ noiseFreq: number;
57
+ noiseSpeed: number;
58
+ pulseFreq: number;
59
+ pulseAmp: number;
60
+ hueRange: number;
61
+ satShift: number;
62
+ brightnessShift: number;
63
+ colorNoiseFreq: number;
64
+ colorNoiseSpeed: number;
65
+ pointerAttraction: number;
66
+ pointerStrength: number;
67
+ eccentricity: number;
68
+ orbitSpeedScale: number;
69
+ wobbleScale: number;
70
+ mergeRate: number;
71
+ mergeDuration: number;
72
+ absorbedDuration: [number, number];
73
+ emergeDuration: number;
74
+ orbitDuration: [number, number];
75
+ }
76
+ export declare const BLOB_CONFIG_DEFAULTS: BlobConfig;
77
+ export declare const BLOB_CONFIG_KEY: InjectionKey<BlobConfig>;
@@ -1,11 +1,33 @@
1
1
  import type { HTMLAttributes } from "vue";
2
+ /**
3
+ * <HoverPopover> — hover-triggered floating label.
4
+ *
5
+ * Substrate carry-forward of A5 §10 row 4 — IconTooltip's tooltip register
6
+ * is too quiet for chassis-tier dock-icon-button consumers (SettingsCog,
7
+ * ActionCluster). HoverPopover ships a popover-tier substrate (glass +
8
+ * border + radius) at tooltip cadence: hover-trigger, defer-on-leave
9
+ * timer, adaptive `side`/`align` that auto-flips off viewport edges.
10
+ *
11
+ * Default register: a single line of label text, sized for icon-button
12
+ * accompaniment (max-width clamps; subtle vertical padding). Pass a
13
+ * default slot for richer content (kbd hints, secondary lines). The
14
+ * `content` prop is the convenience path — most consumers want a single
15
+ * label string.
16
+ *
17
+ * Composition rests on reka-ui's HoverCard primitives so the
18
+ * collision-avoidance + open/close timer machinery come for free; this
19
+ * component is mostly a tighter substrate + a label-shaped default.
20
+ *
21
+ * J.W3.B — `keepDockOpen` extends the primitive with the dock-keep
22
+ * sink contract. While the popover is open inside a `<GlassDock>`,
23
+ * the dock's collapse timer is suppressed via the parent-provided
24
+ * `dockKeepOpen` / `dockRelease` callbacks. No-op outside a dock
25
+ * context — the inject fallbacks are `null`, so non-dock consumers
26
+ * pay nothing.
27
+ */
2
28
  type __VLS_Props = {
3
29
  /** Convenience: label text. Slot wins if both supplied. */
4
30
  content?: string;
5
- /** AB.W2 — externally-controlled open state. Two-way bound via
6
- * `v-model:open`. Leave undefined for the default uncontrolled
7
- * cadence (reka-ui drives the open state internally). */
8
- open?: boolean;
9
31
  /** Side relative to trigger. Defaults `top` (tooltip register). */
10
32
  side?: "top" | "right" | "bottom" | "left";
11
33
  /** Alignment along the side. Defaults `center`. */
@@ -56,6 +78,23 @@ type __VLS_Props = {
56
78
  */
57
79
  native?: boolean;
58
80
  };
81
+ type __VLS_ModelProps = {
82
+ /**
83
+ * AB.W2 — open-state two-way binding via Vue 3.5 `defineModel`.
84
+ *
85
+ * `open` is the single source of truth for the dock-keep-open watcher, the
86
+ * `update:open` surface, and reka-ui's HoverCardRoot `v-model:open`. The
87
+ * `{ default: false }` preserves the prior `props.open ?? false` uncontrolled
88
+ * cadence — reka writes the local model ref to drive its internal open state
89
+ * when no parent `v-model:open` is bound; a parent that binds it controls the
90
+ * value and receives `update:open` (the debounced signal honoring
91
+ * `hoverOpenDelay`/`closeDelay`). The prior dual-watch reconciliation
92
+ * (external `props.open` → internal `isOpen` + internal `isOpen` →
93
+ * `update:open` emit) is RETIRED — `defineModel` collapses both legs.
94
+ */
95
+ "open"?: boolean;
96
+ };
97
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
59
98
  declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_20: {}, __VLS_22: {}, __VLS_36: {};
60
99
  type __VLS_Slots = {} & {
61
100
  trigger?: (props: typeof __VLS_1) => any;
@@ -70,17 +109,17 @@ type __VLS_Slots = {} & {
70
109
  } & {
71
110
  content?: (props: typeof __VLS_36) => any;
72
111
  };
73
- declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
74
- "update:open": (open: boolean) => any;
75
- }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
76
- "onUpdate:open"?: ((open: boolean) => any) | undefined;
112
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
113
+ "update:open": (value: boolean) => any;
114
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
115
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
77
116
  }>, {
78
117
  align: "start" | "center" | "end";
79
118
  side: "top" | "right" | "bottom" | "left";
80
119
  sideOffset: number;
81
120
  closeDelay: number;
82
- hoverOpenDelay: number;
83
121
  keepDockOpen: boolean;
122
+ hoverOpenDelay: number;
84
123
  native: boolean;
85
124
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
86
125
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -33,6 +33,8 @@ type __VLS_Props = {
33
33
  };
34
34
  declare var __VLS_7: {
35
35
  errorId: string;
36
+ controlId: string;
37
+ labelledBy: string;
36
38
  }, __VLS_9: {};
37
39
  type __VLS_Slots = {} & {
38
40
  default?: (props: typeof __VLS_7) => any;
@@ -10,11 +10,11 @@ type __VLS_Props = {
10
10
  required?: boolean;
11
11
  };
12
12
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
- "update:open": (value: boolean) => any;
14
13
  "update:modelValue": (value: string) => any;
14
+ "update:open": (value: boolean) => any;
15
15
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
- "onUpdate:open"?: ((value: boolean) => any) | undefined;
17
16
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
17
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
18
18
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
19
  declare const _default: typeof __VLS_export;
20
20
  export default _default;