import HomeHeadingSection from "@/components/pages/home/heading-section";
import { PinnedLabsSections } from "@/components/pages/home/labs-section";
import CTASection from "@/components/pages/home/cta-section";
import { SiteFooter } from "@/components/site-footer";
import { cachedGetLabs } from "@/lib/api/server-labs";
import { assertIsPathLocale, getLocaleFromLangString } from "@/lib/locale";
import { getAlternateUrls } from "@/lib/seo";
import { cachedDecideLocale } from "@/lib/server-locale";
import { t } from "@/locales";
import type { Metadata } from "next";

export default async function HomePage(props: {
  params: Promise<{ lang?: string }>;
}) {
  const params = await props.params;
  const [labs] = await Promise.all([cachedGetLabs().catch(() => [])]);

  assertIsPathLocale(params.lang);

  const locale = await cachedDecideLocale(params.lang);

  return (
    <>
      <main>
        <HomeHeadingSection locale={locale} />
        <PinnedLabsSections
          className="max-w-(--breakpoint-xl) mx-auto px-4 md:px-8 py-8 lg:py-10"
          labs={labs}
        />
        <CTASection locale={locale} />
      </main>
      <SiteFooter locale={locale} />
    </>
  );
}

export async function generateMetadata(props: {
  params: Promise<{ lang?: string }>;
}): Promise<Metadata> {
  const { lang } = await props.params;
  const locale = getLocaleFromLangString(lang);

  return {
    title: t(locale, "home.seo.title"),
    description: t(locale, "home.seo.description"),
    keywords: t(locale, "home.seo.keywords"),
    openGraph: {
      title: t(locale, "home.seo.title"),
      description: t(locale, "home.seo.description"),
      tags: t(locale, "home.seo.keywords"),
      videos:
        "https://pingcap-edu.s3.us-west-2.amazonaws.com/quick-demo/tidb-labs-home-intro-720.mp4",
    },
    alternates: getAlternateUrls(locale, "/"),
  };
}

export { generateStaticParams } from "@/components/pages/localed-pages";
