@mkbabb/glass-ui 3.12.0 → 4.0.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-XH4YBVEK.js +158 -0
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
- package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
- package/dist/DialogContent-DDE6pQBU.js +103 -0
- package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
- package/dist/FadingScroll-DwNnvKMs.js +76 -0
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
- package/dist/IconChip-BDw1j5mu.js +54 -0
- package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
- package/dist/MetricBadge-BpC0R_Ec.js +79 -0
- package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
- package/dist/PopoverContent-BTorlp--.js +127 -0
- package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
- package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
- package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
- package/dist/animated-digit.js +3 -3
- package/dist/api/index.d.ts +10 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +113 -98
- package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/card.js +1 -1
- package/dist/carousel.d.ts +1 -1
- package/dist/carousel.js +101 -145
- 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/collapsible.js +1 -1
- package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
- package/dist/color-swatch.d.ts +1 -0
- package/dist/color-swatch.js +47 -0
- 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 +16 -45
- package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
- 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/color-swatch/ColorSwatch.vue.d.ts +22 -0
- package/dist/components/custom/color-swatch/index.d.ts +1 -0
- package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
- package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
- package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -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 +3 -403
- package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
- package/dist/components/custom/constellation/constellationTypes.d.ts +369 -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 +89 -0
- package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
- package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
- 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 +83 -0
- package/dist/components/custom/dock/index.d.ts +5 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
- package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
- package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
- package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
- package/dist/components/custom/fading-scroll/index.d.ts +2 -0
- package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +34 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -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 +21 -8
- package/dist/components/custom/goo-blob/constants.d.ts +57 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/handmark/brush.d.ts +33 -6
- package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
- package/dist/components/custom/handmark/constants.d.ts +39 -0
- package/dist/components/custom/handmark/geometry.d.ts +14 -12
- package/dist/components/custom/handmark/index.d.ts +8 -2
- package/dist/components/custom/handmark/types.d.ts +9 -0
- package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
- package/dist/components/custom/icon-chip/index.d.ts +2 -0
- package/dist/components/custom/icon-chip/types.d.ts +72 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
- 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/pager-dots/PagerDots.vue.d.ts +39 -0
- package/dist/components/custom/pager-dots/index.d.ts +2 -0
- package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
- package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
- package/dist/components/custom/tabs/constants.d.ts +18 -0
- package/dist/components/custom/tabs/index.d.ts +1 -1
- package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
- package/dist/components/ui/_shared/index.d.ts +2 -0
- package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
- package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
- package/dist/components/ui/card/Card.vue.d.ts +16 -4
- package/dist/components/ui/carousel/index.d.ts +0 -1
- package/dist/components/ui/command/Command.vue.d.ts +3 -0
- package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/index.d.ts +0 -1
- package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
- package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
- package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
- package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
- package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
- package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
- 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/useGlobalDark.d.ts +14 -12
- 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/composables/motion/useViewTransition.d.ts +36 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +3 -3
- package/dist/constellation.js +373 -261
- package/dist/context-menu.js +2 -2
- package/dist/controls.js +48 -14
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +901 -372
- package/dist/dockContext-Bu1Avy-a.js +17 -0
- package/dist/dom.js +5 -5
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +44 -81
- package/dist/fading-scroll.d.ts +1 -0
- package/dist/fading-scroll.js +2 -0
- package/dist/forms.js +5 -5
- package/dist/fourier-field.js +140 -104
- package/dist/fourier-math.js +2 -2
- package/dist/glass-panel.js +90 -21
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +230 -236
- package/dist/goo-blob.js +264 -228
- package/dist/handmark.js +203 -159
- package/dist/header-ribbon.js +1 -1
- package/dist/hover-card.js +1 -1
- package/dist/hover-popover.js +1 -1
- package/dist/icon-chip.d.ts +1 -0
- package/dist/icon-chip.js +2 -0
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +3 -5
- 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-DeuJwLFx.js} +26 -2
- package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
- package/dist/metric-badge.js +1 -1
- package/dist/metric-cell.js +29 -22
- 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 -136
- 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/pager-dots.d.ts +1 -0
- package/dist/pager-dots.js +91 -0
- package/dist/paper-backdrop.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.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 +10 -10
- package/dist/select.js +3 -3
- package/dist/separator.js +1 -1
- package/dist/sheet-CquRYOAw.js +218 -0
- package/dist/sheet.js +1 -1
- package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +3 -3
- package/dist/springPresets-WXaLbu8u.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +25 -125
- package/dist/styles/cards.css +55 -0
- package/dist/styles/components.css +4 -1
- package/dist/styles/configurator.css +77 -0
- package/dist/styles/dock/density.css +19 -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 +66 -1
- package/dist/styles/dock/rail-extend.css +397 -0
- package/dist/styles/dock/section.css +59 -0
- package/dist/styles/dock/shell.css +97 -110
- package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/dist/styles/dock-controls/icon-button.css +143 -0
- package/dist/styles/dock-controls/tab-button.css +143 -0
- package/dist/styles/dock-controls/touch-floor.css +94 -0
- package/dist/styles/dock-controls/triggers.css +135 -0
- package/dist/styles/dock-controls.css +30 -595
- package/dist/styles/dock.css +8 -3
- package/dist/styles/drawer.css +48 -0
- package/dist/styles/feedback-tone.css +104 -0
- package/dist/styles/floating-panel.css +17 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +383 -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/surface-axis.css +113 -0
- package/dist/styles/glass/surfaces.css +382 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +34 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/icon-chip.css +149 -0
- package/dist/styles/index.css +94 -18
- package/dist/styles/instrument-chassis.css +46 -0
- package/dist/styles/menu.css +127 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/segmented-tabs.css +346 -0
- package/dist/styles/select.css +50 -0
- package/dist/styles/theme/bridges.css +347 -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 +287 -0
- package/dist/styles/tokens/dark-arm.css +308 -0
- package/dist/styles/tokens/glass.css +500 -0
- package/dist/styles/tokens/light-dark.css +187 -0
- package/dist/styles/tokens/offsets-sizing.css +562 -0
- package/dist/styles/tokens/property-regs.css +162 -0
- package/dist/styles/tokens/scale-paper.css +409 -0
- package/dist/styles/tokens/scheme-motion.css +352 -0
- package/dist/styles/tokens/shadow.css +166 -0
- package/dist/styles/tokens.css +22 -2360
- package/dist/styles/transitions.css +7 -7
- package/dist/styles/typography/scale.css +153 -0
- package/dist/styles/typography/semantic.css +220 -0
- package/dist/styles/typography/utilities.css +159 -0
- package/dist/styles/typography.css +23 -453
- package/dist/styles/utilities/a11y-overrides.css +169 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +541 -0
- package/dist/styles/utilities/btn.css +218 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1318
- package/dist/styles/view-transition.css +4 -52
- package/dist/switch.js +1 -1
- package/dist/tabs.js +161 -181
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-chip.js +3 -1
- package/dist/toggle-group.js +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
- package/dist/useConfiguratorState-kiIlun8I.js +303 -0
- package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
- package/dist/useRAFLoop-CdwJ7284.js +109 -0
- package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
- package/dist/useSpecularTracking-Bo5su68i.js +32 -0
- package/dist/useSpringMount-CvopqiFr.js +108 -0
- package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
- package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
- package/dist/useViewTransition-COsPjQVZ.js +47 -0
- package/dist/utils/coalesceMetric.d.ts +29 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/vReveal-D9k0jADx.js +10 -0
- package/dist/watercolor-dot.js +22 -13
- package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
- package/package.json +134 -50
- package/src/styles/animations.css +25 -125
- package/src/styles/cards.css +53 -0
- package/src/styles/configurator.css +77 -0
- package/src/styles/dock/density.css +19 -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 +66 -1
- package/src/styles/dock/rail-extend.css +397 -0
- package/src/styles/dock/section.css +59 -0
- package/src/styles/dock/shell.css +97 -110
- package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
- package/src/styles/dock-controls/icon-button.css +143 -0
- package/src/styles/dock-controls/tab-button.css +143 -0
- package/src/styles/dock-controls/touch-floor.css +94 -0
- package/src/styles/dock-controls/triggers.css +135 -0
- package/src/styles/dock-controls.css +30 -595
- package/src/styles/dock.css +8 -3
- package/src/styles/drawer.css +42 -0
- package/src/styles/feedback-tone.css +104 -0
- package/src/styles/floating-panel.css +15 -0
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +383 -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/surface-axis.css +113 -0
- package/src/styles/glass/surfaces.css +382 -0
- package/src/styles/glass.css +34 -1188
- package/src/styles/icon-chip.css +149 -0
- package/src/styles/index.css +93 -17
- package/src/styles/instrument-chassis.css +42 -0
- package/src/styles/menu.css +127 -0
- package/src/styles/paper.css +2 -68
- package/src/styles/segmented-tabs.css +340 -0
- package/src/styles/select.css +50 -0
- package/src/styles/theme/bridges.css +347 -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 +287 -0
- package/src/styles/tokens/dark-arm.css +308 -0
- package/src/styles/tokens/glass.css +500 -0
- package/src/styles/tokens/light-dark.css +187 -0
- package/src/styles/tokens/offsets-sizing.css +562 -0
- package/src/styles/tokens/property-regs.css +162 -0
- package/src/styles/tokens/scale-paper.css +409 -0
- package/src/styles/tokens/scheme-motion.css +352 -0
- package/src/styles/tokens/shadow.css +166 -0
- package/src/styles/tokens.css +22 -2360
- package/src/styles/transitions.css +7 -7
- package/src/styles/typography/scale.css +153 -0
- package/src/styles/typography/semantic.css +220 -0
- package/src/styles/typography/utilities.css +159 -0
- package/src/styles/typography.css +23 -453
- package/src/styles/utilities/a11y-overrides.css +169 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +541 -0
- package/src/styles/utilities/btn.css +218 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1318
- package/src/styles/view-transition.css +4 -52
- package/dist/CardAction-DuArVky-.js +0 -157
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/DialogContent-BRkT1cjP.js +0 -100
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/MetricBadge-BZVWIxNy.js +0 -80
- package/dist/PopoverContent-BId6ggf_.js +0 -121
- package/dist/TabsList-B8CVOQPC.js +0 -101
- 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/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
- 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/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/sheet-VZEtNFvO.js +0 -214
- package/dist/styles/instrument-rail.css +0 -127
- package/dist/useConfiguratorState-DxAqksK6.js +0 -287
- 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/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
- /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
- /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
- /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
- /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
- /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
- /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
- /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
- /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
- /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
- /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
- /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
- /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
- /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
- /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
- /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
- /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
- /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
- /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
- /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
- /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Surface } from "../../ui/_shared/useSurfaceAxis";
|
|
1
2
|
declare const _default: typeof __VLS_export;
|
|
2
3
|
export default _default;
|
|
3
4
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
@@ -6,20 +7,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
6
7
|
expandLabel?: string;
|
|
7
8
|
/** Accessible name for the collapse (exit fullscreen) button. */
|
|
8
9
|
collapseLabel?: string;
|
|
9
|
-
/**
|
|
10
|
-
*
|
|
11
|
-
* the
|
|
12
|
-
|
|
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;
|
|
10
|
+
/** Surface decoration register for the fullscreen overlay
|
|
11
|
+
* (BA.W-SURFACE-AXIS) — `glass` (default) frosts over the page;
|
|
12
|
+
* `opaque` is the solid-wall opt-out; `veil` the borderless plate. */
|
|
13
|
+
surface?: Surface;
|
|
23
14
|
} & {
|
|
24
15
|
/**
|
|
25
16
|
* Two-way `open` model so consumers can drive fullscreen externally
|
|
@@ -27,13 +18,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
27
18
|
* buttons continue to operate without parent wiring.
|
|
28
19
|
*/
|
|
29
20
|
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;
|
|
21
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
37
22
|
"update:open": (value: boolean) => any;
|
|
38
23
|
}, string, import("vue").PublicProps, Readonly<{
|
|
39
24
|
buttonPosition?: "left" | "right";
|
|
@@ -41,20 +26,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
41
26
|
expandLabel?: string;
|
|
42
27
|
/** Accessible name for the collapse (exit fullscreen) button. */
|
|
43
28
|
collapseLabel?: string;
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* the
|
|
47
|
-
|
|
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;
|
|
29
|
+
/** Surface decoration register for the fullscreen overlay
|
|
30
|
+
* (BA.W-SURFACE-AXIS) — `glass` (default) frosts over the page;
|
|
31
|
+
* `opaque` is the solid-wall opt-out; `veil` the borderless plate. */
|
|
32
|
+
surface?: Surface;
|
|
58
33
|
} & {
|
|
59
34
|
/**
|
|
60
35
|
* Two-way `open` model so consumers can drive fullscreen externally
|
|
@@ -63,10 +38,9 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
63
38
|
*/
|
|
64
39
|
open?: boolean;
|
|
65
40
|
}> & Readonly<{
|
|
66
|
-
onSettle?: ((fullscreen: boolean) => any) | undefined;
|
|
67
41
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
68
42
|
}>, {
|
|
69
|
-
|
|
43
|
+
surface: Surface;
|
|
70
44
|
buttonPosition: "left" | "right";
|
|
71
45
|
expandLabel: string;
|
|
72
46
|
collapseLabel: string;
|
|
@@ -74,6 +48,10 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
|
|
|
74
48
|
default?: (props: {
|
|
75
49
|
fullscreen: boolean;
|
|
76
50
|
}) => any;
|
|
51
|
+
} & {
|
|
52
|
+
default?: (props: {
|
|
53
|
+
fullscreen: boolean;
|
|
54
|
+
}) => any;
|
|
77
55
|
}>;
|
|
78
56
|
type __VLS_WithSlots<T, S> = T & {
|
|
79
57
|
new (): {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/** Scroll axis. `"x"` is the horizontal strip, `"y"` the vertical column. Default `"x"`. */
|
|
3
|
+
axis?: "x" | "y";
|
|
4
|
+
/** Feather the start edge once scrolled past the start. Default `true`. */
|
|
5
|
+
fadeStart?: boolean;
|
|
6
|
+
/** Feather the end edge while trailing overflow remains. Default `true`. */
|
|
7
|
+
fadeEnd?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare var __VLS_1: {};
|
|
10
|
+
type __VLS_Slots = {} & {
|
|
11
|
+
default?: (props: typeof __VLS_1) => any;
|
|
12
|
+
};
|
|
13
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
14
|
+
axis: "x" | "y";
|
|
15
|
+
fadeStart: boolean;
|
|
16
|
+
fadeEnd: boolean;
|
|
17
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
19
|
+
declare const _default: typeof __VLS_export;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
22
|
+
new (): {
|
|
23
|
+
$slots: S;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { MaybeRef, Ref } from "vue";
|
|
2
|
+
export interface UseFadingScrollOptions {
|
|
3
|
+
/** Scroll axis. `"x"` reads scrollLeft/Width; `"y"` reads scrollTop/Height. Default `"x"`. */
|
|
4
|
+
axis?: "x" | "y";
|
|
5
|
+
/** Feather the start edge once scrolled past the start. Default `true`. */
|
|
6
|
+
fadeStart?: boolean;
|
|
7
|
+
/** Feather the end edge while trailing overflow remains. Default `true`. */
|
|
8
|
+
fadeEnd?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface UseFadingScrollControls {
|
|
11
|
+
/** True when this composable is the ACTIVE writer (the native timeline is absent). */
|
|
12
|
+
readonly active: Readonly<Ref<boolean>>;
|
|
13
|
+
/** Re-measure the scroll state and rewrite the customs. Safe to call manually. */
|
|
14
|
+
measure: () => void;
|
|
15
|
+
/** Detach all listeners/observers. Auto-called on unmount in a component scope. */
|
|
16
|
+
stop: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Drive the per-edge `--fade-start` / `--fade-end` mask-width customs off an
|
|
20
|
+
* element's live scroll state, the JS fallback for the native `scroll(self)`
|
|
21
|
+
* timeline. On a supporting engine this attaches NOTHING (the CSS recipe is the
|
|
22
|
+
* sole writer); on a non-supporting engine it measures `scrollLeft/Top`,
|
|
23
|
+
* `scrollWidth/Height − clientWidth/Height`, a `ResizeObserver` (the shared
|
|
24
|
+
* `useResizeObserver` substrate) + a rAF-coalesced `scroll` listener, writing
|
|
25
|
+
* `--fade-start = --fade-scroll-width` only past `scroll > 0` and `--fade-end`
|
|
26
|
+
* only while trailing overflow remains. The customs default to `0px` (no
|
|
27
|
+
* feather) so the at-rest no-overflow edge is SHARP.
|
|
28
|
+
*
|
|
29
|
+
* @param target the scroll-port element (the same element the CSS customs apply to)
|
|
30
|
+
*/
|
|
31
|
+
export declare function useFadingScroll(target: MaybeRef<HTMLElement | null>, options?: UseFadingScrollOptions): UseFadingScrollControls;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The module-scope constants for the FadingScroll family — the colocation home
|
|
3
|
+
* (`proof:colocation`) the dir owes once it carries a complex composable. Both
|
|
4
|
+
* were promoted out of `composables/useFadingScroll.ts` verbatim.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* True when the engine genuinely supports a `scroll()` timeline — the CSS recipe
|
|
8
|
+
* in `utilities/base.css` then owns the visual axis on the compositor and the
|
|
9
|
+
* `useFadingScroll` composable becomes the inert (non-attaching) path. Module-level
|
|
10
|
+
* so the feature gate is computed once. (Mirrors `useScrollProgress`'s twin.)
|
|
11
|
+
*/
|
|
12
|
+
export declare const NATIVE_SCROLL_TIMELINE: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Tolerance (CSS px) absorbing scroll-snap jitter — `snap-mandatory` parks the
|
|
15
|
+
* active card a few px off the true start, so the start edge reads as sharp until
|
|
16
|
+
* the user genuinely scrolls past the first child. Promoted verbatim from the
|
|
17
|
+
* bespoke `PresetPickerRow` SNAP_TOLERANCE.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SNAP_TOLERANCE = 12;
|
|
@@ -38,6 +38,13 @@ type __VLS_Props = {
|
|
|
38
38
|
* loudness); clamped [0, 2] — the field's ~2 upper bound lets a hero push
|
|
39
39
|
* brighter than the recessed default without runaway. */
|
|
40
40
|
intensity?: number;
|
|
41
|
+
/** OPTIONAL injected clock — a getter returning the loop parameter `t ∈ [0,1)`.
|
|
42
|
+
* When BOUND, the render reads `clock()` (a controllable studio clock: pause,
|
|
43
|
+
* scrub, speed); when ABSENT (the ambient face), the autonomous
|
|
44
|
+
* `(now / durationMs) % 1` frame-time loop is the DEFAULT. `freeze` /
|
|
45
|
+
* `prefers-reduced-motion` still short-circuit to `frozenT` regardless — the
|
|
46
|
+
* ambient bundle is unchanged. The SOLE additive seam (BA.W-FOURIER-STUDIO). */
|
|
47
|
+
clock?: () => number;
|
|
41
48
|
};
|
|
42
49
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
43
50
|
declare const _default: typeof __VLS_export;
|
|
@@ -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, partialSumAt, 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,40 @@ 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 PARTIAL-SUM curve point at parameter `t` over the FIRST `maxTerms` phasors
|
|
28
|
+
* — the inverse-DFT truncated summation `Σ_{k<maxTerms} c_k * exp(2*pi*i*k*t)`.
|
|
29
|
+
* It is {@link positionsAt} truncated at `maxTerms` and read at the FINAL tip:
|
|
30
|
+
* the single curve POINT (not the whole chain). The truncation axis is the SAME
|
|
31
|
+
* one `positionsAt`'s `maxCircles` arg drives — `maxCircles` reads the whole
|
|
32
|
+
* chain truncated, `partialSumAt` reads only its endpoint — so the studio's
|
|
33
|
+
* N-harmonics slider can draw the assembling chain (`positionsAt(.., N)`) AND the
|
|
34
|
+
* resolving curve point (`partialSumAt(.., t, N)`) off the ONE axis. Sweeping `t`
|
|
35
|
+
* over `[0,1)` and joining the points traces the partial-sum CURVE: at `maxTerms`
|
|
36
|
+
* = 1 a single ellipse, growing toward the full reconstruction as `maxTerms`
|
|
37
|
+
* climbs to `components.length` (the reference's "watch it sum" beauty).
|
|
38
|
+
*
|
|
39
|
+
* `maxTerms` omitted (or ≥ `components.length`) is the full reconstruction — the
|
|
40
|
+
* same point `positionsAt(components, t)` returns at its final tip.
|
|
41
|
+
*/
|
|
42
|
+
export declare function partialSumAt(components: BasisComponent[], t: number, maxTerms?: number): [number, number];
|
|
43
|
+
/**
|
|
44
|
+
* The forward DFT — the inverse of {@link positionsAt}. Takes a closed sequence
|
|
45
|
+
* of `[x, y]` samples around a curve (treated as the complex signal `x + i·y`,
|
|
46
|
+
* uniformly spaced in the parameter `t ∈ [0, 1)`) and returns the
|
|
47
|
+
* {@link BasisComponent} spectrum that {@link positionsAt} reconstructs.
|
|
48
|
+
*
|
|
49
|
+
* Frequencies run symmetrically around 0 — `0, +1, -1, +2, -2, …` up to the
|
|
50
|
+
* Nyquist limit — which is the index ordering the epicycle chain wants (the big
|
|
51
|
+
* low-order phasors first). The DC term (`index 0`) is the curve's centroid; the
|
|
52
|
+
* caller can subtract it (draw the chain centered) or keep it (draw at the
|
|
53
|
+
* sampled position).
|
|
54
|
+
*
|
|
55
|
+
* General: any point set drives it (a glyph outline, a hand-traced path, a
|
|
56
|
+
* digitized signature). It is NOT a special case — it is the literal forward
|
|
57
|
+
* transform whose inverse already ships as `positionsAt`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function dftFromPoints(points: [number, number][]): BasisComponent[];
|
|
26
60
|
/** Tuning for {@link makeEllipticSpectrum}. */
|
|
27
61
|
export interface EllipticSpectrumOptions {
|
|
28
62
|
/**
|
|
@@ -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>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type GlassTier } from "../../../composables/glass/useGlassRenderer";
|
|
2
|
+
import { type Surface } from "../../ui/_shared/useSurfaceAxis";
|
|
2
3
|
/**
|
|
3
4
|
* Surface-tier vocabulary for the CSS rendering branch. Mirrors the v0.8
|
|
4
5
|
* five-rung ladder declared in `tokens.css §8` and consumed by the
|
|
@@ -18,6 +19,12 @@ export interface GlassPanelProps {
|
|
|
18
19
|
chromaticAberration?: boolean;
|
|
19
20
|
/** Glass surface tier for the CSS rendering branch (v0.8 5-rung ladder). */
|
|
20
21
|
variant?: GlassPanelVariant;
|
|
22
|
+
/** Surface decoration register (BA.W-SURFACE-AXIS) — the SHARED
|
|
23
|
+
* {glass·veil·opaque} axis. `glass` (default) renders the variant's plain
|
|
24
|
+
* glass rung; `veil` overlays the borderless/rimless text-legibility plate;
|
|
25
|
+
* `opaque` sets `--glass-level:0` (the solid-card escape). Orthogonal to
|
|
26
|
+
* `variant`/`tier`, exactly as `surface` is on `<Card>`. */
|
|
27
|
+
surface?: Surface;
|
|
21
28
|
/** Additional classes */
|
|
22
29
|
class?: string;
|
|
23
30
|
}
|
|
@@ -27,6 +34,7 @@ type __VLS_Slots = {} & {
|
|
|
27
34
|
};
|
|
28
35
|
declare const __VLS_base: import("vue").DefineComponent<GlassPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<GlassPanelProps> & Readonly<{}>, {
|
|
29
36
|
variant: GlassPanelVariant;
|
|
37
|
+
surface: Surface;
|
|
30
38
|
blur: number;
|
|
31
39
|
refraction: number;
|
|
32
40
|
chromaticAberration: boolean;
|
|
@@ -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,30 @@ export interface UseMetaballRendererOptions {
|
|
|
24
24
|
satellites: BlobSatelliteSystem;
|
|
25
25
|
config: BlobConfig;
|
|
26
26
|
}
|
|
27
|
+
/** The renderer's public control surface — pause/resume + wake the demand loop. */
|
|
28
|
+
export interface UseMetaballRendererReturn {
|
|
29
|
+
pause: () => void;
|
|
30
|
+
resume: () => void;
|
|
31
|
+
/**
|
|
32
|
+
* BA.W-GOO-REDRESS — re-arm the demand-parked loop on demand (the public twin
|
|
33
|
+
* of the internal `color`/`paletteStops` wake watchers). The SFC's pointer-wake
|
|
34
|
+
* wire calls this so a first hover over a fully-parked blob (all satellites
|
|
35
|
+
* orbiting → the AX.W16 quiescence gate has parked the rAF) repaints on the
|
|
36
|
+
* SAME frame instead of waiting up to an orbit horizon for the next scheduled
|
|
37
|
+
* satellite wake (root cause 2 / BA-goo-3). It is the EXISTING substrate wake
|
|
38
|
+
* handle — NO new rAF, NO second wake path (the single-substrate-loop invariant).
|
|
39
|
+
*/
|
|
40
|
+
wake: () => void;
|
|
41
|
+
}
|
|
27
42
|
/**
|
|
28
43
|
* The GooBlob WebGL renderer — composes the `useWebGLCanvas` substrate (AU.W6).
|
|
29
44
|
*
|
|
30
45
|
* This module owns ONLY the metaball-specific concerns: compiling the shader,
|
|
31
|
-
* building the quad + uniform cache
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
46
|
+
* building the quad + uniform cache (the `buildMetaballProgram` leaf), and
|
|
47
|
+
* uploading the per-frame uniforms (the `uploadBlobUniforms` leaf) derived from the
|
|
48
|
+
* mood / pointer / satellite systems and the resolved base color. The generic
|
|
49
|
+
* WebGL2 lifecycle — context creation, the suspend/resume model, the demand-driven
|
|
50
|
+
* rAF loop, the tab-visibility owner, the ResizeObserver, and the
|
|
35
51
|
* webglcontextlost/restored robustness — lives in the substrate; this renderer
|
|
36
52
|
* threads its behaviour through the substrate's
|
|
37
53
|
* `setup`/`frame`/`shouldContinue`/`resize`/`teardown` callbacks. It does NOT call
|
|
@@ -43,7 +59,4 @@ export interface UseMetaballRendererOptions {
|
|
|
43
59
|
* a `var(--token)` — the SFC's `resolveTokenColor` leaf does that BEFORE handing
|
|
44
60
|
* concrete strings here (inv-K-3 seam); the value.js 1×1-canvas DOM probe is gone.
|
|
45
61
|
*/
|
|
46
|
-
export declare function useMetaballRenderer(options: UseMetaballRendererOptions):
|
|
47
|
-
pause: () => void;
|
|
48
|
-
resume: () => void;
|
|
49
|
-
};
|
|
62
|
+
export declare function useMetaballRenderer(options: UseMetaballRendererOptions): UseMetaballRendererReturn;
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
export declare const ORBIT_RANDOM_BASE = 0.85;
|
|
46
|
+
export declare const ORBIT_RANDOM_SPAN = 0.2;
|
|
47
|
+
export declare const SAT_WOBBLE1_BASE = 0.015;
|
|
48
|
+
export declare const SAT_WOBBLE1_SPAN = 0.02;
|
|
49
|
+
export declare const SAT_WOBBLE2_BASE = 0.01;
|
|
50
|
+
export declare const SAT_WOBBLE2_SPAN = 0.015;
|
|
51
|
+
export declare const BASE_OPACITY = 0.75;
|
|
52
|
+
/** Duration (ms) to blend from emerge endpoint into live orbit — eliminates snap. */
|
|
53
|
+
export declare const ORBIT_BLEND_MS = 2000;
|
|
54
|
+
/** Minimum spacing (ms) between satellite merge events. */
|
|
55
|
+
export declare const MERGE_STAGGER_MS = 3000;
|
|
56
|
+
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"];
|
|
57
|
+
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";
|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
* The shipped register: PEN is the default (clean ink, grain:0 ⇒ no filter); the
|
|
14
14
|
* CRAYON ships as the proven STROKE-crayon (constant-width offset passes + the
|
|
15
15
|
* seeded static feTurbulence grain — `ds-crayon-handmark` verdict), i.e.
|
|
16
|
-
* `ribbon:'stroke'
|
|
17
|
-
*
|
|
16
|
+
* `ribbon:'stroke'`. The HIGHLIGHTER (BA.W-HANDMARK C-1) ENGAGES `ribbon:'hull'`
|
|
17
|
+
* — the perfect-freehand variable-width slab the atlas's field delta names — so the
|
|
18
|
+
* vendored pf body ships whenever the highlighter does (the budget note in the cut
|
|
19
|
+
* + a `profile:budget` rebaseline).
|
|
18
20
|
*/
|
|
19
21
|
export type BlendMode = "source-over" | "multiply" | "darken" | "screen";
|
|
20
22
|
export interface TaperSpec {
|
|
@@ -82,6 +84,8 @@ export interface InkPath {
|
|
|
82
84
|
stroke?: string;
|
|
83
85
|
opacity: number;
|
|
84
86
|
blend: BlendMode;
|
|
87
|
+
/** geometry finish — bound to the SVG `stroke-linecap` on the path (C-1(d)). */
|
|
88
|
+
cap?: "round" | "square" | "butt";
|
|
85
89
|
}
|
|
86
90
|
/**
|
|
87
91
|
* The named points in the continuum. `pen` is the DEFAULT (clean ink, grain:0).
|
|
@@ -112,6 +116,29 @@ export declare const BRUSHES: {
|
|
|
112
116
|
readonly segments: 9;
|
|
113
117
|
readonly cap: "round";
|
|
114
118
|
};
|
|
119
|
+
readonly boil: {
|
|
120
|
+
readonly weight: 5;
|
|
121
|
+
readonly weightJitter: 0.12;
|
|
122
|
+
readonly thinning: 0.2;
|
|
123
|
+
readonly taper: {
|
|
124
|
+
readonly start: 12;
|
|
125
|
+
readonly end: 12;
|
|
126
|
+
readonly ease: "out-cubic";
|
|
127
|
+
};
|
|
128
|
+
readonly ribbon: "stroke";
|
|
129
|
+
readonly opacity: 1;
|
|
130
|
+
readonly blend: "source-over";
|
|
131
|
+
readonly passes: 1;
|
|
132
|
+
readonly passOpacity: 0;
|
|
133
|
+
readonly grain: 0;
|
|
134
|
+
readonly grainFreq: 0.1;
|
|
135
|
+
readonly grainScale: 0;
|
|
136
|
+
readonly octaves: 2;
|
|
137
|
+
readonly roughness: 0.9;
|
|
138
|
+
readonly wobble: 1.4;
|
|
139
|
+
readonly segments: 14;
|
|
140
|
+
readonly cap: "round";
|
|
141
|
+
};
|
|
115
142
|
readonly pencil: {
|
|
116
143
|
readonly weight: 3;
|
|
117
144
|
readonly weightJitter: 0.3;
|
|
@@ -209,11 +236,11 @@ export declare const BRUSHES: {
|
|
|
209
236
|
readonly weightJitter: 0.05;
|
|
210
237
|
readonly thinning: 0;
|
|
211
238
|
readonly taper: {
|
|
212
|
-
readonly start:
|
|
213
|
-
readonly end:
|
|
214
|
-
readonly ease: "
|
|
239
|
+
readonly start: 6;
|
|
240
|
+
readonly end: 10;
|
|
241
|
+
readonly ease: "out-cubic";
|
|
215
242
|
};
|
|
216
|
-
readonly ribbon: "
|
|
243
|
+
readonly ribbon: "hull";
|
|
217
244
|
readonly opacity: 0.38;
|
|
218
245
|
readonly blend: "multiply";
|
|
219
246
|
readonly passes: 1;
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* (`useLineBoil.start()` early-returns under reduced motion).
|
|
19
19
|
*/
|
|
20
20
|
import { type Ref } from "vue";
|
|
21
|
-
import { type Brush, type BrushName } from "
|
|
21
|
+
import { type Brush, type BrushName } from "../brush";
|
|
22
22
|
/**
|
|
23
23
|
* The boil clock surface the SFC binds — the `useLineBoil` return shape, declared
|
|
24
24
|
* structurally over glass-ui's OWN `Ref` (pencil-boil ships a nested `@vue`, so its
|
|
@@ -30,9 +30,9 @@ export interface BoilClock {
|
|
|
30
30
|
start: () => void;
|
|
31
31
|
stop: () => void;
|
|
32
32
|
}
|
|
33
|
-
import { type ShapeGeom } from "
|
|
34
|
-
import { type SVGFragment } from "
|
|
35
|
-
import type { HandAnimation, HandMarkProps, HandShape, MarkBox } from "
|
|
33
|
+
import { type ShapeGeom } from "../geometry";
|
|
34
|
+
import { type SVGFragment } from "../ink";
|
|
35
|
+
import type { HandAnimation, HandMarkProps, HandShape, MarkBox } from "../types";
|
|
36
36
|
export interface UseHandMarkInput {
|
|
37
37
|
brush: BrushName | Partial<Brush>;
|
|
38
38
|
shape: HandShape;
|
|
@@ -45,6 +45,8 @@ export interface UseHandMarkInput {
|
|
|
45
45
|
roughness: number | null;
|
|
46
46
|
segments: number | null;
|
|
47
47
|
jagged: boolean;
|
|
48
|
+
/** NATURAL underline morphology (C-2) — procedural off the house-seeded engine. */
|
|
49
|
+
natural: boolean;
|
|
48
50
|
box: MarkBox | null;
|
|
49
51
|
path: string | null;
|
|
50
52
|
filterId: string;
|