/* === Build all spreads (left page + right page) ===
   Shared between the interactive book (app.jsx) and the print version (print.jsx) */

function buildSpreads(t, lang, tweaks) {
  const spreads = [];
  const T = window.TEXTS[lang];
  const PLATES = window.PLATES;

  const chunk = (arr, n) => {
    const size = Math.ceil(arr.length / n);
    const out = [];
    for (let i = 0; i < arr.length; i += size) out.push(arr.slice(i, i + size));
    return out;
  };

  // 1. Cover spread (cover page on right, empty/dark on left)
  spreads.push({
    id: "cover",
    leftKind: "empty-dark",
    rightKind: "cover",
    rightProps: { t, images: { left: tweaks.coverLeftImg, right: tweaks.coverRightImg } },
    runningHead: t.rhCover,
  });

  // 2. Frontispiece + Colophon
  spreads.push({
    id: "front-colophon",
    left: <FrontispiecePage t={t} />,
    right: <ColophonPage t={t} />,
  });

  // 3. Section divider intro + first text page
  const introChunks = chunk(T.intro, 2);
  spreads.push({
    id: "intro-1",
    left: <SectionDivider section={t.secIntro} />,
    right: (
      <CriticalTextOpener
        eyebrow={t.secIntro.roman + " · " + t.rhIntro}
        title={t.secIntro.title}
        subtitle={t.secIntro.sub}
        paragraphs={introChunks[0]}
        dropcap={true}
        runningHead={t.rhIntro}
        folio="3"
        side="right"
      />
    ),
  });
  spreads.push({
    id: "intro-2",
    left: (
      <CriticalTextPage
        paragraphs={introChunks[1] || []}
        runningHead={t.rhIntro}
        folio="4"
        side="left"
      />
    ),
    right: <EmptyPage />,
  });

  // DT bio
  const dtChunks = [T.dt.slice(0, 2), T.dt.slice(2, 4), T.dt.slice(4)];
  spreads.push({
    id: "dt-section",
    left: <SectionDivider section={t.secDT} />,
    right: (
      <CriticalTextOpener
        eyebrow={t.secDT.roman + " · " + t.rhDT}
        title={t.secDT.title}
        subtitle={t.secDT.sub}
        paragraphs={dtChunks[0]}
        dropcap={true}
        runningHead={t.rhDT}
        folio="7"
        side="right"
      />
    ),
  });
  spreads.push({
    id: "dt-bio-2",
    left: (
      <CriticalTextPage
        paragraphs={dtChunks[1] || []}
        inlineSeries={{
          images: [
            "opere/dt-personaggi-1-china-1972.jpg",
            "opere/dt-personaggi-2-china-1972.jpg",
            "opere/dt-personaggi-5-china-1972.jpg",
          ],
          caption: "Enrico Della Torre, dalla serie Personaggi, china su carta, 1972",
        }}
        runningHead={t.rhDT}
        folio="8"
        side="left"
      />
    ),
    right: (
      <CriticalTextPage
        paragraphs={dtChunks[2] || []}
        runningHead={t.rhDT}
        folio="9"
        side="right"
      />
    ),
  });

  // LV bio
  const lvChunks = [T.lv.slice(0, 2), T.lv.slice(2, 4), T.lv.slice(4)];
  spreads.push({
    id: "lv-section",
    left: <SectionDivider section={t.secLV} />,
    right: (
      <CriticalTextOpener
        eyebrow={t.secLV.roman + " · " + t.rhLV}
        title={t.secLV.title}
        subtitle={t.secLV.sub}
        paragraphs={lvChunks[0]}
        dropcap={true}
        runningHead={t.rhLV}
        folio="11"
        side="right"
      />
    ),
  });
  spreads.push({
    id: "lv-bio-2",
    left: (
      <CriticalTextPage
        paragraphs={lvChunks[1] || []}
        inlineArt={{ src: "opere/lv-07-tralcio-1983.jpg", caption: "Tralcio, 1983", side: "right" }}
        runningHead={t.rhLV}
        folio="12"
        side="left"
      />
    ),
    right: (
      <CriticalTextPage
        paragraphs={lvChunks[2] || []}
        runningHead={t.rhLV}
        folio="13"
        side="right"
      />
    ),
  });

  // Stagioni
  const stChunks = chunk(T.stagioni, 4);
  spreads.push({
    id: "stagioni-section",
    left: <SectionDivider section={t.secStagioni} />,
    right: (
      <CriticalTextOpener
        eyebrow={t.secStagioni.roman + " · " + t.rhStagioni}
        title={t.secStagioni.title}
        subtitle={t.secStagioni.sub}
        paragraphs={stChunks[0]}
        dropcap={true}
        runningHead={t.rhStagioni}
        folio="15"
        side="right"
      />
    ),
  });
  spreads.push({
    id: "stagioni-2",
    left: <CriticalTextPage paragraphs={stChunks[1] || []} runningHead={t.rhStagioni} folio="16" side="left" />,
    right: <CriticalTextPage paragraphs={stChunks[2] || []} runningHead={t.rhStagioni} folio="17" side="right" />,
  });
  spreads.push({
    id: "stagioni-3",
    left: <CriticalTextPage paragraphs={stChunks[3] || []} runningHead={t.rhStagioni} folio="18" side="left" />,
    right: <EmptyPage />,
  });

  // Plates
  spreads.push({
    id: "plates-section",
    left: <SectionDivider section={t.secTavole} />,
    right: <EmptyPage />,
  });

  let folioNum = 21;
  PLATES.forEach((plate, i) => {
    spreads.push({
      id: `plate-${i}`,
      left: <PlatePage plate={plate} runningHead={t.rhTavole + " · " + plate.artist.split(" ")[0].toUpperCase()} folio={String(folioNum)} side="left" />,
      right: <CaptionPage plate={plate} idx={i + 1} total={PLATES.length} lang={lang} t={t} runningHead={`№ ${String(i+1).padStart(2,"0")}`} folio={String(folioNum + 1)} side="right" />,
    });
    folioNum += 2;
  });

  // Mostre
  spreads.push({
    id: "mostre-dt",
    left: <SectionDivider section={t.secMostre} />,
    right: <ExhibitionsPage artist="dt" lang={lang} t={t} runningHead={t.rhMostre} folio={String(folioNum)} side="right" isOpener={true} />,
  });
  folioNum += 2;
  spreads.push({
    id: "mostre-lv",
    left: <ExhibitionsPage artist="lv" lang={lang} t={t} runningHead={t.rhMostre} folio={String(folioNum)} side="left" />,
    right: <EmptyPage />,
  });
  folioNum += 2;

  spreads.push({
    id: "indice",
    left: <IndexPage t={t} lang={lang} runningHead={t.rhIndice} folio={String(folioNum)} side="left" half="first" />,
    right: <IndexPage t={t} lang={lang} runningHead={t.rhIndice} folio={String(folioNum + 1)} side="right" half="second" />,
  });

  spreads.push({
    id: "editorial-colophon",
    left: <EmptyPage />,
    right: <EditorialColophonPage lang={lang} />,
  });
  spreads.push({
    id: "end",
    left: <EndPage t={t} />,
    right: <BackCoverPage t={t} />,
  });

  return spreads;
}

window.buildSpreads = buildSpreads;
