import { CheckCircle2, AlertCircle, Info, X } from "lucide-react"; import React, { useEffect } from "react"; export interface ToastMessage { id: string; type: "success" | "error" | "info"; title: string; message?: string; } interface ToastProps { toasts: ToastMessage[]; onDismiss: (id: string) => void; } const ToastContainer: React.FC = ({ toasts, onDismiss }) => { return (
{toasts.map((toast) => ( ))}
); }; const ToastItem: React.FC<{ toast: ToastMessage; onDismiss: (id: string) => void }> = ({ toast, onDismiss, }) => { useEffect(() => { const timer = setTimeout(() => { onDismiss(toast.id); }, 4500); return () => clearTimeout(timer); }, [toast.id, onDismiss]); const getIcon = () => { switch (toast.type) { case "success": return ; case "error": return ; default: return ; } }; const getBorderColor = () => { switch (toast.type) { case "success": return "var(--accent-color)"; case "error": return "var(--danger-color)"; default: return "var(--info-color)"; } }; return (
{getIcon()}
{toast.title}
{toast.message && (
{toast.message}
)}
); }; export default ToastContainer;