import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import type { Conversation, Message, Settings, Status } from './api'; interface AppState { // Conversations conversations: Conversation[]; currentId: string | null; messages: Message[]; setConversations: (c: Conversation[]) => void; setCurrentId: (id: string | null) => void; setMessages: (m: Message[]) => void; addMessage: (m: Message) => void; // Settings settings: Settings; setSettings: (s: Partial) => void; // Status status: Status | null; setStatus: (s: Status) => void; // UI settingsOpen: boolean; setSettingsOpen: (open: boolean) => void; sidebarOpen: boolean; setSidebarOpen: (open: boolean) => void; isLoading: boolean; setIsLoading: (loading: boolean) => void; } export const useStore = create()( persist( (set) => ({ // Conversations conversations: [], currentId: null, messages: [], setConversations: (conversations) => set({ conversations }), setCurrentId: (currentId) => set({ currentId }), setMessages: (messages) => set({ messages }), addMessage: (m) => set((s) => ({ messages: [...s.messages, m] })), // Settings — defaults settings: { theme: 'light', font_size: 'medium', web_search: true, show_sources: true, }, setSettings: (s) => set((state) => ({ settings: { ...state.settings, ...s } })), // Status status: null, setStatus: (status) => set({ status }), // UI settingsOpen: false, setSettingsOpen: (settingsOpen) => set({ settingsOpen }), sidebarOpen: false, setSidebarOpen: (sidebarOpen) => set({ sidebarOpen }), isLoading: false, setIsLoading: (isLoading) => set({ isLoading }), }), { name: 'aaronai-store', partialize: (state) => ({ settings: state.settings, currentId: state.currentId, }), } ) );