/* istanbul ignore file -- @preserve UI-heavy navigation component best tested via E2E */ /** * Homepage Header * Navigation header for the landing page with demo credentials modal */ 'use client'; import Image from 'next/image'; import { useState } from 'react'; import { Link } from '@/lib/i18n/routing'; import { Menu, X, Github, Star } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'; import { LocaleSwitcher } from '@/components/i18n'; import { ThemeToggle } from '@/components/theme'; import { useIsAuthenticated, useLogout } from '@/lib/api/hooks/useAuth'; interface HeaderProps { onOpenDemoModal: () => void; } export function Header({ onOpenDemoModal }: HeaderProps) { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const isAuthenticated = useIsAuthenticated(); const logoutMutation = useLogout(); // istanbul ignore next - Logout tested in E2E auth flows const handleLogout = () => { logoutMutation.mutate(); }; const navLinks = [ { href: '/', label: 'Home' }, { href: '/dev', label: 'Design System' }, { href: '/admin', label: 'Admin Demo' }, ]; return ( <>
{/* Logo */} Syndarix Logo Syndarix {/* Desktop Navigation */} {/* Mobile Menu Toggle - mobile menu interactions are tested via e2e */} {/* istanbul ignore next */} {/* istanbul ignore next - Sheet content interactions covered by e2e tests */}
); }