@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
@@ -0,0 +1,49 @@
1
+ /** An OKLCh color stop. `L` 0..1, `C` 0..~0.4, `h` 0..360. */
2
+ export interface OklchStop {
3
+ L: number;
4
+ C: number;
5
+ h: number;
6
+ }
7
+ /**
8
+ * The injected color seam (DEC-AT-2, consumed by the AU.W7 blob). Resolves a CSS
9
+ * color string to a GAMMA-sRGB triple in [0,1]. `defaultBlobColorResolver` is the
10
+ * opt-in default; a consumer (value.js) may inject its own.
11
+ */
12
+ export type ColorResolver = (css: string) => [number, number, number];
13
+ /**
14
+ * OKLCh stop → LINEAR-sRGB in [0,1] — aurora's bundle-canonical bake target (the
15
+ * shader ACES-tonemaps in linear, so the LUT stays linear).
16
+ *
17
+ * value.js's canonical Ottosson path (`rawOklchToOklab → oklabToLinearSRGB`,
18
+ * inv-K-2). The `Math.max(0,·)` wrap is the ACES-in-linear contract — value.js
19
+ * does not clamp negative linear (an out-of-gamut stop yields negatives; the wrap
20
+ * keeps them off the GPU). The equivalence canary asserts the COMPOSED path.
21
+ */
22
+ export declare function oklchToLinear(stop: OklchStop): [number, number, number];
23
+ /**
24
+ * OKLCh stop → GAMMA-sRGB in [0,1] — the blob's faithful-lift exit (DEC-AT-7's W7
25
+ * GAMMA space). value.js's `oklabToRgb255` returns gamma-encoded 0..255 (HSV/sRGB,
26
+ * no extra OETF); divide to [0,1]. The blob's default resolver returns THIS space
27
+ * so the W7 lift paints at parity (the LINEAR shader-quality flip + `linearToSrgb`
28
+ * is the AU.W7 stage). Channels are clamped to [0,1] (an out-of-gamut stop is
29
+ * already gamut-mapped upstream; this is the float-edge guard).
30
+ */
31
+ export declare function oklchToGammaRgb(stop: OklchStop): [number, number, number];
32
+ /**
33
+ * Resolve any CSS color string to an OKLCh stop via value.js's parser — the single
34
+ * canonical core (inv-K-2). DOM-free (SSR / happy-dom safe — no 1×1-canvas).
35
+ *
36
+ * Semantics: an INVALID string THROWS; ALPHA is dropped (OklchStop has no alpha);
37
+ * out-of-gamut inputs are NOT byte-clamped. Callers feeding user / possibly-
38
+ * transparent strings should wrap in try/catch and decide an alpha policy.
39
+ */
40
+ export declare function cssToOklch(css: string): OklchStop;
41
+ /** OKLCh stop → `#rrggbb` gamma hex (value.js `oklabToRgb255`). */
42
+ export declare function oklchStopToHex(s: OklchStop): string;
43
+ /**
44
+ * The OPT-IN default `ColorResolver` — `(css) => gamma [r,g,b]` via
45
+ * `cssToOklch → oklchToGammaRgb`. The AU.W7 goo-blob requires an INJECTED resolver
46
+ * and throws by THIS name on a no-resolver mount (the loud failure, not a silent
47
+ * gray default); value.js supplies its own, the demo story uses this one.
48
+ */
49
+ export declare const defaultBlobColorResolver: ColorResolver;
@@ -0,0 +1,56 @@
1
+ import { type InjectionKey } from "vue";
2
+ /**
3
+ * Domain-neutral provide/inject DI factory pair — the single source the dock,
4
+ * dock-layer-group, toggle-group, sortable-list, glyph-face, and configurator
5
+ * contexts collapse onto (AV.W14). Generalizes the four hand-rolled
6
+ * provide/inject/throw triplets into ONE typed factory so a `*_KEY:
7
+ * InjectionKey<T>` declaration + its `provide`/`use`/throw boilerplate is never
8
+ * re-rolled per call site — each site keeps only its distinct `interface`,
9
+ * label, and (strict) error message.
10
+ *
11
+ * Two shapes, chosen per the strict-vs-optional matrix (PROGRESS.md):
12
+ * - `createStrictContext<T>(label, outsideError)` — a `use()` that THROWS
13
+ * `outsideError` when injected outside its provider (the consumer is
14
+ * meaningless without the parent). It ALSO exposes `useOptional()` over the
15
+ * SAME key, so a context that is strict for its primary consumer yet must
16
+ * read null-safe elsewhere (the dock: `<Slider>` may sit outside) shares one
17
+ * key across both `use` shapes — no second symbol, no `any` leak.
18
+ * - `createOptionalContext<T>(label)` — a `use()` that returns `T | null`
19
+ * (befitting-silent; the consumer renders bare when no provider is present).
20
+ * No strict counterpart is minted — a strict throw would be dead code at
21
+ * these sites (invariant 25's "per intent" clause).
22
+ *
23
+ * The returned `KEY` is exported by each call site so an external provider can
24
+ * `provide(KEY, …)` directly (the goo-blob `BLOB_CONFIG_KEY` external-provide
25
+ * pattern stays a bare `inject(KEY, default)` and is NOT minted here — it is not
26
+ * a strict-or-optional triplet).
27
+ */
28
+ export interface StrictContext<T> {
29
+ /** The typed injection key — exported so an external provider can target it. */
30
+ readonly KEY: InjectionKey<T>;
31
+ /** Provide the context to descendants. */
32
+ provide: (ctx: T) => void;
33
+ /** Strict — throws `outsideError` when used outside the provider. */
34
+ use: () => T;
35
+ /** Befitting-silent over the SAME key — returns `null` outside the provider. */
36
+ useOptional: () => T | null;
37
+ }
38
+ export interface OptionalContext<T> {
39
+ /** The typed injection key — exported so an external provider can target it. */
40
+ readonly KEY: InjectionKey<T>;
41
+ /** Provide the context to descendants. */
42
+ provide: (ctx: T) => void;
43
+ /** Befitting-silent — returns `null` when used outside the provider. */
44
+ use: () => T | null;
45
+ }
46
+ /**
47
+ * Strict context factory. `use()` throws `outsideError` outside the provider;
48
+ * `useOptional()` returns `null` over the same key for the null-safe-elsewhere
49
+ * case.
50
+ */
51
+ export declare function createStrictContext<T>(label: string, outsideError: string): StrictContext<T>;
52
+ /**
53
+ * Optional context factory. `use()` returns `T | null` (befitting-silent); no
54
+ * strict counterpart is minted.
55
+ */
56
+ export declare function createOptionalContext<T>(label: string): OptionalContext<T>;
@@ -0,0 +1 @@
1
+ export { createStrictContext, createOptionalContext, type StrictContext, type OptionalContext, } from "./createContext";
@@ -0,0 +1,23 @@
1
+ /** The localStorage key vueuse `useColorMode`/`useDark` defaults to. The
2
+ * `useGlobalDark` factory passes no `storageKey`, so this default is canonical. */
3
+ export declare const DARK_MODE_STORAGE_KEY = "vueuse-color-scheme";
4
+ export interface DarkModeSyncScriptOptions {
5
+ /**
6
+ * Override the localStorage key the emitted script reads. Defaults to
7
+ * `vueuse-color-scheme` — the key `useGlobalDark`'s underlying `useDark`
8
+ * uses. Override ONLY if a consumer reconfigured the vueuse storage key.
9
+ */
10
+ storageKey?: string;
11
+ }
12
+ /**
13
+ * Return the inline `<head>` script STRING that resolves dark/light at parse
14
+ * time and stamps `<html>` before first paint. Inject it as the FIRST blocking
15
+ * script in `<head>` (or into an SSR head):
16
+ *
17
+ * ```html
18
+ * <script>${darkModeSyncScript()}</script>
19
+ * ```
20
+ *
21
+ * The function has no DOM side-effect itself — it only builds a string.
22
+ */
23
+ export declare function darkModeSyncScript(options?: DarkModeSyncScriptOptions): string;
@@ -1,2 +1,5 @@
1
1
  export { useGlobalDark } from "./useGlobalDark";
2
+ export type { UseGlobalDarkOptions } from "./useGlobalDark";
2
3
  export { installDarkModeSync } from "./installDarkModeSync";
4
+ export { darkModeSyncScript, DARK_MODE_STORAGE_KEY } from "./darkModeSyncScript";
5
+ export type { DarkModeSyncScriptOptions } from "./darkModeSyncScript";
@@ -1,5 +1,22 @@
1
- /** Single shared dark mode instance — avoids multiple useDark() watchers racing on classList. */
2
- export declare const useGlobalDark: () => {
1
+ import type { BasicColorSchema } from "@vueuse/core";
2
+ export interface UseGlobalDarkOptions {
3
+ /**
4
+ * The first-paint color scheme seed, threaded to `useDark({ initialValue })`.
5
+ * ONE-SHOT: only the FIRST `useGlobalDark()` call constructs the singleton, so
6
+ * only its `initialValue` is honored. A later call passing a CONFLICTING value
7
+ * THROWS (the misconfiguration is loud, not silently ignored); a matching
8
+ * re-seed is a no-op. Defaults to vueuse's `"auto"` (prefers-color-scheme).
9
+ * Pair with `darkModeSyncScript()` so the parse-time `<head>` script and this
10
+ * runtime seed agree.
11
+ */
12
+ initialValue?: BasicColorSchema;
13
+ }
14
+ /**
15
+ * The single shared dark-mode instance. The first call may pass an
16
+ * `initialValue` seed (one-shot — see `UseGlobalDarkOptions`); subsequent calls
17
+ * receive the already-constructed singleton and their `initialValue` is ignored.
18
+ */
19
+ export declare function useGlobalDark(options?: UseGlobalDarkOptions): {
3
20
  isDark: import("@vueuse/core").UseDarkReturn;
4
21
  toggleDark: () => void;
5
22
  disableTransitions: import("vue").Ref<boolean, boolean>;
@@ -2,7 +2,5 @@ export * from "./useResizeObserver";
2
2
  export * from "./useTouchGate";
3
3
  export * from "./useTokenColor";
4
4
  export * from "./useClipboard";
5
- export * from "./useViewportReady";
6
- export * from "./useBreakpoint";
7
- export * from "./useIdleReady";
8
5
  export * from "./useUserInvalidAria";
6
+ export * from "./useTextHighlight";
@@ -1,34 +1,57 @@
1
1
  import { type Ref } from "vue";
2
+ /**
3
+ * Why a copy did not succeed. `'clipboard-api'` — the async
4
+ * `navigator.clipboard.writeText` channel threw or rejected; `'exec-command'`
5
+ * — the legacy `document.execCommand("copy")` fallback returned/threw failure;
6
+ * `'no-api'` — neither channel exists in this environment (SSR / locked-down).
7
+ */
8
+ export type CopyFailureReason = "clipboard-api" | "exec-command" | "no-api";
2
9
  export interface UseClipboardOptions {
3
10
  /** Milliseconds before `copied` auto-resets to `false` (default 1500). */
4
11
  resetMs?: number;
12
+ /**
13
+ * Called with the NAMED reason when a copy attempt fails on a given
14
+ * channel. Both the clipboard-API and exec-command arms report through this
15
+ * (the exec-command arm only after the clipboard-API arm has already
16
+ * failed). Surfaces the failure instead of swallowing it.
17
+ */
18
+ onCopyError?: (reason: CopyFailureReason) => void;
19
+ }
20
+ /** Result of a composable `copy()` — the success flag plus, on failure, the
21
+ * named reason the copy did not land. */
22
+ export interface CopyResult {
23
+ ok: boolean;
24
+ /** The failure channel when `ok` is false; `undefined` on success. */
25
+ reason?: CopyFailureReason;
5
26
  }
6
27
  export interface UseClipboardReturn {
7
28
  /** Reactive flag—flips `true` on successful copy, auto-resets after `resetMs`. */
8
29
  copied: Ref<boolean>;
9
- /** Copy `text` to the clipboard. Returns the success boolean. */
10
- copy: (text: string) => Promise<boolean>;
30
+ /**
31
+ * Copy `text` to the clipboard. Resolves `{ ok }` on success or
32
+ * `{ ok: false, reason }` naming the channel that failed — the failure is
33
+ * REPORTED, never silently swallowed.
34
+ */
35
+ copy: (text: string) => Promise<CopyResult>;
11
36
  }
12
37
  /**
13
38
  * Bare clipboard copy—stateless `Promise<boolean>` return, no reactive `copied`
14
- * flag. P.W5 Lane A.1 (Path B) co-export paralleling the canonical
15
- * `useClipboard()` composable. Use this when call sites manage their own
16
- * confirmation state (e.g. hand-rolled `ref + setTimeout`) or in non-component
17
- * contexts (utility modules, stores).
18
- *
19
- * The `resetMs` option is currently a no-op for the bare function (no reactive
20
- * state to auto-reset); kept on the signature for forward-compatibility with
21
- * future paired-callback hooks.
39
+ * flag. Use this when call sites manage their own confirmation state (e.g.
40
+ * hand-rolled `ref + setTimeout`) or in non-component contexts (utility
41
+ * modules, stores). A copy failure is reported through `options.onCopyError`
42
+ * (the boolean return stays the verbatim cross-repo signature).
22
43
  *
23
44
  * @example
24
45
  * import { copyToClipboard } from "@mkbabb/glass-ui";
25
46
  *
26
47
  * async function shareLink(url: string) {
27
- * const ok = await copyToClipboard(url);
48
+ * const ok = await copyToClipboard(url, {
49
+ * onCopyError: (reason) => toast.show(`Copy failed: ${reason}`),
50
+ * });
28
51
  * if (ok) toast.show("Link copied");
29
52
  * }
30
53
  */
31
- export declare function copyToClipboard(text: string, _options?: UseClipboardOptions): Promise<boolean>;
54
+ export declare function copyToClipboard(text: string, options?: UseClipboardOptions): Promise<boolean>;
32
55
  /**
33
56
  * Reactive clipboard copy with auto-reset confirmation flag.
34
57
  *
@@ -0,0 +1,20 @@
1
+ import { type Ref } from "vue";
2
+ /**
3
+ * Scope-aware `document.visibilityState` leaf (AV.W14) — the single source for
4
+ * the `visibilitychange → document.hidden` pattern that the motion composables
5
+ * (`useRAFLoop`, `useIntersectionPause`) and the WebGL substrate hand-rolled
6
+ * four times over. Returns a `Ref<boolean>` `hidden` that flips on
7
+ * `visibilitychange`; SSR-safe (defaults `false` when `document` is absent) and
8
+ * self-disposing (the listener is removed on scope teardown).
9
+ *
10
+ * KISS: a per-call listener bound to the calling scope — NOT a global singleton.
11
+ * Each consumer's reactive `hidden` ref is independent, so a consumer's own
12
+ * pause policy (which `hidden`-true states it actually reacts to) is never
13
+ * fragmented by a shared global flag; the de-dup is the listener boilerplate +
14
+ * disposal, not the policy.
15
+ */
16
+ export interface UseDocumentVisibilityReturn {
17
+ /** Reactive `document.hidden` — `false` under SSR / when the API is absent. */
18
+ hidden: Ref<boolean>;
19
+ }
20
+ export declare function useDocumentVisibility(): UseDocumentVisibilityReturn;
@@ -0,0 +1,40 @@
1
+ /** Match a query against a text-node's content, returning matched char ranges. */
2
+ export type HighlightMatcher = (
3
+ /** The text-node's full string content. */
4
+ text: string,
5
+ /** The active query (already passed through to the matcher unchanged). */
6
+ query: string) => Array<{
7
+ start: number;
8
+ end: number;
9
+ }>;
10
+ export interface UseTextHighlightControls {
11
+ /** Replace the highlight's range set. Empty array clears the paint. */
12
+ set: (ranges: Range[]) => void;
13
+ /**
14
+ * Walk every text node under `container`, run `matcher` per node, and
15
+ * highlight the returned `[start, end)` char spans. Replaces the prior set.
16
+ * The default matcher is a case-insensitive substring scan over `query`.
17
+ */
18
+ setFromMatches: (container: HTMLElement, query: string, matcher?: HighlightMatcher) => void;
19
+ /** Drop every range — the named highlight stops painting. */
20
+ clear: () => void;
21
+ /** True when the CSS Custom Highlight API is available (else every op no-ops). */
22
+ readonly supported: boolean;
23
+ }
24
+ /**
25
+ * Drive a named CSS Custom Highlight reactively.
26
+ *
27
+ * @param name registry key — must match a `::highlight(<name>)` style rule.
28
+ * Instances sharing a name multiplex: each contributes its own ranges and
29
+ * the shared paint is their union (last to dispose drops the registry entry).
30
+ *
31
+ * @example
32
+ * const hl = useTextHighlight("fuzzy-search");
33
+ * watch([query, listEl], ([q, el]) => {
34
+ * if (el) hl.setFromMatches(el, q, fuzzyRanges);
35
+ * });
36
+ *
37
+ * // Or hand it pre-built ranges directly:
38
+ * hl.set([range]);
39
+ */
40
+ export declare function useTextHighlight(name: string): UseTextHighlightControls;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared WebGL2 shader compile/link pair (AV.W14) — the single error-checked
3
+ * source the aurora GL setup (`glSetup.ts`) and the goo-blob renderer
4
+ * (`useMetaballRenderer.ts`) both build their program from. Each consumer was
5
+ * hand-rolling a byte-identical `compile`/`link` differing only in the error
6
+ * log prefix; the `label` parameter preserves that per-consumer diagnostic.
7
+ *
8
+ * On a compile/link failure the GL resource is deleted before the throw (so a
9
+ * caller that catches does not leak a dead shader/program), and the GPU info
10
+ * log is named in the message — the loud failure, not a silent draw of garbage.
11
+ */
12
+ /** Compile a single shader; throws (and deletes the shader) on COMPILE_STATUS failure. */
13
+ export declare function compileShader(gl: WebGL2RenderingContext, type: number, src: string, label?: string): WebGLShader;
14
+ /** Link a vertex/fragment shader pair; throws (and deletes the program) on LINK_STATUS failure. */
15
+ export declare function linkProgram(gl: WebGL2RenderingContext, vs: WebGLShader, fs: WebGLShader, label?: string): WebGLProgram;
@@ -0,0 +1,3 @@
1
+ export declare const OETF_GLSL = "\nfloat srgbToLinearCh(float c) {\n return c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4);\n}\nvec3 srgbToLinear(vec3 c) {\n return vec3(srgbToLinearCh(c.r), srgbToLinearCh(c.g), srgbToLinearCh(c.b));\n}\n\nfloat linearToSrgbCh(float c) {\n return c <= 0.0031308 ? c * 12.92 : 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\nvec3 linearToSrgb(vec3 c) {\n return vec3(linearToSrgbCh(c.r), linearToSrgbCh(c.g), linearToSrgbCh(c.b));\n}";
2
+ export declare const FBM_ROT_GLSL = "const mat2 FBM_ROT = mat2(0.8, 0.6, -0.6, 0.8);";
3
+ export declare const OKLCH_MATRICES_GLSL = "\n// value.js LINEAR_SRGB_TO_LMS (constants.ts), row-major; written here as GLSL\n// columns (= the transpose) so mat3 * vec3 evaluates the row-major M\u00B7v.\nconst mat3 LINEAR_SRGB_TO_LMS = mat3(\n 0.4122214708, 0.2119034982, 0.0883024619,\n 0.5363325363, 0.6806995451, 0.2817188376,\n 0.0514459929, 0.1073969566, 0.6299787005\n);\n\n// value.js srgbToOKLab's INLINE LMS\u2192OKLab coefficients (gamut.ts lines 295-297 \u2014\n// these differ at the ~1e-9 digit from LMS_TO_OKLAB_MATRIX; use the inline ones to\n// mirror the exact value.js path), row-major \u2192 GLSL columns.\nconst mat3 LMS_TO_OKLAB = mat3(\n 0.2104542553, 1.9779984951, 0.0259040371,\n 0.7936177850, -2.4285922050, 0.7827717662,\n -0.0040720468, 0.4505937099, -0.8086757660\n);\n\n// value.js OKLAB_TO_LMS_COEFF (constants.ts), row-major \u2192 GLSL columns. Rows:\n// l = [1, 0.3963377774, 0.2158037573], m = [1, -0.1055613458, -0.0638541728],\n// s = [1, -0.0894841775, -1.2914855480].\nconst mat3 OKLAB_TO_LMS = mat3(\n 1.0, 1.0, 1.0,\n 0.3963377774, -0.1055613458, -0.0894841775,\n 0.2158037573, -0.0638541728, -1.2914855480\n);\n\n// value.js LMS_TO_LINEAR_SRGB (constants.ts), row-major \u2192 GLSL columns.\nconst mat3 LMS_TO_LINEAR_SRGB = mat3(\n 4.0767416621, -1.2684380046, -0.0041960863,\n -3.3077115913, 2.6097574011, -0.7034186147,\n 0.2309699292, -0.3413193965, 1.7076147010\n);\n\n// Gamma sRGB \u2192 raw OKLab (L, a, b). Mirrors value.js srgbToOKLab.\nvec3 srgbToOklab(vec3 c) {\n vec3 lin = srgbToLinear(c);\n vec3 lms = LINEAR_SRGB_TO_LMS * lin;\n vec3 lmsCbrt = sign(lms) * pow(abs(lms), vec3(1.0 / 3.0));\n return LMS_TO_OKLAB * lmsCbrt;\n}\n\n// Raw OKLab (L, a, b) \u2192 linear sRGB. Mirrors value.js oklabToLinearSRGB.\nvec3 oklabToLinearSrgb(vec3 lab) {\n vec3 lms_ = OKLAB_TO_LMS * lab;\n vec3 lms = lms_ * lms_ * lms_;\n return LMS_TO_LINEAR_SRGB * lms;\n}\n\n// OKLab \u2192 OKLCh: H in RADIANS. Mirrors value.js rawOklabToOklch (which returns\n// degrees; we stay in radians and only fold to [0, 2pi)).\nvec3 oklabToOklch(vec3 lab) {\n float C = length(lab.yz);\n float H = atan(lab.z, lab.y);\n if (H < 0.0) H += 2.0 * PI;\n return vec3(lab.x, C, H);\n}\n\n// OKLCh (H radians) \u2192 OKLab. Mirrors value.js rawOklchToOklab.\nvec3 oklchToOklab(vec3 lch) {\n return vec3(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}";
@@ -0,0 +1,55 @@
1
+ export type WebGLSuspendReason = "tab-hidden" | "off-screen" | "manual";
2
+ /** The per-frame hooks a consumer's `setup(gl)` returns. */
3
+ export interface WebGLCanvasFrame {
4
+ /** Draw one frame at `timeSec`. The consumer uploads its uniforms + draws. */
5
+ frame: (timeSec: number) => void;
6
+ /** Demand-gate: is there live motion to render next frame? `false` → park. */
7
+ shouldContinue: () => boolean;
8
+ /** Size the canvas + set the viewport. The consumer owns its DPR policy. */
9
+ resize: () => void;
10
+ /** Frame time from elapsed seconds — the consumer owns frozen/reduced-motion. */
11
+ time?: (elapsedSec: number) => number;
12
+ /** Delete GL resources (program/buffers/VAO). Runs on dispose + before a restore re-setup. */
13
+ teardown?: () => void;
14
+ }
15
+ export interface WebGLCanvasOptions {
16
+ /** `getContext("webgl2", …)` attributes (the consumer's — e.g. premultiplied alpha). */
17
+ contextAttrs?: WebGLContextAttributes;
18
+ /** `"capture"` pre-seeds the `manual` suspension (renderAt-only). Default `"live"`. */
19
+ mode?: "live" | "capture";
20
+ /**
21
+ * Honor `prefers-reduced-motion: reduce` by painting ONE static frame then
22
+ * parking the loop (AV.W7 G1). The substrate live-monitors the query via a
23
+ * `matchMedia` `change` listener and re-arms (one static frame) on un-reduce.
24
+ * Default `true` for live mode, `false` for capture mode (a capture runtime
25
+ * draws deterministic frames via `renderAt`, never the live loop). A consumer
26
+ * reads the live value via `handle.reducedMotion` (e.g. aurora's frozen-t).
27
+ */
28
+ respectReducedMotion?: boolean;
29
+ /**
30
+ * Build the program + geometry on a fresh context. Called on `arm()` AND on
31
+ * every `webglcontextrestored`. Returns the per-frame hooks.
32
+ */
33
+ setup: (gl: WebGL2RenderingContext) => WebGLCanvasFrame;
34
+ }
35
+ export interface WebGLCanvasHandle {
36
+ /** Run the expensive init (context + `setup` + arm the loop). Idempotent; no-op post-dispose. */
37
+ arm: () => void;
38
+ suspend: (reason?: WebGLSuspendReason) => void;
39
+ resume: (reason?: WebGLSuspendReason) => void;
40
+ /** Re-arm a parked loop (a setter that re-introduced motion calls this). */
41
+ wake: () => void;
42
+ /** Draw one frame at `timeSec` out-of-loop (capture / thumbnail). */
43
+ renderAt: (timeSec: number) => void;
44
+ dispose: () => void;
45
+ /** The live context (null before arm / after dispose / mid-loss). */
46
+ readonly gl: WebGL2RenderingContext | null;
47
+ /**
48
+ * The live `prefers-reduced-motion: reduce` state (AV.W7 G1). The substrate
49
+ * owns + re-monitors it; consumers read it (e.g. aurora freezes its frame
50
+ * time at the authored offset while this is `true`). `false` when
51
+ * `respectReducedMotion` is off.
52
+ */
53
+ readonly reducedMotion: boolean;
54
+ }
55
+ export declare function createWebGLCanvas(canvas: HTMLCanvasElement, options: WebGLCanvasOptions): WebGLCanvasHandle;
@@ -3,6 +3,7 @@ export * from "../useStaggerReveal";
3
3
  export * from "../useScrollProgress";
4
4
  export * from "../useRAFLoop";
5
5
  export * from "../useIntersectionPause";
6
- export * from "../useStagger";
7
6
  export * from "../useYieldToMain";
7
+ export * from "../usePrioritizedTask";
8
8
  export * from "../useViewTransition";
9
+ export * from "../vReveal";
@@ -4,4 +4,4 @@ export * from "./useSpringMount";
4
4
  export * from "./useSpringPress";
5
5
  export * from "./useNumericTransition";
6
6
  export * from "./useAnimatedNumber";
7
- export * from "./useAnimatedNumberMap";
7
+ export * from "./useCountup";
@@ -0,0 +1,29 @@
1
+ import { type Ref } from "vue";
2
+ export interface Countup {
3
+ /** Animate the count-ups inside the currently-active slide/region. */
4
+ runActive: () => void;
5
+ /** Snap EVERY `[data-countup]` in the document to its end value (still capture). */
6
+ settle: () => void;
7
+ /** Cancel every in-flight tween (also runs on scope-dispose). */
8
+ cancel: () => void;
9
+ }
10
+ export interface UseCountupOptions {
11
+ /**
12
+ * Easing applied to tween progress — a value.js-FREE callable
13
+ * `(p: number) => number` over `[0, 1]`. A callable keeps the
14
+ * `NumericAnimation` engine off the value.js boundary (a string name would
15
+ * dynamic-import the value.js easing registry).
16
+ */
17
+ easeFn: (p: number) => number;
18
+ /** When it returns true, `runActive` is a no-op (e.g. export/print mode). */
19
+ skip?: () => boolean;
20
+ }
21
+ /**
22
+ * Walk `[data-countup]` figures under `hostRef` and tween each from 0 → target.
23
+ *
24
+ * @example
25
+ * const { runActive, settle } = useCountup(deckRef, { easeFn: (p) => p });
26
+ * // on slide-activate: runActive();
27
+ * // on still-capture: settle();
28
+ */
29
+ export declare function useCountup(hostRef: Ref<HTMLElement | null>, opts: UseCountupOptions): Countup;
@@ -0,0 +1,41 @@
1
+ export type TaskPriority = "user-blocking" | "user-visible" | "background";
2
+ export interface PostTaskOptions {
3
+ /** Scheduling priority. Defaults to the platform default ('user-visible'). */
4
+ priority?: TaskPriority;
5
+ /** Abort the task before it runs (rejects the returned promise). */
6
+ signal?: AbortSignal;
7
+ /** Delay in ms before the task becomes eligible to run. */
8
+ delay?: number;
9
+ }
10
+ /**
11
+ * Schedule `callback` at an explicit priority, resolving with its result.
12
+ * Native `scheduler.postTask` when available; otherwise a `MessageChannel`
13
+ * macrotask (honouring `delay` via `setTimeout`, and `signal` via a plain
14
+ * `AbortSignal` check) that cannot order by priority but still runs off the
15
+ * current task.
16
+ *
17
+ * @example
18
+ * await postTaskSafe(() => recomputeHistory(), { priority: "background" });
19
+ */
20
+ export declare function postTaskSafe<T>(callback: () => T, options?: PostTaskOptions): Promise<T>;
21
+ export interface UsePrioritizedTaskReturn {
22
+ /**
23
+ * Schedule a unit of work. The controller's `signal` is merged in (its own
24
+ * `abort()` cancels every task it scheduled), and an explicit `options.signal`
25
+ * still applies on the fallback path.
26
+ */
27
+ postTask: <T>(callback: () => T, options?: PostTaskOptions) => Promise<T>;
28
+ /** Abort every task scheduled through this controller. */
29
+ abort: (reason?: unknown) => void;
30
+ }
31
+ /**
32
+ * Composable wrapper over {@link postTaskSafe} that owns a `TaskController`
33
+ * (when supported) so a single `abort()` cancels every task it scheduled — the
34
+ * controller a consumer constructs once and tears down on unmount. When
35
+ * `TaskController` is absent the controller is a no-op shell and per-task
36
+ * `options.signal` is the only cancellation channel.
37
+ *
38
+ * Pure-native (no `vue` import) — owns no reactive state and no lifecycle, so it
39
+ * has no cleanup obligation beyond the `abort()` the consumer calls itself.
40
+ */
41
+ export declare function usePrioritizedTask(priority?: TaskPriority): UsePrioritizedTaskReturn;
@@ -0,0 +1,2 @@
1
+ import type { ObjectDirective } from "vue";
2
+ export declare const vReveal: ObjectDirective<HTMLElement, number>;
@@ -1,4 +1,4 @@
1
- import type { Ref, MaybeRefOrGetter } from "vue";
1
+ import type { Ref, MaybeRefOrGetter, ComputedRef } from "vue";
2
2
  import type { TreeNode, TreeIndexEntry, SidebarSection, SidebarState } from "./types";
3
3
  export interface UseSidebarStateOptions<T extends TreeNode = SidebarSection> {
4
4
  sections: T[];
@@ -26,7 +26,7 @@ export interface UseSidebarStateOptions<T extends TreeNode = SidebarSection> {
26
26
  export interface GenericSidebarState<T extends TreeNode> {
27
27
  sections: T[];
28
28
  activeId: Ref<string | null>;
29
- activeRootId: import("vue").ComputedRef<string | null>;
29
+ activeRootId: ComputedRef<string | null>;
30
30
  treeIndex: Map<string, TreeIndexEntry<T>>;
31
31
  isExpanded(id: string): boolean;
32
32
  toggleSection(id: string): void;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Sortable drag-state controller — the drag lifecycle + cross-list routing.
3
+ *
4
+ * Owns the live drag state (`dragId` / `pos` / `dropIndex` / `pointerCaptureActive`)
5
+ * and the `beginDrag` → `onPointerMove` → `onPointerUp` → `endDrag` lifecycle. It
6
+ * composes the leaf services: the ghost renderer (visual clone), the drop resolver
7
+ * (collision/measure + cross-list lookup), and the touch gate (handle constraint +
8
+ * pointer-capture optimization). Same-list reorders and foreign-list transfers are
9
+ * both routed here through the unified resolver.
10
+ */
11
+ import { type ShallowRef } from "vue";
12
+ import type { InstanceHandle, SortableId } from "./types";
13
+ import type { GhostRenderer } from "./ghostRenderer";
14
+ export interface DragControllerDeps {
15
+ /** Live items array accessor (the reactive source-of-truth). */
16
+ getItems: () => readonly unknown[];
17
+ getId: (item: unknown) => SortableId;
18
+ /** Per-id element cache, shared with the row registry. */
19
+ elements: Map<SortableId, Element | null>;
20
+ /** This instance's registry handle (for cross-list lookups). */
21
+ handle: InstanceHandle;
22
+ onReorder: (next: unknown[]) => void;
23
+ /** Horizontal-axis drop resolution (`axis === "x"`). */
24
+ horizontal: boolean;
25
+ ghost: GhostRenderer;
26
+ }
27
+ export interface DragController {
28
+ /** Live id of the dragged row, or null. */
29
+ dragId: ShallowRef<SortableId | null>;
30
+ /** Live pointer position in page coordinates, or null. */
31
+ pos: ShallowRef<{
32
+ x: number;
33
+ y: number;
34
+ } | null>;
35
+ /** Resolved local drop index, or null. */
36
+ dropIndex: ShallowRef<number | null>;
37
+ /** Whether the active drag holds a pointer capture. */
38
+ pointerCaptureActive: ShallowRef<boolean>;
39
+ /** Start a drag for the row `id` from the pointerdown event `e`. */
40
+ beginDrag: (id: SortableId, e: PointerEvent) => void;
41
+ /** Tear down an in-flight drag (also the defensive scope-dispose path). */
42
+ endDrag: () => void;
43
+ }
44
+ export declare function createDragController(deps: DragControllerDeps): DragController;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Sortable drop resolution — pure collision/measure math over the elements map.
3
+ *
4
+ * No DOM mutation: these read row bounding rects and resolve an insertion index.
5
+ * Walking registered row elements via the elements map (rather than subscribing
6
+ * to each row's box reactively) keeps the cost at O(rows) per pointermove frame
7
+ * and avoids a layout-thrash storm.
8
+ *
9
+ * The module-level instance registry lives here too — it is the cross-list
10
+ * resolution home: `findForeignTarget` hit-tests sibling instances in the same
11
+ * group, unifying the local-drop vs foreign-drop index math behind one resolver.
12
+ */
13
+ import type { InstanceHandle, SortableId } from "./types";
14
+ /**
15
+ * Every live `useSortable` instance registers here for cross-list lookups. On
16
+ * drag move, the source instance looks up any other instance in the same group
17
+ * whose container contains the cursor, and transfers the drop target to it.
18
+ * Entries are removed on scope dispose.
19
+ */
20
+ export declare const instances: Set<InstanceHandle>;
21
+ /**
22
+ * Resolve an insertion index by walking the registered row elements and finding
23
+ * the first row whose axis midpoint is past the cursor. Returns `list.length`
24
+ * (drop at end) when the cursor is past every row.
25
+ */
26
+ export declare function resolveDropIndexIn(elMap: Map<SortableId, Element | null>, list: readonly {
27
+ id: SortableId;
28
+ }[], clientX: number, clientY: number, horizontal: boolean): number;
29
+ /**
30
+ * Find a sibling instance in the same group whose container bounds contain the
31
+ * cursor — the foreign drop target. Returns null when the source has no group or
32
+ * the cursor is over no sibling.
33
+ */
34
+ export declare function findForeignTarget(sourceHandle: InstanceHandle, clientX: number, clientY: number): InstanceHandle | null;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Sortable drag ghost — the snap-physics + visual clone of the grabbed row.
3
+ *
4
+ * The ghost is a fixed-position DOM clone of the source row, positioned under the
5
+ * grab point so it tracks the cursor rather than teleporting. The clone inherits
6
+ * scoped `data-v-*` attributes + classes so stylesheet selectors continue to
7
+ * match, giving a pixel-faithful preview without any per-consumer markup.
8
+ *
9
+ * `createGhostRenderer()` returns the stateful trio (`createGhost` / `updateGhost`
10
+ * / `destroyGhost`) closing over the live ghost element + its cursor offset.
11
+ */
12
+ /**
13
+ * True when a computed `border-radius` string has any non-zero corner. Computed
14
+ * values resolve to space-separated lengths (e.g. `"0px"`, `"6px"`, `"12px 12px
15
+ * 0px 0px"`) with an optional `/` separating the horizontal/vertical radii of
16
+ * elliptical corners. A radius is "zero" only when every numeric component parses
17
+ * to 0; a non-length token (`%`, `auto`) counts as non-zero so we never miss a
18
+ * rounded corner.
19
+ *
20
+ * Exported (and re-exported from `useSortable`) for the D9 drag-ring regression
21
+ * test — keep it a pure string predicate.
22
+ */
23
+ export declare function isNonZeroRadius(radius: string): boolean;
24
+ /**
25
+ * Resolve the effective VISIBLE corner radius for the dragged content. Returns
26
+ * the source's own computed `border-radius` when it is non-zero; otherwise walks
27
+ * descendants depth-first and returns the first element's non-zero radius (the
28
+ * common case where the SortableItem root is unrounded and the rounded surface
29
+ * lives on an inner child). Returns `null` when nothing in the subtree is rounded
30
+ * — caller leaves the ghost radius untouched.
31
+ */
32
+ export declare function resolveVisibleRadius(source: HTMLElement): string | null;
33
+ export interface GhostRenderer {
34
+ /**
35
+ * Build the drag ghost by cloning the source row's DOM and positioning a
36
+ * fixed copy at its current bounding rect.
37
+ */
38
+ createGhost: (source: HTMLElement, clientX: number, clientY: number) => void;
39
+ /** Track the ghost under the cursor at its captured grab offset. */
40
+ updateGhost: (clientX: number, clientY: number) => void;
41
+ /** Remove the ghost from the document. */
42
+ destroyGhost: () => void;
43
+ }
44
+ export declare function createGhostRenderer(): GhostRenderer;
@@ -1 +1 @@
1
- export { useSortable, type UseSortableReturn, type SortableId, } from "./useSortable";
1
+ export { useSortable, type UseSortableReturn, type SortableId } from "./useSortable";