|
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; |
|
|