// Block `applicateurs` — réutilise le composant d'origine ApplicatorsSection
// (panneau recrutement réseau d'applicateurs : en-tête + liste d'avantages +
// image + CTA). Les champs WP non remplis retombent sur les défauts du composant
// (parité pixel préservée).

import ApplicatorsSection from "@/components/ApplicatorsSection";
import { arr, mapImage } from "@/lib/wp/mappers";
import type { WpCta, WpEntete, WpImageField } from "@/lib/wp/types";

// Type local du layout (sera consolidé dans src/lib/wp/types.ts en phase Fusion).
export interface ApplicateursBlock {
  __typename: string;
  origine?: string | null;
  entete?: WpEntete | null;
  applicateursBenefices?: { texte?: string | null }[] | null;
  image?: WpImageField | null;
  cta?: WpCta | null;
}

const Applicateurs = (props: ApplicateursBlock & { position?: number }) => {
  const benefits = arr(props.applicateursBenefices)
    .map((b) => b.texte)
    .filter((t): t is string => Boolean(t));

  const image = mapImage(props.image);

  return (
    <ApplicatorsSection
      {...(props.entete?.badge ? { badge: props.entete.badge } : {})}
      {...(props.entete?.titre ? { title: props.entete.titre } : {})}
      {...(props.entete?.intro ? { description: props.entete.intro } : {})}
      {...(benefits.length ? { benefits } : {})}
      {...(image?.sourceUrl ? { imageSrc: image.sourceUrl } : {})}
      {...(image?.altText ? { imageAlt: image.altText } : {})}
      {...(props.cta?.label ? { ctaLabel: props.cta.label } : {})}
      {...(props.cta?.lien ? { ctaHref: props.cta.lien } : {})}
    />
  );
};

export default Applicateurs;
