"use client" import React, { useState, useRef, useEffect } from 'react' import Link from 'next/link' import { House, Link as LinkIcon, User, Phone, BookOpen, Music, Rss, X, Menu, Globe, ChevronDown } from 'lucide-react' import { useTranslation } from 'react-i18next' interface NavItemProps { href: string; icon: React.ElementType; children: React.ReactNode; } const NavItem = ({ href, icon, children }: NavItemProps) => (
{React.createElement(icon, { className: "text-md mr-2", strokeWidth: 2.5, size: 20 })} {children}
); const LanguageSelector = () => { const { i18n } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); const dropdownRef = useRef(null); const languages = [ { code: 'en-US', name: 'English' }, ]; useEffect(() => { const checkMobile = () => { setIsMobile(window.innerWidth < 1024); }; checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); const changeLanguage = (lng: string) => { i18n.changeLanguage(lng); setIsOpen(false); }; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => document.removeEventListener('mousedown', handleClickOutside); }, []); const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Escape') { setIsOpen(false); } if (e.key === 'Enter' || e.key === ' ') { setIsOpen(!isOpen); } }; const buttonContent = ( <> {languages.find(lang => lang.code === i18n.language)?.name || 'English'} {!isMobile && ( )} ); return (
{isOpen && (
{languages.map((lang) => ( ))}
)}
); }; export default function Header() { const [isOpen, setIsOpen] = useState(false); const toggleMenu = () => setIsOpen(!isOpen); return (
); }