2026-02-14 21:19:38 +01:00
|
|
|
import { useEffect } from 'react'
|
2026-02-16 16:56:44 +01:00
|
|
|
import { cn } from '@/lib/utils'
|
2026-02-14 21:19:38 +01:00
|
|
|
|
|
|
|
|
interface ToastProps {
|
|
|
|
|
message: string | null
|
|
|
|
|
onDismiss: () => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function Toast({ message, onDismiss }: ToastProps) {
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (!message) return
|
|
|
|
|
const timer = setTimeout(onDismiss, 2000)
|
|
|
|
|
return () => clearTimeout(timer)
|
|
|
|
|
}, [message, onDismiss])
|
|
|
|
|
|
|
|
|
|
if (!message) return null
|
|
|
|
|
|
|
|
|
|
return (
|
2026-02-16 16:56:44 +01:00
|
|
|
<div className={cn(
|
|
|
|
|
"fixed bottom-8 left-1/2 -translate-x-1/2 z-[1100]",
|
|
|
|
|
"bg-secondary text-foreground px-5 py-2 rounded-lg text-[13px]",
|
|
|
|
|
"shadow-[0_4px_16px_var(--shadow-dialog)]",
|
|
|
|
|
"animate-in slide-in-from-bottom-2 fade-in duration-200"
|
|
|
|
|
)}>
|
2026-02-14 21:19:38 +01:00
|
|
|
{message}
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|