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
JavaScript
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;