|
|
@@ -0,0 +1,41 @@
|
|
|
+"use client"
|
|
|
+
|
|
|
+import {
|
|
|
+ CircleCheckIcon,
|
|
|
+ InfoIcon,
|
|
|
+ Loader2Icon,
|
|
|
+ OctagonXIcon,
|
|
|
+ TriangleAlertIcon,
|
|
|
+} from "lucide-react"
|
|
|
+import { useTheme } from "next-themes"
|
|
|
+import { Toaster as Sonner } from "sonner";
|
|
|
+
|
|
|
+const Toaster = ({
|
|
|
+ ...props
|
|
|
+}) => {
|
|
|
+ const { theme = "system" } = useTheme()
|
|
|
+
|
|
|
+ return (
|
|
|
+ <Sonner
|
|
|
+ theme={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)"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ {...props} />
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+export { Toaster }
|