'use client' import { createContext, useContext, useState, useEffect, useCallback } from 'react' interface User { id: string email: string name: string role: string mustChangePassword: boolean } interface UserContextValue { user: User | null isLoading: boolean setUser: (user: User | null) => void refreshUser: () => Promise } const UserContext = createContext(null) export function UserProvider({ children }: { children: React.ReactNode }) { const [user, setUser] = useState(null) const [isLoading, setIsLoading] = useState(true) const refreshUser = useCallback(async (): Promise => { try { const res = await fetch('/api/auth/me') if (res.ok) { const data = await res.json() setUser(data.user) return data.user } else { setUser(null) return null } } catch { setUser(null) return null } finally { setIsLoading(false) } }, []) useEffect(() => { refreshUser() }, [refreshUser]) return ( {children} ) } export function useUser(): UserContextValue { const ctx = useContext(UserContext) if (!ctx) throw new Error('useUser must be used within a UserProvider') return ctx }