Files
moemail/app/components/ui/toaster.tsx
beilunyang cc7e5003c5 feat: Init
2024-12-16 01:49:50 +08:00

55 lines
1.1 KiB
TypeScript

"use client"
import {
Toast,
ToastClose,
ToastDescription,
ToastProvider,
ToastTitle,
ToastViewport,
} from "./toast"
import { useToast } from "./use-toast"
export interface ToastProps {
id: string
title?: string
description?: string
action?: React.ReactNode
variant?: "default" | "destructive"
}
export function Toaster() {
const { toasts } = useToast()
return (
<ToastProvider>
{toasts.map(function ({
id,
title,
description,
action,
...props
}: {
id: string;
title?: React.ReactNode;
description?: React.ReactNode;
action?: React.ReactNode;
[key: string]: any;
}) {
return (
<Toast key={id} {...props}>
<div className="grid gap-1">
{title && <ToastTitle>{title}</ToastTitle>}
{description && (
<ToastDescription>{description}</ToastDescription>
)}
</div>
{action}
<ToastClose />
</Toast>
)
})}
<ToastViewport />
</ToastProvider>
)
}