Spaces:
Sleeping
Sleeping
| import { useState, useEffect } from 'react'; | |
| export const useThemeMode = () => { | |
| // Get system preference | |
| const getSystemPreference = () => { | |
| return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; | |
| }; | |
| // Initialize theme mode from system preference | |
| const [mode, setMode] = useState(getSystemPreference); | |
| // Listen to system preference changes | |
| useEffect(() => { | |
| const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); | |
| const handleChange = (e) => { | |
| setMode(e.matches ? 'dark' : 'light'); | |
| }; | |
| mediaQuery.addEventListener('change', handleChange); | |
| return () => mediaQuery.removeEventListener('change', handleChange); | |
| }, []); | |
| const toggleTheme = () => { | |
| setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light')); | |
| }; | |
| return { mode, toggleTheme }; | |
| }; |