diff --git a/src/themes.ts b/src/themes.ts index a6e5545..7964576 100644 --- a/src/themes.ts +++ b/src/themes.ts @@ -24,7 +24,17 @@ const actions = { type: createAction(), }; -const defaultTheme = createTheme('light'); +const paletteTypeKey = 'paletteType'; + +const loadPaletteType = (): PaletteType => { + const type = window.localStorage.getItem(paletteTypeKey); + return type === 'dark' ? 'dark' : 'light'; +}; + +const savePaletteType = (type: PaletteType) => + window.localStorage.setItem(paletteTypeKey, type); + +const defaultTheme = createTheme(loadPaletteType()); interface ThemeState { theme: Theme; @@ -41,6 +51,8 @@ const theme$ = createState( }), ).map(({ theme }) => theme); +theme$.subscribe(({ palette: { type } }) => savePaletteType(type)); + export default { actions, defaultTheme,