import * as React from "react";
import type { Metadata } from "next";
import { EMPTY_BADGES, getAdminBadges } from "@/lib/admin/badges";
import { loadAdminAlerts } from "@/lib/admin/dashboard";
import { requireAdmin } from "@/lib/guards";
import { adminTexts } from "@/lib/i18n/admin";
import { AdminShell } from "@/components/admin/admin-shell";

export const dynamic = "force-dynamic";

export const metadata: Metadata = {
  title: `${adminTexts.panelName} · ${adminTexts.brand}`,
};

export default async function AdminLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  const user = await requireAdmin();

  const [badges, alerts] = await Promise.all([
    getAdminBadges().catch(() => EMPTY_BADGES),
    loadAdminAlerts(),
  ]);

  return (
    <AdminShell
      user={{
        id: user.id,
        username: user.username,
        email: user.email,
        role: user.role,
      }}
      badges={badges}
      alerts={alerts}
    >
      {children}
    </AdminShell>
  );
}
