"use client" import { useAuth } from "@/contexts/auth-context" import Link from "next/link" import { usePathname } from "next/navigation" import { Button } from "@/components/ui/button" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Badge } from "@/components/ui/badge" import { Bell, Settings, LogOut, User, Shield, ArrowLeft, LayoutDashboard, Files, Zap, Users, BarChart3, FileText, Cog, HelpCircle, ChevronLeft, ChevronRight } from "lucide-react" import { useState } from "react" import { AdminNotificationsPanel } from "@/components/admin/admin-notifications-panel" import { useAdminNotifications } from "@/contexts/AdminNotificationContext" import { cn } from "@/lib/utils" interface AdminSidebarLayoutProps { children: React.ReactNode } interface SidebarItem { id: string label: string icon: React.ComponentType<{ className?: string }> href?: string badge?: number subItems?: SidebarItem[] } export function AdminSidebarLayout({ children }: AdminSidebarLayoutProps) { const [isLoggingOut, setIsLoggingOut] = useState(false) const [showNotifications, setShowNotifications] = useState(false) const [sidebarCollapsed, setSidebarCollapsed] = useState(false) const pathname = usePathname() const { user, logout, isAdmin } = useAuth() const { unreadCount } = useAdminNotifications() // Handle logout with loading state const handleLogout = async () => { try { setIsLoggingOut(true) await logout() } catch (error) { console.error('Logout failed:', error) setIsLoggingOut(false) } } // Sidebar navigation items const sidebarItems: SidebarItem[] = [ { id: "dashboard", label: "Dashboard", icon: LayoutDashboard, href: "/admin" }, { id: "features", label: "Custom Features", icon: Zap, href: "/admin?tab=features", badge: 0 // This will be updated dynamically }, { id: "templates", label: "Templates", icon: Files, href: "/admin/templates" }, { id: "users", label: "User Management", icon: Users, href: "/admin/users" }, { id: "analytics", label: "Analytics", icon: BarChart3, href: "/admin/analytics" }, { id: "settings", label: "Settings", icon: Cog, href: "/admin/settings" }, { id: "help", label: "Help & Support", icon: HelpCircle, href: "/admin/help" } ] // Redirect non-admin users if (!isAdmin) { return (
You don't have permission to access the admin panel.
{user?.username || user?.email || "User"}
Administrator
{user.username || user.email || "User"}
{user.email || "No email"}