import type { Metadata } from "next";
import { notFound } from "next/navigation";

import ProductAccessPage from "@/components/products/ProductAccessPage";
import { getProduct } from "@/data/products.data";
import { getDictionary } from "@/lib/i18n";
import { hasLocale } from "@/lib/locales";
import { isProductSlug } from "@/lib/routes";

type ProductAccessProps = { params: Promise<{ lang: string; slug: string }> };

export async function generateMetadata({ params }: ProductAccessProps): Promise<Metadata> {
  const { lang, slug } = await params;
  if (!hasLocale(lang) || !isProductSlug(slug)) notFound();
  const dictionary = await getDictionary(lang);
  const product = getProduct(dictionary, slug, lang);
  if (!product) notFound();
  return {
    title: { absolute: `${product.name} Registration | PureSaaS` },
    description: `Start onboarding your team with ${product.name} by PureSaaS.`,
    robots: { index: false, follow: true },
  };
}

export default async function ProductRegisterPage({ params }: ProductAccessProps) {
  const { lang, slug } = await params;
  if (!hasLocale(lang) || !isProductSlug(slug)) notFound();
  const dictionary = await getDictionary(lang);
  const product = getProduct(dictionary, slug, lang);
  if (!product) notFound();
  return <ProductAccessPage dictionary={dictionary} locale={lang} mode="register" product={product} />;
}
