import { ElementType } from "react"; /** * Urgency of the plan state. Drives the gradient and the leading icon, so the * badge reads as healthy / expiring soon / expired before the text is read. */ export type PlanPillTone = "normal" | "warning" | "danger"; /** Presentational plan-state pill — label/status/gradient only, no resolution logic. For org plan data, use PlanBadge instead of hand-deriving tone/copy here. */ export interface PlanPillProps { /** Primary label, e.g. the plan name or an upgrade prompt. */ label: string; /** Compact label for small screens. Defaults to `label`. */ mobileLabel?: string; /** Remaining time, e.g. `3mo left`. Rendered as an inset chip; omitted when empty. */ status?: string; /** Plan urgency; picks the theme gradient and default icon. Defaults to `normal`. */ tone?: PlanPillTone; /** Leading icon. Defaults to a tone-appropriate lucide icon. Pass null to hide. */ icon?: ElementType | null; /** Explicit gradient stops. Overrides the tone's theme gradient. */ gradient?: { from: string; to: string; }; /** Truncate the label beyond this width. */ maxLabelWidth?: string; /** Replaces the name read from the visible label and status; it must contain that text, or voice control cannot match it. */ ariaLabel?: string; /** Renders as a real