@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.
- package/dist/{CardFooter-CSGcJkqa.js → CardFooter-C390imy7.js} +3 -3
- package/dist/{CollapsibleContent-CVMOcYlV.js → CollapsibleContent-cauTbZEM.js} +1 -1
- package/dist/{CommandShortcut-DWT19a2Y.js → CommandShortcut-BiVyqipe.js} +7 -6
- package/dist/{ContextMenuSubContent-gAFxJ-qi.js → ContextMenuSubContent-DrWkXKQP.js} +4 -4
- package/dist/DataTable-FfkaAg2z.js +465 -0
- package/dist/DialogContent-IQ8_BRrC.js +100 -0
- package/dist/{DialogFooter-ClrNEOVU.js → DialogFooter-Er0wA3K6.js} +2 -2
- package/dist/{DiscoGlyph-C3JfMnRV.js → DiscoGlyph-BaZ8OawK.js} +1 -1
- package/dist/{GlyphFace-BRS8vUb7.js → GlyphFace-B_7vOmYn.js} +1 -1
- package/dist/HoverPopover-DTSYkJtw.js +96 -0
- package/dist/{IconTooltip-BkaA7tZ2.js → IconTooltip-BTyYn4mr.js} +1 -1
- package/dist/Input-CU9CNKmo.js +52 -0
- package/dist/{MetricBadge-DmAihkXd.js → MetricBadge-BlrdbOGN.js} +2 -2
- package/dist/{Notification-OqIpADml.js → Notification-DP_ApJLo.js} +3 -3
- package/dist/{NumberFieldContent-DTH9gb_N.js → NumberFieldContent-iOTQ5rGO.js} +9 -5
- package/dist/{PopoverContent-EiklFrna.js → PopoverContent-B8WtJECb.js} +1 -1
- package/dist/Progress-DjM86vfb.js +254 -0
- package/dist/{ScrollingText-BFd0i2zJ.js → ScrollingText-P9o_DuMn.js} +2 -2
- package/dist/{SelectScrollDownButton-Dth8-wXQ.js → SelectScrollDownButton-BGn3rjs9.js} +12 -11
- package/dist/TabsIndicator-DA0x9gPr.js +97 -0
- package/dist/{Toaster-Bjlunvq4.js → Toaster-DdhMKfus.js} +1 -1
- package/dist/{ToggleGroupItem-OesUouE7.js → ToggleGroupItem-gyXj998A.js} +37 -40
- package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
- package/dist/animated-digit.js +3 -3
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +471 -320
- package/dist/badge.js +1 -1
- package/dist/{button-C0aHmBbt.js → button-Ckn3eDfB.js} +27 -22
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +6 -6
- package/dist/{check-dwgetki8.js → check-CdkxGxXJ.js} +1 -1
- package/dist/{chevron-down-DILQA1t6.js → chevron-down-pBY8sYfV.js} +1 -1
- package/dist/{chevron-right-fS7fal2t.js → chevron-right-BjeKC22V.js} +1 -1
- package/dist/{chevron-up-BtYjYQOS.js → chevron-up-DBeNHUm1.js} +1 -1
- package/dist/collapsible.js +1 -1
- package/dist/color-rkK4RMx2.js +33 -0
- package/dist/color.d.ts +1 -0
- package/dist/color.js +2 -0
- package/dist/command.js +1 -1
- package/dist/compile-DVgAxagk.js +106 -0
- package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +7 -7
- package/dist/components/custom/aurora/Aurora.vue.d.ts +3 -3
- package/dist/components/custom/aurora/composables/color.d.ts +42 -16
- package/dist/components/custom/aurora/composables/cursorModel.d.ts +45 -0
- package/dist/components/custom/aurora/composables/frameLoop.d.ts +30 -0
- package/dist/components/custom/aurora/composables/glSetup.d.ts +29 -0
- package/dist/components/custom/aurora/composables/runtime.d.ts +45 -35
- package/dist/components/custom/aurora/composables/uniformBridge.d.ts +67 -0
- package/dist/components/custom/aurora/composables/useAurora.d.ts +14 -1
- package/dist/components/custom/aurora/composables/useCursorInteraction.d.ts +1 -1
- package/dist/components/custom/aurora/constants/budget.d.ts +50 -0
- package/dist/components/custom/aurora/{presets.d.ts → constants/presets.d.ts} +3 -6
- package/dist/components/custom/aurora/constants/shaders/aurora.frag.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/composition.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/flow.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -0
- package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/index.d.ts +4 -3
- package/dist/components/custom/configurator/Configurator.vue.d.ts +26 -0
- package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +14 -7
- package/dist/components/custom/configurator/density.d.ts +3 -8
- package/dist/components/custom/configurator/index.d.ts +1 -1
- package/dist/components/custom/dock/DockBackgroundToggle.vue.d.ts +46 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +15 -4
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
- package/dist/components/custom/dock/GlassDock.vue.d.ts +34 -13
- package/dist/components/custom/dock/composables/dockContext.d.ts +4 -4
- package/dist/components/custom/dock/composables/dockLayerContext.d.ts +13 -6
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +32 -8
- package/dist/components/custom/dock/index.d.ts +1 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
- package/dist/components/custom/glyph-face/keys.d.ts +3 -29
- package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +48 -0
- package/dist/components/custom/goo-blob/composables/easing.d.ts +6 -0
- package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +14 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +13 -0
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +42 -0
- package/dist/components/custom/goo-blob/index.d.ts +7 -0
- package/dist/components/custom/goo-blob/shaders/metaball.frag.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/metaball.vert.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/oklch-perturb.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/sdf-body.glsl.d.ts +1 -0
- package/dist/components/custom/goo-blob/shaders/watercolor-edges.glsl.d.ts +2 -0
- package/dist/components/custom/goo-blob/types.d.ts +77 -0
- package/dist/components/custom/hover-popover/HoverPopover.vue.d.ts +48 -9
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +2 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +2 -2
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +2 -2
- package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +13 -7
- package/dist/components/custom/search/FuzzySearch.vue.d.ts +1 -1
- package/dist/components/custom/search/SearchBar.vue.d.ts +1 -1
- package/dist/components/custom/sortable-list/SortableHandle.vue.d.ts +7 -1
- package/dist/components/custom/sortable-list/context.d.ts +2 -3
- package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +7 -3
- package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +6 -3
- package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +39 -0
- package/dist/components/custom/timeline/ContinuousMarkers.vue.d.ts +49 -0
- package/dist/components/custom/timeline/ContinuousRail.vue.d.ts +26 -0
- package/dist/components/custom/timeline/ContinuousTimeline.vue.d.ts +4 -4
- package/dist/components/custom/typewriter/TypewriterText.vue.d.ts +2 -2
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +45 -0
- package/dist/components/custom/watercolor-dot/index.d.ts +3 -0
- package/dist/components/custom/watercolor-dot/prng.d.ts +5 -0
- package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +24 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
- package/dist/components/ui/avatar/Avatar.vue.d.ts +1 -1
- package/dist/components/ui/avatar/AvatarImage.vue.d.ts +5 -1
- package/dist/components/ui/avatar/index.d.ts +1 -1
- package/dist/components/ui/badge/index.d.ts +2 -2
- package/dist/components/ui/button/Button.vue.d.ts +3 -1
- package/dist/components/ui/button/index.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
- package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
- package/dist/components/ui/combobox/Combobox.vue.d.ts +2 -2
- package/dist/components/ui/combobox/ComboboxInput.vue.d.ts +2 -1
- package/dist/components/ui/command/Command.vue.d.ts +3 -3
- package/dist/components/ui/command/CommandInput.vue.d.ts +2 -1
- package/dist/components/ui/data-table/DataTable.vue.d.ts +5 -4
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +4 -4
- package/dist/components/ui/input/Input.vue.d.ts +19 -1
- package/dist/components/ui/multi-select/MultiSelect.vue.d.ts +8 -4
- package/dist/components/ui/progress/Progress.vue.d.ts +26 -88
- package/dist/components/ui/progress/ProgressDefault.vue.d.ts +14 -0
- package/dist/components/ui/progress/ProgressGradient.vue.d.ts +25 -0
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +36 -0
- package/dist/components/ui/progress/index.d.ts +5 -2
- package/dist/components/ui/progress/useProgressGeometry.d.ts +60 -0
- package/dist/components/ui/select/Select.vue.d.ts +2 -2
- package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +3 -0
- package/dist/components/ui/sheet/index.d.ts +1 -1
- package/dist/components/ui/slider/index.d.ts +12 -11
- package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
- package/dist/components/ui/textarea/Textarea.vue.d.ts +5 -1
- package/dist/components/ui/toast/Toast.vue.d.ts +4 -4
- package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
- package/dist/components/ui/toggle/index.d.ts +1 -1
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +2 -3
- package/dist/composables/color/index.d.ts +49 -0
- package/dist/composables/context/createContext.d.ts +56 -0
- package/dist/composables/context/index.d.ts +1 -0
- package/dist/composables/dark/darkModeSyncScript.d.ts +23 -0
- package/dist/composables/dark/index.d.ts +3 -0
- package/dist/composables/dark/useGlobalDark.d.ts +19 -2
- package/dist/composables/dom/index.d.ts +1 -3
- package/dist/composables/dom/useClipboard.d.ts +35 -12
- package/dist/composables/dom/useDocumentVisibility.d.ts +20 -0
- package/dist/composables/dom/useTextHighlight.d.ts +40 -0
- package/dist/composables/glass/webgl/compile.d.ts +15 -0
- package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +3 -0
- package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +55 -0
- package/dist/composables/motion/core/index.d.ts +2 -1
- package/dist/composables/motion/index.d.ts +1 -1
- package/dist/composables/motion/useCountup.d.ts +29 -0
- package/dist/composables/motion/usePrioritizedTask.d.ts +41 -0
- package/dist/composables/motion/vReveal.d.ts +2 -0
- package/dist/composables/sidebar/useSidebarState.d.ts +2 -2
- package/dist/composables/sortable/dragController.d.ts +44 -0
- package/dist/composables/sortable/dropResolver.d.ts +34 -0
- package/dist/composables/sortable/ghostRenderer.d.ts +44 -0
- package/dist/composables/sortable/index.d.ts +1 -1
- package/dist/composables/sortable/touchGate.d.ts +26 -0
- package/dist/composables/sortable/transitionTiming.d.ts +50 -0
- package/dist/composables/sortable/types.d.ts +133 -0
- package/dist/composables/sortable/useSortable.d.ts +25 -140
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +3 -3
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +5 -5
- package/dist/createContext-DBMGRlx4.js +25 -0
- package/dist/dark.d.ts +2 -1
- package/dist/dark.js +9 -2
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +410 -254
- package/dist/dockContext-spUj_-E5.js +9 -0
- package/dist/dom.js +6 -5
- package/dist/{dropdown-menu-BvRUamNs.js → dropdown-menu-EFjl5iKo.js} +4 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +28 -22
- package/dist/fonts/README.md +21 -0
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/forms.js +70 -61
- package/dist/glass-carousel.js +59 -52
- package/dist/glass-panel.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +159 -254
- package/dist/glyph-face.js +2 -2
- package/dist/goo-blob.d.ts +1 -0
- package/dist/goo-blob.js +538 -0
- package/dist/header-ribbon.js +3 -3
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/instrument-chassis.js +1 -1
- package/dist/instrument-rail.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/keys-BFoma9vm.js +9 -0
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +57 -39
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/{minimize-2-LsCJ_eNt.js → minimize-2-BP27-qBY.js} +1 -1
- package/dist/motion-core.js +154 -135
- package/dist/motion.js +63 -15
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-a-D93K1S.js → presets-1OhFpaIC.js} +5 -5
- package/dist/prng-Bz_1Tydc.js +15 -0
- package/dist/progress.js +2 -2
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +38 -32
- package/dist/scrolling-text.js +1 -1
- package/dist/{search-DBAiUABx.js → search-DBG8qaRs.js} +1 -1
- package/dist/search.js +153 -149
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-CukNDezz.js → sheet-CQYYrkr9.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/{slider-DJvHkTRe.js → slider-BOh8ycfZ.js} +8 -12
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +37 -39
- package/dist/stacked-icons.js +2 -2
- package/dist/styles/animations.css +1 -1
- package/dist/styles/cards.css +1 -1
- package/dist/styles/components.css +45 -0
- package/dist/styles/dock-controls.css +486 -0
- package/dist/styles/dock.css +325 -431
- package/dist/styles/fonts.css +25 -0
- package/dist/styles/glass-specular-track.css +154 -0
- package/dist/styles/glass.css +74 -2
- package/dist/styles/index.css +25 -2
- package/dist/styles/instrument-chassis.css +11 -4
- package/dist/styles/theme.css +73 -21
- package/dist/styles/tokens.css +282 -140
- package/dist/styles/typography.css +14 -8
- package/dist/styles/utilities.css +92 -8
- package/dist/styles/view-transition.css +10 -4
- package/dist/switch.js +1 -1
- package/dist/tabs.js +148 -106
- package/dist/timeline.js +220 -159
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tokens.d.ts +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-DKQYVB7s.js → useAnimatedNumber-BF6r64lA.js} +1 -1
- package/dist/useClipboard-D8vFyRCa.js +97 -0
- package/dist/useConfiguratorState-DUtC1jxr.js +276 -0
- package/dist/useGlobalDark-CWiaCoEw.js +34 -0
- package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
- package/dist/useSortable-DnyGXKKY.js +246 -0
- package/dist/useTextHighlight-Dmtofpk2.js +72 -0
- package/dist/{useTouchGate-D9Zvrzyc.js → useTouchGate-CS5Csc2h.js} +1 -1
- package/dist/{useViewTransition-DYIK6Gzb.js → useViewTransition-D4ssvnXZ.js} +5 -3
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/platformSupport.d.ts +8 -0
- package/dist/utils/prng.d.ts +4 -0
- package/dist/vReveal-u2wSG2El.js +35 -0
- package/dist/watercolor-dot.d.ts +1 -0
- package/dist/watercolor-dot.js +129 -0
- package/dist/{x-q7pJa83X.js → x-C4pz9nbD.js} +1 -1
- package/package.json +110 -16
- package/src/fonts/README.md +21 -0
- package/src/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/src/styles/animations.css +1 -1
- package/src/styles/cards.css +1 -1
- package/src/styles/dock-controls.css +486 -0
- package/src/styles/dock.css +325 -431
- package/src/styles/fonts.css +25 -0
- package/src/styles/glass-specular-track.css +154 -0
- package/src/styles/glass.css +74 -2
- package/src/styles/index.css +21 -2
- package/src/styles/instrument-chassis.css +11 -4
- package/src/styles/theme.css +73 -21
- package/src/styles/tokens.css +282 -140
- package/src/styles/typography.css +14 -8
- package/src/styles/utilities.css +92 -8
- package/src/styles/view-transition.css +10 -4
- package/dist/DataTable-R8-Zidms.js +0 -460
- package/dist/DialogContent-2fALDSvc.js +0 -93
- package/dist/HoverPopover-CWFCfLx3.js +0 -96
- package/dist/Input-DDpFn568.js +0 -30
- package/dist/Progress-FApA9fm_.js +0 -126
- package/dist/UnderlineTabs-DAWMLmJG.js +0 -37
- package/dist/components/custom/aurora/shaders/aurora.frag.d.ts +0 -1
- package/dist/composables/dom/useBreakpoint.d.ts +0 -38
- package/dist/composables/dom/useIdleReady.d.ts +0 -63
- package/dist/composables/dom/useViewportReady.d.ts +0 -87
- package/dist/composables/glass/webgl/frostShader.d.ts +0 -27
- package/dist/composables/motion/useAnimatedNumberMap.d.ts +0 -29
- package/dist/composables/motion/useStagger.d.ts +0 -50
- package/dist/dockContext-D5NZCWJs.js +0 -16
- package/dist/keys-CaTQS-vx.js +0 -11
- package/dist/useConfiguratorState-CtRBE0m_.js +0 -268
- package/dist/useGlobalDark-B0WvLJE3.js +0 -24
- package/dist/useIdleReady-Cmkhm03v.js +0 -162
- package/dist/useIntersectionPause-IY2CwPQb.js +0 -39
- package/dist/useSortable-Cq2Y1JLO.js +0 -175
- /package/dist/{ContextMenuContent-otjFIu8v.js → ContextMenuContent-De01_83g.js} +0 -0
- /package/dist/{HoverCardContent-DaGrgJBO.js → HoverCardContent-ICfIMZX1.js} +0 -0
- /package/dist/{InstrumentChassis-CnHTMxds.js → InstrumentChassis-DaHIZCqy.js} +0 -0
- /package/dist/{InstrumentRail-C6dEbi8E.js → InstrumentRail-B0qqLFN0.js} +0 -0
- /package/dist/{Label-DJty89bp.js → Label-CZk-3nTc.js} +0 -0
- /package/dist/{ModalOverlay-iWiAgbYH.js → ModalOverlay-B_CBtqcE.js} +0 -0
- /package/dist/{PaperBackdrop-CeZ-w0R0.js → PaperBackdrop-D_YZW47j.js} +0 -0
- /package/dist/{SelectGroup-DdR4tdDY.js → SelectGroup-CMdoCjRE.js} +0 -0
- /package/dist/{SelectSeparator-CXm_hlqA.js → SelectSeparator-CaJnPF3_.js} +0 -0
- /package/dist/{Separator-D8AUMhxY.js → Separator-C2XtAXRp.js} +0 -0
- /package/dist/{Switch-Cr1t_F_U.js → Switch-x8n6husW.js} +0 -0
- /package/dist/{TooltipProvider-DE78vbEP.js → TooltipProvider-D-JrSqDu.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-Dq1MygBL.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
- /package/dist/{badge-x46my_Fo.js → badge-Cl6JZ1B7.js} +0 -0
- /package/dist/components/custom/aurora/{renderMode.d.ts → constants/renderMode.d.ts} +0 -0
- /package/dist/components/custom/aurora/{shaders → constants/shaders}/aurora.vert.d.ts +0 -0
- /package/dist/{constants-DwBwnG8N.js → constants-DsCdlK9I.js} +0 -0
- /package/dist/{createLucideIcon-Bn9a1b70.js → createLucideIcon-DuDoe_ra.js} +0 -0
- /package/dist/{menuItemVariants-BsbGNq9C.js → menuItemVariants-C2QlXqT3.js} +0 -0
- /package/dist/{useGlassRenderer-Ds-nmrGz.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
- /package/dist/{useInterval-DVgGUf_y.js → useInterval-CHVYFpXV.js} +0 -0
- /package/dist/{useKeyboardShortcuts-Dpw_RUcB.js → useKeyboardShortcuts-BQfnAHHW.js} +0 -0
- /package/dist/{useResizeObserver-Cg9npuM3.js → useResizeObserver-DX-STszm.js} +0 -0
- /package/dist/{useSpringMount-Cfk1XK1R.js → useSpringMount-CnizvZGm.js} +0 -0
- /package/dist/{useTimer-NAaj9zNq.js → useTimer-DGgoxTXL.js} +0 -0
- /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
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
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
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
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
|
-
|
|
100
|
+
overflow: "grow" | "wrap" | "scroll";
|
|
80
101
|
orientation: "horizontal" | "vertical";
|
|
81
|
-
|
|
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 {
|
|
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
|
|
38
|
+
export declare const useDockContext: () => DockContext;
|
|
39
39
|
/** Befitting silent default for primitives that may render outside a dock. */
|
|
40
|
-
export declare
|
|
40
|
+
export declare const useOptionalDockContext: () => DockContext | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
22
|
-
|
|
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
|
|
34
|
+
export declare const useDockLayerGroupContext: () => DockLayerGroupContext;
|
|
28
35
|
/** Befitting silent default; reserved for future consumers. */
|
|
29
|
-
export declare
|
|
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
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
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.
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
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
|
|
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
|
|
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<
|
|
74
|
-
"update:open": (
|
|
75
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
76
|
-
"onUpdate:open"?: ((
|
|
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>;
|
|
@@ -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;
|