File size: 1,063 Bytes
0b9dc2e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import { useTheme } from 'next-themes';
import { Toaster as Sonner, type ToasterProps } from 'sonner';
import {
	CircleCheckIcon,
	InfoIcon,
	TriangleAlertIcon,
	OctagonXIcon,
	Loader2Icon,
} from 'lucide-react';

const Toaster = ({ ...props }: ToasterProps) => {
	const { theme = 'system' } = useTheme();

	return (
		<Sonner

			theme={theme as ToasterProps['theme']}

			className="toaster group"

			icons={{

				success: <CircleCheckIcon className="size-4" />,

				info: <InfoIcon className="size-4" />,

				warning: <TriangleAlertIcon className="size-4" />,

				error: <OctagonXIcon className="size-4" />,

				loading: <Loader2Icon className="size-4 animate-spin" />,

			}}

			style={

				{

					'--normal-bg': 'var(--popover)',

					'--normal-text': 'var(--popover-foreground)',

					'--normal-border': 'var(--border)',

					'--border-radius': 'var(--radius)',

				} as React.CSSProperties

			}

			toastOptions={{

				classNames: {

					toast: 'cn-toast',

				},

			}}

			{...props}

		/>
	);
};

export { Toaster };