import * as React from 'react'; import { cva, type VariantProps } from 'class-variance-authority'; import { AlertTriangle, CheckCircle, Info, XCircle } from 'lucide-react'; import { cn } from '@/lib/utils'; const alertVariants = cva( 'relative w-full rounded-lg border p-4 [&>svg]:absolute [&>svg]:-top-1 [&>svg]:-left-1 [&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-foreground', { variants: { variant: { default: 'bg-background text-foreground border', destructive: 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive', success: 'border-green-500/50 text-green-700 dark:border-green-500 [&>svg]:text-green-700', warning: 'border-yellow-500/50 text-yellow-700 dark:border-yellow-500 [&>svg]:text-yellow-700', info: 'border-blue-500/50 text-blue-700 dark:border-blue-500 [&>svg]:text-blue-700', }, }, defaultVariants: { variant: 'default', }, } ); const Alert = React.forwardRef< HTMLDivElement, React.HTMLAttributes & VariantProps >(({ className, variant, ...props }, ref) => (
)); Alert.displayName = 'Alert'; const AlertTitle = React.forwardRef>( ({ className, ...props }, ref) => (
) ); AlertTitle.displayName = 'AlertTitle'; const AlertDescription = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); AlertDescription.displayName = 'AlertDescription'; const AlertIcon = ({ variant }: { variant?: VariantProps['variant'] }) => { switch (variant) { case 'destructive': return ; case 'success': return ; case 'warning': return ; case 'info': return ; default: return ; } }; export { Alert, AlertTitle, AlertDescription, AlertIcon };