import { useEffect, useId, useRef, useState } from 'react' import { Link, useNavigate } from 'react-router-dom' import { ChevronDown, LogOut } from 'lucide-react' import { clearSession, getSession } from '../lib/auth' import { logout } from '../lib/authApi' import { navSections } from '../lib/nav' import logo from '../images/Logo-balout-256.png' import styles from './Header.module.css' type HeaderProps = { showLogout?: boolean } export function Header({ showLogout = true }: HeaderProps) { const navigate = useNavigate() const session = getSession() const [openId, setOpenId] = useState(null) const navRef = useRef(null) const navLabelId = useId() useEffect(() => { function handlePointerDown(event: MouseEvent) { if (!navRef.current?.contains(event.target as Node)) { setOpenId(null) } } function handleKeyDown(event: KeyboardEvent) { if (event.key === 'Escape') setOpenId(null) } document.addEventListener('mousedown', handlePointerDown) document.addEventListener('keydown', handleKeyDown) return () => { document.removeEventListener('mousedown', handlePointerDown) document.removeEventListener('keydown', handleKeyDown) } }, []) async function handleLogout() { try { await logout() } catch { clearSession() } navigate('/login') } function toggleSection(id: string) { setOpenId((current) => (current === id ? null : id)) } return (
setOpenId(null)}> بلوط {showLogout && (
{session && ( {session.user.name} )}
)}
) }