import * as React from 'react'; import { AlertCircle, CheckCircle2, AlertTriangle, Info } from 'lucide-react'; import { cn } from '@/lib/utils'; export interface AlertProps extends React.HTMLAttributes { variant?: 'default' | 'info' | 'success' | 'warning' | 'destructive'; icon?: React.ReactNode; } const variantMap = { default: 'bg-background text-foreground border-border', info: 'bg-sky-50 dark:bg-sky-950/30 text-sky-900 dark:text-sky-200 border-sky-200 dark:border-sky-800', success: 'bg-emerald-50 dark:bg-emerald-950/30 text-emerald-900 dark:text-emerald-200 border-emerald-200 dark:border-emerald-800', warning: 'bg-amber-50 dark:bg-amber-950/30 text-amber-900 dark:text-amber-200 border-amber-200 dark:border-amber-800', destructive: 'bg-rose-50 dark:bg-rose-950/30 text-rose-900 dark:text-rose-200 border-rose-200 dark:border-rose-800', }; const defaultIcons = { default: , info: , success: , warning: , destructive: , }; const Alert = React.forwardRef( ({ className, variant = 'default', icon, children, ...props }, ref) => { const displayIcon = icon !== undefined ? icon : defaultIcons[variant]; return (
{displayIcon &&
{displayIcon}
}
{children}
); } ); Alert.displayName = 'Alert'; const AlertTitle = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); AlertTitle.displayName = 'AlertTitle'; const AlertDescription = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); AlertDescription.displayName = 'AlertDescription'; export { Alert, AlertTitle, AlertDescription };