import { type ExternalToast, toast as sonnerToast, Toaster } from "sonner" import { CheckCircleIcon, CloseLargeIcon, CrossCircle, InfoCircleIcon, WarningTriangle, } from "@/components/Icons" import Button from "../Button" import Body from "../Text/Body" import { toastVariants } from "./variants" import styles from "./toasts.module.css" import type { ToastsProps } from "./toasts" export function ToastHandler() { return } function getIcon(variant: ToastsProps["variant"]) { switch (variant) { case "error": return CrossCircle case "info": return InfoCircleIcon case "success": return CheckCircleIcon case "warning": return WarningTriangle } } export function Toast({ children, message, onClose, variant }: ToastsProps) { const className = toastVariants({ variant }) const Icon = getIcon(variant) return (
{Icon && }
{message ? ( {message} ) : (
{children}
)} {onClose ? ( ) : null}
) } export const toast = { success: (message: React.ReactNode, options?: ExternalToast) => sonnerToast.custom( (t) => ( sonnerToast.dismiss(t)} /> ), options ), info: (message: React.ReactNode, options?: ExternalToast) => sonnerToast.custom( (t) => ( sonnerToast.dismiss(t)} /> ), options ), error: (message: React.ReactNode, options?: ExternalToast) => sonnerToast.custom( (t) => ( sonnerToast.dismiss(t)} /> ), options ), warning: (message: React.ReactNode, options?: ExternalToast) => sonnerToast.custom( (t) => ( sonnerToast.dismiss(t)} /> ), options ), }