export type ThemeMode = 'light' | 'dark' | 'system'; const THEME_MODE_STORAGE_KEY = 'mumulingsi_theme_mode'; const LEGACY_THEME_MODE_STORAGE_KEY = 'xinmi_theme_mode'; const isThemeMode = (value: string | null): value is ThemeMode => { return value === 'light' || value === 'dark' || value === 'system'; }; export const getStoredThemeMode = (): ThemeMode => { try { let value = localStorage.getItem(THEME_MODE_STORAGE_KEY); if (!value) { value = localStorage.getItem(LEGACY_THEME_MODE_STORAGE_KEY); if (isThemeMode(value)) { localStorage.setItem(THEME_MODE_STORAGE_KEY, value); try { localStorage.removeItem(LEGACY_THEME_MODE_STORAGE_KEY); } catch { // ignore } } } if (isThemeMode(value)) { return value; } } catch (error) { console.warn('读取主题模式失败:', error); } return 'system'; }; export const setStoredThemeMode = (mode: ThemeMode): void => { try { localStorage.setItem(THEME_MODE_STORAGE_KEY, mode); } catch (error) { console.warn('保存主题模式失败:', error); } }; export const getThemeModeStorageKey = (): string => THEME_MODE_STORAGE_KEY;