import DOMPurify from "isomorphic-dompurify";
import { notFound } from "next/navigation";
import { getPublicPage } from "@/lib/api/cms";
import { ApiError } from "@/lib/api/server";

export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params;

  try {
    const { data: page } = await getPublicPage(slug);
    return {
      title: page.meta_title || page.title,
      description: page.meta_description || undefined,
    };
  } catch {
    return {};
  }
}

export default async function CmsPagePage({ params }: { params: Promise<{ slug: string }> }) {
  const { slug } = await params;

  let page;
  try {
    page = (await getPublicPage(slug)).data;
  } catch (error) {
    if (error instanceof ApiError && error.status === 404) notFound();
    throw error;
  }

  return (
    <div className="mx-auto max-w-3xl px-6 py-10">
      <h1 className="text-2xl font-semibold">{page.title}</h1>
      <div
        className="mt-6 text-sm leading-relaxed text-kolabora-neutral-dark/90"
        dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(page.content ?? "") }}
      />
    </div>
  );
}
