"use client"; import { useEffect } from "react"; type ToastType = "success" | "error" | "info" | "warning"; interface ToastProps { message: string; type: ToastType; isOpen: boolean; onClose: () => void; duration?: number; } export default function Toast({ message, type, isOpen, onClose, duration = 3000, }: ToastProps) { useEffect(() => { if (isOpen && duration > 0) { const timer = setTimeout(() => { onClose(); }, duration); return () => clearTimeout(timer); } }, [isOpen, duration, onClose]); if (!isOpen) return null; const colors = { success: "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-700 text-green-800 dark:text-green-200", error: "bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-700 text-red-800 dark:text-red-200", info: "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-700 text-blue-800 dark:text-blue-200", warning: "bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-700 text-yellow-800 dark:text-yellow-200", }; const icons = { success: "✓", error: "✕", info: "ℹ", warning: "⚠", }; return (
{icons[type]} {message}
); }