in src/ThemeProvider.tsx [103:135]
function useSystemColorMode() {
const [systemColorMode, setSystemColorMode] = React.useState(getSystemColorMode)
React.useEffect(() => {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
const media = window?.matchMedia?.('(prefers-color-scheme: dark)')
function handleChange(event: MediaQueryListEvent) {
const isNight = event.matches
setSystemColorMode(isNight ? 'night' : 'day')
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (media) {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
if (media.addEventListener !== undefined) {
media.addEventListener('change', handleChange)
return function cleanup() {
media.removeEventListener('change', handleChange)
}
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
else if (media.addListener !== undefined) {
media.addListener(handleChange)
return function cleanup() {
media.removeListener(handleChange)
}
}
}
}, [])
return systemColorMode
}