@mkbabb/glass-ui 3.2.0 → 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-3-VGho1J.js → CardFooter-C390imy7.js} +2 -2
- package/dist/{CollapsibleContent-wlmlDujU.js → CollapsibleContent-cauTbZEM.js} +1 -1
- package/dist/{CommandShortcut-C6lsz3pG.js → CommandShortcut-BiVyqipe.js} +5 -4
- package/dist/DataTable-FfkaAg2z.js +465 -0
- package/dist/DialogContent-IQ8_BRrC.js +100 -0
- package/dist/{DiscoGlyph-B7YooI2-.js → DiscoGlyph-BaZ8OawK.js} +1 -1
- package/dist/{GlyphFace-Bvk6OIas.js → GlyphFace-B_7vOmYn.js} +1 -1
- package/dist/HoverPopover-DTSYkJtw.js +96 -0
- package/dist/{IconTooltip-DXveGjx7.js → IconTooltip-BTyYn4mr.js} +1 -1
- package/dist/Input-CU9CNKmo.js +52 -0
- package/dist/{MetricBadge-J_GBCb8e.js → MetricBadge-BlrdbOGN.js} +1 -1
- package/dist/{NumberFieldContent-B6L6YrQz.js → NumberFieldContent-iOTQ5rGO.js} +8 -4
- package/dist/{PopoverContent-CxEEUL7Y.js → PopoverContent-B8WtJECb.js} +1 -1
- package/dist/Progress-DjM86vfb.js +254 -0
- package/dist/{ScrollingText-1Qjnwz6H.js → ScrollingText-P9o_DuMn.js} +1 -1
- package/dist/{SelectScrollDownButton-BvvvAbuh.js → SelectScrollDownButton-BGn3rjs9.js} +9 -8
- package/dist/TabsIndicator-DA0x9gPr.js +97 -0
- package/dist/{ToggleGroupItem-Cy7xHFEo.js → ToggleGroupItem-gyXj998A.js} +37 -40
- package/dist/UnderlineTabs-Cq_AD03t.js +39 -0
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +2 -0
- package/dist/api.js +1 -1
- package/dist/aurora.js +454 -271
- package/dist/{button-DS3ULf5i.js → button-Ckn3eDfB.js} +27 -22
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +2 -2
- 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 +3 -25
- 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} +2 -5
- 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 +2 -2
- 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/dock/DockBackgroundToggle.vue.d.ts +46 -0
- package/dist/components/custom/dock/DockIconButton.vue.d.ts +3 -3
- package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +2 -2
- package/dist/components/custom/dock/GlassDock.vue.d.ts +22 -18
- 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 +0 -3
- package/dist/composables/dom/useClipboard.d.ts +35 -12
- package/dist/composables/dom/useDocumentVisibility.d.ts +20 -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 +1 -1
- package/dist/composables/motion/index.d.ts +1 -1
- package/dist/composables/motion/useCountup.d.ts +29 -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 -153
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +1 -1
- package/dist/controls.js +4 -4
- 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 +1 -1
- package/dist/disco-glyph.js +1 -1
- package/dist/dock.js +400 -261
- package/dist/dockContext-spUj_-E5.js +9 -0
- package/dist/dom.js +6 -6
- package/dist/{dropdown-menu-naE0skDg.js → dropdown-menu-EFjl5iKo.js} +1 -1
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +26 -20
- package/dist/fonts/README.md +21 -0
- package/dist/fonts/fraunces/fraunces-latin.woff2 +0 -0
- package/dist/forms.js +68 -59
- package/dist/glass-panel.js +1 -1
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +226 -328
- 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 +2 -2
- 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/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/motion-core.js +82 -123
- package/dist/motion.js +62 -14
- package/dist/number-field.js +1 -1
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/{presets-BpTf63Hp.js → presets-1OhFpaIC.js} +1 -1
- package/dist/prng-Bz_1Tydc.js +15 -0
- package/dist/progress.js +2 -2
- package/dist/reactive.js +2 -2
- package/dist/responsive-tabs.js +38 -32
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +8 -8
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-wx8ifVFB.js → slider-BOh8ycfZ.js} +7 -11
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +36 -38
- 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 +1 -1
- package/dist/styles/dock-controls.css +486 -0
- package/dist/styles/dock.css +275 -450
- 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 +21 -2
- package/dist/styles/instrument-chassis.css +11 -4
- package/dist/styles/theme.css +73 -21
- package/dist/styles/tokens.css +271 -140
- package/dist/styles/typography.css +14 -8
- package/dist/styles/utilities.css +36 -8
- package/dist/styles/view-transition.css +10 -4
- package/dist/switch.js +1 -1
- package/dist/tabs.js +139 -112
- package/dist/timeline.js +219 -158
- 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/{useAnimatedNumber-BOxrS3a6.js → useAnimatedNumber-BF6r64lA.js} +1 -1
- package/dist/useClipboard-D8vFyRCa.js +97 -0
- package/dist/{useConfiguratorState-Dq2gNv4A.js → useConfiguratorState-DUtC1jxr.js} +82 -86
- package/dist/useGlobalDark-CWiaCoEw.js +34 -0
- package/dist/useIntersectionPause-DAdVPVp4.js +53 -0
- package/dist/useSortable-DnyGXKKY.js +246 -0
- package/dist/{useTouchGate-XX8gHfay.js → useTouchGate-CS5Csc2h.js} +1 -1
- 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/package.json +98 -14
- 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 +275 -450
- 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 +271 -140
- package/src/styles/typography.css +14 -8
- package/src/styles/utilities.css +36 -8
- package/src/styles/view-transition.css +10 -4
- package/dist/DataTable-BsrDYdoE.js +0 -460
- package/dist/DialogContent-B61rP8lj.js +0 -93
- package/dist/HoverPopover-BlEwqG7S.js +0 -96
- package/dist/Input-IFsIzId2.js +0 -30
- package/dist/Progress-Bs44qWEM.js +0 -126
- package/dist/UnderlineTabs-B4FV2zi_.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-DM58L1Jt.js +0 -16
- package/dist/keys-SIKQYNx1.js +0 -11
- package/dist/supportsCssTimeline-IQY3gfKD.js +0 -12
- package/dist/useGlobalDark-BUUTZvkU.js +0 -24
- package/dist/useIdleReady-sLhGo6CL.js +0 -162
- package/dist/useIntersectionPause-CUmANkoc.js +0 -39
- package/dist/useSortable-DLK9kwZp.js +0 -189
- /package/dist/{HoverCardContent-DGUhpRVt.js → HoverCardContent-ICfIMZX1.js} +0 -0
- /package/dist/{InstrumentChassis-CqKPBNqp.js → InstrumentChassis-DaHIZCqy.js} +0 -0
- /package/dist/{InstrumentRail-CCjvKkpB.js → InstrumentRail-B0qqLFN0.js} +0 -0
- /package/dist/{Label-D53EOwLE.js → Label-CZk-3nTc.js} +0 -0
- /package/dist/{PaperBackdrop-Ds-wDsKf.js → PaperBackdrop-D_YZW47j.js} +0 -0
- /package/dist/{SelectGroup-DAgcsfFw.js → SelectGroup-CMdoCjRE.js} +0 -0
- /package/dist/{SelectSeparator-DN1jzLaI.js → SelectSeparator-CaJnPF3_.js} +0 -0
- /package/dist/{Separator-DXxac0j8.js → Separator-C2XtAXRp.js} +0 -0
- /package/dist/{Switch-imA0Hdjs.js → Switch-x8n6husW.js} +0 -0
- /package/dist/{Toaster-Brs6QjBU.js → Toaster-DdhMKfus.js} +0 -0
- /package/dist/{TooltipProvider-MZFRxOvT.js → TooltipProvider-D-JrSqDu.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-DfWPi8kh.js → constants-DsCdlK9I.js} +0 -0
- /package/dist/{sheet-BnvZRXPq.js → sheet-CQYYrkr9.js} +0 -0
- /package/dist/{useGlassRenderer-C98tZnJ7.js → useGlassRenderer-Dn3WpfG-.js} +0 -0
- /package/dist/{useInterval-B58LmYth.js → useInterval-CHVYFpXV.js} +0 -0
- /package/dist/{useResizeObserver-C_7GjpRn.js → useResizeObserver-DX-STszm.js} +0 -0
- /package/dist/{useTextHighlight-CLST6an0.js → useTextHighlight-Dmtofpk2.js} +0 -0
- /package/dist/{useTimer-6FoosoDY.js → useTimer-DGgoxTXL.js} +0 -0
- /package/dist/{useUserInvalidAria-BW5iyqWR.js → useUserInvalidAria-DmvZ_6Dx.js} +0 -0
- /package/dist/{useViewTransition-CUJM7fXT.js → useViewTransition-D4ssvnXZ.js} +0 -0
|
@@ -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;
|
|
@@ -86,11 +86,11 @@ type __VLS_Slots = {} & {
|
|
|
86
86
|
description?: (props: typeof __VLS_16) => any;
|
|
87
87
|
};
|
|
88
88
|
declare const __VLS_base: import("vue").DefineComponent<MetricRowProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricRowProps> & Readonly<{}>, {
|
|
89
|
-
placeholder: string;
|
|
90
|
-
digitCount: number;
|
|
91
89
|
active: boolean;
|
|
90
|
+
placeholder: string;
|
|
92
91
|
iconStrokeWidth: number;
|
|
93
92
|
iconSize: number;
|
|
93
|
+
digitCount: number;
|
|
94
94
|
colorTinted: boolean;
|
|
95
95
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
96
96
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -37,11 +37,6 @@ export interface ResponsiveTabsProps {
|
|
|
37
37
|
* Falls back to `options` when unset.
|
|
38
38
|
*/
|
|
39
39
|
desktopOptions?: TabOption[] | null;
|
|
40
|
-
/**
|
|
41
|
-
* Currently-active value. Bound through `v-model`; the consumer
|
|
42
|
-
* receives `update:modelValue` whenever either control changes.
|
|
43
|
-
*/
|
|
44
|
-
modelValue: string;
|
|
45
40
|
/**
|
|
46
41
|
* CSS length string for the media query breakpoint. Mobile-control
|
|
47
42
|
* (Select) below; desktop-control (UnderlineTabs) at/above.
|
|
@@ -54,10 +49,21 @@ export interface ResponsiveTabsProps {
|
|
|
54
49
|
desktopClass?: HTMLAttributes["class"];
|
|
55
50
|
/** Class merged onto the mobile SelectTrigger only. */
|
|
56
51
|
mobileTriggerClass?: HTMLAttributes["class"];
|
|
52
|
+
/**
|
|
53
|
+
* Accessible name for the mobile `<SelectTrigger>` (axe `select-name` /
|
|
54
|
+
* WCAG 4.1.2 — the bare trigger carries only a `<SelectValue>`). Defaults to
|
|
55
|
+
* the active option's label.
|
|
56
|
+
*/
|
|
57
|
+
ariaLabel?: string;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
type __VLS_Props = ResponsiveTabsProps;
|
|
60
|
+
type __VLS_ModelProps = {
|
|
61
|
+
modelValue: string;
|
|
62
|
+
};
|
|
63
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
64
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
59
65
|
"update:modelValue": (value: string) => any;
|
|
60
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
66
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
61
67
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
62
68
|
}>, {
|
|
63
69
|
desktopOptions: TabOption[] | null;
|
|
@@ -9,8 +9,8 @@ declare function focus(): void;
|
|
|
9
9
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
|
|
10
10
|
focus: typeof focus;
|
|
11
11
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
12
|
-
placeholder: string;
|
|
13
12
|
variant: "sidebar" | "floating";
|
|
13
|
+
placeholder: string;
|
|
14
14
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
15
|
declare const _default: typeof __VLS_export;
|
|
16
16
|
export default _default;
|
|
@@ -16,8 +16,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
|
|
|
16
16
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
17
17
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
18
18
|
}>, {
|
|
19
|
-
placeholder: string;
|
|
20
19
|
modelValue: string;
|
|
20
|
+
placeholder: string;
|
|
21
21
|
tag: string;
|
|
22
22
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
23
23
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -10,10 +10,16 @@
|
|
|
10
10
|
* The default slot renders inside the handle — typically a
|
|
11
11
|
* grip glyph like `⋮⋮`.
|
|
12
12
|
*/
|
|
13
|
-
import { type Component } from "vue";
|
|
13
|
+
import { type ButtonHTMLAttributes, type Component } from "vue";
|
|
14
14
|
type __VLS_Props = {
|
|
15
15
|
/** Root element tag. Default `"span"`. */
|
|
16
16
|
as?: string | Component;
|
|
17
|
+
/**
|
|
18
|
+
* `<button>` type attribute — emitted only when the host is a `button`
|
|
19
|
+
* (an anchor/span grip carries no `type`). Spread through `$attrs`
|
|
20
|
+
* since `<component :is>` does not type element-specific attributes.
|
|
21
|
+
*/
|
|
22
|
+
type?: ButtonHTMLAttributes["type"];
|
|
17
23
|
};
|
|
18
24
|
declare var __VLS_8: {};
|
|
19
25
|
type __VLS_Slots = {} & {
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
* rendered outside a <SortableList> has no registration target and
|
|
19
19
|
* cannot function. The optional helper would be dead code.
|
|
20
20
|
*/
|
|
21
|
-
import { type InjectionKey } from "vue";
|
|
22
21
|
import type { UseSortableReturn } from "../../../composables/sortable";
|
|
23
|
-
export declare const SORTABLE_CONTEXT: InjectionKey<UseSortableReturn>;
|
|
22
|
+
export declare const SORTABLE_CONTEXT: import("vue").InjectionKey<UseSortableReturn>;
|
|
24
23
|
export declare function provideSortableContext(sortable: UseSortableReturn): void;
|
|
25
24
|
/** Strict — throws when used outside `<SortableList>`. */
|
|
26
|
-
export declare
|
|
25
|
+
export declare const useSortableContext: () => UseSortableReturn;
|
|
@@ -5,16 +5,19 @@ export interface TabOption {
|
|
|
5
5
|
}
|
|
6
6
|
type __VLS_Props = {
|
|
7
7
|
options: TabOption[];
|
|
8
|
-
modelValue: string;
|
|
9
8
|
/** "default" = subtle muted slider; "pill" = solid foreground pill */
|
|
10
9
|
variant?: "default" | "pill";
|
|
11
10
|
/** Tab-row overflow — see `<BouncyToggle>`. */
|
|
12
11
|
overflow?: "none" | "scroll" | "auto";
|
|
13
12
|
class?: HTMLAttributes["class"];
|
|
14
13
|
};
|
|
15
|
-
|
|
14
|
+
type __VLS_ModelProps = {
|
|
15
|
+
modelValue: string;
|
|
16
|
+
};
|
|
17
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
18
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
16
19
|
"update:modelValue": (value: string) => any;
|
|
17
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
20
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
18
21
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
19
22
|
}>, {
|
|
20
23
|
overflow: "none" | "scroll" | "auto";
|
|
@@ -8,7 +8,6 @@ export interface ToggleOption {
|
|
|
8
8
|
}
|
|
9
9
|
export interface BouncyToggleProps {
|
|
10
10
|
options: ToggleOption[];
|
|
11
|
-
modelValue: string | string[];
|
|
12
11
|
multiSelect?: boolean;
|
|
13
12
|
/** "default" = subtle muted slider; "pill" = solid foreground pill */
|
|
14
13
|
variant?: "default" | "pill";
|
|
@@ -25,6 +24,11 @@ export interface BouncyToggleProps {
|
|
|
25
24
|
overflow?: "none" | "scroll" | "auto";
|
|
26
25
|
class?: HTMLAttributes["class"];
|
|
27
26
|
}
|
|
27
|
+
type __VLS_Props = BouncyToggleProps;
|
|
28
|
+
type __VLS_ModelProps = {
|
|
29
|
+
modelValue: string | string[];
|
|
30
|
+
};
|
|
31
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
28
32
|
declare var __VLS_19: {
|
|
29
33
|
option: ToggleOption;
|
|
30
34
|
active: boolean;
|
|
@@ -37,9 +41,9 @@ type __VLS_Slots = {} & {
|
|
|
37
41
|
} & {
|
|
38
42
|
option?: (props: typeof __VLS_27) => any;
|
|
39
43
|
};
|
|
40
|
-
declare const __VLS_base: import("vue").DefineComponent<
|
|
44
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
41
45
|
"update:modelValue": (value: string | string[]) => any;
|
|
42
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
46
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
43
47
|
"onUpdate:modelValue"?: ((value: string | string[]) => any) | undefined;
|
|
44
48
|
}>, {
|
|
45
49
|
overflow: "none" | "scroll" | "auto";
|
|
@@ -5,12 +5,15 @@ export interface TabOption {
|
|
|
5
5
|
}
|
|
6
6
|
type __VLS_Props = {
|
|
7
7
|
options: TabOption[];
|
|
8
|
-
modelValue: string;
|
|
9
8
|
class?: HTMLAttributes["class"];
|
|
10
9
|
};
|
|
11
|
-
|
|
10
|
+
type __VLS_ModelProps = {
|
|
11
|
+
modelValue: string;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
14
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
15
|
"update:modelValue": (value: string) => any;
|
|
13
|
-
}, string, import("vue").PublicProps, Readonly<
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
14
17
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
15
18
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
19
|
declare const _default: typeof __VLS_export;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Ref, type ComputedRef } from "vue";
|
|
2
|
+
import type { ToggleOption } from "../BouncyToggle.vue";
|
|
3
|
+
/**
|
|
4
|
+
* Package-private composable for `BouncyToggle.vue` — owns the JS-measured
|
|
5
|
+
* slider path: the single- and multi-select slider styles, the offset measure,
|
|
6
|
+
* the model/options re-measure watchers, and the ResizeObserver lifecycle.
|
|
7
|
+
*
|
|
8
|
+
* The composable is the SOLE writer of the JS slider styles. It runs only on
|
|
9
|
+
* the multi-select OR `@supports not (anchor)` branch — on an anchor-supporting
|
|
10
|
+
* single-select engine the CSS `anchor-name` owns the slider position and this
|
|
11
|
+
* path stays dormant (no RO is constructed, no measure runs). The split is a
|
|
12
|
+
* KISS transposition of the logic formerly inlined in the SFC; rendered DOM and
|
|
13
|
+
* behavior are unchanged.
|
|
14
|
+
*/
|
|
15
|
+
export interface UseBouncySliderParams {
|
|
16
|
+
/** The container scroller root (observed by the ResizeObserver). */
|
|
17
|
+
containerRef: Ref<HTMLElement | null>;
|
|
18
|
+
/** Per-option button refs, index-aligned to `options`. */
|
|
19
|
+
buttonRefs: Ref<HTMLElement[]>;
|
|
20
|
+
/** The toggle options (re-measure on change). */
|
|
21
|
+
options: ComputedRef<ToggleOption[]>;
|
|
22
|
+
/** The defineModel value (re-measure on change). */
|
|
23
|
+
model: Ref<string | string[] | undefined>;
|
|
24
|
+
/** True for the multi-select path. */
|
|
25
|
+
multiSelect: ComputedRef<boolean>;
|
|
26
|
+
/** Whether the browser supports CSS anchor positioning. */
|
|
27
|
+
anchorSupported: boolean;
|
|
28
|
+
/** True when ANY JS slider writer is live (gates RO/watcher attach). */
|
|
29
|
+
jsSliderActive: ComputedRef<boolean>;
|
|
30
|
+
/** The active option values (used by the multi-slider measure). */
|
|
31
|
+
activeValues: ComputedRef<string[]>;
|
|
32
|
+
}
|
|
33
|
+
export interface UseBouncySliderReturn {
|
|
34
|
+
/** Inline style for the single-select JS slider. */
|
|
35
|
+
singleSliderStyle: Ref<Record<string, string>>;
|
|
36
|
+
/** Inline styles for each active multi-select slider, keyed by value. */
|
|
37
|
+
multiSliderStyles: Ref<Record<string, Record<string, string>>>;
|
|
38
|
+
}
|
|
39
|
+
export declare function useBouncySlider(params: UseBouncySliderParams): UseBouncySliderReturn;
|