in packages/hooks/src/useTheme/index.ts [50:77]
export default function useTheme(options: Options = {}) {
const { localStorageKey } = options;
const [themeMode, setThemeMode] = useState<ThemeModeType>(() => {
const preferredThemeMode =
localStorageKey?.length &&
(localStorage.getItem(localStorageKey) as ThemeModeType | null);
return preferredThemeMode ? preferredThemeMode : ThemeMode.SYSTEM;
});
const setThemeModeWithLocalStorage = (mode: ThemeModeType) => {
setThemeMode(mode);
if (localStorageKey?.length) {
localStorage.setItem(localStorageKey, mode);
}
};
const currentTheme = useCurrentTheme();
const theme = themeMode === ThemeMode.SYSTEM ? currentTheme : themeMode;
return {
theme,
themeMode,
setThemeMode: useMemoizedFn(setThemeModeWithLocalStorage),
};
}