// Block `systeme_couches` — réutilise le composant d'origine SystemSection
// (en-tête + accordéon des couches + illustration iso annotée). Les couches
// éditées au BO sont fusionnées par index sur les défauts du composant pour
// préserver l'id, les couleurs et les positions des points (parité pixel).

import SystemSection, { defaultLayers, type SystemLayer } from "@/components/SystemSection";
import { arr, mapImage } from "@/lib/wp/mappers";
import type { WpEntete, WpImageField } from "@/lib/wp/types";

// Type du layout `systeme_couches` — déplacé dans `types.ts` en phase Fusion.
export interface SystemeCouchesBlock {
  __typename?: string;
  origine?: string | null;
  entete?: WpEntete | null;
  image?: WpImageField | null;
  couchesEtapes?:
    | {
        num?: string | null;
        titre?: string | null;
        description?: string | null;
        expert?: string | null;
      }[]
    | null;
}

const SystemeCouches = (props: SystemeCouchesBlock & { position?: number }) => {
  const image = mapImage(props.image);

  const couches = arr(props.couchesEtapes);
  const layers: SystemLayer[] = defaultLayers.map((base, i) => {
    const wp = couches[i];
    if (!wp) return base;
    return {
      ...base,
      ...(wp.num ? { num: wp.num } : {}),
      ...(wp.titre ? { title: wp.titre } : {}),
      ...(wp.description ? { description: wp.description } : {}),
      ...(wp.expert ? { expert: wp.expert } : {}),
    };
  });

  return (
    <SystemSection
      {...(props.entete?.badge ? { badge: props.entete.badge } : {})}
      {...(props.entete?.titre ? { titre: props.entete.titre } : {})}
      {...(props.entete?.intro ? { intro: props.entete.intro } : {})}
      {...(image
        ? {
            imageSrc: image.sourceUrl,
            imageAlt: image.altText,
            ...(image.width != null ? { imageWidth: image.width } : {}),
            ...(image.height != null ? { imageHeight: image.height } : {}),
          }
        : {})}
      {...(couches.length ? { layers } : {})}
    />
  );
};

export default SystemeCouches;
