Spaces:
Running
Running
File size: 667 Bytes
ad08f08 |
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 |
import { useState, useEffect } from 'react';
import { applyTheme, getInitialTheme } from '../utils/theme';
export const useTheme = () => {
const [theme, setTheme] = useState('light');
// Check for saved theme preference or respect OS preference
useEffect(() => {
const initialTheme = getInitialTheme();
setTheme(initialTheme);
applyTheme(initialTheme);
}, []);
// Apply theme to document
useEffect(() => {
applyTheme(theme);
}, [theme]);
const toggleTheme = () => {
setTheme(prevTheme => {
const newTheme = prevTheme === 'light' ? 'dark' : 'light';
return newTheme;
});
};
return { theme, toggleTheme };
}; |