"use client"; import { useState, useEffect, useCallback } from "react"; import { useAuth } from "@/lib/auth"; import { useTheme } from "./ThemeProvider"; import Link from "next/link"; import { useRouter } from "next/navigation"; export default function Header() { const { user, logout, token } = useAuth(); const { theme, toggleTheme } = useTheme(); const router = useRouter(); const [drawerOpen, setDrawerOpen] = useState(false); function handleLogout() { logout(); router.push("/login"); setDrawerOpen(false); } const closeDrawer = useCallback(() => setDrawerOpen(false), []); // Close drawer on escape useEffect(() => { if (!drawerOpen) return; function handleKey(e: KeyboardEvent) { if (e.key === "Escape") closeDrawer(); } document.addEventListener("keydown", handleKey); document.body.style.overflow = "hidden"; return () => { document.removeEventListener("keydown", handleKey); document.body.style.overflow = ""; }; }, [drawerOpen, closeDrawer]); return ( <>
{/* Left: Logo + title */}
Task Team {/* Right: Desktop controls */}
{token && user ? (
{(user.name || user.email || "?").charAt(0).toUpperCase()}
{user.name || user.email}
) : ( Prihlasit )}
{/* Right: Mobile - avatar + hamburger */}
{token && user && (
{(user.name || user.email || "?").charAt(0).toUpperCase()}
)}
{/* Mobile slide-out drawer */} {drawerOpen && (
{/* Backdrop */}
{/* Drawer panel */}
{/* Close button */}
Menu
{/* User info */} {token && user && (
{(user.name || user.email || "?").charAt(0).toUpperCase()}

{user.name || "Uzivatel"}

{user.email}

)} {/* Menu items */}
Ukoly Kalendar {/* Theme toggle */}
{/* Logout at bottom */} {token && (
)}
)} ); }