import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft, ScrollText, BookOpen } from 'lucide-react'; import { NavLink } from 'react-router-dom'; import { useUserRole } from '@/hooks/useUserRole'; import { useSidebar } from '@/hooks/useSidebar'; import { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem, } from '@/components/ui/sidebar'; export function AdminSidebar() { const { state } = useSidebar(); const { permissions } = useUserRole(); const isSuperuser = permissions?.role_level === 'superuser'; const collapsed = state === 'collapsed'; const navItems = [ { title: 'Dashboard', url: '/admin', icon: LayoutDashboard, }, { title: 'Moderation', url: '/admin/moderation', icon: FileText, }, { title: 'Reports', url: '/admin/reports', icon: Flag, }, { title: 'System Log', url: '/admin/system-log', icon: ScrollText, }, { title: 'Users', url: '/admin/users', icon: Users, }, { title: 'Blog', url: '/admin/blog', icon: BookOpen, }, ...(isSuperuser ? [{ title: 'Settings', url: '/admin/settings', icon: Settings, }] : []), ]; return ( {!collapsed && (
🎢
ThrillWiki Admin Panel
)} {collapsed && (
🎢
)}
Navigation {navItems.map((item) => ( isActive ? 'bg-accent text-accent-foreground font-medium' : 'hover:bg-accent/50' } > {!collapsed && {item.title}} ))} {!collapsed && Back to ThrillWiki}
); }