'use client'; import { useEffect, useMemo } from 'react'; import { useTranslations } from 'next-intl'; import { useAuth } from '@/lib/context/auth-context'; import { usePathname, useRouter } from '@/i18n/navigation'; import { AppShell } from '@/components/shell/app-shell'; import { buildAdminNav } from '@/components/shell/nav-config'; import { PageSpinner } from '@/components/ui/states'; export default function AdminLayout({ children }: { children: React.ReactNode }) { const { user, logout, loading, isAuthenticated } = useAuth(); const pathname = usePathname(); const router = useRouter(); const tItems = useTranslations('components.adminPanelDropdown'); const tAdmin = useTranslations('admin'); const tShell = useTranslations('shell'); const tDashboard = useTranslations('dashboard'); // La page /admin/login vit sous ce segment mais doit s'afficher sans le // chrome d'administration et sans declencher la garde de role. const isLoginRoute = pathname === '/admin/login'; useEffect(() => { if (isLoginRoute || loading) return; if (!isAuthenticated) { router.replace('/admin/login'); return; } if (user && user.role !== 'ADMIN') { router.replace('/dashboard'); } }, [isLoginRoute, loading, isAuthenticated, user, router]); const groups = useMemo(() => buildAdminNav({ t: tItems, tShell }), [tItems, tShell]); if (isLoginRoute) { return <>{children}>; } const authorized = isAuthenticated && user?.role === 'ADMIN'; if (loading || !authorized) { return (