Skip to content

Instantly share code, notes, and snippets.

@akirco
Created June 1, 2023 12:57
Show Gist options
  • Save akirco/0865bb46231914ce987a50887d1f3d41 to your computer and use it in GitHub Desktop.
Save akirco/0865bb46231914ce987a50887d1f3d41 to your computer and use it in GitHub Desktop.
react hooks - useDarkMode
import { useEffect } from "react";
import usePrefersDarkMode from "./usePrefersDarkMode";
import { useSafeLocalStorage } from "./useSafeLocalStorage";
export function useDarkMode(isDark: boolean) {
const prefersDarkMode = usePrefersDarkMode(isDark);
const [isEnabled, setIsEnabled] = useSafeLocalStorage("dark-mode", isDark);
const enabled = isEnabled === undefined ? prefersDarkMode : isEnabled;
useEffect(() => {
if (window === undefined) return;
const root = window.document.documentElement;
root.classList.remove(enabled ? "light" : "dark");
root.classList.add(enabled ? "dark" : "light");
}, [enabled]);
return [enabled, setIsEnabled];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment