import { useTheme } from "next-themes" import { useEffect, useState } from "react" import { Toaster as Sonner, ToasterProps } from "sonner" const Toaster = ({ ...props }: ToasterProps) => { const { theme = "system", resolvedTheme } = useTheme() const [isMounted, setIsMounted] = useState(false) // Устанавливаем флаг монтирования для предотвращения гидрации useEffect(() => { setIsMounted(true) }, []) // Устанавливаем атрибут data-sonner-theme для глобальной стилизации тостов useEffect(() => { if (typeof document !== "undefined" && isMounted) { const isDark = resolvedTheme === "dark" || (resolvedTheme === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches) document.documentElement.setAttribute("data-sonner-theme", isDark ? "dark" : "light") } }, [resolvedTheme, isMounted]) // Не рендерим на сервере или до монтирования if (!isMounted) { return null } return ( ) } export { Toaster }