/** * Navigation Component * Styled following Netwerk Digitaal Erfgoed (NDE) house style * With bilingual support (NL/EN) */ import { useState, useRef, useEffect } from 'react'; import { Link, useLocation } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; import { useLanguage, translations } from '../../contexts/LanguageContext'; import './Navigation.css'; export function Navigation() { const location = useLocation(); const { user, logout } = useAuth(); const { language, toggleLanguage } = useLanguage(); const [userMenuOpen, setUserMenuOpen] = useState(false); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const userMenuRef = useRef(null); const mobileMenuRef = useRef(null); // Close menus when clicking outside useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (userMenuRef.current && !userMenuRef.current.contains(event.target as Node)) { setUserMenuOpen(false); } if (mobileMenuRef.current && !mobileMenuRef.current.contains(event.target as Node)) { setMobileMenuOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); // Close mobile menu on route change useEffect(() => { setMobileMenuOpen(false); }, [location.pathname]); const isActive = (path: string) => { return location.pathname === path; }; // Get translated nav text const t = (key: keyof typeof translations.nav) => { return language === 'en' ? translations.nav[key].en : translations.nav[key].nl; }; return ( ); }