import SubscribeHeader from "./SubscribeHeader";
import StepperWrapper from "./StepperWrapper";
import { getTranslations, getLocale } from "next-intl/server";
import { getFreePackage, getPackages } from "@/services/packageService";
import { getPolicies } from "@/services/policyService";
import { Suspense } from "react";

interface SubscribeSectionProps {
  isTrial?: boolean;
}

export default async function SubscribeSection({
  isTrial = false,
}: SubscribeSectionProps) {
  const t = await getTranslations("SubscribePage");
  const locale = await getLocale();
  const [packages, policies, freePackage] = await Promise.all([
    getPackages(),
    getPolicies(locale),
    isTrial ? getFreePackage() : Promise.resolve(null),
  ]);
  // No trial package configured -> fall back to the normal paid flow
  const trialPackage = isTrial ? freePackage : null;

  const stepLabels = [
    { step: 1, label: t("basicInfo") },
    { step: 2, label: t("companyInfo") },
    {
      step: 3,
      label: trialPackage
        ? t("termsAndConditions")
        : t("paymentConfirmation"),
    },
  ];

  return (
    <section className="container-padding-x py-8 flex flex-col gap-10">
      <SubscribeHeader trialPackage={trialPackage} />
      <Suspense>
        <StepperWrapper
          stepLabels={stepLabels}
          locale={locale}
          packages={packages}
          trialPackage={trialPackage}
          terms={policies?.terms_and_conditions}
        />
      </Suspense>
    </section>
  );
}
