/** * System-level tuning for stick geometry, pill layout, animation, and * adaptive hover (see map marker design plan §3). * * `animation.spring` is the single source of truth for marker motion easing. * The stick endpoint animation drives a JS spring directly; the morph (label * track and direction icon collapse) uses CSS transitions whose duration is * derived from the spring's settle time and whose timing function is * `animation.morphEasing` so both motions feel like one. */ export declare const MARKER_TUNING: { readonly stick: { readonly defaultPositioning: { readonly type: "polar"; readonly angleRad: number; readonly distance: 40; }; readonly dotSizePx: 8; readonly lineWidthPx: 1.5; }; readonly pill: { /** Maximum width of the label text area. Not the full rendered pill width. */ readonly maxLabelWidthPx: 180; readonly paddingRightPx: 12; /** Matches `gap-1` (4 px) used between pill flex items in stick and indicator modes. */ readonly gapPx: 4; /** Matches `pr-1.5` (6 px) applied to the pill outer div in stick mode. */ readonly stickPaddingRightPx: 6; }; readonly animation: { /** * Source-of-truth easing for marker motion. Used directly by the stick * endpoint loop, and as the timing reference for CSS-based morph parts. */ readonly spring: Readonly<{ stiffness: number; damping: number; mass: number; restVelocity: number; restDelta: number; }>; /** * CSS transition duration used by the morph (label grid track, direction * icon collapse). Derived from the spring's settle time so the morph reads * as a single coordinated motion with the stick endpoint. */ readonly morphDurationMs: number; /** * CSS `transition-timing-function` used by every morph property. Matches * the spring's decelerating attack so JS-driven and CSS-driven parts of * the marker read as one motion. See `MARKER_MORPH_EASING` above. */ readonly morphEasing: "cubic-bezier(0.22, 1, 0.36, 1)"; }; readonly hoverDebouncMs: 150; /** Marker panel layout: bottom sheet when map container width is below this (plan §7). */ readonly panelLayout: { readonly bottomCardBreakpointWidthPx: 400; }; };