'use client'; import { useState, useEffect, useCallback } from 'react'; import { useAuth } from '@/lib/auth'; import { useTheme } from '@/components/ThemeProvider'; import { useTranslation } from '@/lib/i18n'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; import IconButton from './IconButton'; export default function CompactHeader() { 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), []); 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 ( <>
{token && user && ( )} } label={t('common.menu')} onClick={openDrawer} variant="default" size="sm" className="!bg-transparent" />
{/* Slide-out drawer */} {drawerOpen && (
{/* Close */}
{t('common.menu')} } label={t('common.closeMenu')} onClick={closeDrawer} variant="default" size="md" />
{/* User info */} {token && user && (
{(user.name || user.email || '?').charAt(0).toUpperCase()}

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

{user.email}

)} {/* Menu items - icons only with labels next to them in the drawer */}
{[ { href: '/tasks', icon: , label: t('nav.tasks'), }, { href: '/calendar', icon: , label: t('nav.calendar'), }, { href: '/chat', icon: , label: t('nav.chat'), }, { href: '/settings', icon: , label: t('nav.settings'), }, { href: '/settings#install', icon: , label: t('settings.install') || 'Instalace', }, ].map((item) => ( {item.icon} {item.label} ))} {/* Theme toggle */}
{/* Logout icon at bottom */} {token && (
} label={t('auth.logout')} onClick={handleLogout} variant="danger" size="md" />
)}
)} ); }