import React from 'react';
/**
 * Textarea component props
 * @property {TextareaSize} size - The size of the textarea
 * @property {TextareaState} state - The state of the textarea (default, disabled, invalid)
 * @property {string} label - Optional label text for the textarea
 * @property {string} helperText - Optional helper text displayed below the textarea
 */
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
    /** The size of the textarea */
    size?: TextareaSize;
    /** The state of the textarea (default, disabled, invalid) */
    state?: TextareaState;
    /** Optional label for the textarea — pass a string for default styling, or a ReactNode for full control */
    label?: React.ReactNode;
    /** Optional helper text below the textarea — pass a string for default styling, or a ReactNode for full control */
    helperText?: React.ReactNode;
    /** Additional class name for the textarea */
    className?: string;
    /** Additional class name for the label */
    labelClassName?: string;
    /** Additional class name for the helper text */
    helperTextClassName?: string;
    /** Additional class name for the wrapper */
    wrapperClassName?: string;
    /** Additional class name for the input group */
    inputGroupClassName?: string;
    /** Component-level theme overrides */
    theme?: TextareaThemeOverrides;
    /** Whether the textarea is required */
    required?: boolean;
    /** Number of rows */
    rows?: number;
    /** Number of columns */
    cols?: number;
    /** Render only the textarea element without wrapper, label, or helper text */
    unstyled?: boolean;
}
export type TextareaSize = 'sm' | 'md' | 'lg';
export type TextareaState = 'default' | 'disabled' | 'invalid';
/**
 * Theme overrides for the Textarea component
 */
export interface TextareaThemeOverrides {
    /** Style for the outermost wrapper */
    wrapperStyle?: string;
    /** Style for the input group container (textarea + addons) */
    inputGroupStyle?: string;
    /** Base style for the textarea element */
    baseStyle?: string;
    /** Size variants for the textarea */
    sizes?: Partial<Record<TextareaSize, string>>;
    /** State variants for the textarea */
    states?: Partial<Record<TextareaState, string>>;
    /** Base style for the helper text */
    helperText?: string;
}
