import { type CommonProps, type Refable, type Styleable } from "@trackunit/react-components"; import { type HTMLAttributes, type ReactElement } from "react"; import type { MapTheme } from "../core/types"; import type { MarkerDomSize, MarkerState, StickPositioning } from "./model/markerDomTypes"; import { type MarkerColorConfig } from "./shared/markerColors"; type MapMarkerDivHandlers = Pick, "onClick" | "onKeyDown" | "onMouseEnter" | "onMouseLeave" | "onFocus" | "onBlur">; type MapMarkerBaseProps = CommonProps & Styleable & Refable & MapMarkerDivHandlers & { /** * Five-tier density ladder for the **default** (`state="default"`) **circle** only: diameter, * optional icon slot, center dot, and in-circle direction arrow (`MARKER_SIZE_MAP`). * * In **pill** states (`hovered`, `expanded`, `selected`), disc, icon slot, label text size, * pill-direction arrow, and pill padding are fixed to the **`md`** tier (`MARKER_PILL_CONTENT_LAYOUT_SIZE`) * so the pill does not scale with this prop. Indicator and **stick** modes both use that split * (collapsed circle vs expanded pill at the tip). **Stick anchor pin** (geo end) ignores `size`: * fixed **`xs`** when the pin is visible, **`sm`** when `selected` (`upgradeMarkerDomSize` from that * base). Same `cvaMarkerIndicator` + `MarkerDiscContent` stack as the map disc. The tip resting circle * and pill still follow `size` + resolvers. The tip pill stays fixed **`md`**. */ size: MarkerDomSize; /** Indicator fill (CSS color). */ color: string; state?: MarkerState; labelVisible?: boolean; /** Heading in degrees; renders GpsArrow (plan §5). */ direction?: number; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** When set, drives `aria-expanded` for paired panels (plan §13). */ panelOpen?: boolean; /** * When provided, the marker renders as a **stick**: an attachment arm from the * geographic anchor to the indicator/pill. When omitted, the marker renders as * a regular indicator at the anchor (ADR-0010). */ stickPositioning?: StickPositioning; }; export type MapMarkerProps = (MapMarkerBaseProps & { label: string; "aria-label"?: string; }) | (MapMarkerBaseProps & { label?: never; "aria-label": string; }); export declare const MapMarker: import("react").ForwardRefExoticComponent<(Omit & MapMarkerDivHandlers & { /** * Five-tier density ladder for the **default** (`state="default"`) **circle** only: diameter, * optional icon slot, center dot, and in-circle direction arrow (`MARKER_SIZE_MAP`). * * In **pill** states (`hovered`, `expanded`, `selected`), disc, icon slot, label text size, * pill-direction arrow, and pill padding are fixed to the **`md`** tier (`MARKER_PILL_CONTENT_LAYOUT_SIZE`) * so the pill does not scale with this prop. Indicator and **stick** modes both use that split * (collapsed circle vs expanded pill at the tip). **Stick anchor pin** (geo end) ignores `size`: * fixed **`xs`** when the pin is visible, **`sm`** when `selected` (`upgradeMarkerDomSize` from that * base). Same `cvaMarkerIndicator` + `MarkerDiscContent` stack as the map disc. The tip resting circle * and pill still follow `size` + resolvers. The tip pill stays fixed **`md`**. */ size: MarkerDomSize; /** Indicator fill (CSS color). */ color: string; state?: MarkerState; labelVisible?: boolean; /** Heading in degrees; renders GpsArrow (plan §5). */ direction?: number; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** When set, drives `aria-expanded` for paired panels (plan §13). */ panelOpen?: boolean; /** * When provided, the marker renders as a **stick**: an attachment arm from the * geographic anchor to the indicator/pill. When omitted, the marker renders as * a regular indicator at the anchor (ADR-0010). */ stickPositioning?: StickPositioning; } & { label: string; "aria-label"?: string; }, "ref"> | Omit & MapMarkerDivHandlers & { /** * Five-tier density ladder for the **default** (`state="default"`) **circle** only: diameter, * optional icon slot, center dot, and in-circle direction arrow (`MARKER_SIZE_MAP`). * * In **pill** states (`hovered`, `expanded`, `selected`), disc, icon slot, label text size, * pill-direction arrow, and pill padding are fixed to the **`md`** tier (`MARKER_PILL_CONTENT_LAYOUT_SIZE`) * so the pill does not scale with this prop. Indicator and **stick** modes both use that split * (collapsed circle vs expanded pill at the tip). **Stick anchor pin** (geo end) ignores `size`: * fixed **`xs`** when the pin is visible, **`sm`** when `selected` (`upgradeMarkerDomSize` from that * base). Same `cvaMarkerIndicator` + `MarkerDiscContent` stack as the map disc. The tip resting circle * and pill still follow `size` + resolvers. The tip pill stays fixed **`md`**. */ size: MarkerDomSize; /** Indicator fill (CSS color). */ color: string; state?: MarkerState; labelVisible?: boolean; /** Heading in degrees; renders GpsArrow (plan §5). */ direction?: number; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** When set, drives `aria-expanded` for paired panels (plan §13). */ panelOpen?: boolean; /** * When provided, the marker renders as a **stick**: an attachment arm from the * geographic anchor to the indicator/pill. When omitted, the marker renders as * a regular indicator at the anchor (ADR-0010). */ stickPositioning?: StickPositioning; } & { label?: never; "aria-label": string; }, "ref">) & import("react").RefAttributes>; export {};