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';
export const getSystemStyle = () => {
if(!process.browser || !window)
return "light"
return window.matchMedia('(prefers-color-scheme: dark)').matches
? "dark"
: "light"
}
const usePrefersColorScheme = () => {
const [scheme, setScheme] = useState('light');
useEffect(() => {
const updateScheme = () => {
setScheme(getSystemStyle());
};
window
.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', updateScheme);
updateScheme()
return () => window
.matchMedia('(prefers-color-scheme: dark)')
.removeEventListener('change', updateScheme);
}, []);
return scheme;
};
export default usePrefersColorScheme