import * as ToastPrimitive from '@radix-ui/react-toast'; import clsx from 'clsx'; import { useToasts } from '~/hooks/useToasts'; export default () => { const { toasts, removeToast } = useToasts(); return (
<> {toasts.map((toast) => ( removeToast(toast)} duration={toast.duration || 3000} className={clsx( 'm-4 w-80 rounded-lg', 'bg-app-box/20 backdrop-blur', 'radix-state-open:animate-toast-slide-in-bottom md:radix-state-open:animate-toast-slide-in-right', 'radix-state-closed:animate-toast-hide', 'radix-swipe-end:animate-toast-swipe-out', 'translate-x-radix-toast-swipe-move-x', 'radix-swipe-cancel:ease-[ease] radix-swipe-cancel:translate-x-0 radix-swipe-cancel:duration-200', 'border-2 border-white/10 shadow-2xl focus:outline-none focus-visible:ring focus-visible:ring-accent/75' )} >
{toast.title} {toast.subtitle && ( {toast.subtitle} )}
{toast.actionButton && ( { e.preventDefault(); toast.actionButton?.onClick(); removeToast(toast); }} > {toast.actionButton.text || 'Open'} )}
Dismiss
))}
); };