function decodeJwt(token: string) { try { const payload = token.split(".")[1] const decoded = JSON.parse(atob(payload)) return decoded } catch { return null } } export function useAuth() { const token = useState("token", () => null) function setToken(t: string) { token.value = t if (typeof window !== "undefined") { localStorage.setItem("token", t) } } function loadToken() { if (typeof window !== "undefined") { const stored = localStorage.getItem("token") if (!stored) return const payload = decodeJwt(stored) if( !payload || !payload.exp || payload.exp * 1000 < Date.now()) { console.info("Token expired - removing it from storage") localStorage.removeItem("token") token.value = null } token.value = stored } } function logout() { token.value = null if (typeof window !== "undefined") { localStorage.removeItem("token") } } return { token, setToken, loadToken, logout } }