25 lines
850 B
TypeScript
25 lines
850 B
TypeScript
import { Fragment } from 'react'
|
|
|
|
import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport } from '@/components/ui/toast'
|
|
import { useToast } from '@/components/ui/use-toast'
|
|
|
|
export const Toaster = () => {
|
|
const { toasts, dismiss } = useToast()
|
|
|
|
return (
|
|
<ToastProvider swipeDirection="right">
|
|
<ToastViewport />
|
|
{toasts.map(({ id, title, description, action, ...toast }) => (
|
|
<Toast key={id} onOpenChange={(open) => !open && dismiss(id)} {...toast}>
|
|
<div className="grid gap-1">
|
|
{title ? <ToastTitle>{title}</ToastTitle> : null}
|
|
{description ? <ToastDescription>{description}</ToastDescription> : null}
|
|
</div>
|
|
{action ? <Fragment>{action}</Fragment> : null}
|
|
<ToastClose />
|
|
</Toast>
|
|
))}
|
|
</ToastProvider>
|
|
)
|
|
}
|