import { ReactNode } from 'react';
export type BaseVariant = 'primary' | 'secondary' | 'destructive' | 'success' | 'warning' | 'ghost' | 'link';
export type BaseSize = 'sm' | 'md' | 'lg' | 'xl';
export type BaseShape = 'square' | 'rounded' | 'circle';
export type BaseRadius = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
export type LabelPlacement = 'inside' | 'outside' | 'outside-left';
export interface ContentProps {
    startContent?: ReactNode;
    endContent?: ReactNode;
}
export interface BaseUIProps extends ContentProps {
    variant?: BaseVariant;
    size?: BaseSize;
    shape?: BaseShape;
    radius?: BaseRadius;
    disabled?: boolean;
    loading?: boolean;
    className?: string;
    children?: ReactNode;
}
export interface LabelableProps {
    label?: string;
    labelPlacement?: LabelPlacement;
    placeholder?: string;
    required?: boolean;
    description?: string;
    errorMessage?: string;
}
export interface RippleProps {
    ripple?: boolean;
    rippleColor?: string;
}
export interface ButtonProps extends BaseUIProps, RippleProps {
    type?: 'button' | 'submit' | 'reset';
    isIconOnly?: boolean;
    href?: string;
    target?: string;
    rel?: string;
}
export interface InputProps extends BaseUIProps, LabelableProps {
    type?: string;
    value?: string;
    defaultValue?: string;
    onChange?: (value: string) => void;
    onFocus?: () => void;
    onBlur?: () => void;
    name?: string;
    id?: string;
    autoComplete?: string;
    autoFocus?: boolean;
    readOnly?: boolean;
    maxLength?: number;
    minLength?: number;
    pattern?: string;
}
export interface SelectProps extends BaseUIProps, LabelableProps {
    value?: string;
    defaultValue?: string;
    onChange?: (value: string) => void;
    options?: Array<{
        value: string;
        label: string;
        disabled?: boolean;
    }>;
    multiple?: boolean;
    searchable?: boolean;
    clearable?: boolean;
    name?: string;
    id?: string;
}
export interface TextareaProps extends BaseUIProps, LabelableProps {
    value?: string;
    defaultValue?: string;
    onChange?: (value: string) => void;
    onFocus?: () => void;
    onBlur?: () => void;
    name?: string;
    id?: string;
    rows?: number;
    cols?: number;
    resize?: 'none' | 'vertical' | 'horizontal' | 'both';
    autoFocus?: boolean;
    readOnly?: boolean;
    maxLength?: number;
    minLength?: number;
}
//# sourceMappingURL=ui.d.ts.map