"use client"; import React, { createContext, useContext, useState, useEffect } from "react"; interface User { id: string; FirstName: string; LastName: string; Email: string; role?: string; } interface AuthContextType { user: User | null; token: string | null; login: (token: string, user: User) => void; logout: () => void; isAuthenticated: boolean; } const AuthContext = createContext(undefined); export function AuthProvider({ children }: { children: React.ReactNode }) { const [user, setUser] = useState(null); const [token, setToken] = useState(null); useEffect(() => { // Check for stored auth data on mount const storedToken = localStorage.getItem("token"); const storedUser = localStorage.getItem("user"); if (storedToken && storedUser) { setToken(storedToken); setUser(JSON.parse(storedUser)); } }, []); const login = (newToken: string, newUser: User) => { setToken(newToken); setUser(newUser); localStorage.setItem("token", newToken); localStorage.setItem("user", JSON.stringify(newUser)); }; const logout = () => { setToken(null); setUser(null); localStorage.removeItem("token"); localStorage.removeItem("user"); }; const isAuthenticated = !!token && !!user; return ( {children} ); } export function useAuth() { const context = useContext(AuthContext); if (context === undefined) { throw new Error("useAuth must be used within an AuthProvider"); } return context; }