'use client' import { usePathname } from 'next/navigation' import { useSession } from 'next-auth/react' import { performSignOut } from '@/lib/auth-client' import { LayoutDashboard, Users, Brain, Settings, StickyNote, Shield, ArrowLeft, User, LogOut, } from 'lucide-react' import { cn } from '@/lib/utils' import { useLanguage } from '@/lib/i18n' import { NotificationPanel } from '@/components/notification-panel' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar' const ADMIN_NAV_ITEMS = [ { titleKey: 'admin.sidebar.dashboard', href: '/admin', icon: LayoutDashboard, }, { titleKey: 'admin.sidebar.users', href: '/admin/users', icon: Users, }, { titleKey: 'admin.sidebar.aiManagement', href: '/admin/ai', icon: Brain, }, { titleKey: 'admin.sidebar.settings', href: '/admin/settings', icon: Settings, }, ] as const function navItemIsActive(pathname: string | null, href: string): boolean { if (!pathname) return false if (href === '/admin') return pathname === '/admin' if (href === '/admin/ai') return pathname === '/admin/ai' || pathname.startsWith('/admin/ai') return pathname === href || pathname.startsWith(`${href}/`) } /** * Barre latérale administration — même vocabulaire visuel que {@link Sidebar} * (fond bureau, panneau vitré, navigation arrondie). Liens en <a> pour * éviter les transitions RSC qui déclenchent React #310 entre groupes de routes. */ export function AdminSidebar({ className }: { className?: string }) { const pathname = usePathname() const { t } = useLanguage() const { data: session } = useSession() const user = session?.user const initial = user?.name ? user.name.charAt(0).toUpperCase() : user?.email?.[0]?.toUpperCase() ?? '?' return ( ) }