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 };