UNPKG

react-custom-hooks-utils

Version:

This library contains a collection of reusable React custom hooks to simplify state management, side effects, and user interactions.

23 lines (19 loc) 654 B
import { useState, useEffect } from 'react'; function useDarkMode() { const [isDarkMode, setIsDarkMode] = useState( localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches) ); useEffect(() => { if (isDarkMode) { document.documentElement.classList.add('dark'); localStorage.theme = 'dark'; } else { document.documentElement.classList.remove('dark'); localStorage.theme = 'light'; } }, [isDarkMode]); const toggleDarkMode = () => setIsDarkMode((prev) => !prev); return [isDarkMode, toggleDarkMode]; } export default useDarkMode;