/** * Navigation mobile fixe — affichée uniquement en dessous de 1024px. * * 4 items : Accueil / Simuler / Progression / Compte. * "Simuler" ouvre une bottom sheet (EE / EO / Examen blanc). * Tap target 44×44px minimum (DESIGN_SYSTEM.md §7). * * Règle L : tokens du design system exclusivement. * Règle H : aucune logique métier — navigation uniquement. */ import { useState } from 'react' import { Link, useLocation, useNavigate } from 'react-router-dom' import { Home, BookOpen, TrendingUp, User } from 'lucide-react' import { cn } from '@/shared/lib/utils' const SHEET_ITEMS = [ { label: 'Expression Écrite', to: '/simulation/ee' }, { label: 'Expression Orale', to: '/simulation/eo' }, { label: 'Examen blanc', to: '/examen' }, ] as const export function BottomNav() { const [isSheetOpen, setIsSheetOpen] = useState(false) const location = useLocation() const navigate = useNavigate() const isActive = (prefix: string) => location.pathname.startsWith(prefix) function handleSheetNavigate(to: string) { setIsSheetOpen(false) navigate(to) } const navItemClasses = (active: boolean) => cn( 'flex min-h-[44px] flex-1 flex-col items-center justify-center gap-0.5 text-[10px] font-medium transition-colors duration-150', active ? 'text-brand-text' : 'text-ink-tertiary hover:text-ink-primary', ) return ( <> {/* Bottom sheet overlay */} {isSheetOpen && (