import * as React from 'react';
import { type FieldProps } from '@/components/atoms/forms/_shared';
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
 * <Input placeholder="Search..." />
 *
 * // With field props — auto-wraps in Field
 * <Input label="Email" error={errors.email} placeholder="name@example.com" />
 *
 * // With icons
 * <Input startIcon={<SearchIcon />} placeholder="Search..." />
 *
 * // Compound Field composition (escape hatch)
 * <Field>
 *   <Field.Label>Email</Field.Label>
 *   <Field.Control>{(props) => <Input {...props} type="email" />}</Field.Control>
 *   <Field.Error />
 * </Field>
 * ```
 */
interface InputControlProps extends Omit<React.ComponentProps<'input'>, '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';
    /** Enables animated gradient border (only for appearance="ai"). Auto-true when loading. */
    animated?: boolean;
    /** Shows loading spinner and enables gradient animation (only for appearance="ai") */
    loading?: boolean;
}
export interface InputProps extends InputControlProps, FieldProps {
}
declare const sizeClasses: Record<InputSize, string>;
declare const shapeClasses: Record<InputShape, string>;
declare const stateClasses: Record<InputState, string>;
declare const iconSizeClasses: Record<InputSize, string>;
declare const Input: React.ForwardRefExoticComponent<Omit<InputProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
export { Input, iconSizeClasses as inputIconSizeClasses, shapeClasses as inputShapeClasses, sizeClasses as inputSizeClasses, stateClasses as inputStateClasses, };
