import { create } from 'zustand'; import { applyTheme } from '../appearance/themes'; export interface Settings { fontSize: number; // 12-20 fontFamily: string; autoSaveInterval: number; // 秒 1-30,真实生效 showLineNumbers: boolean; // 代码块行号,真实生效 wordWrap: boolean; // 自动换行,真实生效 confirmDelete: boolean; // 删除前确认,真实生效 } const DEFAULTS: Settings = { fontSize: 14, fontFamily: 'Consolas, monospace', autoSaveInterval: 1, showLineNumbers: false, wordWrap: true, confirmDelete: true, }; const KEY = 'dsh-settings'; function load(): Settings { try { const raw = localStorage.getItem(KEY); if (raw) return { ...DEFAULTS, ...JSON.parse(raw) }; } catch {} return DEFAULTS; } interface SettingsState extends Settings { set: (key: K, value: Settings[K]) => void; persist: () => void; } export const useSettings = create((set, get) => ({ ...load(), set: (key, value) => { set({ [key]: value } as any); get().persist(); }, persist: () => { try { localStorage.setItem(KEY, JSON.stringify({ fontSize: get().fontSize, fontFamily: get().fontFamily, autoSaveInterval: get().autoSaveInterval, showLineNumbers: get().showLineNumbers, wordWrap: get().wordWrap, confirmDelete: get().confirmDelete })); } catch {} }, }));