Spaces:
Sleeping
Sleeping
File size: 889 Bytes
05c5ed5 | 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 | "use client";
import * as React from "react";
import { ThemeProvider as NextThemesProvider } from "next-themes";
import { useThemeStyle } from "@/hooks/use-theme-style";
export function ThemeProvider({
children,
...props
}: React.ComponentProps<typeof NextThemesProvider>) {
return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
}
export const ThemeStyleProvider = React.memo(function ({
children,
}: {
children: React.ReactNode;
}) {
const { themeStyle } = useThemeStyle();
const [mounted, setMounted] = React.useState(false);
React.useLayoutEffect(() => {
if (document.body.getAttribute("data-theme") !== themeStyle) {
document.body.setAttribute("data-theme", themeStyle);
}
setMounted(true);
}, [themeStyle]);
if (!mounted) {
return null;
}
return children;
});
ThemeStyleProvider.displayName = "ThemeStyleProvider";
|