import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft } from 'lucide-react'; import { NavLink, useLocation } from 'react-router-dom'; import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarFooter, SidebarHeader, useSidebar, } from '@/components/ui/sidebar'; import { cn } from '@/lib/utils'; import { useUserRole } from '@/hooks/useUserRole'; const navigationItems = [ { title: 'Dashboard', url: '/admin', icon: LayoutDashboard, }, { title: 'Moderation Queue', url: '/admin/moderation', icon: FileText, }, { title: 'Reports', url: '/admin/reports', icon: Flag, }, { title: 'User Management', url: '/admin/users', icon: Users, }, ]; export function AdminSidebar() { const location = useLocation(); const { state } = useSidebar(); const { isSuperuser } = useUserRole(); const isCollapsed = state === 'collapsed'; const isActive = (path: string) => { if (path === '/admin') { return location.pathname === '/admin'; } return location.pathname.startsWith(path); }; return (
TW
{!isCollapsed && (
ThrillWiki Admin Panel
)}
Navigation {navigationItems.map((item) => ( cn( 'flex items-center gap-3 rounded-md transition-colors', isActive ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted/50' ) } > {!isCollapsed && {item.title}} ))} {isSuperuser() && ( cn( 'flex items-center gap-3 rounded-md transition-colors', isActive ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted/50' ) } > {!isCollapsed && Settings} )} {!isCollapsed && Back to ThrillWiki}
); }