import { useState } from 'react'; import { motion } from 'framer-motion'; import { Menu, X, Sun, Moon, Globe, LogIn, LogOut } from 'lucide-react'; import { useLanguage } from '../contexts/LanguageContext'; import { useNavigate, useLocation, Link } from 'react-router-dom'; import { useAuth } from '../contexts/AuthContext'; interface HeaderProps { darkMode: boolean; toggleDarkMode: () => void; } const Header = ({ darkMode, toggleDarkMode }: HeaderProps) => { const [isMenuOpen, setIsMenuOpen] = useState(false); const { language, setLanguage, t } = useLanguage(); const { user, loading, logout } = useAuth(); const navigate = useNavigate(); const location = useLocation(); type MenuItem = { id: string; name: string; href: string; kind: 'section' | 'route'; }; const menuItems: MenuItem[] = [ { id: 'home', name: t('nav.home'), href: '#hero', kind: 'section' }, { id: 'about', name: t('nav.about'), href: '#about', kind: 'section' }, { id: 'skills', name: t('nav.skills'), href: '#skills', kind: 'section' }, { id: 'projects', name: t('nav.projects'), href: '#projects', kind: 'section' }, { id: 'education', name: t('nav.education'), href: '#education', kind: 'section' }, { id: 'contact', name: t('nav.contact'), href: '#contact', kind: 'section' } ]; const handleNavigation = (item: MenuItem) => { setIsMenuOpen(false); if (item.kind === 'route') { navigate(item.href); return; } if (location.pathname === `/${language}` || location.pathname === `/${language}/`) { // Already on home, just scroll const element = document.querySelector(item.href); if (element) { element.scrollIntoView({ behavior: 'smooth' }); } } else { // Not on home, navigate then scroll (using a simple timeout for simplicity or hash) navigate(`/${language}`); // Small timeout to allow navigation to render Home before scrolling setTimeout(() => { const element = document.querySelector(item.href); if (element) { element.scrollIntoView({ behavior: 'smooth' }); } }, 100); } }; const toggleLanguage = () => { setLanguage(language === 'fr' ? 'en' : 'fr'); }; const handleLogout = async () => { try { await logout(); } catch {} }; const avatarLabel = user?.displayName?.trim()?.charAt(0)?.toUpperCase() || user?.email?.trim()?.charAt(0)?.toUpperCase() || 'U'; return ( ); }; export default Header;