'use client'; import Link from 'next/link'; import { usePathname, useRouter } from 'next/navigation'; import { useSelector, useDispatch } from 'react-redux'; import { RootState, AppDispatch } from '@/store/store'; import { logoutUser } from '@/store/slices/authSlice'; import { Separator } from '@/components/ui/separator'; import { Users, Building2, HardDrive, FileText, BarChart3, Settings, ArrowLeft, LogOut, LayoutTemplate, } from 'lucide-react'; interface NavItem { label: string; href: string; icon: React.ReactNode; roles: string[]; } const NAV_ITEMS: NavItem[] = [ { label: 'Users', href: '/admin/users', icon: , roles: ['super_admin'] }, { label: 'Clients', href: '/admin/clients', icon: , roles: ['super_admin', 'client_admin'] }, { label: 'Templates', href: '/admin/templates', icon: , roles: ['super_admin', 'client_admin'] }, { label: 'Storage', href: '/admin/storage', icon: , roles: ['super_admin', 'client_admin'] }, { label: 'Audit Log', href: '/admin/audit', icon: , roles: ['super_admin', 'client_admin'] }, { label: 'Analytics', href: '/admin/analytics', icon: , roles: ['super_admin', 'client_admin'] }, { label: 'Settings', href: '/admin/settings', icon: , roles: ['super_admin'] }, ]; export default function AdminSidebar() { const pathname = usePathname(); const router = useRouter(); const dispatch = useDispatch(); const user = useSelector((state: RootState) => state.auth.user); const role = user?.role || 'user'; const handleLogout = async () => { await dispatch(logoutUser()); router.push('/login'); }; const visibleItems = NAV_ITEMS.filter((item) => item.roles.includes(role)); return ( ); }