import { LayoutDashboard, FileText, Flag, Users, Settings, ArrowLeft, ScrollText, BookOpen, Inbox, Mail, AlertTriangle } 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 isAdmin = permissions?.role_level === 'admin' || isSuperuser; 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: 'Inbox', url: '/admin/contact', icon: Inbox, }, { title: 'System Log', url: '/admin/system-log', icon: ScrollText, }, { title: 'Error Monitoring', url: '/admin/error-monitoring', icon: AlertTriangle, }, { title: 'Users', url: '/admin/users', icon: Users, }, ...(isAdmin ? [{ title: 'Blog', url: '/admin/blog', icon: BookOpen, }] : []), ...(isSuperuser ? [{ title: 'Settings', url: '/admin/settings', icon: Settings, }, { title: 'Email Settings', url: '/admin/email-settings', icon: Mail, }] : []), ]; return (
ThrillWiki { const img = e.target as HTMLImageElement; if (!img.src.includes('favicon128')) { img.src = 'https://cdn.thrillwiki.com/images/5d06b122-a3a3-47bc-6176-f93ad8f0ce00/favicon128'; } }} />
{!collapsed && (
ThrillWiki Admin Panel
)}
Navigation {navItems.map((item) => ( isActive ? 'bg-sidebar-accent text-sidebar-accent-foreground font-medium' : 'hover:bg-sidebar-accent/50 hover:text-sidebar-accent-foreground' } > {!collapsed && {item.title}} ))} {!collapsed && Back to ThrillWiki}
); }