Skip to content
Clone
61a9be4
21 lines 615 B
import { useCallback, useEffect, useState } from 'react'
const THEME_KEY = 'gitdata-admin-theme'
export function useTheme() {
const [dark, setDark] = useState(() => {
const stored = window.localStorage.getItem(THEME_KEY)
if (stored) {
return stored === 'dark'
}
return window.matchMedia('(prefers-color-scheme: dark)').matches
})
useEffect(() => {
document.documentElement.classList.toggle('dark', dark)
window.localStorage.setItem(THEME_KEY, dark ? 'dark' : 'light')
}, [dark])
const toggle = useCallback(() => setDark((value) => !value), [])
return { dark, toggle }
}