"use client"; import React, { createContext, useContext, useState, useMemo } from "react"; import type { User } from "@/models/user"; import { userLogout } from "@/api/user"; type AuthContextValue = { user: User | null; setUser: (u: User | null) => void; logout: () => void; }; const AuthContext = createContext(undefined); export function AuthProvider({ children, initialUser = null, }: { children: React.ReactNode; initialUser?: User | null; }) { const [user, setUser] = useState(initialUser); const logout = async () => { setUser(null); await userLogout(); }; const value = useMemo(() => ({ user, setUser, logout }), [user]); return {children}; } export function useAuth() { const ctx = useContext(AuthContext); if (!ctx) { throw new Error("useAuth must be used within an AuthProvider"); } return ctx; }