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 { ClusterStickState, MarkerDomSize, StickPositioning } from "../markers/model/markerDomTypes"; import { type MarkerColorConfig } from "../markers/shared/markerColors"; type ClusterStickDivHandlers = Pick, "onKeyDown" | "onMouseEnter" | "onMouseLeave" | "onFocus" | "onBlur">; type ClusterStickBaseProps = CommonProps & Styleable & Refable & ClusterStickDivHandlers & { /** Stable identifier for the stick; forwarded to `onStickClick`. */ id: string; /** Indicator fill (CSS color). Shares the disc/pill color system with `MapMarker`. */ color: string; state?: ClusterStickState; size: MarkerDomSize; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** * How the pill is positioned relative to the cluster anchor. * Defaults to `MARKER_TUNING.stick.defaultPositioning` (straight up, 40 px). * In practice `ClusterMarker` always computes a polar fan angle and passes it here. */ positioning?: StickPositioning; /** * Whether the stick is fanned out (`true`, default) or animating back to the * cluster center (`false`). `ClusterMarker` sets this to `false` for sticks * that have left the `sticks` array so they can animate in before unmounting. * Callers rendering `ClusterStick` standalone should leave this at the default. */ open?: boolean; /** Fires with the `id` prop on click or keyboard activation. */ onStickClick?: (id: string) => void; }; export type ClusterStickProps = (ClusterStickBaseProps & { label: string; "aria-label"?: string; }) | (ClusterStickBaseProps & { label?: never; "aria-label": string; }); export declare const ClusterStick: import("react").ForwardRefExoticComponent<(Omit & ClusterStickDivHandlers & { /** Stable identifier for the stick; forwarded to `onStickClick`. */ id: string; /** Indicator fill (CSS color). Shares the disc/pill color system with `MapMarker`. */ color: string; state?: ClusterStickState; size: MarkerDomSize; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** * How the pill is positioned relative to the cluster anchor. * Defaults to `MARKER_TUNING.stick.defaultPositioning` (straight up, 40 px). * In practice `ClusterMarker` always computes a polar fan angle and passes it here. */ positioning?: StickPositioning; /** * Whether the stick is fanned out (`true`, default) or animating back to the * cluster center (`false`). `ClusterMarker` sets this to `false` for sticks * that have left the `sticks` array so they can animate in before unmounting. * Callers rendering `ClusterStick` standalone should leave this at the default. */ open?: boolean; /** Fires with the `id` prop on click or keyboard activation. */ onStickClick?: (id: string) => void; } & { label: string; "aria-label"?: string; }, "ref"> | Omit & ClusterStickDivHandlers & { /** Stable identifier for the stick; forwarded to `onStickClick`. */ id: string; /** Indicator fill (CSS color). Shares the disc/pill color system with `MapMarker`. */ color: string; state?: ClusterStickState; size: MarkerDomSize; theme: MapTheme; colorConfig?: MarkerColorConfig; icon?: ReactElement | null; /** * How the pill is positioned relative to the cluster anchor. * Defaults to `MARKER_TUNING.stick.defaultPositioning` (straight up, 40 px). * In practice `ClusterMarker` always computes a polar fan angle and passes it here. */ positioning?: StickPositioning; /** * Whether the stick is fanned out (`true`, default) or animating back to the * cluster center (`false`). `ClusterMarker` sets this to `false` for sticks * that have left the `sticks` array so they can animate in before unmounting. * Callers rendering `ClusterStick` standalone should leave this at the default. */ open?: boolean; /** Fires with the `id` prop on click or keyboard activation. */ onStickClick?: (id: string) => void; } & { label?: never; "aria-label": string; }, "ref">) & import("react").RefAttributes>; export {};