import { LucideIcon } from "lucide-react";
import { InputHTMLAttributes } from "react";
import "./style.css";
type InputProps = Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "prefix" | "name" | "value" | "defaultValue"> & {
    name: string;
    label?: string;
    errorMessage?: string;
    isLoading?: boolean;
    size?: "md" | "lg";
    variant?: "solid" | "outline" | "underline";
    prefix?: string | LucideIcon;
    suffix?: string | LucideIcon;
    showAsterisk?: boolean;
    leftIcon?: LucideIcon;
    rightIcon?: LucideIcon;
    value?: string | null;
    defaultValue?: string | null;
};
/**
 * Input component - used for text input fields with support for labels, validation, icons, and loading states
 *
 * @param props - Input component properties
 * @param props.name - Required field name for form handling
 * @param props.label - Optional label text to display above the input
 * @param props.errorMessage - Error message to display below the input
 * @param props.isLoading - Controls loading state with spinner. Default: false
 * @param props.size - Input size. Default: "md"
 * @param props.variant - Visual variant of the input. Default: "solid"
 * @param props.prefix - Text or icon to display at the beginning of the input
 * @param props.suffix - Text or icon to display at the end of the input
 * @param props.showAsterisk - Whether to show asterisk on label for required fields
 * @param props.leftIcon - Optional icon to display on the left side
 * @param props.rightIcon - Optional icon to display on the right side
 *
 * **...Other valid HTML properties for input element**
 *
 * @returns Input JSX element wrapped in FieldGroup with optional label and error
 *
 * @example
 * ```tsx
 * // Basic input
 * <Input name="username" placeholder="Enter username" />
 *
 * // Input with label and validation
 * <Input
 *   name="email"
 *   label="Email Address"
 *   type="email"
 *   showAsterisk
 *   errorMessage="Please enter a valid email"
 * />
 *
 * // Input with icons and loading state
 * <Input
 *   name="search"
 *   label="Search"
 *   leftIcon={SearchIcon}
 *   rightIcon={FilterIcon}
 *   isLoading
 * />
 *
 * // Input with prefix/suffix
 * <Input
 *   name="website"
 *   label="Website"
 *   prefix="https://"
 *   suffix=".com"
 *   variant="outline"
 * />
 *
 * // Large input with underline variant
 * <Input
 *   name="title"
 *   label="Article Title"
 *   size="lg"
 *   variant="underline"
 *   placeholder="Enter article title"
 * />
 * ```
 */
declare function Input(props: InputProps): import("react/jsx-runtime").JSX.Element;
export { Input, type InputProps };
//# sourceMappingURL=index.d.ts.map