---
import GlossaryLayout from "../../layouts/GlossaryLayout.astro";
import GlossaryPortalAside from "../../components/GlossaryPortalAside.astro";
import GlossaryPortalHero from "../../components/GlossaryPortalHero.astro";
import GlossaryPortalSection from "../../components/GlossaryPortalSection.astro";
import GlossaryPortalStickySync from "../../components/GlossaryPortalStickySync.astro";
import { getCollection } from "astro:content";
import { hrefOfGlossaryEntry } from "../../lib/glossary";

const entries = await getCollection("glossaire");

const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
const hrefOf = hrefOfGlossaryEntry;

function sortByTerm(list = []) {
  return [...list].sort((a, b) => collator.compare(a.data.term, b.data.term));
}

const paradigmes = sortByTerm(
  entries.filter((entry) => entry.data.kind === "paradigme")
);

const doctrines = sortByTerm(
  entries.filter((entry) => entry.data.kind === "doctrine")
);

const doctrinesCount = doctrines.length;
const paradigmesCount = paradigmes.length;

const pageItems = [
  ...(doctrines.length > 0
    ? [{ href: "#doctrines", label: "Doctrines fondatrices" }]
    : []),
  ...(paradigmes.length > 0
    ? [{ href: "#paradigmes", label: "Paradigmes régulateurs" }]
    : []),
  { href: "#prolonger-la-lecture", label: "Prolonger la lecture" },
];

const usefulLinks = [
  { href: "/glossaire/concepts-fondamentaux/", label: "Concepts fondamentaux" },
  { href: "/glossaire/scenes-archicratiques/", label: "Scènes archicratiques" },
  { href: "/glossaire/archicrations/", label: "Méta-régimes archicratiques" },
  { href: "/glossaire/dynamiques-archicratiques/", label: "Dynamiques archicratiques" },
  { href: "/glossaire/index-complet/", label: "Index complet" },
];

const prolongerLinks = [
  {
    href: "/glossaire/concepts-fondamentaux/",
    title: "Concepts fondamentaux",
    text:
      "Revenir au noyau minimal : arcalité, cratialité, tension, archicration, co-viabilité, archicratie.",
  },
  {
    href: "/glossaire/scenes-archicratiques/",
    title: "Scènes archicratiques",
    text:
      "Comprendre où les architectures de régulation deviennent visibles, disputables et révisables.",
  },
  {
    href: "/glossaire/archicrations/",
    title: "Méta-régimes archicratiques",
    text:
      "Parcourir les grandes formes de co-viabilité et leurs modulations historiques.",
  },
  {
    href: "/glossaire/index-complet/",
    title: "Index complet",
    text:
      "Retrouver l’ensemble des entrées du glossaire dans une navigation alphabétique intégrale.",
  },
];
---

<GlossaryLayout
  title="Paradigmes et doctrines"
  version="1.0"
  stickyMode="glossary-portal"
>
  <Fragment slot="aside">
    <GlossaryPortalAside
      ariaLabel="Navigation des paradigmes et doctrines"
      title="Paradigmes et doctrines"
      meta="doctrines fondatrices · paradigmes régulateurs"
      pageItems={pageItems}
      usefulLinks={usefulLinks}
    />
  </Fragment>

  <section class="theo-page">
    <GlossaryPortalHero
      prefix="theo"
      kicker="Cartographie théorique"
      title="Paradigmes et doctrines"
      intro="L’archicratie ne se déploie pas dans le vide. Elle s’inscrit dans un paysage intellectuel plus large où se croisent des doctrines fondatrices de l’ordre et des paradigmes de régulation des collectifs."
      moreParagraphs={[
        "On appellera ici doctrines fondatrices les formulations qui posent un principe premier de légitimité, de souveraineté ou d’ordre politique. On appellera paradigmes régulateurs les cadres théoriques qui décrivent des modes de tenue, de conflictualité, d’administration, de reproduction ou de transformation des sociétés.",
      ]}
      introMaxWidth="72ch"
      followIntroMaxWidth="68ch"
      moreMaxHeight="18rem"
    />

    <div class="theo-overview" aria-label="Repères de lecture théorique">
      <article class="theo-overview__item">
        <strong>Doctrines fondatrices</strong>
        <span>Principes premiers de légitimité, de souveraineté et de fondation de l’ordre.</span>
      </article>
      <article class="theo-overview__item">
        <strong>Paradigmes régulateurs</strong>
        <span>Cadres décrivant la tenue, le conflit, l’administration ou la transformation des collectifs.</span>
      </article>
      <article class="theo-overview__item">
        <strong>Portée comparative</strong>
        <span>Le paysage dans lequel l’archicratie situe ses proximités, ses écarts et sa singularité.</span>
      </article>
    </div>

    {doctrines.length > 0 && (
      <GlossaryPortalSection
        id="doctrines"
        title="Doctrines fondatrices"
        count={`${doctrinesCount} entrée${doctrinesCount > 1 ? "s" : ""}`}
        intro="Ces doctrines posent un principe premier d’autorité, de légitimité ou d’ordre collectif. Elles servent de points de comparaison pour penser ce qui, dans une régulation, relève de la fondation, de la souveraineté ou du principe architectonique initial."
      >
        <div class="theo-cards">
          {doctrines.map((entry) => (
            <a class="theo-card" href={hrefOf(entry)}>
              <strong>{entry.data.term}</strong>
              <span>{entry.data.definitionShort}</span>

              {(entry.data.mobilizedAuthors?.length ?? 0) > 0 && (
                <small>
                  Auteurs mobilisés : {entry.data.mobilizedAuthors.join(" / ")}
                </small>
              )}

              {(entry.data.comparisonTraditions?.length ?? 0) > 0 && (
                <small>
                  Traditions de comparaison : {entry.data.comparisonTraditions.join(" / ")}
                </small>
              )}
            </a>
          ))}
        </div>
      </GlossaryPortalSection>
    )}

    {paradigmes.length > 0 && (
      <GlossaryPortalSection
        id="paradigmes"
        title="Paradigmes régulateurs"
        count={`${paradigmesCount} entrée${paradigmesCount > 1 ? "s" : ""}`}
        intro="Ces paradigmes décrivent des formes de conflictualité, de gouvernement, de régulation, de reproduction ou de transformation des collectifs. Ils constituent le champ théorique au sein duquel l’archicratie entre en discussion, se compare et précise sa singularité."
      >
        <div class="theo-cards">
          {paradigmes.map((entry) => (
            <a class="theo-card" href={hrefOf(entry)}>
              <strong>{entry.data.term}</strong>
              <span>{entry.data.definitionShort}</span>

              {(entry.data.mobilizedAuthors?.length ?? 0) > 0 && (
                <small>
                  Auteurs mobilisés : {entry.data.mobilizedAuthors.join(" / ")}
                </small>
              )}

              {(entry.data.comparisonTraditions?.length ?? 0) > 0 && (
                <small>
                  Traditions de comparaison : {entry.data.comparisonTraditions.join(" / ")}
                </small>
              )}
            </a>
          ))}
        </div>
      </GlossaryPortalSection>
    )}

    <GlossaryPortalSection
      id="prolonger-la-lecture"
      title="Prolonger la lecture"
      intro="Cette page sert de portail entre la cartographie théorique générale et les autres ensembles du glossaire. Elle permet de relier les doctrines et paradigmes aux scènes, aux dynamiques, aux méta-régimes et au noyau conceptuel archicratique."
    >
      <div class="theo-cards">
        {prolongerLinks.map((item) => (
          <a class="theo-card" href={item.href}>
            <strong>{item.title}</strong>
            <span>{item.text}</span>
          </a>
        ))}
      </div>
    </GlossaryPortalSection>

    <GlossaryPortalSection
      id="portee-densemble"
      title="Portée d’ensemble"
      final={true}
    >
      <p>
        Lire doctrines et paradigmes ensemble permet de situer l’archicratie
        dans un espace comparatif plus vaste. Les doctrines éclairent les formes
        de fondation de l’ordre ; les paradigmes, les modes de tenue, de
        conflit, de gouvernement et de transformation. L’archicratie apparaît
        alors non comme un isolat conceptuel, mais comme une intelligibilité
        régulatrice située dans un paysage théorique dense et disputé.
      </p>
    </GlossaryPortalSection>
  </section>

  <GlossaryPortalStickySync
    heroMoreId="theo-hero-more"
    heroToggleId="theo-hero-toggle"
  />
</GlossaryLayout>

<style>
  .theo-page{
    padding: 8px 0 24px;
  }

  .theo-overview{
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0 8px;
  }

  .theo-overview__item{
    display: grid;
    gap: 6px;
    padding: 14px 16px;
    border: 1px solid rgba(127,127,127,0.20);
    border-radius: 16px;
    background: rgba(127,127,127,0.04);
  }

  .theo-overview__item strong{
    font-size: 14px;
    line-height: 1.3;
  }

  .theo-overview__item span{
    font-size: 13px;
    line-height: 1.45;
    opacity: .86;
  }

  .theo-cards{
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 12px;
    margin-top: 14px;
  }

  .theo-card{
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 14px 16px;
    border: 1px solid rgba(127,127,127,0.22);
    border-radius: 16px;
    background: rgba(127,127,127,0.05);
    text-decoration: none;
    transition: transform 120ms ease, background 120ms ease, border-color 120ms ease;
  }

  .theo-card:hover{
    transform: translateY(-1px);
    background: rgba(127,127,127,0.08);
    border-color: rgba(0,217,255,0.16);
    text-decoration: none;
  }

  .theo-card strong{
    font-size: 15px;
    line-height: 1.3;
  }

  .theo-card span{
    font-size: 14px;
    line-height: 1.45;
    opacity: .92;
  }

  .theo-card small{
    font-size: 12px;
    line-height: 1.4;
    opacity: .72;
  }

  @media (max-width: 920px){
    .theo-overview{
      grid-template-columns: 1fr;
    }
  }

  @media (prefers-color-scheme: dark){
    .theo-overview__item,
    .theo-card{
      background: rgba(255,255,255,0.04);
    }

    .theo-card:hover{
      background: rgba(255,255,255,0.07);
    }
  }
</style>