aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/ui-new/src/components/ui/sonner.tsx
diff options
context:
space:
mode:
author苏向夜 <fu050409@163.com>2026-01-23 20:51:28 +0800
committer苏向夜 <fu050409@163.com>2026-01-23 20:51:28 +0800
commit9430bee86fbf943283eb5a6f63bd750b875ff433 (patch)
tree2271b2dee546339add4607dead56c230c03e6afe /packages/ui-new/src/components/ui/sonner.tsx
parentef560813c68c113325d8d84ff13cd419eb6583df (diff)
downloadDropOut-9430bee86fbf943283eb5a6f63bd750b875ff433.tar.gz
DropOut-9430bee86fbf943283eb5a6f63bd750b875ff433.zip
feat(ui): add new ui project
Diffstat (limited to 'packages/ui-new/src/components/ui/sonner.tsx')
-rw-r--r--packages/ui-new/src/components/ui/sonner.tsx38
1 files changed, 38 insertions, 0 deletions
diff --git a/packages/ui-new/src/components/ui/sonner.tsx b/packages/ui-new/src/components/ui/sonner.tsx
new file mode 100644
index 0000000..9f46e06
--- /dev/null
+++ b/packages/ui-new/src/components/ui/sonner.tsx
@@ -0,0 +1,38 @@
+import {
+ CircleCheckIcon,
+ InfoIcon,
+ Loader2Icon,
+ OctagonXIcon,
+ TriangleAlertIcon,
+} from "lucide-react"
+import { useTheme } from "next-themes"
+import { Toaster as Sonner, type ToasterProps } from "sonner"
+
+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
+ }
+ {...props}
+ />
+ )
+}
+
+export { Toaster }