"use client"; import { useEffect, useState } from "react"; import { IoClose } from "react-icons/io5"; type ErrorToastProps = { title?: string; message: string; onClose: () => void; duration?: number; variant?: "error" | "success" | "warning" | "info"; }; export default function ErrorToast({ title, message, onClose, duration = 4000, variant = "error", }: ErrorToastProps) { const [isVisible, setIsVisible] = useState(true); useEffect(() => { const timer = setTimeout(() => { setIsVisible(false); setTimeout(onClose, 300); // Wait for fade-out animation to complete }, duration); return () => clearTimeout(timer); }, [duration, onClose]); const handleClose = () => { setIsVisible(false); setTimeout(onClose, 300); }; const getBorderColor = () => { switch (variant) { case "success": return "border-t-[#10B981]"; case "warning": return "border-t-[#F59E0B]"; case "info": return "border-t-[#3B82F6]"; case "error": default: return "border-t-[#F0445B]"; } }; return (
{title && ( {title} )} {message}
); }