import Link from "next/link"; import { Shield, Users, BookOpen, Settings, BarChart3, ClipboardList, HardDrive, Bot, ArrowLeft, Gauge, Mail, Flag, History, LifeBuoy, TrendingUp, Webhook } from "lucide-react"; import { cn } from "@/lib/utils"; import { getStaffRole } from "@/lib/require-admin-page"; import { redirect } from "next/navigation"; // adminOnly items are hidden from moderators (and, redundantly but safely, // each of those pages also redirects moderators away server-side via // requireFullAdminPage — the nav filter here is UX, not the real gate). const adminNav = [ { href: "/admin", label: "Overview", icon: BarChart3, adminOnly: true }, { href: "/admin/insights", label: "Insights", icon: TrendingUp, adminOnly: true }, { href: "/admin/users", label: "Users", icon: Users, adminOnly: true }, { href: "/admin/invites", label: "Invites", icon: Mail, adminOnly: true }, { href: "/admin/recipes", label: "Recipes", icon: BookOpen, adminOnly: false }, { href: "/admin/reports", label: "Reports", icon: Flag, adminOnly: false }, { href: "/admin/support", label: "Support", icon: LifeBuoy, adminOnly: true }, { href: "/admin/tiers", label: "Tier Limits", icon: Gauge, adminOnly: true }, { href: "/admin/webhooks", label: "Webhooks", icon: Webhook, adminOnly: true }, { href: "/admin/audit-logs", label: "Audit Logs", icon: ClipboardList, adminOnly: true }, { href: "/admin/storage", label: "Storage", icon: HardDrive, adminOnly: true }, { href: "/admin/ai-config", label: "AI Config", icon: Bot, adminOnly: true }, { href: "/admin/settings", label: "Settings", icon: Settings, adminOnly: true }, { href: "/admin/changelog", label: "Changelog", icon: History, adminOnly: true }, ]; export default async function AdminLayout({ children }: { children: React.ReactNode }) { const role = await getStaffRole(); if (!role) redirect("/recipes"); const visibleNav = role === "admin" ? adminNav : adminNav.filter((item) => !item.adminOnly); return (