import type { ReactElement, ReactNode } from 'react'; /** * A descriptive hover/focus tooltip for an action spot — the shared chrome behind every game's * action-spot help (RR plates, Container controls, Stone Age places, Saint Petersburg cards). * * It wraps a single interactive child (usually a button) and shows `tip` on **pointer hover AND * keyboard focus** — focus is what makes it work on touch, since tapping an action button focuses it. * It dismisses on blur, pointer-leave, or Escape. Purely descriptive: `role="tooltip"` + an id, with * `aria-describedby` on the child; no focus trapping. * * It floats *above* the boards (some of which are diegetic hardcoded art), so it is chrome and uses * semantic tokens — an inverted `bg-foreground`/`text-background` surface that reads in light and dark. * Positioning is a tiny own implementation (measure with refs, flip to stay in the viewport, clamp the * horizontal shift) so it never spills past a 320px screen and needs no dependency. */ export interface ActionTipProps { /** The help text. Player-facing plain language: what it does + the cost. */ readonly tip: ReactNode; /** The single element the tip describes — cloned to receive `aria-describedby`. */ readonly children: ReactElement<{ 'aria-describedby'?: string; }>; /** Preferred side; flips automatically when there isn't room. */ readonly side?: 'top' | 'bottom'; /** Wrapper class — pass `block`/`w-full` when the child is a full-width button. */ readonly className?: string; } export declare function ActionTip({ tip, children, side, className }: ActionTipProps): import("react").JSX.Element;