import { redirect } from "next/navigation"; import { headers } from "next/headers"; import { auth } from "@/lib/auth/server"; import { db, users, eq } from "@epicure/db"; import Link from "next/link"; import { Shield, Users, BookOpen, Settings, BarChart3, ClipboardList, HardDrive, Bot, ArrowLeft, Gauge, Mail, Flag } from "lucide-react"; import { cn } from "@/lib/utils"; const adminNav = [ { href: "/admin", label: "Overview", icon: BarChart3 }, { href: "/admin/users", label: "Users", icon: Users }, { href: "/admin/invites", label: "Invites", icon: Mail }, { href: "/admin/recipes", label: "Recipes", icon: BookOpen }, { href: "/admin/reports", label: "Reports", icon: Flag }, { href: "/admin/tiers", label: "Tier Limits", icon: Gauge }, { href: "/admin/audit-logs", label: "Audit Logs", icon: ClipboardList }, { href: "/admin/storage", label: "Storage", icon: HardDrive }, { href: "/admin/ai-config", label: "AI Config", icon: Bot }, { href: "/admin/settings", label: "Settings", icon: Settings }, ]; export default async function AdminLayout({ children }: { children: React.ReactNode }) { const session = await auth.api.getSession({ headers: await headers() }); if (!session) redirect("/login"); const [dbUser] = await db.select({ role: users.role }).from(users).where(eq(users.id, session.user.id)); if (dbUser?.role !== "admin") redirect("/recipes"); return (