/** * Dashboard Layout * * Layout with sidebar navigation for dashboard pages */ 'use client'; import { useAuth } from '@/lib/context/auth-context'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { useState } from 'react'; import NotificationDropdown from '@/components/NotificationDropdown'; import AdminPanelDropdown from '@/components/admin/AdminPanelDropdown'; import Image from 'next/image'; import { BarChart3, Package, FileText, Search, BookOpen, Building2, Users, LogOut, } from 'lucide-react'; export default function DashboardLayout({ children }: { children: React.ReactNode }) { const { user, logout } = useAuth(); const pathname = usePathname(); const [sidebarOpen, setSidebarOpen] = useState(false); const navigation = [ { name: 'Tableau de bord', href: '/dashboard', icon: BarChart3 }, { name: 'Réservations', href: '/dashboard/bookings', icon: Package }, { name: 'Documents', href: '/dashboard/documents', icon: FileText }, { name: 'Suivi', href: '/dashboard/track-trace', icon: Search }, { name: 'Wiki Maritime', href: '/dashboard/wiki', icon: BookOpen }, { name: 'Organisation', href: '/dashboard/settings/organization', icon: Building2 }, // ADMIN and MANAGER only navigation items ...(user?.role === 'ADMIN' || user?.role === 'MANAGER' ? [ { name: 'Utilisateurs', href: '/dashboard/settings/users', icon: Users }, ] : []), ]; const isActive = (href: string) => { if (href === '/dashboard') { return pathname === href; } return pathname.startsWith(href); }; return (
{/* Mobile sidebar backdrop */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar */}
{/* Logo */}
Xpeditis
{/* Navigation */} {/* User section */}
{user?.firstName?.[0]} {user?.lastName?.[0]}

{user?.firstName} {user?.lastName}

{user?.email}

{/* Main content */}
{/* Top bar */}

{navigation.find(item => isActive(item.href))?.name || 'Tableau de bord'}

{/* Notifications */} {/* User Initials */} {user?.firstName?.[0]}{user?.lastName?.[0]}
{/* Page content */}
{children}
); }