import { useEffect, useState } from 'react'; import { Link, router, usePage } from '@inertiajs/react'; import { dashboard, home, login, logout, contact, membership } from '@/routes'; import AppLogoIcon from '@/components/app-logo-icon'; import { Button } from '@/components/ui/button'; import { type SharedData } from '@/types'; import { useMobileNavigation } from '@/hooks/use-mobile-navigation'; import { useAppearance } from '@/hooks/use-appearance'; import { Menu, Moon, Sun, X } from 'lucide-react'; import AppLogo from "@/components/app-logo"; export default function NavGuestLayout() { const { auth } = usePage().props; const cleanup = useMobileNavigation(); const { appearance, updateAppearance } = useAppearance(); const [isMenuOpen, setIsMenuOpen] = useState(false); const handleLogout = () => { cleanup(); router.flushAll(); }; const toggleAppearance = () => { updateAppearance(appearance === 'dark' ? 'light' : 'dark'); }; const closeMenu = () => setIsMenuOpen(false); // Fermer sur navigation Inertia useEffect(() => { return router.on('navigate', closeMenu); }, []); // Fermer sur touche Escape useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Escape') closeMenu(); }; document.addEventListener('keydown', handleKeyDown); return () => document.removeEventListener('keydown', handleKeyDown); }, []); // Bloquer le scroll quand menu ouvert useEffect(() => { document.body.style.overflow = isMenuOpen ? 'hidden' : ''; return () => { document.body.style.overflow = ''; }; }, [isMenuOpen]); return ( <>
{/* Logo */}
{/*@todo: gérer l'accessibilité de l'image'*/} {/*Le Retzien Libre*/} {/* Navigation desktop */} {/* Actions desktop */}
{auth.user ? ( <> Se déconnecter ) : ( <> )}
{/* Actions mobile : thème + hamburger */}
{/* Menu mobile */} {isMenuOpen && ( <> {/* Backdrop */}