Reverted to commit 095907b3a5

This commit is contained in:
gpt-engineer-app[bot]
2025-10-04 19:16:36 +00:00
parent 58c28a37eb
commit 065b1b4be5
15 changed files with 257 additions and 680 deletions

View File

@@ -1,148 +0,0 @@
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 (
<Sidebar collapsible="icon" className="border-r">
<SidebarHeader className="border-b px-4 py-3">
<div className="flex items-center gap-2">
<div className="flex h-8 w-8 items-center justify-center rounded-lg bg-primary text-primary-foreground">
<span className="text-sm font-bold">TW</span>
</div>
{!isCollapsed && (
<div className="flex flex-col">
<span className="text-sm font-semibold">ThrillWiki</span>
<span className="text-xs text-muted-foreground">Admin Panel</span>
</div>
)}
</div>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{navigationItems.map((item) => (
<SidebarMenuItem key={item.url}>
<SidebarMenuButton
asChild
isActive={isActive(item.url)}
tooltip={isCollapsed ? item.title : undefined}
>
<NavLink
to={item.url}
end={item.url === '/admin'}
className={({ isActive }) =>
cn(
'flex items-center gap-3 rounded-md transition-colors',
isActive
? 'bg-primary/10 text-primary font-medium'
: 'hover:bg-muted/50'
)
}
>
<item.icon className="h-5 w-5" />
{!isCollapsed && <span>{item.title}</span>}
</NavLink>
</SidebarMenuButton>
</SidebarMenuItem>
))}
{isSuperuser() && (
<SidebarMenuItem>
<SidebarMenuButton
asChild
isActive={isActive('/admin/settings')}
tooltip={isCollapsed ? 'Settings' : undefined}
>
<NavLink
to="/admin/settings"
className={({ isActive }) =>
cn(
'flex items-center gap-3 rounded-md transition-colors',
isActive
? 'bg-primary/10 text-primary font-medium'
: 'hover:bg-muted/50'
)
}
>
<Settings className="h-5 w-5" />
{!isCollapsed && <span>Settings</span>}
</NavLink>
</SidebarMenuButton>
</SidebarMenuItem>
)}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</SidebarContent>
<SidebarFooter className="border-t p-2">
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton asChild tooltip={isCollapsed ? 'Back to ThrillWiki' : undefined}>
<NavLink
to="/"
className="flex items-center gap-3 text-muted-foreground hover:text-foreground transition-colors"
>
<ArrowLeft className="h-5 w-5" />
{!isCollapsed && <span>Back to ThrillWiki</span>}
</NavLink>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
</Sidebar>
);
}