export const GUANGHU_THEME_STORAGE_KEY = 'guanghu-theme' export const GUANGHU_THEMES = [ 'native', 'guanghu-native-galaxy', 'lake-light', 'lake-dark', 'aurora-dark', 'ice-heart', 'yaoming-purple', 'starfield-indigo', 'dawn-gold', 'tundra-green', 'peach-mist', ] as const export type GuanghuTheme = typeof GUANGHU_THEMES[number] export const GUANGHU_THEME_LABELS: Record = { native: '跟随原生', 'guanghu-native-galaxy': '光湖原生星系', 'lake-light': '湖光浅色(亮)', 'lake-dark': '湖心深色(暗)', 'aurora-dark': '极光深海', 'ice-heart': '冰心蓝', 'yaoming-purple': '曜冥紫', 'starfield-indigo': '星野靛青', 'dawn-gold': '晨曦金', 'tundra-green': '苔原绿', 'peach-mist': '桃雾晨光', } export function normalizeGuanghuTheme(value: unknown): GuanghuTheme { return typeof value === 'string' && (GUANGHU_THEMES as readonly string[]).includes(value) ? value as GuanghuTheme : 'native' } export function readGuanghuTheme(storage: Pick): GuanghuTheme { try { const storedTheme = storage.getItem(GUANGHU_THEME_STORAGE_KEY) return storedTheme === null ? 'guanghu-native-galaxy' : normalizeGuanghuTheme(storedTheme) } catch { return 'guanghu-native-galaxy' } } export function writeGuanghuTheme(storage: Pick, theme: GuanghuTheme): void { try { storage.setItem(GUANGHU_THEME_STORAGE_KEY, theme) } catch { // Storage may be unavailable in restricted browser contexts. } }