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 = (): 'light' | 'dark' => {
    if(!process.browser || !window)
        return "light"
    return window.matchMedia('(prefers-color-scheme: dark)').matches
        ? "dark"
        : "light"
}

const usePrefersColorScheme = (): 'light' | 'dark' => {
    const [scheme, setScheme] = useState<'light' | 'dark'>('light');
    useEffect(() => {
        const updateScheme = (): void => {
            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