35 lines
904 B
TypeScript
35 lines
904 B
TypeScript
import {
|
||
Toast,
|
||
ToastClose,
|
||
ToastDescription,
|
||
ToastProvider,
|
||
ToastTitle,
|
||
ToastViewport,
|
||
} from "@/components/ui/toast"
|
||
import { useToast } from "@/components/ui/use-toast"
|
||
|
||
export function Toaster() {
|
||
const { toasts } = useToast()
|
||
|
||
return (
|
||
<ToastProvider>
|
||
{toasts.map(({ id, title, description, action, ...props }) => {
|
||
// 确保duration有默认值,不被undefined覆盖
|
||
const duration = props.duration ?? 3000
|
||
return (
|
||
<Toast key={id} {...props} duration={duration}>
|
||
<div className="grid gap-1">
|
||
{title && <ToastTitle>{title}</ToastTitle>}
|
||
{description && (
|
||
<ToastDescription>{description}</ToastDescription>
|
||
)}
|
||
</div>
|
||
{action}
|
||
<ToastClose />
|
||
</Toast>
|
||
)
|
||
})}
|
||
<ToastViewport />
|
||
</ToastProvider>
|
||
)
|
||
}
|