import type { Metadata } from "next";
import HeaderWrapper from "@/components/landing/HeaderWrapper";
import Hero from "@/components/landing/Hero";
import Features from "@/components/landing/Features";
import HowItWorks from "@/components/landing/HowItWorks";
import ForIndividuals from "@/components/landing/ForIndividuals";
import Pricing from "@/components/landing/Pricing";
import TrialCallout from "@/components/landing/TrialCallout";
import Testimonials from "@/components/landing/Testimonials";
import FAQ from "@/components/landing/FAQ";
import Footer from "@/components/landing/Footer";
import { buildPublicPageMetadata, buildLandingJsonLd } from "@/lib/page-metadata";

export async function generateMetadata({
  params,
}: {
  params: Promise<{ locale: string }>;
}): Promise<Metadata> {
  const { locale } = await params;
  return buildPublicPageMetadata(locale, "landing", "");
}

export default async function LandingPage({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  const jsonLd = await buildLandingJsonLd(locale);

  return (
    <main className="min-h-screen overflow-x-hidden">
      <script
        type="application/ld+json"
        // Data is fully controlled (our own strings); escape `<` so a value can
        // never break out of the <script> tag.
        dangerouslySetInnerHTML={{
          __html: JSON.stringify(jsonLd).replace(/</g, "\\u003c"),
        }}
      />
      <HeaderWrapper />
      <Hero />
      <HowItWorks />
      <Features />
      <TrialCallout />
      <Pricing />
      <Testimonials />
      <ForIndividuals />
      <FAQ />
      <Footer />
    </main>
  );
}
