import React from 'react'; import { clsx } from 'clsx'; import { AlertCircle, CheckCircle2, Info, AlertTriangle, X } from 'lucide-react'; import Button from './Button'; export type AlertVariant = 'default' | 'success' | 'warning' | 'error' | 'info'; export interface AlertProps extends React.HTMLAttributes { variant?: AlertVariant; title?: string; description?: string; icon?: React.ReactNode; dismissible?: boolean; onDismiss?: () => void; children?: React.ReactNode; } const alertIcons = { default: Info, success: CheckCircle2, warning: AlertTriangle, error: AlertCircle, info: Info, }; const alertStyles = { default: 'bg-background border-border text-foreground', success: 'bg-success/10 border-success/20 text-success-foreground', warning: 'bg-warning/10 border-warning/20 text-warning-foreground', error: 'bg-destructive/10 border-destructive/20 text-destructive-foreground', info: 'bg-primary/10 border-primary/20 text-primary-foreground', }; /** * Alert/AlertBanner component for inline notifications */ export const Alert = React.forwardRef( ( { variant = 'default', title, description, icon, dismissible = false, onDismiss, children, className, ...props }, ref ) => { const DefaultIcon = alertIcons[variant]; const displayIcon = icon || ; return (
{displayIcon}
{title &&

{title}

} {description &&

{description}

} {children}
{dismissible && onDismiss && ( )}
); } ); Alert.displayName = 'Alert';