import Link from "next/link"; import type { Metadata } from "next"; import { requireUserPage } from "@/lib/auth/guard"; import { csrfToken, maybeRotate } from "@/lib/auth/session"; import { ThemeToggle } from "@/components/theme-toggle"; import { LogoutButton } from "@/components/admin/logout-button"; import { LayoutDashboard, Library, ClipboardCheck, Copy, Upload, Link2, ListChecks, ScrollText, UserRound, BookMarked, Settings, ExternalLink } from "lucide-react"; export const metadata: Metadata = { title: "Admin", robots: { index: false, follow: false } }; export const dynamic = "force-dynamic"; const NAV = [["/admin", "Dashboard", LayoutDashboard], ["/admin/tools", "Tools", Library], ["/admin/review", "Review queue", ClipboardCheck], ["/admin/duplicates", "Duplicates", Copy], ["/admin/collections", "Collections", BookMarked], ["/admin/import", "Import / export", Upload], ["/admin/links", "Links", Link2], ["/admin/jobs", "Jobs & crawler", ListChecks], ["/admin/owner", "Owner dashboard", UserRound], ["/admin/audit", "Audit log", ScrollText], ["/admin/settings", "Settings & security", Settings]] as const; export default async function AdminLayout({ children }: { children: React.ReactNode }) { const s = await requireUserPage(); await maybeRotate(s); return ( <>
Menu

Private area · no-index

Public site
{children}
); }