import type { ToasterProps } from "sonner"; import { Toaster as SonnerToaster, useSonner } from "sonner"; import { cx } from "@/utils/cx"; export const DEFAULT_TOAST_POSITION = "bottom-right"; export const ToastsOverlay = () => { const { toasts } = useSonner(); const styles = { "top-right": { className: "top-0 right-0", background: "linear-gradient(215deg, rgba(0, 0, 0, 0.10) 0%, rgba(0, 0, 0, 0.00) 50%)", }, "top-left": { className: "top-0 left-0", background: "linear-gradient(139deg, rgba(0, 0, 0, 0.10) 0%, rgba(0, 0, 0, 0.00) 40.64%)", }, "bottom-right": { className: "bottom-0 right-0", background: "linear-gradient(148deg, rgba(0, 0, 0, 0.00) 58.58%, rgba(0, 0, 0, 0.10) 97.86%)", }, "bottom-left": { className: "bottom-0 left-0", background: "linear-gradient(214deg, rgba(0, 0, 0, 0.00) 54.54%, rgba(0, 0, 0, 0.10) 95.71%)", }, }; // Deduplicated list of positions const positions = toasts.reduce[]>((acc, t) => { acc.push(t.position || DEFAULT_TOAST_POSITION); return acc; }, []); return ( <> {Object.entries(styles).map(([position, style]) => (