import type { Metadata } from "next";
import { requirePermission } from "@/lib/auth/session";
import { getMailSettings, getOnboardingSettings, getAbsenceTypes, getNewModules } from "@/lib/settings";
import { MARKABLE_MODULES } from "@/lib/navigation";
import { PageHeader } from "@/components/ui/PageHeader";
import { AdminTabs } from "../AdminTabs";
import { SettingsForm } from "./SettingsForm";

export const metadata: Metadata = { title: "Systemeinstellungen" };

export default async function AdminSettingsPage() {
  const session = await requirePermission("admin.settings");
  const perms = session.user.permissions ?? [];

  const [mail, onboarding, absenceTypes, newModules] = await Promise.all([
    getMailSettings(),
    getOnboardingSettings(),
    getAbsenceTypes(),
    getNewModules(),
  ]);

  return (
    <div className="flex flex-col gap-5">
      <PageHeader
        eyebrow="Admin-Einstellungen"
        title="System & Arten"
        description="Mail-Absender, Onboarding-Passwörter, Abwesenheitsarten und Navigations-Hervorhebungen."
      />
      <AdminTabs allowed={perms} />
      <SettingsForm
        mail={mail}
        onboarding={onboarding}
        absenceTypes={absenceTypes}
        modules={MARKABLE_MODULES}
        newModules={newModules}
      />
    </div>
  );
}
