import * as react_jsx_runtime from 'react/jsx-runtime';
import * as React from 'react';
/**
* For a Leo star on a light-chrome surface that wants the deep brand shade rather
* than canvas ink: an outline button, a field's search mark. Deep in light, lifted in
* dark, because the deep shade sits within touching distance of the dark canvas.
*
* Exported because three call sites had written this pair out by hand, and the one
* that wrote it as an inline style could not carry the dark half at all.
*/
declare const LEO_DEEP_FILL_CLASS = "[--leo-icon-fill:var(--brand-color-dark)] dark:[--leo-icon-fill:var(--brand-color-light)]";
type LeoIconVariant = "ambient" | "interactive";
type LeoIconSize = "xs" | "sm" | "md" | "lg" | "xl";
/**
* What Leo is doing, expressed as motion. Drive it from real state — hover /
* focus for `invited`, `aria-busy` or a thread's thinking flag for `working`.
*
* `answered` is a one-shot: it holds its final frame, so set the state back to
* `rest` (or `invited`, if the pointer is still over the control) once the
* resolution beat has played.
*/
type LeoIconMotionState = "rest" | "invited" | "working" | "answered";
interface LeoIconProps {
variant?: LeoIconVariant;
size?: LeoIconSize;
/** Ambient motion state. Ignored by `variant="interactive"`. */
state?: LeoIconMotionState;
/**
* Shorthand for parents that only track hover / focus:
* `true` → `invited`, `false` → `rest`. `state` wins when both are set.
*/
motionActive?: boolean;
/**
* `variant="interactive"` only. The hero's breath, twinkles, and cursor
* awareness are a permanent animation frame loop over SVG transforms, which
* cannot be composited — every frame costs a style recalc and a forced layout
* for as long as it runs. A hero that owns its screen (the Leo route, the
* launcher) can carry that; one docked beside a working hub should only run
* while the user is actually with Leo. Pass `false` and the star sits still.
*/
motionLive?: boolean;
/** Required for `variant="interactive"` — exposed to AT as the control name (WCAG 4.1.2). */
ariaLabel?: string;
className?: string;
style?: React.CSSProperties;
}
/**
* Animated Ask Leo icon.
*
* @example
* // Ambient — still at rest, reacts on hover/focus, loops only while working
*
*
* // Hover/focus only — shorthand for `invited` / `rest`
*
*
* // Interactive — cursor-aware, for hero/welcome surfaces
*
*/
declare function LeoIcon({ variant, size, state, motionActive, motionLive, ariaLabel, className, style, }: LeoIconProps): react_jsx_runtime.JSX.Element;
export { LEO_DEEP_FILL_CLASS, LeoIcon, type LeoIconMotionState, type LeoIconProps, type LeoIconSize, type LeoIconVariant };