import { create } from 'zustand'; import type { UserSettings } from '@glmpilot/shared'; interface SettingsState extends UserSettings { updateSetting: (key: K, value: UserSettings[K]) => void; } const defaultSettings: UserSettings = { theme: 'dark', fontSize: 14, tabSize: 2, autoSave: true, aiCompletions: true, keybindings: 'default', wordWrap: true, minimap: true, }; export const useSettingsStore = create((set) => { // Load from localStorage let initial = defaultSettings; try { const saved = localStorage.getItem('ff-settings'); if (saved) initial = { ...defaultSettings, ...JSON.parse(saved) }; } catch { /* use defaults */ } return { ...initial, updateSetting: (key, value) => set((state) => { const updated = { ...state, [key]: value }; try { const { updateSetting, ...settings } = updated; localStorage.setItem('ff-settings', JSON.stringify(settings)); } catch { /* ignore */ } return { [key]: value }; }), }; });