"use client"; import { CircleCheck, Info, LoaderCircle, OctagonX, TriangleAlert, } from "lucide-react"; import { useTheme } from "next-themes"; import { Toaster as Sonner, toast } from "sonner"; type ToasterProps = React.ComponentProps; const Toaster = ({ ...props }: ToasterProps) => { const { theme = "system" } = useTheme(); return ( , info: , warning: , error: , loading: , }} toastOptions={{ classNames: { toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg", description: "group-[.toast]:text-muted-foreground", actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground", cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground", }, }} {...props} /> ); }; /** * Compat layer for migrating from old toaster to sonner * @deprecated Use sonner's natie toast instead */ const legacyToast = ({ title, description, variant, }: { title?: React.ReactNode; description?: React.ReactNode; variant?: "destructive" | "default"; }) => { let toastTitle = title; let toastDescription: React.ReactNode | undefined = description; if (!title) { toastTitle = description; toastDescription = undefined; } if (variant === "destructive") { toast.error(toastTitle, { description: toastDescription }); } else { toast(toastTitle, { description: toastDescription }); } }; export { Toaster, legacyToast as toast };