'use client'; import { LayoutDashboard, Users, ClipboardList, ShieldCheck, LogOut, Menu, X, } from 'lucide-react'; import Link from 'next/link'; import { usePathname, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { Button } from '@/components/ui/button'; import { useAuthStore } from '@/lib/auth-store'; import { cn } from '@/lib/utils'; const adminNavItems = [ { href: '/admin', label: 'Dashboard', icon: LayoutDashboard }, { href: '/admin/users', label: 'Qu\u1EA3n l\u00FD ng\u01B0\u1EDDi d\u00F9ng', icon: Users }, { href: '/admin/moderation', label: 'Ki\u1EC3m duy\u1EC7t tin', icon: ClipboardList }, { href: '/admin/kyc', label: 'Duy\u1EC7t KYC', icon: ShieldCheck }, ]; export default function AdminLayout({ children }: { children: React.ReactNode }) { const pathname = usePathname(); const router = useRouter(); const { user, logout } = useAuthStore(); const [sidebarOpen, setSidebarOpen] = useState(false); useEffect(() => { if (user && user.role !== 'ADMIN') { router.replace('/dashboard'); } }, [user, router]); if (!user) { return (
Đang tải...
); } if (user.role !== 'ADMIN') { return null; } return (
{/* Mobile overlay */} {sidebarOpen && (
setSidebarOpen(false)} /> )} {/* Sidebar */} {/* Main content */}
GoodGo Admin
{children}
); }