| import { FC, ReactNode, useMemo, useState } from 'react'; | |
| import { LOCAL_STORAGE_THEME_KEY, Theme, ThemeContext } from '../lib/ThemeContext'; | |
| const defaultTheme = (localStorage.getItem(LOCAL_STORAGE_THEME_KEY) as Theme) || Theme.LIGHT; | |
| interface Props { | |
| children: ReactNode; | |
| } | |
| const ThemeProvider: FC<Props> = ({ children }) => { | |
| const [theme, setTheme] = useState<Theme>(defaultTheme); | |
| const defaultProps = useMemo( | |
| () => ({ | |
| theme, | |
| setTheme, | |
| }), | |
| [theme] | |
| ); | |
| return <ThemeContext.Provider value={defaultProps}>{children}</ThemeContext.Provider>; | |
| }; | |
| export default ThemeProvider; | |