import React, { useEffect, useState } from 'react'; import { CheckCircle, AlertCircle, XCircle, Info, X } from 'lucide-react'; export type ToastType = 'success' | 'error' | 'warning' | 'info'; export interface ToastProps { type: ToastType; title?: string; message: string; duration?: number; onClose: () => void; } const Toast: React.FC = ({ type, title, message, duration = 5000, onClose }) => { const [isVisible, setIsVisible] = useState(true); useEffect(() => { const timer = setTimeout(() => { setIsVisible(false); setTimeout(onClose, 300); // Wait for animation to complete }, duration); return () => clearTimeout(timer); }, [duration, onClose]); const getIcon = () => { switch (type) { case 'success': return ; case 'error': return ; case 'warning': return ; case 'info': return ; } }; const getStyles = () => { switch (type) { case 'success': return 'bg-green-50 border-green-200 text-green-800'; case 'error': return 'bg-red-50 border-red-200 text-red-800'; case 'warning': return 'bg-yellow-50 border-yellow-200 text-yellow-800'; case 'info': return 'bg-blue-50 border-blue-200 text-blue-800'; } }; return (
{getIcon()}
{title && (

{title}

)}

{message}

); }; export default Toast;