import * as React from 'react'; import { type FieldProps } from '../_shared/index.js'; export type InputSize = 'xs' | 'sm' | 'md' | 'lg'; export type InputShape = 'rounded' | 'round'; export type InputState = 'default' | 'success' | 'destructive'; /** * Input renders a text input. Pass field props (label, error, description, etc.) * to automatically wrap in a Field with label, validation, and helper text. * Without field props, renders a bare input with zero overhead. * * @example * ```tsx * // Bare input * * * // With field props — auto-wraps in Field * * * // With icons * } placeholder="Search..." /> * * // Compound Field composition (escape hatch) * * Email * {(props) => } * * * ``` */ interface InputControlProps extends Omit, 'size'> { /** Input size variant */ size?: InputSize; /** Input shape variant */ shape?: InputShape; /** Input state for validation feedback */ state?: InputState; /** Icon displayed at the start (inline-start) of the input - respects RTL */ startIcon?: React.ReactNode; /** Icon displayed at the end (inline-end) of the input - respects RTL */ endIcon?: React.ReactNode; /** Addon content displayed at the start (inline-start) outside the input - respects RTL */ startAddon?: React.ReactNode; /** Addon content displayed at the end (inline-end) outside the input - respects RTL */ endAddon?: React.ReactNode; /** Whether to show an outline/border variant */ hasOutline?: boolean; /** Visual appearance variant. 'ai' wraps the input in an animated gradient border. */ appearance?: 'default' | 'ai'; /** Explicitly enables animated gradient border (only for appearance="ai"). */ animated?: boolean; /** Shows a localized loading spinner (only for appearance="ai"). */ loading?: boolean; } export interface InputProps extends InputControlProps, FieldProps { } declare const sizeClasses: Record; declare const shapeClasses: Record; declare const stateClasses: Record; declare const iconSizeClasses: Record; declare const Input: React.ForwardRefExoticComponent & React.RefAttributes>; export { Input, iconSizeClasses as inputIconSizeClasses, shapeClasses as inputShapeClasses, sizeClasses as inputSizeClasses, stateClasses as inputStateClasses, };