Spaces:
Sleeping
Sleeping
File size: 657 Bytes
5a264f5 | 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 { createContext, useContext, useEffect, useState } from 'react'
const ThemeContext = createContext()
export function ThemeProvider({ children }) {
const [theme, setTheme] = useState(() => localStorage.getItem('breathe-theme') || 'dark')
useEffect(() => {
document.documentElement.setAttribute('data-theme', theme)
localStorage.setItem('breathe-theme', theme)
}, [theme])
function toggle() {
setTheme(t => t === 'dark' ? 'light' : 'dark')
}
return (
<ThemeContext.Provider value={{ theme, toggle }}>
{children}
</ThemeContext.Provider>
)
}
export function useTheme() {
return useContext(ThemeContext)
}
|