import type { Metadata } from "next";
import { getTranslations, setRequestLocale } from "next-intl/server";
import { HeroServices } from "@/components/hero/HeroServices";
import { PageMessagesProvider } from "@/components/page-messages-provider";
import { RelatedBlogPosts } from "@/components/sections/related-blog-posts";
import { SecondaryCTA } from "@/components/sections/secondary-cta";
import { ServicesCTA } from "@/components/sections/services-cta";
import { ServicesOverview } from "@/components/sections/services-overview";
import { ServicesProcess } from "@/components/sections/services-process";
import { ServicesWhyUs } from "@/components/sections/services-why-us";
import { BreadcrumbSchema } from "@/components/ui/breadcrumb-schema";
import { ItemListSchema } from "@/components/ui/item-list-schema";
import { getPathname } from "@/i18n/navigation";

interface PageProps {
  params: Promise<{ locale: string }>;
}

export async function generateMetadata({
  params,
}: PageProps): Promise<Metadata> {
  const { locale } = await params;
  const t = await getTranslations({ locale, namespace: "metadata" });
  const pathname = getPathname({ locale, href: "/services" });
  return {
    title: t("servicesTitle"),
    description: t("servicesDescription"),
    alternates: {
      canonical: pathname,
      languages: {
        fr: getPathname({ locale: "fr", href: "/services" }),
        en: getPathname({ locale: "en", href: "/services" }),
        "x-default": getPathname({ locale: "fr", href: "/services" }),
      },
    },
  };
}

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

  const tb = await getTranslations({ locale, namespace: "breadcrumbs" });

  const BASE_URL = "https://www.elevaseo.com";
  const prefix = locale === "fr" ? "" : `/${locale}`;

  // Sub-services exposed under /services/* (mirrors app/[locale]/services routes).
  const subServices: { name: string; path: string }[] = [
    { name: tb("performanceAudits"), path: "/services/audits/performance" },
    { name: tb("cro"), path: "/services/cro" },
    { name: tb("shopifyHeadless"), path: "/services/builds/shopify-headless" },
    {
      name: tb("wordpressHeadless"),
      path: "/services/builds/wordpress-headless",
    },
    { name: tb("wpMaintenance"), path: "/services/wordpress/maintenance" },
    { name: tb("wpSecurity"), path: "/services/wordpress/security" },
    {
      name: tb("wpMalwareRemoval"),
      path: "/services/wordpress/malware-removal",
    },
    {
      name: tb("seoTechnicalTraining"),
      path: "/services/training/seo-technical",
    },
    { name: tb("aiForMarketers"), path: "/services/training/ai-for-marketers" },
  ];

  const itemListItems = subServices.map((s) => ({
    name: s.name,
    url: `${BASE_URL}${prefix}${s.path}`,
  }));

  return (
    <PageMessagesProvider
      namespaces={[
        "heroServices",
        "servicesWhyUs",
        "servicesProcess",
        "servicesCta",
        "secondaryCta",
        "featuredServices",
      ]}
    >
      <BreadcrumbSchema
        items={[{ name: tb("home"), href: "/" }, { name: tb("services") }]}
        locale={locale}
      />
      <ItemListSchema items={itemListItems} />
      <HeroServices />
      <ServicesOverview />
      <ServicesWhyUs />
      <ServicesProcess />
      <ServicesCTA />
      <RelatedBlogPosts
        articles={[
          {
            slug: "geo-seo-guide",
            category: "seo",
            titleFr: "GEO SEO : le guide complet",
            titleEn: "GEO SEO: the complete guide",
            descriptionFr:
              "Comment optimiser votre visibilite dans les moteurs de recherche IA.",
            descriptionEn:
              "How to optimize your visibility in AI search engines.",
          },
          {
            slug: "audit-technique",
            category: "seo",
            titleFr: "Audit technique SEO : methodologie complete",
            titleEn: "Technical SEO audit: complete methodology",
            descriptionFr:
              "Les 12 points d'un audit technique SEO professionnel.",
            descriptionEn:
              "The 12 checkpoints of a professional technical SEO audit.",
          },
          {
            slug: "taux-conversion-leviers",
            category: "cro",
            titleFr: "Les 7 leviers du taux de conversion",
            titleEn: "The 7 conversion rate levers",
            descriptionFr:
              "Strategies concretes pour ameliorer vos conversions.",
            descriptionEn: "Actionable strategies to improve your conversions.",
          },
        ]}
        locale={locale}
      />
      <SecondaryCTA gradientDirection="bg-gradient-to-br" />
    </PageMessagesProvider>
  );
}
