import { notFound } from "next/navigation";
import { EventForm } from "@/components/features/events";
import { PageHeader } from "@/components/ui";
import { can, type DashboardKind } from "@/lib/authz/context";
import { requireDashboard } from "@/lib/authz/guard";
import { getActiveSiteId, listAccessibleSites } from "@/lib/data/sites";
import { db } from "@/lib/db";

export async function NewEventScreen({ kind }: { kind: Extract<DashboardKind, "admin" | "editor"> }) {
  const ctx = await requireDashboard(kind);
  const siteId = await getActiveSiteId(await listAccessibleSites(ctx));
  if (!siteId) notFound();
  const site = await db.site.findUnique({ where: { id: siteId }, select: { id: true, name: true, organizationId: true, timezone: true } });
  if (!site || !can(ctx, "events.manage", { siteId: site.id, siteOrganizationId: site.organizationId })) notFound();
  return (
    <>
      <PageHeader title="New event" description={site.name} />
      <EventForm mode="create" siteId={site.id} base={`/dashboard/${kind}`} initial={{ name: "", slug: "", description: "", startsLocal: "", endsLocal: "", timezone: site.timezone, venue: "", locationText: "", website: "", organizer: "", logoMediaId: null, bannerMediaId: null, seoTitle: "", seoDescription: "" }} />
    </>
  );
}
