@mkbabb/glass-ui 3.10.0 → 3.10.1
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-DrAcAV4d.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-mV2e1aG6.js} +2 -2
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C3E6jZ5B.js} +2 -2
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-BxaaafFi.js} +1 -1
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CDA_SaCe.js} +1 -1
- package/dist/{MetricBadge-BZVWIxNy.js → MetricBadge-idgrkqoP.js} +5 -7
- package/dist/{Notification-DLMhblXR.js → Notification-Cu0nN17_.js} +1 -1
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CHEWghnY.js} +2 -2
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-DpUvdYY-.js} +1 -1
- package/dist/{Progress-iEuD9pxG.js → Progress-BW-StFw2.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DruYCni_.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-pirzjm--.js} +3 -3
- package/dist/{Switch-Ch-k3Rv-.js → Switch-DeAqg6pi.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-BAVzOZpg.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-CvuuW_y9.js} +49 -46
- package/dist/{ToggleGroupItem-Cev4pOVK.js → ToggleGroupItem-DtD37b4G.js} +4 -4
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +3 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +66 -66
- package/dist/{badge-CaoFJzRb.js → badge-NdCQMvvB.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-DyiWFAOE.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.js +5 -5
- package/dist/collapsible.js +1 -1
- package/dist/{color-C5ls_QF7.js → color-B65wWyQz.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- 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/constellation/Constellation.vue.d.ts +12 -0
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +35 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +36 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +18 -0
- package/dist/components/custom/constellation/constellationField.d.ts +10 -151
- package/dist/components/custom/constellation/constellationInteraction.d.ts +102 -0
- package/dist/components/custom/constellation/index.d.ts +3 -1
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- package/dist/components/custom/dock/GlassDock.vue.d.ts +2 -110
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +131 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +23 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +0 -29
- 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/metric-badge/MetricBadge.vue.d.ts +0 -8
- 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/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +0 -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/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +260 -225
- 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 +339 -327
- package/dist/dockContext-bho8B1A4.js +17 -0
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DVnQcA0E.js} +7 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +38 -61
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +137 -102
- package/dist/fourier-math.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +287 -209
- package/dist/goo-blob.js +243 -212
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{math-DTpRVC0e.js → math-BUU9hHID.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +69 -70
- 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/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-ChSXcJpU.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CyzcxBoh.js → slider-sfl8gFDD.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets-aRSm-4_k.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +18 -74
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +22 -0
- package/dist/styles/dock/layers.css +11 -1
- package/dist/styles/dock/morph.css +95 -19
- package/dist/styles/dock/shell.css +12 -0
- package/dist/styles/dock-controls.css +28 -31
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +2 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +304 -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 +24 -6
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/theme.css +13 -20
- package/dist/styles/tokens/color-radius.css +250 -0
- package/dist/styles/tokens/dark-arm.css +194 -0
- package/dist/styles/tokens/glass.css +413 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +406 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +361 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +132 -0
- package/dist/styles/tokens.css +22 -2355
- package/dist/styles/typography.css +18 -6
- 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 +399 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1260
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +98 -98
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-DfVgP4te.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-BdQXh9ie.js} +1 -1
- package/dist/useSpecularTracking-DFK_fhpG.js +32 -0
- package/dist/useSpringMount-DXUzxBjV.js +108 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +34 -52
- package/src/styles/animations.css +18 -74
- package/src/styles/dock/layer-group.css +22 -0
- package/src/styles/dock/layers.css +11 -1
- package/src/styles/dock/morph.css +95 -19
- package/src/styles/dock/shell.css +12 -0
- package/src/styles/dock-controls.css +28 -31
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +304 -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 +24 -6
- package/src/styles/paper.css +2 -68
- package/src/styles/theme.css +13 -20
- package/src/styles/tokens/color-radius.css +250 -0
- package/src/styles/tokens/dark-arm.css +194 -0
- package/src/styles/tokens/glass.css +413 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +406 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +361 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +132 -0
- package/src/styles/tokens.css +22 -2355
- package/src/styles/typography.css +18 -6
- 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 +399 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1260
- 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/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/glass-panel/GlassPanel.vue.d.ts +0 -41
- package/dist/components/custom/glass-panel/index.d.ts +0 -2
- package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -219
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -32
- 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 -66
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
- package/dist/components/custom/header-ribbon/index.d.ts +0 -2
- package/dist/components/custom/header-ribbon/types.d.ts +0 -7
- 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/glass-panel.d.ts +0 -1
- package/dist/glass-panel.js +0 -44
- package/dist/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -609
- package/dist/header-ribbon.d.ts +0 -1
- package/dist/header-ribbon.js +0 -63
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- 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/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-Drow5WkV.js} +0 -0
- /package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-DufLHi0y.js} +0 -0
- /package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-BrQ5p181.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-B-F818RU.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-DWghtRt7.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-Ce_V55zi.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-C8NMonuo.js} +0 -0
- /package/dist/{presets-Dkdv55Gt.js → presets-1OhFpaIC.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-CjVgzjQT.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CRvVzOvP.js} +0 -0
- /package/dist/{useCanvas2D-ClrQuZtp.js → useCanvas2D-CSeH8h16.js} +0 -0
- /package/dist/{useGlobalDark-d6waty-X.js → useGlobalDark-D7R9OypB.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-DAdVPVp4.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-D3USn0yc.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
- /package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-CcgmgMQt.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-DnyGXKKY.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-B3b10W6r.js} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const BASE_WIDTH = 1280;
|
|
1
|
+
export { BASE_WIDTH } from "./constants";
|
|
3
2
|
export interface ConstellationNode {
|
|
4
3
|
x: number;
|
|
5
4
|
y: number;
|
|
@@ -71,15 +70,6 @@ export interface ConstellationWander {
|
|
|
71
70
|
/** the random extra idle (ms) added per cadence (so the rhythm is not metronomic). */
|
|
72
71
|
jitter: number;
|
|
73
72
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Auto-DRIFT cadence DEFAULTS (AY.W-CON1 source; tokenised in AY.W-CON2). The
|
|
76
|
-
* `--constellation-wander-idle`/`-wander-jitter` tokens override these on mount via
|
|
77
|
-
* `readInteractionConfig` (the SAME numeric `--constellation-*` cohort as the warp
|
|
78
|
-
* spring + the well gains); a prop `{ minIdle, jitter }` still wins over the token.
|
|
79
|
-
* The 8s/8s default rhythm re-targets the focal mark every 8–16s (the slides cadence).
|
|
80
|
-
*/
|
|
81
|
-
export declare const DEFAULT_WANDER_IDLE = 8000;
|
|
82
|
-
export declare const DEFAULT_WANDER_JITTER = 8000;
|
|
83
73
|
/**
|
|
84
74
|
* The warp-spring tuning the integrator reads (AY.W-CON2). Tokenised numeric (the
|
|
85
75
|
* `--constellation-warp-*` cohort) so a consumer retunes the warp WITHOUT editing
|
|
@@ -206,6 +196,15 @@ export interface ConstellationProps {
|
|
|
206
196
|
link?: number;
|
|
207
197
|
/** Drift speed. Default 0.16. */
|
|
208
198
|
speed?: number;
|
|
199
|
+
/**
|
|
200
|
+
* AY.W-COHERE E3 — the per-instance outer-envelope RECESSION knob (the aurora
|
|
201
|
+
* `opacityCeiling` / fourier `intensity` sibling — ONE recession vocabulary
|
|
202
|
+
* across the four live substrates). Scales the painted edge/node/web/ripple
|
|
203
|
+
* alpha OVER the mode-tuned `--constellation-alpha` base so the lattice can
|
|
204
|
+
* RECEDE behind content (0.4–0.6 in a hero). Default `1` is byte-identical to
|
|
205
|
+
* HEAD.
|
|
206
|
+
*/
|
|
207
|
+
opacityCeiling?: number;
|
|
209
208
|
/** Seed for a reproducible field (number or hashed string); omit for `Math.random`. */
|
|
210
209
|
seed?: number | string;
|
|
211
210
|
/** Steer-toward-cursor + tap ripples. Default true; auto-off under reduced-motion. */
|
|
@@ -261,31 +260,6 @@ export interface ConstellationProps {
|
|
|
261
260
|
/** The skin seam — paints the consumer's focal mark on the live field. */
|
|
262
261
|
drawOverlay?: (ctx: CanvasRenderingContext2D, field: ConstellationField, now: number) => void;
|
|
263
262
|
}
|
|
264
|
-
export declare const DEFAULT_PALETTE: ConstellationPalette;
|
|
265
|
-
/**
|
|
266
|
-
* Resolve the FULL neutral palette + legibility weights off a canvas's resolved
|
|
267
|
-
* custom properties (AX.W17). The colors AND the alpha multipliers route through
|
|
268
|
-
* the same `getComputedStyle` probe, so a dark-mode flip re-resolves BOTH the
|
|
269
|
-
* `:root`/`.dark` color arms AND the per-mode alpha defaults in one read.
|
|
270
|
-
*/
|
|
271
|
-
export declare function readPalette(canvas: HTMLCanvasElement): ConstellationPalette;
|
|
272
|
-
/**
|
|
273
|
-
* Read the NUMERIC interaction-tuning tokens (the warp spring + the gravity-well
|
|
274
|
-
* gains) off a canvas's resolved custom properties — ONCE on mount (AY.W-CON2),
|
|
275
|
-
* via `parseFloat`, NOT per-frame `getComputedStyle` (the hot loop stays clean).
|
|
276
|
-
* Returns `{ warp, well }` configs the field carries; every member falls back to
|
|
277
|
-
* the shipped default when the token is absent (an SSR / no-token mount reads the
|
|
278
|
-
* byte-identical spring). The tokens are PLAIN numbers (`0.55`, `12000`), immune
|
|
279
|
-
* to the W30 `light-dark()`-into-Canvas2D leak (they never reach a `fillStyle`).
|
|
280
|
-
*/
|
|
281
|
-
export declare function readInteractionConfig(canvas: HTMLCanvasElement): {
|
|
282
|
-
warp: ConstellationWarpConfig;
|
|
283
|
-
well: ConstellationWellConfig;
|
|
284
|
-
wander: {
|
|
285
|
-
minIdle: number;
|
|
286
|
-
jitter: number;
|
|
287
|
-
};
|
|
288
|
-
};
|
|
289
263
|
/**
|
|
290
264
|
* Seed `count` drifting nodes inside `w × h`. `rng` is a `() => number` in
|
|
291
265
|
* `[0, 1)` (the glass-ui `mulberry32`/`Math.random`); a seeded `rng` lays out a
|
|
@@ -325,118 +299,3 @@ export declare function refitField(field: ConstellationField, prevW: number, pre
|
|
|
325
299
|
* (a click-warp in flight pre-empts the cadence — `warpSettled` reports false).
|
|
326
300
|
*/
|
|
327
301
|
export declare function stepField(field: ConstellationField, k: number, speed: number, pointer: ConstellationPointer | null, dt?: number, now?: number, rng?: () => number): void;
|
|
328
|
-
/**
|
|
329
|
-
* Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
|
|
330
|
-
* composed inside `stepField` (NO new rAF): ease `well.strength` toward
|
|
331
|
-
* `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
|
|
332
|
-
* inverse-square pull toward the held point onto each node within `cfg.reach`
|
|
333
|
-
* (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
|
|
334
|
-
* clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
|
|
335
|
-
* invariant — so a released well re-settles). No-ops (entirely skipped) when
|
|
336
|
-
* `field.well` is undefined → the default render is byte-identical to HEAD.
|
|
337
|
-
*
|
|
338
|
-
* `dt` is clamped to {@link WARP_DT_CLAMP} (the same park-resume guard the warp
|
|
339
|
-
* uses) so a tab-throttle gap cannot slingshot the field in one giant step.
|
|
340
|
-
*/
|
|
341
|
-
export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
|
|
342
|
-
/**
|
|
343
|
-
* Warp spring tuning DEFAULTS — gentle critically-damped (no overshoot on a focal
|
|
344
|
-
* mark). The `--constellation-warp-response`/`-zeta` tokens override these on mount
|
|
345
|
-
* via `field.warpCfg` (AY.W-CON2); these stay the byte-identical fallback.
|
|
346
|
-
*
|
|
347
|
-
* `WARP_RESPONSE` is the keyframes.js `(response, dampingFraction)` model's ANGULAR
|
|
348
|
-
* PERIOD (the SwiftUI `.spring(response:)` axis), `ω₀ = 2π/response` — NOT a
|
|
349
|
-
* settle-duration. At ζ=1 the 2%-settle lands at `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`
|
|
350
|
-
* (the `(1 + ω₀t)e^(−ω₀t)` critically-damped envelope); the shipped 0.55 settles
|
|
351
|
-
* at ≈0.51s. This is the AY.W-CON2 ω-reconcile: the engine keeps the keyframes.js
|
|
352
|
-
* `ω₀ = 2π/response` convention (the shared house model — `regen-spring-tokens.mjs`,
|
|
353
|
-
* `keyframes.d.ts:860-882`) and mints NO second ω formula; the SEMANTIC honesty
|
|
354
|
-
* (period, not settle) lives in this doc + the token comment + the settle-time unit
|
|
355
|
-
* assertion, so a consumer setting the token gets the documented behaviour at ANY ζ.
|
|
356
|
-
*/
|
|
357
|
-
export declare const WARP_RESPONSE = 0.55;
|
|
358
|
-
export declare const WARP_ZETA = 1;
|
|
359
|
-
/**
|
|
360
|
-
* Gravity-well tuning DEFAULTS (AY.W-CON2). The `--constellation-well-*` tokens
|
|
361
|
-
* override these on mount via `field.well.cfg`; these stay the fallback. SET by the
|
|
362
|
-
* §6 egg-live π readback (the field-perturbs-then-cools capture is the binding
|
|
363
|
-
* truth) — a moderate gain over a generous reach, a brisk ramp, a tight no-slingshot
|
|
364
|
-
* speed cap, and the singularity-soften floor.
|
|
365
|
-
*/
|
|
366
|
-
export declare const DEFAULT_WELL_CONFIG: ConstellationWellConfig;
|
|
367
|
-
/**
|
|
368
|
-
* The nearest DRIFTING node to `(px, py)` in canvas-local px — a linear O(count)
|
|
369
|
-
* min-d² scan (count 64 default — negligible; matches the O(count²) edge pass).
|
|
370
|
-
* "Lattice point" = the nearest drifting NODE (the constellation has NO fixed
|
|
371
|
-
* lattice). `excludeIdx` drops a node from the candidate set (the focal node
|
|
372
|
-
* excludes ITSELF, so a cursor-on-focal warp no-ops). Returns `-1` if no
|
|
373
|
-
* eligible node exists (empty field, or only the excluded node).
|
|
374
|
-
*/
|
|
375
|
-
export declare function nearestNode(field: ConstellationField, px: number, py: number, excludeIdx?: number): number;
|
|
376
|
-
/**
|
|
377
|
-
* Advance the focal-node warp spring one `dt` (seconds). A per-axis 2nd-order
|
|
378
|
-
* critically-damped integrator over `field.warp.{x,y}` toward the LIVE position
|
|
379
|
-
* of `field.nodes[field.warp.targetIdx]` — re-read EACH frame, so the spring
|
|
380
|
-
* CHASES a drifting target and arrives ON it (the identity-ride). No-ops when no
|
|
381
|
-
* warp is active (`targetIdx < 0`). `dt` is clamped to {@link WARP_DT_CLAMP} so a
|
|
382
|
-
* tab-throttle / offscreen-park-resume gap cannot teleport the mark.
|
|
383
|
-
*
|
|
384
|
-
* x += v·dt ; v += (−2ζω·v − ω²·(x − target))·dt
|
|
385
|
-
*
|
|
386
|
-
* Reads `(response, ζ)` from `field.warpCfg` (the tokenised override — AY.W-CON2),
|
|
387
|
-
* falling back to the shipped `WARP_RESPONSE`/`WARP_ZETA` defaults. `ω = 2π/response`
|
|
388
|
-
* is the keyframes.js `(response, dampingFraction)` convention (the SHARED house
|
|
389
|
-
* model — `ω₀` is the angular frequency, `response` its ANGULAR PERIOD, NOT a
|
|
390
|
-
* settle-duration; at ζ=1 the 2%-settle is `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`). NO
|
|
391
|
-
* second ω formula is minted (the ω-reconcile). NOT its rAF — the FORBID-useSpring
|
|
392
|
-
* contract (a second rAF would defeat the parked-substrate one-path freeze).
|
|
393
|
-
*/
|
|
394
|
-
export declare function warpStep(field: ConstellationField, dt: number): void;
|
|
395
|
-
/**
|
|
396
|
-
* Point the warp at a node INDEX (the live target-source seam). The focal node
|
|
397
|
-
* re-points to `idx`; the spring chases `nodes[idx]`'s LIVE position FROM the
|
|
398
|
-
* focal mark's CURRENT position (`warp.{x,y}`) — a continuous spring-eased path,
|
|
399
|
-
* never a snap. The component seeds `warp.{x,y}` at field-center on first layout,
|
|
400
|
-
* so even the first warp springs from a real start point. `idx < 0` clears the
|
|
401
|
-
* warp (the focal mark is removed). Re-pointing does NOT zero the velocity, so a
|
|
402
|
-
* mid-flight re-target curves smoothly toward the new node.
|
|
403
|
-
*/
|
|
404
|
-
export declare function setWarpTarget(field: ConstellationField, idx: number): void;
|
|
405
|
-
/**
|
|
406
|
-
* Warp the focal node to the nearest drifting node to a canvas-LOCAL px point
|
|
407
|
-
* (the `warpTo(point)` primitive). The DEGENERATE case — the click's UNCONSTRAINED
|
|
408
|
-
* nearest node is already the current focal (cursor on/closest to the focal mark)
|
|
409
|
-
* — NO-OPS (returns the current focal; a click on yourself does not re-warp). Any
|
|
410
|
-
* OTHER click re-points to the nearest node, with the focal EXCLUDED from the
|
|
411
|
-
* candidate set (you never re-warp to yourself; the next-nearest wins). Returns
|
|
412
|
-
* the chosen node index, or `-1` when no eligible node exists. The component's
|
|
413
|
-
* `warpTo(clientX, clientY)` sugar maps client→local px via `toLocal` first.
|
|
414
|
-
*/
|
|
415
|
-
export declare function warpTo(field: ConstellationField, px: number, py: number): number;
|
|
416
|
-
/**
|
|
417
|
-
* Is the warp spring ARRIVED on its target (AY.W-CON1)? True when there is no
|
|
418
|
-
* active target (`targetIdx < 0`) OR the focal's gap to its LIVE target node is
|
|
419
|
-
* within {@link WARP_SETTLE_BAND}. A click-warp in flight (hundreds of px out)
|
|
420
|
-
* reports NOT arrived, so a user click always PRE-EMPTS the auto-drift cadence
|
|
421
|
-
* (the wander only re-targets a spring that has reached its current node). The
|
|
422
|
-
* gate is POSITION-only by design — a critically-damped spring tracking a drifting
|
|
423
|
-
* node carries a non-zero steady-state velocity forever, so a velocity term would
|
|
424
|
-
* never clear on a live field.
|
|
425
|
-
*/
|
|
426
|
-
export declare function warpSettled(field: ConstellationField): boolean;
|
|
427
|
-
/**
|
|
428
|
-
* Pick a random eligible node index for the auto-drift re-target (AY.W-CON1) —
|
|
429
|
-
* any node EXCEPT the current `focalIndex` (so the focal actually MOVES). `rng`
|
|
430
|
-
* is the seeded `() => number` in `[0, 1)`. A degenerate field (≤1 node, or only
|
|
431
|
-
* the current focal) returns the current focal, which `setWarpTarget` no-ops
|
|
432
|
-
* cleanly (no crash, no jump).
|
|
433
|
-
*/
|
|
434
|
-
export declare function pickWanderTarget(field: ConstellationField, rng: () => number): number;
|
|
435
|
-
/** Pass 1 — hairline edges between any two nodes within `link` px (alpha falls off with distance). */
|
|
436
|
-
export declare function drawEdges(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette): void;
|
|
437
|
-
/** Pass 2 — ambient node dots. */
|
|
438
|
-
export declare function drawNodes(ctx: CanvasRenderingContext2D, field: ConstellationField, palette: ConstellationPalette): void;
|
|
439
|
-
/** Pass 3 — the cursor joins the web: faint links to nodes within reach + a soft cursor node. */
|
|
440
|
-
export declare function drawPointerWeb(ctx: CanvasRenderingContext2D, field: ConstellationField, link: number, palette: ConstellationPalette, pointer: ConstellationPointer | null): void;
|
|
441
|
-
/** Pass 4 — tap ripples: expanding rings that fade over ~0.9s; consumed entries are spliced. */
|
|
442
|
-
export declare function drawRipples(ctx: CanvasRenderingContext2D, field: ConstellationField, now: number, ripples: ConstellationRipple[], palette: ConstellationPalette): void;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { ConstellationField, ConstellationWarpConfig, ConstellationWellConfig } from "./constellationField";
|
|
2
|
+
import { DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_WELL_CONFIG, WARP_RESPONSE, WARP_ZETA } from "./constants";
|
|
3
|
+
export { DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, DEFAULT_WELL_CONFIG, WARP_RESPONSE, WARP_ZETA };
|
|
4
|
+
/**
|
|
5
|
+
* Read the NUMERIC interaction-tuning tokens (the warp spring + the gravity-well
|
|
6
|
+
* gains) off a canvas's resolved custom properties — ONCE on mount (AY.W-CON2),
|
|
7
|
+
* via `parseFloat`, NOT per-frame `getComputedStyle` (the hot loop stays clean).
|
|
8
|
+
* Returns `{ warp, well }` configs the field carries; every member falls back to
|
|
9
|
+
* the shipped default when the token is absent (an SSR / no-token mount reads the
|
|
10
|
+
* byte-identical spring). The tokens are PLAIN numbers (`0.55`, `12000`), immune
|
|
11
|
+
* to the W30 `light-dark()`-into-Canvas2D leak (they never reach a `fillStyle`).
|
|
12
|
+
*/
|
|
13
|
+
export declare function readInteractionConfig(canvas: HTMLCanvasElement): {
|
|
14
|
+
warp: ConstellationWarpConfig;
|
|
15
|
+
well: ConstellationWellConfig;
|
|
16
|
+
wander: {
|
|
17
|
+
minIdle: number;
|
|
18
|
+
jitter: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Advance the gravity-well one `dt` (AY.W-CON2). A transient held-pointer force
|
|
23
|
+
* composed inside `stepField` (NO new rAF): ease `well.strength` toward
|
|
24
|
+
* `well.target` (1 held / 0 released) at `cfg.ramp`/s; while active, add an
|
|
25
|
+
* inverse-square pull toward the held point onto each node within `cfg.reach`
|
|
26
|
+
* (the `max(d, soften)` no-singularity floor + the `cfg.maxSpeed` no-slingshot
|
|
27
|
+
* clamp); ALWAYS ease every node's |v| back toward `speed` (the field-cools
|
|
28
|
+
* invariant — so a released well re-settles). No-ops (entirely skipped) when
|
|
29
|
+
* `field.well` is undefined → the default render is byte-identical to HEAD.
|
|
30
|
+
*
|
|
31
|
+
* `dt` is clamped to {@link WARP_DT_CLAMP} (the same park-resume guard the warp
|
|
32
|
+
* uses) so a tab-throttle gap cannot slingshot the field in one giant step.
|
|
33
|
+
*/
|
|
34
|
+
export declare function stepWell(field: ConstellationField, k: number, speed: number, dt: number): void;
|
|
35
|
+
/**
|
|
36
|
+
* The nearest DRIFTING node to `(px, py)` in canvas-local px — a linear O(count)
|
|
37
|
+
* min-d² scan (count 64 default — negligible; matches the O(count²) edge pass).
|
|
38
|
+
* "Lattice point" = the nearest drifting NODE (the constellation has NO fixed
|
|
39
|
+
* lattice). `excludeIdx` drops a node from the candidate set (the focal node
|
|
40
|
+
* excludes ITSELF, so a cursor-on-focal warp no-ops). Returns `-1` if no
|
|
41
|
+
* eligible node exists (empty field, or only the excluded node).
|
|
42
|
+
*/
|
|
43
|
+
export declare function nearestNode(field: ConstellationField, px: number, py: number, excludeIdx?: number): number;
|
|
44
|
+
/**
|
|
45
|
+
* Advance the focal-node warp spring one `dt` (seconds). A per-axis 2nd-order
|
|
46
|
+
* critically-damped integrator over `field.warp.{x,y}` toward the LIVE position
|
|
47
|
+
* of `field.nodes[field.warp.targetIdx]` — re-read EACH frame, so the spring
|
|
48
|
+
* CHASES a drifting target and arrives ON it (the identity-ride). No-ops when no
|
|
49
|
+
* warp is active (`targetIdx < 0`). `dt` is clamped to {@link WARP_DT_CLAMP} so a
|
|
50
|
+
* tab-throttle / offscreen-park-resume gap cannot teleport the mark.
|
|
51
|
+
*
|
|
52
|
+
* x += v·dt ; v += (−2ζω·v − ω²·(x − target))·dt
|
|
53
|
+
*
|
|
54
|
+
* Reads `(response, ζ)` from `field.warpCfg` (the tokenised override — AY.W-CON2),
|
|
55
|
+
* falling back to the shipped `WARP_RESPONSE`/`WARP_ZETA` defaults. `ω = 2π/response`
|
|
56
|
+
* is the keyframes.js `(response, dampingFraction)` convention (the SHARED house
|
|
57
|
+
* model — `ω₀` is the angular frequency, `response` its ANGULAR PERIOD, NOT a
|
|
58
|
+
* settle-duration; at ζ=1 the 2%-settle is `t₂ ≈ 5.83/ω₀ ≈ 0.93·response`). NO
|
|
59
|
+
* second ω formula is minted (the ω-reconcile). NOT its rAF — the FORBID-useSpring
|
|
60
|
+
* contract (a second rAF would defeat the parked-substrate one-path freeze).
|
|
61
|
+
*/
|
|
62
|
+
export declare function warpStep(field: ConstellationField, dt: number): void;
|
|
63
|
+
/**
|
|
64
|
+
* Point the warp at a node INDEX (the live target-source seam). The focal node
|
|
65
|
+
* re-points to `idx`; the spring chases `nodes[idx]`'s LIVE position FROM the
|
|
66
|
+
* focal mark's CURRENT position (`warp.{x,y}`) — a continuous spring-eased path,
|
|
67
|
+
* never a snap. The component seeds `warp.{x,y}` at field-center on first layout,
|
|
68
|
+
* so even the first warp springs from a real start point. `idx < 0` clears the
|
|
69
|
+
* warp (the focal mark is removed). Re-pointing does NOT zero the velocity, so a
|
|
70
|
+
* mid-flight re-target curves smoothly toward the new node.
|
|
71
|
+
*/
|
|
72
|
+
export declare function setWarpTarget(field: ConstellationField, idx: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Warp the focal node to the nearest drifting node to a canvas-LOCAL px point
|
|
75
|
+
* (the `warpTo(point)` primitive). The DEGENERATE case — the click's UNCONSTRAINED
|
|
76
|
+
* nearest node is already the current focal (cursor on/closest to the focal mark)
|
|
77
|
+
* — NO-OPS (returns the current focal; a click on yourself does not re-warp). Any
|
|
78
|
+
* OTHER click re-points to the nearest node, with the focal EXCLUDED from the
|
|
79
|
+
* candidate set (you never re-warp to yourself; the next-nearest wins). Returns
|
|
80
|
+
* the chosen node index, or `-1` when no eligible node exists. The component's
|
|
81
|
+
* `warpTo(clientX, clientY)` sugar maps client→local px via `toLocal` first.
|
|
82
|
+
*/
|
|
83
|
+
export declare function warpTo(field: ConstellationField, px: number, py: number): number;
|
|
84
|
+
/**
|
|
85
|
+
* Is the warp spring ARRIVED on its target (AY.W-CON1)? True when there is no
|
|
86
|
+
* active target (`targetIdx < 0`) OR the focal's gap to its LIVE target node is
|
|
87
|
+
* within {@link WARP_SETTLE_BAND}. A click-warp in flight (hundreds of px out)
|
|
88
|
+
* reports NOT arrived, so a user click always PRE-EMPTS the auto-drift cadence
|
|
89
|
+
* (the wander only re-targets a spring that has reached its current node). The
|
|
90
|
+
* gate is POSITION-only by design — a critically-damped spring tracking a drifting
|
|
91
|
+
* node carries a non-zero steady-state velocity forever, so a velocity term would
|
|
92
|
+
* never clear on a live field.
|
|
93
|
+
*/
|
|
94
|
+
export declare function warpSettled(field: ConstellationField): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Pick a random eligible node index for the auto-drift re-target (AY.W-CON1) —
|
|
97
|
+
* any node EXCEPT the current `focalIndex` (so the focal actually MOVES). `rng`
|
|
98
|
+
* is the seeded `() => number` in `[0, 1)`. A degenerate field (≤1 node, or only
|
|
99
|
+
* the current focal) returns the current focal, which `setWarpTarget` no-ops
|
|
100
|
+
* cleanly (no crash, no jump).
|
|
101
|
+
*/
|
|
102
|
+
export declare function pickWanderTarget(field: ConstellationField, rng: () => number): number;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { default as Constellation } from "./Constellation.vue";
|
|
2
|
-
export { seedField, stepField,
|
|
2
|
+
export { seedField, stepField, refitField, BASE_WIDTH, } from "./constellationField";
|
|
3
|
+
export { stepWell, nearestNode, readInteractionConfig, warpStep, warpTo, setWarpTarget, warpSettled, pickWanderTarget, DEFAULT_WELL_CONFIG, DEFAULT_WANDER_IDLE, DEFAULT_WANDER_JITTER, WARP_RESPONSE, WARP_ZETA, } from "./constellationInteraction";
|
|
4
|
+
export { readPalette, drawEdges, drawNodes, drawPointerWeb, drawRipples, DEFAULT_PALETTE, } from "./constellationDraw";
|
|
3
5
|
export type { ConstellationNode, ConstellationRipple, ConstellationPointer, ConstellationPalette, ConstellationField, ConstellationWarp, ConstellationWarpConfig, ConstellationWander, ConstellationWell, ConstellationWellConfig, ConstellationProps, } from "./constellationField";
|
|
@@ -13,11 +13,22 @@ type __VLS_Props = {
|
|
|
13
13
|
* @default false
|
|
14
14
|
*/
|
|
15
15
|
disableTransitions?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Opt-in slow-ECLIPSE register: a LONG-PRESS (vs the normal click) flips
|
|
18
|
+
* the mode through an indulgent, stretched sun↔moon cross-fade — the
|
|
19
|
+
* `--toggle-eclipse-duration` (≈1600ms) over the default 750ms. The bare
|
|
20
|
+
* `@click` flip is UNCHANGED (the default-path canary). Under
|
|
21
|
+
* `prefers-reduced-motion: reduce` the long-press flips INSTANTLY (no
|
|
22
|
+
* eclipse). Default false — the toggle behaves exactly as before.
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
eclipse?: boolean;
|
|
16
26
|
};
|
|
17
27
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
18
28
|
size: DarkModeToggleSize;
|
|
19
29
|
passive: boolean;
|
|
20
30
|
disableTransitions: boolean;
|
|
31
|
+
eclipse: boolean;
|
|
21
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
33
|
declare const _default: typeof __VLS_export;
|
|
23
34
|
export default _default;
|
|
@@ -12,10 +12,9 @@ import { type HTMLAttributes } from "vue";
|
|
|
12
12
|
*
|
|
13
13
|
* K.W6 Lane B — when the consumer attaches `data-tier="primary"`, the
|
|
14
14
|
* button composes the canonical `btn-audacious` utility (the lifted
|
|
15
|
-
* disco-grain + specular-highlight recipe at
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* phase-tinting + structural shell on top of the canonical recipe.
|
|
15
|
+
* disco-grain + sparkle-sweep + specular-highlight recipe at
|
|
16
|
+
* `utilities.css`). `dock.css` retains the dock-local phase-tinting +
|
|
17
|
+
* structural shell on top of the canonical recipe.
|
|
19
18
|
*/
|
|
20
19
|
type __VLS_Props = {
|
|
21
20
|
as?: string;
|
|
@@ -1,111 +1,3 @@
|
|
|
1
|
-
type DockDensity = "compact" | "comfortable" | "spacious" | "audacious";
|
|
2
|
-
interface DockCommonProps {
|
|
3
|
-
fitContent?: boolean;
|
|
4
|
-
position?: "fixed" | "inline" | "sticky";
|
|
5
|
-
alwaysExpanded?: boolean;
|
|
6
|
-
/**
|
|
7
|
-
* Corner treatment.
|
|
8
|
-
* `"pill"` — the stadium silhouette (default).
|
|
9
|
-
* `"rounded"` — a finite rounded radius (`--radius-xl`).
|
|
10
|
-
* `"card"` — the AW.W3b big-dock card shell: a finite concentric
|
|
11
|
-
* radius (`--dock-card-radius`, default `--radius-3xl`)
|
|
12
|
-
* ABOVE 2xl, below pill — does NOT collapse to a stadium.
|
|
13
|
-
* Collapsed it returns to a pill; the pill↔card swap
|
|
14
|
-
* morphs on the `--dock-motion-resize` spring. AX.W56's
|
|
15
|
-
* squircle policy applies `corner-shape:
|
|
16
|
-
* var(--corner-shape-bigdock)` here under `@supports
|
|
17
|
-
* (corner-shape: superellipse(2))` — the big-dock is the ONE
|
|
18
|
-
* surface where the superellipse reads (cards/pills stay
|
|
19
|
-
* round); the border-radius arc is the cross-engine contract.
|
|
20
|
-
*
|
|
21
|
-
* `"pill"`/`"rounded"` previously bound ONLY under the vertical rail
|
|
22
|
-
* variant — on a horizontal dock the prop silently no-op'd. AW.W3b adds
|
|
23
|
-
* the horizontal-root shape rules (closing that documented-but-dead prop),
|
|
24
|
-
* so `shape` now paints on a horizontal dock too.
|
|
25
|
-
*/
|
|
26
|
-
shape?: "pill" | "rounded" | "card";
|
|
27
|
-
/**
|
|
28
|
-
* Layout axis of the dock. `"horizontal"` (default) lays items out
|
|
29
|
-
* left-to-right and animates `width`; `"vertical"` lays items out
|
|
30
|
-
* top-to-bottom and animates `height`. IGNORED under `variant="rail"` /
|
|
31
|
-
* `"instrument-strip"` (those force vertical by construction).
|
|
32
|
-
*/
|
|
33
|
-
orientation?: "horizontal" | "vertical";
|
|
34
|
-
/**
|
|
35
|
-
* Density controls dock padding, gaps, layer height, and inherited
|
|
36
|
-
* dock control sizing. Root CSS variables can override each density.
|
|
37
|
-
*/
|
|
38
|
-
density?: DockDensity;
|
|
39
|
-
/**
|
|
40
|
-
* Overflow strategy when the expanded content exceeds the dock's
|
|
41
|
-
* axis cap (`--dock-max-inline-size` horizontally,
|
|
42
|
-
* `--dock-max-block-size` vertically). The ONE knob governing every
|
|
43
|
-
* overflow behaviour (AT.W7-dock-a clean break — collapsed from the
|
|
44
|
-
* prior `wrap` boolean + `overflow` pair + `containerName` clip-lift,
|
|
45
|
-
* which all touched overflow divergently).
|
|
46
|
-
* `"grow"` — content grows to fit then overflows visibly past
|
|
47
|
-
* the cap (the default; nothing clips or scrolls).
|
|
48
|
-
* `"wrap"` — expanded content wraps to multiple rows via CONTENT-DRIVEN
|
|
49
|
-
* intrinsic flex-wrap (the `.dock-overflow-wrap` recipe). The
|
|
50
|
-
* dock shrink-wraps to content and caps that intrinsic width
|
|
51
|
-
* at `max-inline-size: var(--dock-max-inline-size)`, so the row
|
|
52
|
-
* reflows to N rows EXACTLY when its intrinsic width exceeds
|
|
53
|
-
* the cap — at ANY viewport width — and collapses to one row
|
|
54
|
-
* when it fits (no viewport breakpoint). The wrapped multi-row silhouette lifts
|
|
55
|
-
* onto the card/floating shadow tier as the dock expands.
|
|
56
|
-
* HORIZONTAL-ONLY: a vertical rail grows-to-fit + clamps via
|
|
57
|
-
* `--dock-max-block-size` (its own overflow story), so the
|
|
58
|
-
* `.dock-overflow-wrap` class is not emitted for a vertical
|
|
59
|
-
* orientation.
|
|
60
|
-
* `"scroll"` — the dock becomes the scroll port. Horizontal docks
|
|
61
|
-
* scroll the active layer on the inline axis
|
|
62
|
-
* (`.dock-scroll-x`); vertical rails scroll on the
|
|
63
|
-
* block axis (`.dock-scroll-y`), keeping the
|
|
64
|
-
* `max-block-size` cap. The rounded pill masks the
|
|
65
|
-
* scroll edge; the scrollbar is hidden. The axis is
|
|
66
|
-
* chosen automatically from `orientation`.
|
|
67
|
-
*/
|
|
68
|
-
overflow?: "grow" | "wrap" | "scroll";
|
|
69
|
-
/**
|
|
70
|
-
* When set, the dock root establishes an inline-size container query
|
|
71
|
-
* subject (`container-type: inline-size; container-name: <value>`) so
|
|
72
|
-
* descendants can query the named container via `@container <value>
|
|
73
|
-
* (...)` rules. ORTHOGONAL to the `overflow` clip: opting into a
|
|
74
|
-
* container subject does NOT silently change the dock's clip shell
|
|
75
|
-
* (AT.W7-dock-a — the prior clip-lift was folded out; use
|
|
76
|
-
* `overflow="wrap"` to allow multi-line content).
|
|
77
|
-
*
|
|
78
|
-
* T.B audit §1.3 cornerstone: the cluster's container subject must
|
|
79
|
-
* live on the dock primitive, never on a descendant whose intrinsic
|
|
80
|
-
* size the dock relies on.
|
|
81
|
-
*/
|
|
82
|
-
containerName?: string;
|
|
83
|
-
}
|
|
84
|
-
interface DockVariantProps extends DockCommonProps {
|
|
85
|
-
variant?: "dock";
|
|
86
|
-
/** Idle-collapse delay in ms (default 2000). DOCK-ONLY — a rail never collapses. */
|
|
87
|
-
collapseDelay?: number;
|
|
88
|
-
/** Start in the collapsed state (default true). DOCK-ONLY — a rail is always expanded. */
|
|
89
|
-
startCollapsed?: boolean;
|
|
90
|
-
/**
|
|
91
|
-
* In-cap arrangement. `"linear"` (default) lays the active layer out as a
|
|
92
|
-
* linear row/column. `"grid"` makes the active layer a self-wrapping tile
|
|
93
|
-
* grid (Launchpad/Stage-Manager track symmetry — `auto-fill` columns of
|
|
94
|
-
* `--dock-tile-min`). ORTHOGONAL to `overflow` (the OVER-cap strategy):
|
|
95
|
-
* `layout` is the IN-cap arrangement.
|
|
96
|
-
*
|
|
97
|
-
* Hard contract: a `layout="grid"` dock is `alwaysExpanded` (a 2D panel
|
|
98
|
-
* does not read as a collapsible pill, and no width morph means no
|
|
99
|
-
* per-frame grid reflow). The canonical pairing is
|
|
100
|
-
* `shape="card" layout="grid"` (the props stay independent — no
|
|
101
|
-
* auto-implication of `shape`). DOCK-ONLY — the grid is a horizontal big-dock
|
|
102
|
-
* arrangement, never a rail's.
|
|
103
|
-
*/
|
|
104
|
-
layout?: "linear" | "grid";
|
|
105
|
-
}
|
|
106
|
-
interface DockRailProps extends DockCommonProps {
|
|
107
|
-
variant: "rail" | "instrument-strip";
|
|
108
|
-
}
|
|
109
1
|
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_14: {};
|
|
110
2
|
type __VLS_Slots = {} & {
|
|
111
3
|
persistent?: (props: typeof __VLS_1) => any;
|
|
@@ -118,7 +10,7 @@ type __VLS_Slots = {} & {
|
|
|
118
10
|
} & {
|
|
119
11
|
collapsed?: (props: typeof __VLS_14) => any;
|
|
120
12
|
};
|
|
121
|
-
declare const __VLS_base: import("vue").DefineComponent<DockVariantProps | DockRailProps, {
|
|
13
|
+
declare const __VLS_base: import("vue").DefineComponent<import("./composables/useDockShellProps").DockVariantProps | import("./composables/useDockShellProps").DockRailProps, {
|
|
122
14
|
expanded: import("vue").Ref<boolean, boolean>;
|
|
123
15
|
isPinned: import("vue").Ref<boolean, boolean>;
|
|
124
16
|
isHeld: import("vue").ComputedRef<boolean>;
|
|
@@ -127,7 +19,7 @@ declare const __VLS_base: import("vue").DefineComponent<DockVariantProps | DockR
|
|
|
127
19
|
collapse: () => void;
|
|
128
20
|
keepOpen: () => void;
|
|
129
21
|
release: () => void;
|
|
130
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DockVariantProps | DockRailProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("./composables/useDockShellProps").DockVariantProps | import("./composables/useDockShellProps").DockRailProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
131
23
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
132
24
|
declare const _default: typeof __VLS_export;
|
|
133
25
|
export default _default;
|
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
import type { Ref } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* AX.W02 — ONE morph orchestrator per dock. The dock is a single morph stack
|
|
4
|
+
* whose active "layer" is `(expandedState × activePane)`: the outer
|
|
5
|
+
* collapse↔expand swap and the inner `<DockLayerGroup>` pane swaps are
|
|
6
|
+
* transitions in the SAME group — ONE spring, ONE scalar (`--dock-morph-t`,
|
|
7
|
+
* established by W01), ONE clock. No second engine.
|
|
8
|
+
*
|
|
9
|
+
* Re-derived from first principles on W01's settled single-scalar substrate:
|
|
10
|
+
* - `--dock-morph-t` is written to the `.glass-dock` root and INHERITS to every
|
|
11
|
+
* descendant (dock.css `@property … inherits:true`), so ONE spring writing
|
|
12
|
+
* that one scalar drives EVERY registered container's size calc at once.
|
|
13
|
+
* - Each morphing container carries its OWN `--dock-morph-from`/`--dock-morph-to`
|
|
14
|
+
* px span (the allowed one-time FLIP measurement) and interpolates it against
|
|
15
|
+
* the shared scalar — `from + (to − from) · t`. So a simultaneous
|
|
16
|
+
* collapse + pane-swap reads as one continuous spring: the box, the nested
|
|
17
|
+
* stack, and every child stagger ramp on the same `t`.
|
|
18
|
+
*
|
|
19
|
+
* The orchestrator OWNS one `SpringProgress`. The OUTER collapse↔expand pair
|
|
20
|
+
* registers as a target; a NESTED `<DockLayerGroup>` registers a SECOND target
|
|
21
|
+
* instead of minting its own `useLayerTransition` engine. A re-toggle mid-flight
|
|
22
|
+
* re-bases the live solver onto the new span from its current velocity (the iOS
|
|
23
|
+
* interruptible-physics contract W01 keeps), so even an interrupted morph stays
|
|
24
|
+
* one continuous trajectory.
|
|
25
|
+
*
|
|
26
|
+
* This is the dock-flavored first instance of the general `MorphGroup` /
|
|
27
|
+
* `GlassEffectContainer` facility (the iOS-26 Liquid-Glass corpus, facet 26 —
|
|
28
|
+
* the `provideMorphGroup` two-part seam: a per-element driver + a provide/inject
|
|
29
|
+
* orchestrator). AX.W42 generalizes it; W02 establishes the seam it builds on.
|
|
30
|
+
*
|
|
31
|
+
* LIGHT-surface only: `SpringProgress` owns its own rAF via `.play(onFrame)` and
|
|
32
|
+
* carries no static value.js edge — never import `AnimationGroup` / `./engine`
|
|
33
|
+
* (that pulls value.js into the dock bundle).
|
|
34
|
+
*
|
|
35
|
+
* The `DOCK_SPRING` tuning this orchestrator drives is the ONE authority shared with
|
|
36
|
+
* `useLayerTransition` — it lives in `../constants` (the feature-dir constants home).
|
|
37
|
+
*/
|
|
2
38
|
export interface DockMorphGroupRegistration {
|
|
3
39
|
/** The container element owning this group's grid-stacked panes. */
|
|
4
40
|
containerEl: Ref<HTMLElement | null>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Ref } from "vue";
|
|
2
|
+
/** The morph-window handlers the GlassDock SFC wires. */
|
|
3
|
+
export interface DockMorphWindow {
|
|
4
|
+
markTransitioning: () => void;
|
|
5
|
+
onDockTransitionDone: (event: TransitionEvent) => void;
|
|
6
|
+
clearTransitionTimer: () => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Own the `isTransitioning` flag's morph-window lifecycle. `markTransitioning`
|
|
10
|
+
* (every `visualExpanded` flip) bumps a private generation so any in-flight
|
|
11
|
+
* morph's pending timer / `transitionend` self-cancels (the A→B→A no-skip /
|
|
12
|
+
* no-queue invariant); `onDockTransitionDone` resolves the flag on a resize-morph
|
|
13
|
+
* property finishing. Clears its timer on unmount.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useDockMorphWindow(dockEl: Ref<HTMLElement | null>, isTransitioning: Ref<boolean>): DockMorphWindow;
|