import React, { useMemo } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import { LogOut, Menu, X } from 'lucide-react'; import { Button } from '../../common/components/ui/button'; import { NAV_CONFIG } from "../../common/config/navigation"; interface SidebarProps { sidebarOpen: boolean; setSidebarOpen: (open: boolean) => void; user: { name?: string; role?: string; } | null; onLogout: () => void; } const Sidebar: React.FC = ({ sidebarOpen, setSidebarOpen, user, onLogout }) => { const location = useLocation(); const navigate = useNavigate(); /** * Handle logout with navigation * Ensures user is redirected to login page after logout */ const handleLogoutClick = async () => { onLogout(); // Small delay to allow logout to complete before navigation setTimeout(() => { navigate('/login', { replace: true }); }, 100); }; // Filter navigation based on user role const filteredNav = useMemo(() => { const userRoleRaw = (user?.role || 'Client') as string; const userRole = userRoleRaw.toLowerCase(); return NAV_CONFIG.map(group => { const visibleItems = group.items.filter(item => item.allowedRoles.some(r => r.toLowerCase() === userRole) ); return { ...group, items: visibleItems }; }).filter(group => group.items.length > 0); }, [user?.role]); return ( ); }; export default Sidebar;