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