"use client"; import { useState, useEffect, useCallback } from "react"; import { useAuth } from "@/lib/auth"; import { useTheme } from "./ThemeProvider"; import { useTranslation } from "@/lib/i18n"; import Link from "next/link"; import { useRouter } from "next/navigation"; export default function Header() { const { user, logout, token } = useAuth(); const { theme, toggleTheme } = useTheme(); const { t } = useTranslation(); const router = useRouter(); const [drawerOpen, setDrawerOpen] = useState(false); function handleLogout() { logout(); router.push("/login"); setDrawerOpen(false); } const closeDrawer = useCallback(() => setDrawerOpen(false), []); const openDrawer = useCallback(() => setDrawerOpen(true), []); // 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 ( <>
{/* Right side only: avatar (no name text) + hamburger */} {token && user && ( )}
{/* Slide-out drawer */} {drawerOpen && (
{/* Backdrop */}
{/* Drawer panel */}
{/* Close button */}
{t("common.menu")}
{/* User info - full name + email */} {token && user && (
{(user.name || user.email || "?").charAt(0).toUpperCase()}

{user.name || t("settings.user")}

{user.email}

)} {/* Menu items */}
{t("nav.tasks")} {t("nav.calendar")} {t("nav.chat")} {t("nav.settings")} {/* Install link */} {t("settings.install") || "Instalace"} {/* Theme toggle */}
{/* Logout icon at bottom */} {token && (
)}
)} ); }