import React from 'react'; import { AlertCircle, CheckCircle, Info, AlertTriangle, X } from 'lucide-react'; type AlertVariant = 'error' | 'success' | 'warning' | 'info'; interface AlertProps { variant: AlertVariant; message: string | React.ReactNode; title?: string; onDismiss?: () => void; className?: string; /** Compact mode for inline alerts */ compact?: boolean; } const variantConfig: Record = { error: { icon: , containerClass: 'bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800', textClass: 'text-red-800 dark:text-red-200', titleClass: 'text-red-900 dark:text-red-100', }, success: { icon: , containerClass: 'bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800', textClass: 'text-green-800 dark:text-green-200', titleClass: 'text-green-900 dark:text-green-100', }, warning: { icon: , containerClass: 'bg-amber-50 dark:bg-amber-900/20 border-amber-200 dark:border-amber-800', textClass: 'text-amber-800 dark:text-amber-200', titleClass: 'text-amber-900 dark:text-amber-100', }, info: { icon: , containerClass: 'bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800', textClass: 'text-blue-800 dark:text-blue-200', titleClass: 'text-blue-900 dark:text-blue-100', }, }; export const Alert: React.FC = ({ variant, message, title, onDismiss, className = '', compact = false, }) => { const config = variantConfig[variant]; return (
{config.icon}
{title && (

{title}

)}
{typeof message === 'string' ?

{message}

: message}
{onDismiss && ( )}
); }; /** Convenience components */ export const ErrorMessage: React.FC> = (props) => ( ); export const SuccessMessage: React.FC> = (props) => ( ); export const WarningMessage: React.FC> = (props) => ( ); export const InfoMessage: React.FC> = (props) => ( ); export default Alert;