visionA/local-tool/frontend/src/stores/settings-store.ts
jim800121chen c54f16fca0 Initial commit: visionA monorepo with local-tool subproject
local-tool/: visionA-local desktop app
- M1: Wails shell + Go server + Next.js UI + Mock mode (macOS dmg ready)
- M2: i18n (zh-TW/en) + Settings 4-tab refactor
- M3: Embedded Python 3.12 runtime (python-build-standalone) + KneronPLUS wheels
- M4: Windows Inno Setup script (build on Windows runner)
- M5: Linux AppImage script + udev rule (build on Linux runner)
- M6: ffmpeg (GPL, pending legal review) + yt-dlp bundled
- Lifecycle: watchServer health check, fatal native dialog,
            Wails IPC raise endpoint, stale process cleanup

.autoflow/: full PRD / Design Spec / Architecture / Testing docs
            (4 rounds tri-party discussion + cross review)
.github/workflows/: macOS / Windows / Linux build CI

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:10:38 +08:00

29 lines
680 B
TypeScript

import { create } from 'zustand';
import { persist } from 'zustand/middleware';
interface SettingsState {
theme: 'light' | 'dark';
language: 'zh-TW' | 'en';
setTheme: (theme: 'light' | 'dark') => void;
setLanguage: (language: 'zh-TW' | 'en') => void;
resetToDefaults: () => void;
}
const defaults = {
theme: 'light' as const,
language: 'zh-TW' as const,
};
export const useSettingsStore = create<SettingsState>()(
persist(
(set) => ({
...defaults,
setTheme: (theme) => set({ theme }),
setLanguage: (language) => set({ language }),
resetToDefaults: () => set(defaults),
}),
{ name: 'settings', skipHydration: true },
),
);