import { motion, AnimatePresence } from 'framer-motion'; import { CheckCircle2, XCircle, Info } from 'lucide-react'; import useChatStore from '../../store/useChatStore'; const icons = { success: CheckCircle2, error: XCircle, info: Info, }; const colorMap = { success: { bar: 'var(--success)', bg: 'rgba(52,211,153,0.06)', border: 'rgba(52,211,153,0.18)', icon: 'var(--success)', }, error: { bar: 'var(--danger)', bg: 'rgba(248,113,113,0.06)', border: 'rgba(248,113,113,0.18)', icon: 'var(--danger)', }, info: { bar: 'var(--brand)', bg: 'rgba(99,102,241,0.06)', border: 'rgba(99,102,241,0.18)', icon: 'var(--brand-light)', }, }; export default function Toast() { const toasts = useChatStore(s => s.toasts); const removeToast = useChatStore(s => s.removeToast); return (
{toasts.map(t => { const c = colorMap[t.type] ?? colorMap.info; const Icon = icons[t.type] ?? icons.info; return ( removeToast(t.id)} className="pointer-events-auto flex flex-col rounded-xl cursor-pointer shadow-2xl overflow-hidden font-sans" style={{ background: 'var(--surface-05)', border: `1px solid ${c.border}`, backdropFilter: 'blur(20px)', }} >
{t.message}
{/* Progress bar */}
); })}
); }