import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import type { User, AuthTokens } from '../types'; interface AuthState { user: User | null; tokens: AuthTokens | null; isAuthenticated: boolean; isLoading: boolean; setAuth: (user: User, tokens: AuthTokens) => void; setTokens: (tokens: AuthTokens) => void; logout: () => void; setLoading: (loading: boolean) => void; } export const useAuthStore = create()( persist( (set) => ({ user: null, tokens: null, isAuthenticated: false, isLoading: true, setAuth: (user, tokens) => set({ user, tokens, isAuthenticated: true, isLoading: false }), setTokens: (tokens) => set({ tokens }), logout: () => set({ user: null, tokens: null, isAuthenticated: false }), setLoading: (isLoading) => set({ isLoading }), }), { name: 'codesync-auth', partialize: (state) => ({ user: state.user, tokens: state.tokens, isAuthenticated: state.isAuthenticated }) } ) );