"use client"; import Link from "next/link"; import ThemeToggle from "./ThemeToggle"; import { useEffect, useState, useRef } from "react"; export default function Navbar() { const [me, setMe] = useState(null); const [menuOpen, setMenuOpen] = useState(false); const menuRef = useRef(null); const loadUser = () => { fetch("/api/auth/me") .then((r) => r.json()) .then((d) => setMe(d)) .catch(() => setMe(null)); }; useEffect(() => { loadUser(); // Listen for profile updates const handleProfileUpdate = () => { loadUser(); }; window.addEventListener('profile-updated', handleProfileUpdate); return () => { window.removeEventListener('profile-updated', handleProfileUpdate); }; }, []); useEffect(() => { function handleClickOutside(event: MouseEvent) { if (menuRef.current && !menuRef.current.contains(event.target as Node)) { setMenuOpen(false); } } if (menuOpen) { document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); } }, [menuOpen]); const user = me?.user; const initials = user?.firstName && user?.lastName ? `${user.firstName[0]}${user.lastName[0]}`.toUpperCase() : "U"; return ( <>
📊
Estate Pro
Planning Hub
{user ? (
{menuOpen && (
{user.role === "ADMIN" && ( <>
Admin
📊 Dashboard 📧 Messages
)} 🎓 My Webinars ⚙️ Settings
)}
) : ( <> Sign In Get Started )}
); }