'use client' import { useEffect, useState } from 'react' import { Check, X, AlertCircle, Info } from 'lucide-react' import clsx from 'clsx' export type ToastType = 'success' | 'error' | 'info' interface ToastProps { message: string type?: ToastType duration?: number onClose: () => void } export function Toast({ message, type = 'success', duration = 4000, onClose }: ToastProps) { const [isVisible, setIsVisible] = useState(true) const [isLeaving, setIsLeaving] = useState(false) useEffect(() => { const timer = setTimeout(() => { setIsLeaving(true) setTimeout(onClose, 300) }, duration) return () => clearTimeout(timer) }, [duration, onClose]) const handleClose = () => { setIsLeaving(true) setTimeout(onClose, 300) } const Icon = type === 'success' ? Check : type === 'error' ? AlertCircle : Info return (

{message}

) } // Hook for managing toasts export function useToast() { const [toast, setToast] = useState<{ message: string; type: ToastType } | null>(null) const showToast = (message: string, type: ToastType = 'success') => { setToast({ message, type }) } const hideToast = () => { setToast(null) } return { toast, showToast, hideToast } }