import { HTMLAttributes, ReactNode } from "react";
import { SemanticColor } from "../../../utils/colorUtils";
/**
 * Alert semantic colors (intent)
 */
export type AlertColor = SemanticColor;
/**
 * Alert visual variant
 */
export type AlertVariant = "default" | "glass";
/**
 * Theme configuration for Alert component
 */
export interface AlertTheme {
    /** Base styles applied to all alerts */
    baseStyle: string;
    /** Visual style variants (structure only, no colors) */
    variants: Record<AlertVariant, string>;
    /** Icon color styles per color */
    iconColors: Record<AlertColor, string>;
    /** State styles */
    states: {
        dismissible: string;
    };
}
export interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
    /** Visual variant */
    variant?: AlertVariant;
    /** Semantic color */
    color?: AlertColor;
    /** The main title/message of the alert */
    title?: ReactNode;
    /** Additional subtitle text */
    subtitle?: ReactNode;
    /** Whether the alert can be dismissed */
    dismissible?: boolean;
    /**
     * Custom icon for the alert
     * - Provide custom icon: overrides the default variant icon
     * - Set to null: hides icon completely
     * - Leave undefined: shows default variant icon
     */
    icon?: ReactNode | null;
    /** Whether to show the default icon for the variant */
    showIcon?: boolean;
    /**
     * Avatar to display (takes precedence over icons)
     * Example: avatar={<Avatar src="..." name="User name" size="md" />}
     */
    avatar?: ReactNode;
    /**
     * Action buttons as ReactNode
     * Example: actions={<><Button>Cancel</Button><Button variant="filled">Save</Button></>}
     */
    actions?: ReactNode;
    /** Callback when the alert is dismissed */
    onDismiss?: () => void;
    /** Custom class name */
    className?: string;
    /** Children content */
    children?: ReactNode;
    /**
     * Enable dark mode styling.
     * @default false
     */
    darkMode?: boolean;
}
