import { hasAdminPermission, type AdminModule } from "@/lib/admin-permissions";
import { requireAdminSession } from "@/lib/auth";
import type { ReactNode } from "react";
import AdminShellClient from "./AdminShellClient";

export default async function AdminShell({
  eyebrow,
  title,
  description,
  actions,
  children,
}: {
  eyebrow: string;
  title: string;
  description?: string;
  actions?: ReactNode;
  children: ReactNode;
}) {
  const session = await requireAdminSession();
  const modules: AdminModule[] = ["products", "series", "gallery", "markets", "sections", "activity", "users"];
  const allowedModules = modules.filter((module) => hasAdminPermission(session, module, "view"));

  return (
    <AdminShellClient
      eyebrow={eyebrow}
      title={title}
      description={description}
      actions={actions}
      allowedModules={allowedModules}
      user={{
        displayName: session.user.displayName,
        username: session.user.username,
        isSystem: session.user.isSystem,
      }}
    >
      {children}
    </AdminShellClient>
  );
}
