import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import type { User } from '../types'; interface AuthStore { // Auth state user: User | null; token: string | null; isAuthenticated: boolean; isLoading: boolean; // Actions login: (user: User, token: string) => void; logout: () => void; setLoading: (loading: boolean) => void; updateUser: (user: Partial) => void; } export const useAuthStore = create()( persist( (set, get) => ({ user: null, token: null, isAuthenticated: false, isLoading: false, login: (user: User, token: string) => { set({ user, token, isAuthenticated: true, isLoading: false, }); }, logout: () => { set({ user: null, token: null, isAuthenticated: false, isLoading: false, }); }, setLoading: (isLoading: boolean) => { set({ isLoading }); }, updateUser: (userData: Partial) => { const { user } = get(); if (user) { set({ user: { ...user, ...userData }, }); } }, }), { name: 'auth-storage', partialize: (state) => ({ user: state.user, token: state.token, isAuthenticated: state.isAuthenticated, }), } ) );