@mkbabb/glass-ui 3.11.2 → 3.13.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/{CardAction-DuArVky-.js → CardAction-Cj2eycQ2.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-RowNEO6i.js} +4 -4
- package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-BQmxTAdw.js} +4 -4
- package/dist/{DataTable-CUHMukiQ.js → DataTable-BCddn3T3.js} +3 -3
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-Dl9WkAoS.js} +3 -3
- package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-Blu4t7tJ.js} +2 -2
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CISOJQuZ.js} +1 -1
- package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DPzE09X9.js} +1 -1
- package/dist/MetricBadge-C9QMz1KT.js +79 -0
- package/dist/{Notification-DLMhblXR.js → Notification-DdwNxIrI.js} +2 -2
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CqaN-SvN.js} +3 -3
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-BYwt2-4x.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DfFrwSph.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-CiDUxfEj.js} +6 -6
- package/dist/{Switch-Ch-k3Rv-.js → Switch-CsIuYP_e.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-Dttss653.js} +9 -5
- package/dist/{Toaster-1rYWrmAm.js → Toaster-D6q4HtXu.js} +50 -47
- package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-D_AHlRw9.js} +18 -22
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +5 -2
- package/dist/api.js +2 -2
- package/dist/aurora.js +69 -69
- package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-ChXMfsud.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.js +8 -8
- package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
- package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
- package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
- package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
- package/dist/coalesceMetric-5qIeZnTx.js +13 -0
- package/dist/{color-C5ls_QF7.js → color-CUYeFbgd.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
- package/dist/components/custom/aurora/constants/presets.d.ts +5 -62
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
- package/dist/components/custom/aurora/index.d.ts +1 -1
- package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +74 -6
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +61 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
- package/dist/components/custom/constellation/constellationField.d.ts +116 -149
- package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
- package/dist/components/custom/constellation/index.d.ts +5 -2
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockRail.vue.d.ts +88 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/index.d.ts +1 -0
- package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +48 -0
- package/dist/components/custom/dock/index.d.ts +3 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +5 -37
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
- package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
- package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
- package/dist/components/custom/metric-badge/index.d.ts +1 -0
- package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
- package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
- package/dist/components/custom/tabs/constants.d.ts +12 -0
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
- package/dist/components/custom/underline/index.d.ts +2 -0
- package/dist/components/custom/underline/types.d.ts +56 -0
- package/dist/components/ui/card/Card.vue.d.ts +15 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- 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/ToggleGroup.vue.d.ts +1 -7
- package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
- package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/dark/index.d.ts +1 -1
- package/dist/composables/dark/useGlobalDark.d.ts +1 -21
- package/dist/composables/glass/index.d.ts +0 -1
- package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +1 -1
- package/dist/composables/motion/curves.d.ts +48 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +33 -0
- package/dist/composables/motion/suite.d.ts +2 -0
- package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
- package/dist/composables/motion/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +336 -222
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +47 -13
- package/dist/dark.d.ts +1 -1
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +705 -365
- package/dist/dockContext-BegmJVmx.js +17 -0
- package/dist/dom.js +5 -5
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DzkkyBwX.js} +11 -8
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +39 -80
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +134 -99
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +86 -20
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +222 -212
- package/dist/goo-blob.js +243 -212
- 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 -3
- package/dist/instrument-chassis.js +1 -1
- package/dist/keyboard.js +1 -1
- package/dist/label.js +1 -1
- package/dist/labeled-field.js +28 -18
- package/dist/{math-DTpRVC0e.js → math-U6-RrLmV.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +25 -21
- package/dist/metric-stack.js +35 -34
- package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
- package/dist/motion-core.js +32 -137
- package/dist/motion-curves.d.ts +1 -0
- package/dist/motion-curves.js +130 -0
- package/dist/motion.js +38 -37
- 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-BP_ALM0m.js → presets-BKVyQfbt.js} +1 -14
- package/dist/progress.js +1 -1
- package/dist/reactive.js +2 -2
- package/dist/scrolling-text.js +1 -1
- package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
- package/dist/search.js +9 -9
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-1fChZjtw.js} +3 -3
- package/dist/sheet.js +1 -1
- package/dist/{slider-ClgpP7EB.js → slider-B-JP2JlI.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets--YdWTHtm.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +29 -114
- package/dist/styles/cards.css +55 -0
- package/dist/styles/components.css +4 -1
- package/dist/styles/configurator.css +42 -0
- package/dist/styles/dock/layer-group.css +83 -25
- package/dist/styles/dock/layers.css +23 -1
- package/dist/styles/dock/morph-bridge.css +123 -0
- package/dist/styles/dock/morph.css +175 -45
- package/dist/styles/dock/overflow.css +51 -1
- package/dist/styles/dock/rail-extend.css +300 -0
- package/dist/styles/dock/shell.css +63 -105
- package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/dist/styles/dock-controls/icon-button.css +133 -0
- package/dist/styles/dock-controls/tab-button.css +202 -0
- package/dist/styles/dock-controls/touch-floor.css +94 -0
- package/dist/styles/dock-controls/triggers.css +128 -0
- package/dist/styles/dock-controls.css +30 -595
- package/dist/styles/dock.css +2 -0
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +17 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +337 -0
- package/dist/styles/glass/material.css +238 -0
- package/dist/styles/glass/progress-rail.css +78 -0
- package/dist/styles/glass/squircle.css +66 -0
- package/dist/styles/glass/surfaces.css +306 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +31 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +28 -14
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/segmented-tabs.css +275 -0
- package/dist/styles/theme/bridges.css +337 -0
- package/dist/styles/theme/dark.css +7 -0
- package/dist/styles/theme/literals.css +94 -0
- package/dist/styles/theme/radius.css +95 -0
- package/dist/styles/theme.css +26 -529
- package/dist/styles/tokens/color-radius.css +260 -0
- package/dist/styles/tokens/dark-arm.css +200 -0
- package/dist/styles/tokens/glass.css +440 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +500 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +366 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +166 -0
- package/dist/styles/tokens.css +22 -2360
- package/dist/styles/typography.css +75 -21
- package/dist/styles/utilities/a11y-overrides.css +140 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +365 -0
- package/dist/styles/utilities/btn.css +401 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1291
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +91 -82
- package/dist/timeline.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C5I3wWd8.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-DAoeHVue.js} +8 -8
- package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-yhL4Wp-s.js} +3 -22
- package/dist/useLiquidFlex-BL0lLLN2.js +30 -0
- package/dist/useRAFLoop-Bxv0o6L5.js +109 -0
- package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-Dlvx-L3v.js} +1 -1
- package/dist/useSpecularTracking-Bo5su68i.js +32 -0
- package/dist/useSpringMount-CI2jOstM.js +108 -0
- package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-Dg7MQI1G.js} +1 -1
- package/dist/utils/coalesceMetric.d.ts +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +11 -9
- package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
- package/package.json +78 -58
- package/src/styles/animations.css +29 -114
- package/src/styles/cards.css +53 -0
- package/src/styles/configurator.css +42 -0
- package/src/styles/dock/layer-group.css +83 -25
- package/src/styles/dock/layers.css +23 -1
- package/src/styles/dock/morph-bridge.css +123 -0
- package/src/styles/dock/morph.css +175 -45
- package/src/styles/dock/overflow.css +51 -1
- package/src/styles/dock/rail-extend.css +300 -0
- package/src/styles/dock/shell.css +63 -105
- package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/src/styles/dock-controls/icon-button.css +133 -0
- package/src/styles/dock-controls/tab-button.css +202 -0
- package/src/styles/dock-controls/touch-floor.css +94 -0
- package/src/styles/dock-controls/triggers.css +128 -0
- package/src/styles/dock-controls.css +30 -595
- package/src/styles/dock.css +2 -0
- package/src/styles/floating-panel.css +15 -0
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +337 -0
- package/src/styles/glass/material.css +238 -0
- package/src/styles/glass/progress-rail.css +78 -0
- package/src/styles/glass/squircle.css +66 -0
- package/src/styles/glass/surfaces.css +306 -0
- package/src/styles/glass.css +31 -1188
- package/src/styles/index.css +28 -14
- package/src/styles/paper.css +2 -68
- package/src/styles/segmented-tabs.css +271 -0
- package/src/styles/theme/bridges.css +337 -0
- package/src/styles/theme/dark.css +7 -0
- package/src/styles/theme/literals.css +94 -0
- package/src/styles/theme/radius.css +95 -0
- package/src/styles/theme.css +26 -529
- package/src/styles/tokens/color-radius.css +260 -0
- package/src/styles/tokens/dark-arm.css +200 -0
- package/src/styles/tokens/glass.css +440 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +500 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +366 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +166 -0
- package/src/styles/tokens.css +22 -2360
- package/src/styles/typography.css +75 -21
- package/src/styles/utilities/a11y-overrides.css +140 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +365 -0
- package/src/styles/utilities/btn.css +401 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1291
- package/src/styles/view-transition.css +0 -51
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/MetricBadge-BZVWIxNy.js +0 -80
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
- package/dist/components/custom/deck-progress/index.d.ts +0 -2
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
- package/dist/components/custom/dialog-native/index.d.ts +0 -1
- package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -242
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -50
- package/dist/components/custom/handmark/index.d.ts +0 -21
- package/dist/components/custom/handmark/ink.d.ts +0 -11
- package/dist/components/custom/handmark/texture.d.ts +0 -39
- package/dist/components/custom/handmark/types.d.ts +0 -53
- package/dist/components/custom/handmark/useHandMark.d.ts +0 -87
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +0 -42
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -663
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/styles/instrument-rail.css +0 -127
- package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-zUIQk-rJ.js +0 -53
- package/src/styles/instrument-rail.css +0 -127
- /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-CT3AS1WX.js} +0 -0
- /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-Csywg3YF.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-DWQQIOC4.js} +0 -0
- /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-zRfbQdCn.js → Label-r3WzWrsj.js} +0 -0
- /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-DVLI2VRr.js} +0 -0
- /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-DIXTtVq6.js} +0 -0
- /package/dist/{Progress-iEuD9pxG.js → Progress-DwlUKGbr.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-aumMgWLs.js} +0 -0
- /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-BQ_1Fcbp.js} +0 -0
- /package/dist/{Separator-D7sD7RKj.js → Separator-0JE6LtNu.js} +0 -0
- /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-B7NGOBcP.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-CS75AWHG.js} +0 -0
- /package/dist/{createContext-B44Sah_H.js → createContext-BM46COQ-.js} +0 -0
- /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
- /package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DPiEarb0.js} +0 -0
- /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Cc-H9ees.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-iHludrxk.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-Be3w_Rwk.js} +0 -0
- /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-BhgdhOIj.js} +0 -0
- /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-Dvn2RZJW.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-muI29agz.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-DmRYkOBx.js} +0 -0
- /package/dist/{useTimer-3xqf_54b.js → useTimer-Dzarvzuk.js} +0 -0
- /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-B2h6jAM_.js} +0 -0
- /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-B40FK4Pa.js} +0 -0
|
@@ -7,7 +7,10 @@ export { default as DockTabButton } from "./DockTabButton.vue";
|
|
|
7
7
|
export { default as DockSelectTrigger } from "./DockSelectTrigger.vue";
|
|
8
8
|
export { default as DockDropdownTrigger } from "./DockDropdownTrigger.vue";
|
|
9
9
|
export { default as DockSeparator } from "./DockSeparator.vue";
|
|
10
|
+
export { default as DockRail } from "./DockRail.vue";
|
|
11
|
+
export type { DockRailItem } from "./constants";
|
|
10
12
|
export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./composables";
|
|
11
13
|
export { useLayerTransition } from "./composables";
|
|
12
14
|
export type { UseLayerTransitionOptions, UseLayerTransitionReturn, } from "./composables";
|
|
13
15
|
export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, type DockLayout, } from "./composables/dockContext";
|
|
16
|
+
export { useDockOrientationMorph, type DockMorphOrientation, type UseDockOrientationMorphOptions, type UseDockOrientationMorphReturn, } from "./composables/useDockOrientationMorph";
|
|
@@ -6,20 +6,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
6
6
|
expandLabel?: string;
|
|
7
7
|
/** Accessible name for the collapse (exit fullscreen) button. */
|
|
8
8
|
collapseLabel?: string;
|
|
9
|
-
/**
|
|
10
|
-
* Opt into the `gl-expand` plate → fullscreen MORPH (D6.c M7). When set,
|
|
11
|
-
* the inline anchor and the teleported fullscreen surface share ONE
|
|
12
|
-
* `view-transition-name` (this prop, suffixed by an app-unique `useId()`
|
|
13
|
-
* so two ExpandableContainers on a page never collide their groups — the
|
|
14
|
-
* proof:vt-names mandate), and the open/close toggle is wrapped in
|
|
15
|
-
* `startViewTransition` so the plate's rect MORPHS to the fullscreen rect
|
|
16
|
-
* (and back) instead of jump-cutting. A passed string namespaces the pair
|
|
17
|
-
* (e.g. `"chart"`); pass an empty string for a bare `useId()` name.
|
|
18
|
-
* Omitted (default) ⇒ NO view-transition-name, the legacy instant toggle —
|
|
19
|
-
* byte-identical to the pre-M7 behaviour. PRM + unsupported engines take
|
|
20
|
-
* `startViewTransition`'s instant fallback (the open/close still runs).
|
|
21
|
-
*/
|
|
22
|
-
viewTransitionName?: string;
|
|
23
9
|
} & {
|
|
24
10
|
/**
|
|
25
11
|
* Two-way `open` model so consumers can drive fullscreen externally
|
|
@@ -27,13 +13,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
27
13
|
* buttons continue to operate without parent wiring.
|
|
28
14
|
*/
|
|
29
15
|
open?: boolean;
|
|
30
|
-
}, {
|
|
31
|
-
anchorEl: Readonly<import("vue").ShallowRef<HTMLElement | null>>;
|
|
32
|
-
surfaceEl: Readonly<import("vue").ShallowRef<HTMLElement | null>>;
|
|
33
|
-
expand: () => void;
|
|
34
|
-
collapse: () => void;
|
|
35
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
36
|
-
settle: (fullscreen: boolean) => any;
|
|
16
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
37
17
|
"update:open": (value: boolean) => any;
|
|
38
18
|
}, string, import("vue").PublicProps, Readonly<{
|
|
39
19
|
buttonPosition?: "left" | "right";
|
|
@@ -41,20 +21,6 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
41
21
|
expandLabel?: string;
|
|
42
22
|
/** Accessible name for the collapse (exit fullscreen) button. */
|
|
43
23
|
collapseLabel?: string;
|
|
44
|
-
/**
|
|
45
|
-
* Opt into the `gl-expand` plate → fullscreen MORPH (D6.c M7). When set,
|
|
46
|
-
* the inline anchor and the teleported fullscreen surface share ONE
|
|
47
|
-
* `view-transition-name` (this prop, suffixed by an app-unique `useId()`
|
|
48
|
-
* so two ExpandableContainers on a page never collide their groups — the
|
|
49
|
-
* proof:vt-names mandate), and the open/close toggle is wrapped in
|
|
50
|
-
* `startViewTransition` so the plate's rect MORPHS to the fullscreen rect
|
|
51
|
-
* (and back) instead of jump-cutting. A passed string namespaces the pair
|
|
52
|
-
* (e.g. `"chart"`); pass an empty string for a bare `useId()` name.
|
|
53
|
-
* Omitted (default) ⇒ NO view-transition-name, the legacy instant toggle —
|
|
54
|
-
* byte-identical to the pre-M7 behaviour. PRM + unsupported engines take
|
|
55
|
-
* `startViewTransition`'s instant fallback (the open/close still runs).
|
|
56
|
-
*/
|
|
57
|
-
viewTransitionName?: string;
|
|
58
24
|
} & {
|
|
59
25
|
/**
|
|
60
26
|
* Two-way `open` model so consumers can drive fullscreen externally
|
|
@@ -63,10 +29,8 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
63
29
|
*/
|
|
64
30
|
open?: boolean;
|
|
65
31
|
}> & Readonly<{
|
|
66
|
-
onSettle?: ((fullscreen: boolean) => any) | undefined;
|
|
67
32
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
68
33
|
}>, {
|
|
69
|
-
viewTransitionName: string;
|
|
70
34
|
buttonPosition: "left" | "right";
|
|
71
35
|
expandLabel: string;
|
|
72
36
|
collapseLabel: string;
|
|
@@ -74,6 +38,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
74
38
|
default?: (props: {
|
|
75
39
|
fullscreen: boolean;
|
|
76
40
|
}) => any;
|
|
41
|
+
} & {
|
|
42
|
+
default?: (props: {
|
|
43
|
+
fullscreen: boolean;
|
|
44
|
+
}) => any;
|
|
77
45
|
}>;
|
|
78
46
|
type __VLS_WithSlots<T, S> = T & {
|
|
79
47
|
new (): {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ColorResolver } from "../../../composables/color";
|
|
2
2
|
export { default as FourierField } from "./FourierField.vue";
|
|
3
|
-
export { comp, positionsAt, makeEllipticSpectrum, type BasisComponent, type EllipticSpectrumOptions, } from "./math";
|
|
3
|
+
export { comp, positionsAt, dftFromPoints, makeEllipticSpectrum, type BasisComponent, type EllipticSpectrumOptions, } from "./math";
|
|
4
4
|
/** The configuration-BUNDLE axis — `hero` (epicycles on, fewer harmonics) vs
|
|
5
5
|
* `final` (epicycles off, denser). Not a recolour of one curve; one engine,
|
|
6
6
|
* two presets. */
|
|
@@ -23,6 +23,23 @@ export declare function comp(index: number, re: number, im: number): BasisCompon
|
|
|
23
23
|
* carries).
|
|
24
24
|
*/
|
|
25
25
|
export declare function positionsAt(components: BasisComponent[], t: number, maxCircles?: number): [number, number][];
|
|
26
|
+
/**
|
|
27
|
+
* The forward DFT — the inverse of {@link positionsAt}. Takes a closed sequence
|
|
28
|
+
* of `[x, y]` samples around a curve (treated as the complex signal `x + i·y`,
|
|
29
|
+
* uniformly spaced in the parameter `t ∈ [0, 1)`) and returns the
|
|
30
|
+
* {@link BasisComponent} spectrum that {@link positionsAt} reconstructs.
|
|
31
|
+
*
|
|
32
|
+
* Frequencies run symmetrically around 0 — `0, +1, -1, +2, -2, …` up to the
|
|
33
|
+
* Nyquist limit — which is the index ordering the epicycle chain wants (the big
|
|
34
|
+
* low-order phasors first). The DC term (`index 0`) is the curve's centroid; the
|
|
35
|
+
* caller can subtract it (draw the chain centered) or keep it (draw at the
|
|
36
|
+
* sampled position).
|
|
37
|
+
*
|
|
38
|
+
* General: any point set drives it (a glyph outline, a hand-traced path, a
|
|
39
|
+
* digitized signature). It is NOT a special case — it is the literal forward
|
|
40
|
+
* transform whose inverse already ships as `positionsAt`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function dftFromPoints(points: [number, number][]): BasisComponent[];
|
|
26
43
|
/** Tuning for {@link makeEllipticSpectrum}. */
|
|
27
44
|
export interface EllipticSpectrumOptions {
|
|
28
45
|
/**
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export interface VariantPreset {
|
|
2
|
+
/** Higher-order harmonics layered over the dominant counter-rotating pair. */
|
|
3
|
+
harmonics: number;
|
|
4
|
+
/** Peak magnitude of those harmonics relative to the dominant phasor. */
|
|
5
|
+
harmonicScale: number;
|
|
6
|
+
/** Draw the nested epicycle circles + arms underneath the curve. */
|
|
7
|
+
epicycles: boolean;
|
|
8
|
+
/** Comet-trail capacity (frames of head history). ~1/3 of the period so the
|
|
9
|
+
* comet reads as a substantial arc, not a stub (the fourier-analysis bar). */
|
|
10
|
+
trailLength: number;
|
|
11
|
+
/** Hue offset (degrees) of the epicycle second hue away from the outline hue. */
|
|
12
|
+
epicycleHueShift: number;
|
|
13
|
+
/** Forward-clock period for one full curve traversal, in ms. */
|
|
14
|
+
durationMs: number;
|
|
15
|
+
/** A constant per-variant seed used under `freeze` so a capture is deterministic. */
|
|
16
|
+
frozenSeed: string;
|
|
17
|
+
/** The parameter `t` of the static best-frame painted under `freeze`. */
|
|
18
|
+
frozenT: number;
|
|
19
|
+
/** Comet-trail PEAK alpha (the head segment). The reference trail rides ~0.9
|
|
20
|
+
* near-opaque — present, not the prior 0.45 hairline whisper. */
|
|
21
|
+
peakAlpha: number;
|
|
22
|
+
/** Trail stroke weight in CSS px (the reference is a BOLD 3.5px stroke, not
|
|
23
|
+
* the prior 1.6 hairline). The single biggest faintness lever. */
|
|
24
|
+
trailWidth: number;
|
|
25
|
+
/** Head-glow alpha — the STRONGEST layer (head-forward: > peakAlpha). */
|
|
26
|
+
headGlowAlpha: number;
|
|
27
|
+
/** Head-glow `shadowBlur` bloom radius, in px. */
|
|
28
|
+
headGlowBlur: number;
|
|
29
|
+
/** The comet HEAD DOT radius in CSS px (the reference's glowing tip — a
|
|
30
|
+
* saturated core + white highlight + soft halo). 0 disables it. */
|
|
31
|
+
headDotRadius: number;
|
|
32
|
+
/** Epicycle scaffolding alphas ÷ peak (hero only; {0,0} disables the scaffold).
|
|
33
|
+
* The reference circles/arms are PRESENT (≈0.5/0.75), not the prior 0.18 ghost. */
|
|
34
|
+
epicycleRatios: {
|
|
35
|
+
circle: number;
|
|
36
|
+
arm: number;
|
|
37
|
+
};
|
|
38
|
+
/** Epicycle circle / arm stroke weights in CSS px (the reference uses a bold
|
|
39
|
+
* ≈2.5/2 chain, the joints carry filled dots). */
|
|
40
|
+
epicycleWidths: {
|
|
41
|
+
circle: number;
|
|
42
|
+
arm: number;
|
|
43
|
+
};
|
|
44
|
+
/** Paint the epicycle chain as a rainbow across the spectrum (the
|
|
45
|
+
* fourier-analysis signature) vs one analogous second hue. Hero only. */
|
|
46
|
+
epicycleRainbow: boolean;
|
|
47
|
+
/** Trail persistence exponent — SOFT (1..2), never the quadratic that kills the body. */
|
|
48
|
+
trailFadeExp: number;
|
|
49
|
+
/** Min trail alpha ÷ peak — the body survives, never decays to 0. The
|
|
50
|
+
* reference body reads near-uniform; the floor sits HIGH (≈0.35) so the
|
|
51
|
+
* comet body has real presence on cream too (the light-mode floor fork). */
|
|
52
|
+
trailFloor: number;
|
|
53
|
+
}
|
|
54
|
+
export declare const PRESETS: Record<"hero" | "final", VariantPreset>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type MetaballUniformLocations } from "./uploadBlobUniforms";
|
|
2
|
+
/** The compiled-program handles the renderer closes over + tears down. */
|
|
3
|
+
export interface MetaballProgram {
|
|
4
|
+
prog: WebGLProgram;
|
|
5
|
+
vs: WebGLShader;
|
|
6
|
+
fs: WebGLShader;
|
|
7
|
+
vao: WebGLVertexArrayObject;
|
|
8
|
+
buf: WebGLBuffer;
|
|
9
|
+
locs: MetaballUniformLocations;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Compile the metaball shader, build the full-quad VAO, and resolve the uniform
|
|
13
|
+
* location cache on a fresh context. Leaves `BLEND` enabled with the
|
|
14
|
+
* premultiplied-alpha `(ONE, ONE_MINUS_SRC_ALPHA)` blend func (the source's
|
|
15
|
+
* setup), `prog` in use, and the VAO bound — the caller's `resize`/`drawFrame`
|
|
16
|
+
* re-bind as needed.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildMetaballProgram(gl: WebGL2RenderingContext): MetaballProgram;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { BlobConfig, MoodParams } from "../types";
|
|
2
|
+
import type { BlobPointer } from "./useBlobPointer";
|
|
3
|
+
import type { BlobSatelliteSystem } from "./useBlobSatellites";
|
|
4
|
+
import { MAX_SATS, TRAIL_N, MAX_BLOB_STOPS, POS_SCALE, UNIFORM_NAMES } from "../constants";
|
|
5
|
+
import type { UniformName } from "../constants";
|
|
6
|
+
export { MAX_SATS, TRAIL_N, MAX_BLOB_STOPS, POS_SCALE, UNIFORM_NAMES };
|
|
7
|
+
export type { UniformName };
|
|
8
|
+
/** The cached uniform-location set the GL setup builds once per context. */
|
|
9
|
+
export interface MetaballUniformLocations {
|
|
10
|
+
U: Record<UniformName, WebGLUniformLocation | null>;
|
|
11
|
+
satPosLocs: (WebGLUniformLocation | null)[];
|
|
12
|
+
satRadLocs: (WebGLUniformLocation | null)[];
|
|
13
|
+
satOpLocs: (WebGLUniformLocation | null)[];
|
|
14
|
+
trailPosLocs: (WebGLUniformLocation | null)[];
|
|
15
|
+
trailRadLocs: (WebGLUniformLocation | null)[];
|
|
16
|
+
paletteLocs: (WebGLUniformLocation | null)[];
|
|
17
|
+
}
|
|
18
|
+
/** The per-frame state the renderer resolves and hands to the upload leaf. */
|
|
19
|
+
export interface BlobFrameState {
|
|
20
|
+
/** The mood params for this frame (`mood.params.value`). */
|
|
21
|
+
params: MoodParams;
|
|
22
|
+
/** The resolved base-color gamma-sRGB triple. */
|
|
23
|
+
rgb: [number, number, number];
|
|
24
|
+
/** The tempo-integrated motion clock (ms). */
|
|
25
|
+
simTimeMs: number;
|
|
26
|
+
/** The substrate's seconds clock for this frame (the pulse-phase axis). */
|
|
27
|
+
timeSec: number;
|
|
28
|
+
/** A CONCRETE → gamma-sRGB triple resolver (the renderer's memoised `/color` leaf). */
|
|
29
|
+
resolveColor: (css: string) => [number, number, number];
|
|
30
|
+
/** The Fresnel rim color (CONCRETE — the SFC un-wrapped any var()-token). */
|
|
31
|
+
rimColor: string;
|
|
32
|
+
/** The multi-stop palette (CONCRETE strings; EMPTY → falls back to base). */
|
|
33
|
+
paletteStops: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Write the resolved frame state into the metaball program's uniforms and issue
|
|
37
|
+
* the draw call. Pure: it mutates GL state only (the bound program/VAO + the
|
|
38
|
+
* uniform values) and never reads the renderer's closure. The body is the
|
|
39
|
+
* byte-identical lift of the prior inline `drawFrame` uniform-upload section.
|
|
40
|
+
*/
|
|
41
|
+
export declare function uploadBlobUniforms(gl: WebGL2RenderingContext, prog: WebGLProgram, vao: WebGLVertexArrayObject, locs: MetaballUniformLocations, canvas: HTMLCanvasElement, config: BlobConfig, pointer: BlobPointer, satellites: BlobSatelliteSystem, frame: BlobFrameState): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Ref } from "vue";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { TRAIL_N } from "../constants";
|
|
3
|
+
/** Compile-time trail length — re-exported from the co-located shape budget (`../constants`). */
|
|
4
|
+
export { TRAIL_N };
|
|
4
5
|
/** A single trail sample — a decaying-radius metaball source the shader smin-merges. */
|
|
5
6
|
export interface TrailSample {
|
|
6
7
|
x: number;
|
|
@@ -13,7 +14,7 @@ export interface TrailSample {
|
|
|
13
14
|
* FRAME-RATE-INDEPENDENT critically-damped spring fed the renderer's per-frame
|
|
14
15
|
* `dtMs` (NOT a fixed-α lerp — the prior `SMOOTH_FACTOR = 0.12` was framerate
|
|
15
16
|
* dependent). The spring is `@mkbabb/keyframes.js` `SpringProgress` driven through
|
|
16
|
-
* its `
|
|
17
|
+
* its `tickDt(dtMs)` seam by the SUBSTRATE's single rAF — it does NOT call
|
|
17
18
|
* `SpringProgress.play()` (that would start a parallel rAF, the
|
|
18
19
|
* single-substrate-loop violation `proof:blob-interaction-prm` forbids).
|
|
19
20
|
*
|
|
@@ -24,14 +24,20 @@ export interface UseMetaballRendererOptions {
|
|
|
24
24
|
satellites: BlobSatelliteSystem;
|
|
25
25
|
config: BlobConfig;
|
|
26
26
|
}
|
|
27
|
+
/** The renderer's public control surface — pause/resume the demand loop. */
|
|
28
|
+
export interface UseMetaballRendererReturn {
|
|
29
|
+
pause: () => void;
|
|
30
|
+
resume: () => void;
|
|
31
|
+
}
|
|
27
32
|
/**
|
|
28
33
|
* The GooBlob WebGL renderer — composes the `useWebGLCanvas` substrate (AU.W6).
|
|
29
34
|
*
|
|
30
35
|
* This module owns ONLY the metaball-specific concerns: compiling the shader,
|
|
31
|
-
* building the quad + uniform cache
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
36
|
+
* building the quad + uniform cache (the `buildMetaballProgram` leaf), and
|
|
37
|
+
* uploading the per-frame uniforms (the `uploadBlobUniforms` leaf) derived from the
|
|
38
|
+
* mood / pointer / satellite systems and the resolved base color. The generic
|
|
39
|
+
* WebGL2 lifecycle — context creation, the suspend/resume model, the demand-driven
|
|
40
|
+
* rAF loop, the tab-visibility owner, the ResizeObserver, and the
|
|
35
41
|
* webglcontextlost/restored robustness — lives in the substrate; this renderer
|
|
36
42
|
* threads its behaviour through the substrate's
|
|
37
43
|
* `setup`/`frame`/`shouldContinue`/`resize`/`teardown` callbacks. It does NOT call
|
|
@@ -43,7 +49,4 @@ export interface UseMetaballRendererOptions {
|
|
|
43
49
|
* a `var(--token)` — the SFC's `resolveTokenColor` leaf does that BEFORE handing
|
|
44
50
|
* concrete strings here (inv-K-3 seam); the value.js 1×1-canvas DOM probe is gone.
|
|
45
51
|
*/
|
|
46
|
-
export declare function useMetaballRenderer(options: UseMetaballRendererOptions):
|
|
47
|
-
pause: () => void;
|
|
48
|
-
resume: () => void;
|
|
49
|
-
};
|
|
52
|
+
export declare function useMetaballRenderer(options: UseMetaballRendererOptions): UseMetaballRendererReturn;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { BlobMood, MoodParams } from "./types";
|
|
2
|
+
/** Compile-time satellite cap — mirrors `uSat*[N]` in metaball.frag.ts. */
|
|
3
|
+
export declare const MAX_SATS = 4;
|
|
4
|
+
/** Compile-time trail length — mirrors the `uTrail*[N]` arrays in metaball.frag.ts. */
|
|
5
|
+
export declare const TRAIL_N = 15;
|
|
6
|
+
/** Compile-time palette cap — mirrors `#define MAX_BLOB_STOPS` in metaball-uniforms.glsl.ts. */
|
|
7
|
+
export declare const MAX_BLOB_STOPS = 4;
|
|
8
|
+
/**
|
|
9
|
+
* Canvas is CSS-sized 1.6x its layout wrapper (see GooBlob.vue). Positions are in
|
|
10
|
+
* [-0.5, 0.5] normalized space mapped to canvas UVs. To make the layout footprint
|
|
11
|
+
* represent the "visible blob region" and have the extra 60% of canvas serve as
|
|
12
|
+
* overflow margin for satellite orbits, scale all length-like uniforms by
|
|
13
|
+
* 1/1.6 = 0.625.
|
|
14
|
+
*/
|
|
15
|
+
export declare const POS_SCALE: number;
|
|
16
|
+
/** The full ordered scalar/vector uniform-name list the program builder caches a location per. */
|
|
17
|
+
/** A point in the 2-axis circumplex affect space. */
|
|
18
|
+
export interface AffectPoint {
|
|
19
|
+
/** Pleasantness, -1 (unpleasant) .. +1 (pleasant). */
|
|
20
|
+
valence: number;
|
|
21
|
+
/** Activation, 0 (calm/sleepy) .. 1 (energized/excited). */
|
|
22
|
+
arousal: number;
|
|
23
|
+
}
|
|
24
|
+
/** The five named moods as POINTS in the {valence, arousal} circumplex. */
|
|
25
|
+
export declare const MOOD_AVA: Record<BlobMood, AffectPoint>;
|
|
26
|
+
/**
|
|
27
|
+
* Derive the full MoodParams from a {valence, arousal} point. Arousal drives the
|
|
28
|
+
* motion energy (orbit speed, wobble, pulse rate/amp, noise, the iridescence/SSS
|
|
29
|
+
* sheen); valence warms the palette (hue range, chroma, brightness) and the
|
|
30
|
+
* pointer lean. ONE principled surface — the five named moods are samples of it.
|
|
31
|
+
*/
|
|
32
|
+
export declare function paramsFor({ valence, arousal }: AffectPoint): MoodParams;
|
|
33
|
+
/** The resolved per-mood target params (samples of the `paramsFor` surface). */
|
|
34
|
+
export declare const MOOD_TARGETS: Record<BlobMood, MoodParams>;
|
|
35
|
+
/** The per-mood cross-fade duration (ms). */
|
|
36
|
+
export declare const TRANSITION_MS: Record<BlobMood, number>;
|
|
37
|
+
/** Idle timeout (ms of no pointer) after which the blob drifts to `sleepy`. */
|
|
38
|
+
export declare const IDLE_SLEEP_MS = 6000;
|
|
39
|
+
/** Click-impulse spring ring frequency (rad/s). */
|
|
40
|
+
export declare const PULSE_OMEGA = 18;
|
|
41
|
+
/** Click-impulse spring damping (< 1 = underdamped, overshoot-then-settle). */
|
|
42
|
+
export declare const PULSE_ZETA = 0.35;
|
|
43
|
+
/** The at-rest epsilon — velocity/position below this is "settled" (the park gate). */
|
|
44
|
+
export declare const REST_EPS = 0.001;
|
|
45
|
+
/** Base satellite opacity. */
|
|
46
|
+
export declare const BASE_OPACITY = 0.75;
|
|
47
|
+
/** Duration (ms) to blend from emerge endpoint into live orbit — eliminates snap. */
|
|
48
|
+
export declare const ORBIT_BLEND_MS = 2000;
|
|
49
|
+
/** Minimum spacing (ms) between satellite merge events. */
|
|
50
|
+
export declare const MERGE_STAGGER_MS = 3000;
|
|
51
|
+
export declare const UNIFORM_NAMES: readonly ["uResolution", "uTime", "uBaseColor", "uPointer", "uPointerActive", "uPointerAttraction", "uPointerStrength", "uBodyRadius", "uPulsePhase", "uPulseAmp", "uNoiseAmp", "uNoiseFreq", "uNoiseSpeed", "uWarpAmp", "uSmoothK", "uMerge", "uMaxReach", "uLit", "uRimColor", "uLightDir", "uSpecStrength", "uSpecShininess", "uRimPower", "uRimStrength", "uIridescence", "uIridHue", "uIridSpeed", "uSssScale", "uSssPower", "uCoreGlow", "uHueRange", "uSatShift", "uBrightnessShift", "uColorNoiseFreq", "uColorNoiseSpeed", "uStopCount", "uSatCount", "uTrailCount", "uVelocity", "uStretch"];
|
|
52
|
+
export type UniformName = (typeof UNIFORM_NAMES)[number];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const METABALL_UNIFORMS_GLSL = "#version 300 es\nprecision highp float;\n\nin vec2 vUv;\nout vec4 fragColor;\n\nuniform vec2 uResolution;\nuniform float uTime;\nuniform vec3 uBaseColor;\n\n// Multi-stop palette (W11.b) \u2014 2-4 in-family OKLCh stops (uploaded GAMMA sRGB, like\n// uBaseColor). uStopCount <= 1 falls back to uBaseColor (the single-color default,\n// zero regression). MAX_BLOB_STOPS is a compile-time #define.\n#define MAX_BLOB_STOPS 4\nuniform int uStopCount;\nuniform vec3 uPalette[MAX_BLOB_STOPS];\n\n// Pointer\nuniform vec2 uPointer;\nuniform float uPointerActive;\nuniform float uPointerAttraction;\nuniform float uPointerStrength;\n\n// Main body\nuniform float uBodyRadius;\n\n// Pulsation\nuniform float uPulsePhase;\nuniform float uPulseAmp;\n\n// Surface noise\nuniform float uNoiseAmp;\nuniform float uNoiseFreq;\nuniform float uNoiseSpeed;\n\n// Gooey\nuniform float uSmoothK;\nuniform float uMerge; // 0 = quadratic smin, 1 = circular smin (rounder menisci)\n\n// AX.W16 (arm 5) \u2014 the PRE-FBM bounding-discard radius (UV space). main() early-outs\n// to a transparent write for any fragment OUTSIDE this radius BEFORE the two 3-octave\n// FBM calls + the OKLCh round-trip. The renderer uploads it PADDED by every\n// outward-expanding term (body + eccentric orbit + sat radius + smin band + FBM edge\n// amplitude + click-pulse + a lean/squash safety pad) so it NEVER clips the wet\n// meniscus (IQ: inflate the bound to match any outward op).\nuniform float uMaxReach;\n\n// Membrane \u2014 domain-warp strength on the FBM edge displacement (0 = plain fbm).\nuniform float uWarpAmp;\n\n// Lit glass surface (W9.b) \u2014 gated behind uLit so the flat fill stays default.\nuniform float uLit; // 0 = flat fill (default), 1 = lit droplet\nuniform vec3 uRimColor; // Fresnel rim tint (GAMMA sRGB, via the /color leaf)\nuniform vec3 uLightDir; // normalized light direction (x, y, z)\nuniform float uSpecStrength; // Blinn-Phong specular weight\nuniform float uSpecShininess; // specular exponent (16-64, tight glint)\nuniform float uRimPower; // Fresnel/Schlick exponent (~2-3)\nuniform float uRimStrength; // Fresnel rim weight\n\n// Iridescence + fake subsurface (W11.a) \u2014 translucent-gel read.\nuniform float uIridescence; // warm-pearl rim sheen weight (0 = off)\nuniform float uIridHue; // base hue (radians) the cosine palette biases toward (warm)\nuniform float uIridSpeed; // animated-thickness scroll for the iridescent t\nuniform float uSssScale; // fast-SSS back-light weight\nuniform float uSssPower; // fast-SSS exponent\nuniform float uCoreGlow; // thickness-driven inner-luminosity lift\n\n// Color perturbation (perceptually uniform \u2014 OKLCh L/C/h)\nuniform float uHueRange; // degrees of hue swing (converted to radians)\nuniform float uSatShift; // OKLCh chroma swing\nuniform float uBrightnessShift; // OKLCh lightness bias\nuniform float uColorNoiseFreq;\nuniform float uColorNoiseSpeed;\n\n// Satellites (max 4)\n#define MAX_SATS 4\nuniform int uSatCount;\nuniform vec2 uSatPos[MAX_SATS];\nuniform float uSatRadius[MAX_SATS];\nuniform float uSatOpacity[MAX_SATS];\n\n// Pointer trail (W10) \u2014 a decaying-radius pseudopod toward the cursor. uTrail is a\n// COMPILE-TIME-SIZED array (GLSL ES 3.00 forbids a uniform-sized array) with a\n// DYNAMIC break on uTrailCount, mirroring the satellite loop. Later samples paint\n// smaller metaballs (r *= 1 - i/N) so the trail tapers into a tail.\n#define TRAIL_N 15\nuniform int uTrailCount;\nuniform vec2 uTrailPos[TRAIL_N];\nuniform float uTrailRadius[TRAIL_N];\n\n// Velocity-driven volume-preserving squash-and-stretch (W10).\nuniform vec2 uVelocity; // smoothed pointer velocity (motion direction + speed)\nuniform float uStretch; // squash-stretch magnitude (0 = off)\n\nconst float PI = 3.141592653589793;\n";
|
|
@@ -28,8 +28,8 @@ export type InstrumentChassisVariant = "glass" | "spine";
|
|
|
28
28
|
* the `<ChassisDivider>` adjacent to each — emit markup only when bound.
|
|
29
29
|
* I gate `<header>`, `<footer>`, and the two dividers on `$slots.strip` /
|
|
30
30
|
* `$slots.control` presence, so empty-slot consumers don't have to suppress
|
|
31
|
-
* the markup with `display: none` overrides
|
|
32
|
-
* idiom
|
|
31
|
+
* the markup with `display: none` overrides — the `v-if="$slots.status"`
|
|
32
|
+
* slot-gating idiom.
|
|
33
33
|
*
|
|
34
34
|
* The chassis owns the `--phase-color` cascade via `data-phase`; phase label,
|
|
35
35
|
* hero number, and phase progress fill all read it through one CSS custom
|
|
@@ -16,6 +16,19 @@ import { type HTMLAttributes } from "vue";
|
|
|
16
16
|
* cursor-help). The previous mixed `text-base` / `text-lg` literals
|
|
17
17
|
* harmonise on a single body-size token.
|
|
18
18
|
*
|
|
19
|
+
* AZ.W-BLOB-REDRESS — `hideLabel` VISUALLY hides the field's own label (it
|
|
20
|
+
* renders `sr-only` instead of `.labeled-field-label`) while KEEPING it in the
|
|
21
|
+
* DOM, so the `for`/`id`/`aria-labelledby` control↔label association — the
|
|
22
|
+
* Slider thumb's `aria-labelledby`, the Select trigger's `for` — stays intact
|
|
23
|
+
* and the control is still accessibly named. The visible human label is then
|
|
24
|
+
* supplied by an enclosing chrome row (a `<ConfiguratorRow label>`). This is
|
|
25
|
+
* the canonical fix for the double-label leak: a `<ConfiguratorRow label="X">`
|
|
26
|
+
* wrapping a `<LabeledSlider label="x">` rendered BOTH labels (the human one +
|
|
27
|
+
* the raw config key); the inner control passes `hide-label` so ONE visible
|
|
28
|
+
* human label remains, the raw key demotes to the row's mono `name` token, and
|
|
29
|
+
* a11y is preserved. The tooltip is suppressed when hidden (the row owns the
|
|
30
|
+
* affordance). NO effect on `LabeledField` used standalone (default `false`).
|
|
31
|
+
*
|
|
19
32
|
* AQ.W4 §W4.5 — `required` threads a `aria-hidden` asterisk onto the label
|
|
20
33
|
* (the `required` attr on the slotted control is the semantic carrier). The
|
|
21
34
|
* `error` slot renders an error-message region that the W3.1c
|
|
@@ -24,12 +37,36 @@ import { type HTMLAttributes } from "vue";
|
|
|
24
37
|
* default slot's `errorId` slot-prop so the slotted control can bind
|
|
25
38
|
* `aria-errormessage="errorId"` (the four wrappers auto-wire it; a raw
|
|
26
39
|
* `<LabeledField>` slot binds it manually).
|
|
40
|
+
*
|
|
41
|
+
* # LabeledField vs ConfiguratorRow — recorded divergence (AZ.W-METRIC-UNIFY §B)
|
|
42
|
+
*
|
|
43
|
+
* Both are "label (+ meta) above/beside a slotted control", but they are NOT
|
|
44
|
+
* interchangeable — they emphasize DIFFERENT features:
|
|
45
|
+
* - LabeledField (this) — for FORM fields. Carries the `for`/`id` label↔control
|
|
46
|
+
* a11y wiring (`controlId`/`labelId`/`errorId`), the `tooltip`, the `required`
|
|
47
|
+
* asterisk, and the `aria-live` `error` region.
|
|
48
|
+
* - ConfiguratorRow — for TOKEN / PRESET controls. Carries the token-`name`
|
|
49
|
+
* reference, the opt-in `reset` affordance (`canReset`), and the four-rung
|
|
50
|
+
* `density` axis. No a11y for/id wiring.
|
|
51
|
+
*
|
|
52
|
+
* Reach for LabeledField for accessible form inputs; reach for ConfiguratorRow
|
|
53
|
+
* inside a `<Configurator>` for token sliders/selects. The divergence is recorded
|
|
54
|
+
* (NOT a forced merge — no ≥2-consumer shared-chassis need surfaced) in
|
|
55
|
+
* `docs/precepts/design-idioms.md §9`, alongside the `cn`/`focus-ring` keeps.
|
|
27
56
|
*/
|
|
28
57
|
type __VLS_Props = {
|
|
29
58
|
label: string;
|
|
30
59
|
tooltip?: string;
|
|
31
60
|
labelClass?: HTMLAttributes["class"];
|
|
32
61
|
required?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* AZ.W-BLOB-REDRESS — render the field's own label `sr-only` (kept in the
|
|
64
|
+
* DOM for the control↔label a11y association) instead of visibly. Use when
|
|
65
|
+
* an enclosing chrome row already supplies the visible human label (a
|
|
66
|
+
* `<ConfiguratorRow label>`), so the inner control does not leak a second
|
|
67
|
+
* (often raw-config-key) label. Default `false` (standalone behavior).
|
|
68
|
+
*/
|
|
69
|
+
hideLabel?: boolean;
|
|
33
70
|
};
|
|
34
71
|
declare var __VLS_7: {
|
|
35
72
|
errorId: string;
|
|
@@ -8,6 +8,12 @@ type __VLS_Props = {
|
|
|
8
8
|
labelClass?: string;
|
|
9
9
|
/** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
|
|
10
10
|
required?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
|
|
13
|
+
* visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
|
|
14
|
+
* supplies the visible human label. Avoids the double-label leak.
|
|
15
|
+
*/
|
|
16
|
+
hideLabel?: boolean;
|
|
11
17
|
};
|
|
12
18
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
13
19
|
"update:modelValue": (value: string) => any;
|
|
@@ -8,6 +8,12 @@ type __VLS_Props = {
|
|
|
8
8
|
step: number;
|
|
9
9
|
/** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
|
|
10
10
|
required?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
|
|
13
|
+
* visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
|
|
14
|
+
* supplies the visible human label. Avoids the double-label leak.
|
|
15
|
+
*/
|
|
16
|
+
hideLabel?: boolean;
|
|
11
17
|
};
|
|
12
18
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
13
19
|
"update:modelValue": (value: number) => any;
|
|
@@ -5,6 +5,12 @@ type __VLS_Props = {
|
|
|
5
5
|
labelClass?: string;
|
|
6
6
|
/** AQ.W4 §W4.5 — thread the required-field asterisk onto the label. */
|
|
7
7
|
required?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* AZ.W-BLOB-REDRESS — render the label `sr-only` (kept for a11y, hidden
|
|
10
|
+
* visually) when an enclosing chrome row (a `<ConfiguratorRow>`) already
|
|
11
|
+
* supplies the visible human label. Avoids the double-label leak.
|
|
12
|
+
*/
|
|
13
|
+
hideLabel?: boolean;
|
|
8
14
|
};
|
|
9
15
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
10
16
|
"update:checked": (value: boolean) => any;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { HTMLAttributes } from 'vue';
|
|
2
|
-
|
|
3
|
-
type
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { type MetricValue } from '../../../utils';
|
|
3
|
+
export type MetricBadgeSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
export type MetricBadgeLabelPosition = 'inline' | 'stacked';
|
|
5
|
+
export interface MetricBadgeProps {
|
|
6
|
+
/** The primary metric. A valid `0` renders `"0"`, never the placeholder. */
|
|
7
|
+
value: MetricValue;
|
|
7
8
|
unit?: string;
|
|
8
9
|
/** Full annotation slot, rendered as a sibling `<span>` with classnames
|
|
9
10
|
* `metric-badge__label metric-badge__label--full`. Tracked uppercase,
|
|
@@ -21,27 +22,19 @@ type __VLS_Props = {
|
|
|
21
22
|
* the label slot does not render even if `label`/`abbreviation` carry
|
|
22
23
|
* values. */
|
|
23
24
|
labelPosition?: MetricBadgeLabelPosition;
|
|
24
|
-
/** Color applied to the
|
|
25
|
+
/** Color applied to the value when it's non-empty. */
|
|
25
26
|
color?: string;
|
|
26
|
-
/** Substitute glyph when
|
|
27
|
+
/** Substitute glyph when value is empty (null / undefined / ""). */
|
|
27
28
|
placeholder?: string;
|
|
28
29
|
/** Typographic scale. Defaults to `md`. The ladder reads
|
|
29
30
|
* sm 11px / md 12px / lg 14px / xl 18px; `xl` is the audacious-poster
|
|
30
|
-
* rung (`text-mono-prose`
|
|
31
|
+
* rung (`text-mono-prose` value, `text-prose` unit) for hero
|
|
31
32
|
* placements that need to read at chassis distance. */
|
|
32
33
|
size?: MetricBadgeSize;
|
|
33
|
-
/** Surface register. `default` is the canonical 5-tier glass pill;
|
|
34
|
-
* `record` is the GILT pill (D6.b) — a 1px `--gold-rim` tooled edge +
|
|
35
|
-
* `--gold-ink` amount + a faint ≤8% gold wash (never opaque). Gold marks
|
|
36
|
-
* the SUPERLATIVE, exactly one per view: the all-time-high / peak figure.
|
|
37
|
-
* The medal reads as earned, not as a fourth data color. */
|
|
38
|
-
variant?: MetricBadgeVariant;
|
|
39
34
|
class?: HTMLAttributes['class'];
|
|
40
|
-
}
|
|
41
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
35
|
+
}
|
|
36
|
+
declare const __VLS_export: import("vue").DefineComponent<MetricBadgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricBadgeProps> & Readonly<{}>, {
|
|
42
37
|
size: MetricBadgeSize;
|
|
43
|
-
variant: MetricBadgeVariant;
|
|
44
|
-
placeholder: string;
|
|
45
38
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
39
|
declare const _default: typeof __VLS_export;
|
|
47
40
|
export default _default;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Component, FunctionalComponent, HTMLAttributes } from "vue";
|
|
2
|
+
import { type MetricValue } from "../../../utils";
|
|
2
3
|
/**
|
|
3
4
|
* Permissive icon type — Vue's `Component` type ships across multiple
|
|
4
5
|
* package boundaries (vue / @vue/runtime-core duplication when consumers
|
|
@@ -54,13 +55,24 @@ export interface MetricCellProps {
|
|
|
54
55
|
iconStrokeWidth?: number;
|
|
55
56
|
/** Icon pixel size — defaults to 14 (matches `text-micro` cap height). */
|
|
56
57
|
iconSize?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Optional accent colour for the LEADING GLYPH ONLY (e.g. a semantic
|
|
60
|
+
* `var(--chart-download)` viz colour). Tints the icon — the one
|
|
61
|
+
* deliberate colour event for the cell — while the label, value, and unit
|
|
62
|
+
* stay neutral ink (the one-color-event proportion rule, AZ.W-SUFFUSE D3).
|
|
63
|
+
* Unset (default) keeps the glyph the neutral `--muted-foreground` of the
|
|
64
|
+
* label row.
|
|
65
|
+
*/
|
|
66
|
+
iconColor?: string;
|
|
57
67
|
/** Label text — reads through the `label` slot when set. */
|
|
58
68
|
label?: string;
|
|
59
|
-
/** Value — primary metric. Reads through the `value` slot when set.
|
|
60
|
-
|
|
69
|
+
/** Value — primary metric. Reads through the `value` slot when set. A valid
|
|
70
|
+
* `0` renders `"0"`, never the placeholder. */
|
|
71
|
+
value?: MetricValue;
|
|
61
72
|
/** Unit suffix appended after the value (e.g. "Mbps", "ms"). */
|
|
62
73
|
unit?: string;
|
|
63
|
-
/** Placeholder glyph when value is empty/null. Defaults to em-dash
|
|
74
|
+
/** Placeholder glyph when value is empty/null. Defaults to em-dash (the
|
|
75
|
+
* shared `coalesceMetric` default). */
|
|
64
76
|
placeholder?: string;
|
|
65
77
|
/**
|
|
66
78
|
* Visual register.
|
|
@@ -82,7 +94,6 @@ type __VLS_Slots = {} & {
|
|
|
82
94
|
value?: (props: typeof __VLS_10) => any;
|
|
83
95
|
};
|
|
84
96
|
declare const __VLS_base: import("vue").DefineComponent<MetricCellProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricCellProps> & Readonly<{}>, {
|
|
85
|
-
placeholder: string;
|
|
86
97
|
appearance: MetricCellAppearance;
|
|
87
98
|
iconStrokeWidth: number;
|
|
88
99
|
iconSize: number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { HTMLAttributes, Component } from "vue";
|
|
2
|
+
import { type MetricValue } from "../../../utils";
|
|
2
3
|
/**
|
|
3
4
|
* MetricRow — a single row inside <MetricStack>.
|
|
4
5
|
*
|
|
@@ -39,11 +40,13 @@ export interface MetricRowProps {
|
|
|
39
40
|
iconSize?: number;
|
|
40
41
|
/** Label text — reads through the label slot when set. */
|
|
41
42
|
label?: string;
|
|
42
|
-
/** Value text (the audacious-poster hero number).
|
|
43
|
-
|
|
43
|
+
/** Value text (the audacious-poster hero number). A valid `0` renders
|
|
44
|
+
* `"0"`, never the placeholder. */
|
|
45
|
+
value?: MetricValue;
|
|
44
46
|
/** Unit suffix — reads through the unit slot when set. */
|
|
45
47
|
unit?: string;
|
|
46
|
-
/** Placeholder glyph when value is empty/null. Defaults to "—"
|
|
48
|
+
/** Placeholder glyph when value is empty/null. Defaults to "—" (the shared
|
|
49
|
+
* `coalesceMetric` default). */
|
|
47
50
|
placeholder?: string;
|
|
48
51
|
/**
|
|
49
52
|
* Per-row phase colour. Sets `--phase-color` inline so descendant
|
|
@@ -87,7 +90,6 @@ type __VLS_Slots = {} & {
|
|
|
87
90
|
};
|
|
88
91
|
declare const __VLS_base: import("vue").DefineComponent<MetricRowProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MetricRowProps> & Readonly<{}>, {
|
|
89
92
|
active: boolean;
|
|
90
|
-
placeholder: string;
|
|
91
93
|
iconStrokeWidth: number;
|
|
92
94
|
iconSize: number;
|
|
93
95
|
digitCount: number;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fallback for `--tab-indicator-max-stretch` when the cascade leaves it unset — the
|
|
3
|
+
* default ≈+8% travel-squish cap (AX.W53). `--stretch = 1 + frac · (cap − 1)`, so a
|
|
4
|
+
* full-width jump reaches the cap and a tiny hop stays near 1. The token is the
|
|
5
|
+
* authority; this is the no-token floor.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_INDICATOR_MAX_STRETCH = 1.08;
|
|
8
|
+
/**
|
|
9
|
+
* ms after the stretch opens before it releases back to fit (`--stretch → 1`) — the
|
|
10
|
+
* Material "grow then shrink" close. Rides the same snappy glide clock as the travel.
|
|
11
|
+
*/
|
|
12
|
+
export declare const INDICATOR_RELEASE_MS = 60;
|