"use client"; import { useRouter } from "next/navigation"; import { createContext, useContext, useEffect, useMemo, useState } from "react"; type AuthContextValue = { token: string | null; setToken: (value: string | null) => void; logout: () => void; }; const AuthContext = createContext(null); export function AuthProvider({ children }: { children: React.ReactNode }) { const router = useRouter(); const [token, setTokenState] = useState(null); useEffect(() => { setTokenState(window.localStorage.getItem("atlas_token")); }, []); const value = useMemo(() => { const setToken = (next: string | null) => { setTokenState(next); if (next) { window.localStorage.setItem("atlas_token", next); } else { window.localStorage.removeItem("atlas_token"); } }; return { token, setToken, logout: () => { setToken(null); router.push("/login"); } }; }, [router, token]); return {children}; } export function useAuth() { const value = useContext(AuthContext); if (!value) { throw new Error("useAuth must be used inside AuthProvider"); } return value; }