'use client'; import { useState, useEffect, createContext, useContext } from 'react'; import { api } from '@/lib/api/client'; export interface User { id: string; email: string; firstName: string; lastName: string; role: string; brokerage?: string; ghlLocationId?: string; } export interface AuthContextType { user: User | null; loading: boolean; isLoading: boolean; // Alias for loading login: (email: string, password: string) => Promise; signup: (data: { email: string; password: string; firstName: string; lastName: string }) => Promise; logout: () => Promise; refresh: () => Promise; } const AuthContext = createContext(null); export function AuthProvider({ children }: { children: React.ReactNode }) { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const refresh = async () => { try { const { user } = await api.auth.me(); setUser(user); } catch { setUser(null); } finally { setLoading(false); } }; useEffect(() => { refresh(); }, []); const login = async (email: string, password: string) => { const { user } = await api.auth.login(email, password); setUser(user); }; const signup = async (data: { email: string; password: string; firstName: string; lastName: string }) => { const { user } = await api.auth.signup(data); setUser(user); }; const logout = async () => { await api.auth.logout(); setUser(null); }; return ( {children} ); } export function useAuth() { const context = useContext(AuthContext); if (!context) throw new Error('useAuth must be used within AuthProvider'); return context; }