'use client'; import { useState, useEffect } from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useI18n } from '@/lib/i18n'; import { UserMenu } from '@/components/UserMenu'; interface NavItem { href: string; labelKey: string; icon: React.ReactNode; } const navItems: NavItem[] = [ { href: '/de/dashboard', labelKey: 'nav.dashboard', icon: ( ), }, { href: '/de/fahrzeuge', labelKey: 'nav.vehicles', icon: ( ), }, { href: '/de/kontakte', labelKey: 'nav.contacts', icon: ( ), }, { href: '/de/verkauf', labelKey: 'nav.sales', icon: ( ), }, { href: '/de/ki-copilot', labelKey: 'nav.ki-copilot', icon: ( ), }, { href: '/de/ocr', labelKey: 'nav.ocr', icon: ( ), }, { href: '/de/retouch', labelKey: 'nav.retouch', icon: ( ), }, ]; export function Navigation() { const pathname = usePathname(); const { t } = useI18n(); const [mobileOpen, setMobileOpen] = useState(false); // Close mobile sidebar on route change useEffect(() => { setMobileOpen(false); }, [pathname]); function isActive(href: string): boolean { // Extract the path segment after locale (e.g. /de/fahrzeuge -> fahrzeuge) const segments = href.split('/'); // ['', 'de', 'fahrzeuge'] const section = segments[2]; // 'fahrzeuge' if (!section) return false; return pathname.includes(`/${section}`); } return ( <> {/* Mobile header bar with hamburger */}
{t('nav.appName')}
{/* Mobile overlay */} {mobileOpen && (
setMobileOpen(false)} data-testid="mobile-overlay" /> )} {/* Sidebar */} {/* Mobile spacer so content starts below header */}
); }