'use client'; import { useState, useEffect, useRef } from 'react'; import Link from 'next/link'; import { useTranslations } from 'next-intl'; import { useSession, signIn, signOut } from 'next-auth/react'; import { LocaleSwitcher } from '@/components/layout/LocaleSwitcher'; import { ThemeSwitcher } from '@/components/layout/ThemeSwitcher'; import HamburgerButton from '@/components/layout/HamburgerButton'; import AuthProfileButton from '@/components/layout/AuthProfileButton'; import ScrollProgressBar from '@/components/layout/ScrollProgressBar'; import Logo from '@/components/layout/Logo'; export default function Navbar() { const t = useTranslations('nav'); const [open, setOpen] = useState(false); const [profileOpen, setProfileOpen] = useState(false); const menuRef = useRef(null); const burgerRef = useRef(null); const profileRef = useRef(null); const { data: session, status } = useSession(); const authenticated = status === 'authenticated' && session?.error !== 'RefreshAccessTokenError'; // const username = session?.user?.name || session?.user?.email; // const roles = (session as any)?.roles || []; const links = [ { to: '/', label: t('label1') }, { to: '/example', label: t('label2') }, { to: '/doc', label: t('label3') }, ]; useEffect(() => { if (session?.error === 'RefreshAccessTokenError') { signOut({ callbackUrl: '/' }); } }, [session]); useEffect(() => { const handleClickOutside = (e: MouseEvent) => { const clickedBurger = burgerRef.current?.contains(e.target as Node); const clickedProfile = profileRef.current?.contains(e.target as Node); const clickedMenu = menuRef.current?.contains(e.target as Node); const clickedInsideUI = clickedBurger || clickedProfile || clickedMenu; if (!clickedInsideUI) { setOpen(false); setProfileOpen(false); } }; document.addEventListener('click', handleClickOutside); return () => document.removeEventListener('click', handleClickOutside); }, [open, profileOpen]); const toggleProfile = () => { setProfileOpen((v) => { const next = !v; if (next) setOpen(false); return next; }); }; const toggleBurger = () => { setOpen((v) => { const next = !v; if (next) setProfileOpen(false); return next; }); }; return ( <> {/* Dropdown menu */}
    {links.map((link) => (
  • setOpen(false)} > {link.label}
  • ))} {/* Theme + Language switch */}
); }