'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { Box, Drawer, AppBar, Toolbar, List, Typography, Divider, ListItem, ListItemButton, ListItemIcon, ListItemText, IconButton, Menu, MenuItem, Avatar, Chip, Button } from '@mui/material'; import { Dashboard, People, Gavel, Analytics, Chat, Settings, Logout, AccountCircle, AdminPanelSettings, Launch as LaunchIcon, Article as PageIcon, Share, Email as EmailIcon } from '@mui/icons-material'; interface AdminLayoutProps { children: React.ReactNode; user?: { id: string; email: string; name: string | null; role: string; }; } const drawerWidth = 280; const menuItems = [ { text: 'Dashboard', icon: Dashboard, href: '/admin' }, { text: 'Users', icon: People, href: '/admin/users' }, { text: 'Pages', icon: PageIcon, href: '/admin/pages' }, { text: 'Social Media', icon: Share, href: '/admin/social-media' }, { text: 'Email Settings', icon: EmailIcon, href: '/admin/mailgun' }, { text: 'Content Moderation', icon: Gavel, href: '/admin/content' }, { text: 'Analytics', icon: Analytics, href: '/admin/analytics' }, // { text: 'Chat Monitoring', icon: Chat, href: '/admin/chat' }, // AI Chat disabled { text: 'Settings', icon: Settings, href: '/admin/settings' }, ]; export function AdminLayout({ children, user }: AdminLayoutProps) { const [anchorEl, setAnchorEl] = useState(null); const router = useRouter(); const handleMenu = (event: React.MouseEvent) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; const handleLogout = async () => { try { await fetch('/api/admin/auth/logout', { method: 'POST', credentials: 'include' }); router.push('/admin/login'); router.refresh(); } catch (error) { console.error('Logout error:', error); } handleClose(); }; const currentPath = typeof window !== 'undefined' ? window.location.pathname : ''; return ( Biblical Guide Admin {user && ( {user.name?.[0] || user.email[0]} {user.name || 'Admin User'} {user.email} Logout )} Admin Panel {menuItems.map((item) => ( router.push(item.href)} sx={{ '&.Mui-selected': { backgroundColor: 'primary.main', color: 'white', '&:hover': { backgroundColor: 'primary.dark', }, '& .MuiListItemIcon-root': { color: 'white', }, }, }} > ))} {children} ); }