pmtool / src /components /ui /sonner.tsx
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
1.68 kB
import { useTheme } from "../../components/ThemeProvider"
import { Toaster as Sonner } from "sonner"
type ToasterProps = React.ComponentProps<typeof Sonner>
const Toaster = ({ ...props }: ToasterProps) => {
const { theme = "system" } = useTheme()
// Define background and foreground colors based on theme
const bgColor = theme === 'dark' ? '#1a1b1e' : '#ffffff';
const textColor = theme === 'dark' ? '#ffffff' : '#000000';
const borderColor = theme === 'dark' ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)';
return (
<div
className="fixed bottom-0 right-0 z-[9999] p-4 pointer-events-none"
style={{
backgroundColor: 'transparent',
}}
>
<Sonner
theme={theme as ToasterProps["theme"]}
className="toaster group z-[9999]"
position="bottom-right"
expand={false}
richColors
closeButton
toastOptions={{
classNames: {
toast: "group toast",
description: "group-[.toast]:text-muted-foreground",
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
},
duration: 5000,
style: {
border: `1px solid ${borderColor}`,
padding: '16px',
borderRadius: '6px',
backgroundColor: bgColor,
color: textColor,
opacity: '1',
boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',
},
}}
{...props}
/>
</div>
)
}
export { Toaster }