refactor(glossaire): centralize aside and home data
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 48s
CI / build-and-anchors (pull_request) Successful in 43s

This commit is contained in:
2026-03-25 16:48:43 +01:00
parent f7756be59e
commit ee42e391e3
4 changed files with 606 additions and 444 deletions

View File

@@ -1,14 +1,7 @@
--- ---
import { import {
familyOf, getGlossaryEntryAsideData,
getContextualTheory, getGlossaryPortalLinks,
getDisplayDomain,
getDisplayFamily,
getDisplayLevel,
getEntriesOfSameFamily,
getFondamentaux,
getRelationSections,
getSameFamilyTitle,
hrefOfGlossaryEntry, hrefOfGlossaryEntry,
slugOfGlossaryEntry, slugOfGlossaryEntry,
} from "../lib/glossary"; } from "../lib/glossary";
@@ -19,28 +12,21 @@ const {
} = Astro.props; } = Astro.props;
const currentSlug = slugOfGlossaryEntry(currentEntry); const currentSlug = slugOfGlossaryEntry(currentEntry);
const currentFamily = familyOf(currentEntry);
const fondamentaux = getFondamentaux(allEntries); const {
displayFamily,
displayDomain,
displayLevel,
showNoyau,
showSameFamily,
fondamentaux,
sameFamilyTitle,
sameFamilyEntries,
relationSections,
contextualTheory,
} = getGlossaryEntryAsideData(currentEntry, allEntries);
const displayFamily = getDisplayFamily(currentEntry); const portalLinks = getGlossaryPortalLinks();
const displayDomain = getDisplayDomain(currentEntry);
const displayLevel = getDisplayLevel(currentEntry);
const sameFamilyEntries = getEntriesOfSameFamily(currentEntry, allEntries);
const sameFamilyTitle = getSameFamilyTitle(currentEntry);
const contextualTheory = getContextualTheory(currentEntry, allEntries);
const showNoyau =
currentFamily !== "concept-fondamental" &&
fondamentaux.length > 0;
const showSameFamily =
sameFamilyEntries.length > 0 &&
currentFamily !== "concept-fondamental";
const relationSections = getRelationSections(currentEntry, allEntries);
--- ---
<nav class="glossary-aside" aria-label="Navigation du glossaire"> <nav class="glossary-aside" aria-label="Navigation du glossaire">
@@ -52,20 +38,23 @@ const relationSections = getRelationSections(currentEntry, allEntries);
<span class="glossary-aside__pill glossary-aside__pill--family"> <span class="glossary-aside__pill glossary-aside__pill--family">
{displayFamily} {displayFamily}
</span> </span>
{displayDomain && (
<span class="glossary-aside__pill">{displayDomain}</span> <span class="glossary-aside__pill">{displayDomain}</span>
)}
{displayLevel && (
<span class="glossary-aside__pill">{displayLevel}</span> <span class="glossary-aside__pill">{displayLevel}</span>
)}
</div> </div>
</div> </div>
<section class="glossary-aside__block"> <section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Portails</h2> <h2 class="glossary-aside__heading">Portails</h2>
<ul class="glossary-aside__list"> <ul class="glossary-aside__list">
<li><a href="/glossaire/">Accueil du glossaire</a></li> {portalLinks.map((item) => (
<li><a href="/glossaire/index-complet/">Index complet</a></li> <li><a href={item.href}>{item.label}</a></li>
<li><a href="/glossaire/paradigme-archicratique/">Paradigme archicratique</a></li> ))}
<li><a href="/glossaire/archicrations/">Archicrations</a></li>
<li><a href="/glossaire/paradigmes/">Paradigmes et doctrines</a></li>
<li><a href="/glossaire/tensions-irreductibles/">Tensions irréductibles</a></li>
</ul> </ul>
</section> </section>

View File

@@ -1,8 +1,8 @@
--- ---
import { import {
countGlossaryEntriesByFamily,
countGlossaryEntriesByKind,
getFondamentaux, getFondamentaux,
getGlossaryHomeStats,
getGlossaryPortalLinks,
hrefOfGlossaryEntry, hrefOfGlossaryEntry,
} from "../lib/glossary"; } from "../lib/glossary";
@@ -11,23 +11,14 @@ const {
} = Astro.props; } = Astro.props;
const fondamentaux = getFondamentaux(allEntries); const fondamentaux = getFondamentaux(allEntries);
const portalLinks = getGlossaryPortalLinks();
const totalEntries = allEntries.length; const {
const paradigmesCount = countGlossaryEntriesByKind(allEntries, "paradigme"); totalEntries,
const doctrinesCount = countGlossaryEntriesByKind(allEntries, "doctrine"); paradigmesCount,
const metaRegimesCount = countGlossaryEntriesByFamily(allEntries, "meta-regime"); doctrinesCount,
metaRegimesCount,
const portalLinks = [ } = getGlossaryHomeStats(allEntries);
{ href: "/glossaire/concepts-fondamentaux/", label: "Concepts fondamentaux" },
{ href: "/glossaire/index-complet/", label: "Index complet" },
{ href: "/glossaire/paradigme-archicratique/", label: "Paradigme archicratique" },
{ href: "/glossaire/scenes-archicratiques/", label: "Scènes archicratiques" },
{ href: "/glossaire/dynamiques-archicratiques/", label: "Dynamiques archicratiques" },
{ href: "/glossaire/tensions-irreductibles/", label: "Tensions irréductibles" },
{ href: "/glossaire/archicrations/", label: "Méta-régimes archicratiques" },
{ href: "/glossaire/paradigmes/", label: "Paradigmes et doctrines" },
{ href: "/glossaire/verbes-de-la-scene/", label: "Verbes de la scène" },
];
--- ---
<nav class="glossary-home-aside" aria-label="Navigation du portail du glossaire"> <nav class="glossary-home-aside" aria-label="Navigation du portail du glossaire">

View File

@@ -2,6 +2,53 @@ import type { CollectionEntry } from "astro:content";
export type GlossaryEntry = CollectionEntry<"glossaire">; export type GlossaryEntry = CollectionEntry<"glossaire">;
export type GlossaryPortalLink = {
href: string;
label: string;
};
export type GlossaryRelationSection = {
title: string;
items: GlossaryEntry[];
};
export type GlossaryRelationBlock = GlossaryRelationSection & {
className: string;
};
export type GlossaryHomeStats = {
totalEntries: number;
paradigmesCount: number;
doctrinesCount: number;
metaRegimesCount: number;
};
export type GlossaryEntryAsideData = {
displayFamily: string;
displayDomain: string;
displayLevel: string;
showNoyau: boolean;
showSameFamily: boolean;
fondamentaux: GlossaryEntry[];
sameFamilyTitle: string;
sameFamilyEntries: GlossaryEntry[];
relationSections: GlossaryRelationSection[];
contextualTheory: GlossaryEntry[];
};
export type GlossaryHomeData = {
fondamentaux: GlossaryEntry[];
scenes: GlossaryEntry[];
dynamiques: GlossaryEntry[];
metaRegimes: GlossaryEntry[];
metaRegimesPreview: GlossaryEntry[];
arcalite?: GlossaryEntry;
cratialite?: GlossaryEntry;
tension?: GlossaryEntry;
sceneDepreuve?: GlossaryEntry;
archicration?: GlossaryEntry;
};
export const GLOSSARY_COLLATOR = new Intl.Collator("fr", { export const GLOSSARY_COLLATOR = new Intl.Collator("fr", {
sensitivity: "base", sensitivity: "base",
numeric: true, numeric: true,
@@ -75,6 +122,34 @@ export const FAMILY_SECTION_TITLES: Record<string, string> = {
epistemologie: "Outillage épistémologique", epistemologie: "Outillage épistémologique",
}; };
const PREFERRED_PARADIGME_SLUGS = [
"gouvernementalite",
"gouvernementalite-algorithmique",
"cybernetique",
"biopolitique",
"domination-legale-rationnelle",
"democratie-deliberative",
"gouvernance-des-communs",
"agencement-machinique",
"pharmacologie-technique",
"preemption-algorithmique",
"dissensus-politique",
"lieu-vide-du-pouvoir",
"habitus-et-violence-symbolique",
"theorie-de-la-resonance",
"conatus-et-multitude",
"configuration-et-interdependance",
"technodiversite-et-cosmotechnie",
"grammatisation-et-proletarisation-cognitive",
] as const;
const PREFERRED_DOCTRINE_SLUGS = [
"contractualisme-hobbesien",
"droit-naturel-et-propriete",
"volonte-generale",
"decisionnisme-souverain",
] as const;
export function normalizeGlossarySlug(value: unknown): string { export function normalizeGlossarySlug(value: unknown): string {
return String(value ?? "") return String(value ?? "")
.trim() .trim()
@@ -99,9 +174,7 @@ export function hrefOfGlossaryEntry(
export function buildGlossaryBySlug( export function buildGlossaryBySlug(
entries: GlossaryEntry[] = [], entries: GlossaryEntry[] = [],
): Map<string, GlossaryEntry> { ): Map<string, GlossaryEntry> {
return new Map( return new Map(entries.map((entry) => [slugOfGlossaryEntry(entry), entry]));
entries.map((entry) => [slugOfGlossaryEntry(entry), entry]),
);
} }
export function sortGlossaryEntries( export function sortGlossaryEntries(
@@ -153,7 +226,7 @@ export function resolveGlossaryEntriesInSourceOrder(
export function resolveGlossaryEntries( export function resolveGlossaryEntries(
slugs: string[] = [], slugs: string[] = [],
allEntries: GlossaryEntry[] = [], allEntries: GlossaryEntry[] = [],
): GlossaryEntry[] { ): GlossaryEntry[] {
return sortGlossaryEntries( return sortGlossaryEntries(
resolveGlossaryEntriesInSourceOrder(slugs, allEntries), resolveGlossaryEntriesInSourceOrder(slugs, allEntries),
); );
@@ -188,7 +261,11 @@ export function familyOf(
if (slug === "autarchicratie") return "pathologie"; if (slug === "autarchicratie") return "pathologie";
if (slug === "obliteration-archicratique") return "dynamique"; if (slug === "obliteration-archicratique") return "dynamique";
if (FONDAMENTAUX_WANTED.includes(slug as (typeof FONDAMENTAUX_WANTED)[number])) { if (
FONDAMENTAUX_WANTED.includes(
slug as (typeof FONDAMENTAUX_WANTED)[number],
)
) {
return "concept-fondamental"; return "concept-fondamental";
} }
@@ -259,6 +336,47 @@ export function countGlossaryEntriesByFamily(
return entries.filter((entry) => familyOf(entry) === familyKey).length; return entries.filter((entry) => familyOf(entry) === familyKey).length;
} }
export function getGlossaryPortalLinks(): GlossaryPortalLink[] {
return [
{ href: "/glossaire/", label: "Accueil du glossaire" },
{ href: "/glossaire/concepts-fondamentaux/", label: "Concepts fondamentaux" },
{ href: "/glossaire/index-complet/", label: "Index complet" },
{
href: "/glossaire/paradigme-archicratique/",
label: "Paradigme archicratique",
},
{
href: "/glossaire/scenes-archicratiques/",
label: "Scènes archicratiques",
},
{
href: "/glossaire/dynamiques-archicratiques/",
label: "Dynamiques archicratiques",
},
{
href: "/glossaire/tensions-irreductibles/",
label: "Tensions irréductibles",
},
{
href: "/glossaire/archicrations/",
label: "Méta-régimes archicratiques",
},
{ href: "/glossaire/paradigmes/", label: "Paradigmes et doctrines" },
{ href: "/glossaire/verbes-de-la-scene/", label: "Verbes de la scène" },
];
}
export function getGlossaryHomeStats(
allEntries: GlossaryEntry[] = [],
): GlossaryHomeStats {
return {
totalEntries: allEntries.length,
paradigmesCount: countGlossaryEntriesByKind(allEntries, "paradigme"),
doctrinesCount: countGlossaryEntriesByKind(allEntries, "doctrine"),
metaRegimesCount: countGlossaryEntriesByFamily(allEntries, "meta-regime"),
};
}
export function getEntriesOfSameFamily( export function getEntriesOfSameFamily(
entry: GlossaryEntry, entry: GlossaryEntry,
allEntries: GlossaryEntry[] = [], allEntries: GlossaryEntry[] = [],
@@ -279,16 +397,10 @@ export function getSameFamilyTitle(
return FAMILY_SECTION_TITLES[familyOf(entry)] ?? "Même famille"; return FAMILY_SECTION_TITLES[familyOf(entry)] ?? "Même famille";
} }
export type GlossaryRelationBlock = {
title: string;
items: GlossaryEntry[];
className: string;
};
export function getRelationBlocks( export function getRelationBlocks(
entry: GlossaryEntry, entry: GlossaryEntry,
allEntries: GlossaryEntry[] = [], allEntries: GlossaryEntry[] = [],
): GlossaryRelationBlock[] { ): GlossaryRelationBlock[] {
const currentSlug = slugOfGlossaryEntry(entry); const currentSlug = slugOfGlossaryEntry(entry);
const relatedEntries = resolveGlossaryEntriesInSourceOrder( const relatedEntries = resolveGlossaryEntriesInSourceOrder(
@@ -323,12 +435,12 @@ export function getRelationBlocks(
className: "is-see-also", className: "is-see-also",
}, },
].filter((block) => block.items.length > 0); ].filter((block) => block.items.length > 0);
} }
export function getRelationSections( export function getRelationSections(
entry: GlossaryEntry, entry: GlossaryEntry,
allEntries: GlossaryEntry[] = [], allEntries: GlossaryEntry[] = [],
): Array<{ title: string; items: GlossaryEntry[] }> { ): GlossaryRelationSection[] {
return getRelationBlocks(entry, allEntries).map(({ title, items }) => ({ return getRelationBlocks(entry, allEntries).map(({ title, items }) => ({
title, title,
items, items,
@@ -347,34 +459,6 @@ function isTheoryEntry(entry: GlossaryEntry): boolean {
); );
} }
const PREFERRED_PARADIGME_SLUGS = [
"gouvernementalite",
"gouvernementalite-algorithmique",
"cybernetique",
"biopolitique",
"domination-legale-rationnelle",
"democratie-deliberative",
"gouvernance-des-communs",
"agencement-machinique",
"pharmacologie-technique",
"preemption-algorithmique",
"dissensus-politique",
"lieu-vide-du-pouvoir",
"habitus-et-violence-symbolique",
"theorie-de-la-resonance",
"conatus-et-multitude",
"configuration-et-interdependance",
"technodiversite-et-cosmotechnie",
"grammatisation-et-proletarisation-cognitive",
] as const;
const PREFERRED_DOCTRINE_SLUGS = [
"contractualisme-hobbesien",
"droit-naturel-et-propriete",
"volonte-generale",
"decisionnisme-souverain",
] as const;
export function getContextualTheory( export function getContextualTheory(
entry: GlossaryEntry, entry: GlossaryEntry,
allEntries: GlossaryEntry[] = [], allEntries: GlossaryEntry[] = [],
@@ -383,15 +467,15 @@ export function getContextualTheory(
const bySlug = buildGlossaryBySlug(allEntries); const bySlug = buildGlossaryBySlug(allEntries);
const fromRelations = uniqueGlossaryEntries([ const fromRelations = uniqueGlossaryEntries([
...resolveGlossaryEntries(entry.data.related ?? [], allEntries), ...resolveGlossaryEntriesInSourceOrder(entry.data.related ?? [], allEntries),
...resolveGlossaryEntries(entry.data.seeAlso ?? [], allEntries), ...resolveGlossaryEntriesInSourceOrder(entry.data.seeAlso ?? [], allEntries),
...resolveGlossaryEntries(entry.data.opposedTo ?? [], allEntries), ...resolveGlossaryEntriesInSourceOrder(entry.data.opposedTo ?? [], allEntries),
]) ])
.filter((item) => slugOfGlossaryEntry(item) !== currentSlug) .filter((item) => slugOfGlossaryEntry(item) !== currentSlug)
.filter((item) => isTheoryEntry(item)); .filter((item) => isTheoryEntry(item));
if (fromRelations.length > 0) { if (fromRelations.length > 0) {
return sortGlossaryEntries(fromRelations).slice(0, 6); return fromRelations.slice(0, 6);
} }
if (familyOf(entry) === "paradigme") { if (familyOf(entry) === "paradigme") {
@@ -414,3 +498,64 @@ export function getContextualTheory(
return []; return [];
} }
export function getGlossaryEntryAsideData(
currentEntry: GlossaryEntry,
allEntries: GlossaryEntry[] = [],
): GlossaryEntryAsideData {
const currentFamily = familyOf(currentEntry);
const fondamentaux = getFondamentaux(allEntries);
const sameFamilyEntries = getEntriesOfSameFamily(currentEntry, allEntries);
const sameFamilyTitle = getSameFamilyTitle(currentEntry);
const relationSections = getRelationSections(currentEntry, allEntries);
const contextualTheory = getContextualTheory(currentEntry, allEntries);
const showNoyau =
currentFamily !== "concept-fondamental" &&
fondamentaux.length > 0;
const showSameFamily =
currentFamily !== "concept-fondamental" &&
sameFamilyEntries.length > 0;
return {
displayFamily: getDisplayFamily(currentEntry),
displayDomain: getDisplayDomain(currentEntry),
displayLevel: getDisplayLevel(currentEntry),
showNoyau,
showSameFamily,
fondamentaux,
sameFamilyTitle,
sameFamilyEntries: showSameFamily ? sameFamilyEntries : [],
relationSections,
contextualTheory,
};
}
export function getGlossaryHomeData(
entries: GlossaryEntry[] = [],
): GlossaryHomeData {
const bySlug = buildGlossaryBySlug(entries);
const fondamentaux = getGlossaryEntriesByFamily(entries, "concept-fondamental");
const scenes = getGlossaryEntriesByFamily(entries, "scene");
const dynamiques = sortGlossaryEntries(
entries.filter((entry) =>
["dynamique", "pathologie"].includes(familyOf(entry)),
),
);
const metaRegimes = getGlossaryEntriesByFamily(entries, "meta-regime");
return {
fondamentaux,
scenes,
dynamiques,
metaRegimes,
metaRegimesPreview: metaRegimes.slice(0, 6),
arcalite: bySlug.get("arcalite"),
cratialite: bySlug.get("cratialite"),
tension: bySlug.get("tension"),
sceneDepreuve: bySlug.get("scene-depreuve"),
archicration: bySlug.get("archicration"),
};
}

View File

@@ -3,37 +3,29 @@ import GlossaryLayout from "../../layouts/GlossaryLayout.astro";
import GlossaryHomeAside from "../../components/GlossaryHomeAside.astro"; import GlossaryHomeAside from "../../components/GlossaryHomeAside.astro";
import { getCollection } from "astro:content"; import { getCollection } from "astro:content";
import { import {
buildGlossaryBySlug, getGlossaryHomeData,
countGlossaryEntriesByKind, getGlossaryHomeStats,
familyOf,
getGlossaryEntriesByFamily,
hrefOfGlossaryEntry, hrefOfGlossaryEntry,
sortGlossaryEntries,
} from "../../lib/glossary"; } from "../../lib/glossary";
const entries = await getCollection("glossaire"); const entries = await getCollection("glossaire");
const bySlug = buildGlossaryBySlug(entries); const {
fondamentaux,
scenes,
dynamiques,
metaRegimesPreview,
arcalite,
cratialite,
tension,
sceneDepreuve,
archicration,
} = getGlossaryHomeData(entries);
const fondamentaux = getGlossaryEntriesByFamily(entries, "concept-fondamental"); const {
const scenes = getGlossaryEntriesByFamily(entries, "scene"); paradigmesCount,
const dynamiques = sortGlossaryEntries( doctrinesCount,
entries.filter((entry) => } = getGlossaryHomeStats(entries);
["dynamique", "pathologie"].includes(familyOf(entry)),
),
);
const metaRegimes = getGlossaryEntriesByFamily(entries, "meta-regime");
const paradigmesCount = countGlossaryEntriesByKind(entries, "paradigme");
const doctrinesCount = countGlossaryEntriesByKind(entries, "doctrine");
const metaRegimesPreview = metaRegimes.slice(0, 6);
const arcalite = bySlug.get("arcalite");
const cratialite = bySlug.get("cratialite");
const tension = bySlug.get("tension");
const sceneDepreuve = bySlug.get("scene-depreuve");
const archicration = bySlug.get("archicration");
const paradigmeArchicratiquePageHref = "/glossaire/paradigme-archicratique/"; const paradigmeArchicratiquePageHref = "/glossaire/paradigme-archicratique/";
const metaRegimesPageHref = "/glossaire/archicrations/"; const metaRegimesPageHref = "/glossaire/archicrations/";
@@ -70,9 +62,15 @@ const indexCompletPageHref = "/glossaire/index-complet/";
></h2> ></h2>
</header> </header>
<section class="glossary-map-block glossary-section" aria-labelledby="glossary-map-title"> <section
class="glossary-map-block glossary-section"
aria-labelledby="glossary-map-title"
>
<div class="glossary-map-block__head"> <div class="glossary-map-block__head">
<h2 id="glossary-map-title" data-follow-section="Cartographie du système archicratique"> <h2
id="glossary-map-title"
data-follow-section="Cartographie du système archicratique"
>
Cartographie du système archicratique Cartographie du système archicratique
</h2> </h2>
<p> <p>
@@ -88,13 +86,17 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-map__title">Forces en composition</div> <div class="glossary-map__title">Forces en composition</div>
<div class="glossary-map__roots"> <div class="glossary-map__roots">
{arcalite ? ( {arcalite ? (
<a class="glossary-map__node" href={hrefOfGlossaryEntry(arcalite)}>ARCALITÉ</a> <a class="glossary-map__node" href={hrefOfGlossaryEntry(arcalite)}>
ARCALITÉ
</a>
) : ( ) : (
<span class="glossary-map__node">ARCALITÉ</span> <span class="glossary-map__node">ARCALITÉ</span>
)} )}
{cratialite ? ( {cratialite ? (
<a class="glossary-map__node" href={hrefOfGlossaryEntry(cratialite)}>CRATIALITÉ</a> <a class="glossary-map__node" href={hrefOfGlossaryEntry(cratialite)}>
CRATIALITÉ
</a>
) : ( ) : (
<span class="glossary-map__node">CRATIALITÉ</span> <span class="glossary-map__node">CRATIALITÉ</span>
)} )}
@@ -106,11 +108,16 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-map__stage"> <div class="glossary-map__stage">
<div class="glossary-map__title">Phénomène transversal</div> <div class="glossary-map__title">Phénomène transversal</div>
{tension ? ( {tension ? (
<a class="glossary-map__node glossary-map__node--wide" href={hrefOfGlossaryEntry(tension)}> <a
class="glossary-map__node glossary-map__node--wide"
href={hrefOfGlossaryEntry(tension)}
>
TENSION TENSION
</a> </a>
) : ( ) : (
<span class="glossary-map__node glossary-map__node--wide">TENSION</span> <span class="glossary-map__node glossary-map__node--wide">
TENSION
</span>
)} )}
</div> </div>
@@ -119,11 +126,16 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-map__stage"> <div class="glossary-map__stage">
<div class="glossary-map__title">Comparution</div> <div class="glossary-map__title">Comparution</div>
{sceneDepreuve ? ( {sceneDepreuve ? (
<a class="glossary-map__node glossary-map__node--wide" href={hrefOfGlossaryEntry(sceneDepreuve)}> <a
class="glossary-map__node glossary-map__node--wide"
href={hrefOfGlossaryEntry(sceneDepreuve)}
>
MISE EN SCÈNE MISE EN SCÈNE
</a> </a>
) : ( ) : (
<span class="glossary-map__node glossary-map__node--wide">MISE EN SCÈNE</span> <span class="glossary-map__node glossary-map__node--wide">
MISE EN SCÈNE
</span>
)} )}
</div> </div>
@@ -132,11 +144,16 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-map__stage"> <div class="glossary-map__stage">
<div class="glossary-map__title">Opérateur régulateur</div> <div class="glossary-map__title">Opérateur régulateur</div>
{archicration ? ( {archicration ? (
<a class="glossary-map__node glossary-map__node--wide" href={hrefOfGlossaryEntry(archicration)}> <a
class="glossary-map__node glossary-map__node--wide"
href={hrefOfGlossaryEntry(archicration)}
>
ARCHICRATION ARCHICRATION
</a> </a>
) : ( ) : (
<span class="glossary-map__node glossary-map__node--wide">ARCHICRATION</span> <span class="glossary-map__node glossary-map__node--wide">
ARCHICRATION
</span>
)} )}
</div> </div>
@@ -144,7 +161,10 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-map__stage"> <div class="glossary-map__stage">
<div class="glossary-map__title">Formes de stabilisation</div> <div class="glossary-map__title">Formes de stabilisation</div>
<a class="glossary-map__node glossary-map__node--wide" href={metaRegimesPageHref}> <a
class="glossary-map__node glossary-map__node--wide"
href={metaRegimesPageHref}
>
MÉTA-RÉGIMES MÉTA-RÉGIMES
</a> </a>
</div> </div>
@@ -155,7 +175,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="concepts-fondamentaux" class="glossary-section"> <section id="concepts-fondamentaux" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Concepts fondamentaux">Concepts fondamentaux</h2> <h2 data-follow-section="Concepts fondamentaux">
Concepts fondamentaux
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Ces notions forment la grammaire minimale de larchicratie. Ces notions forment la grammaire minimale de larchicratie.
Elles donnent accès à la structure générale du système. Elles donnent accès à la structure générale du système.
@@ -177,7 +199,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="paradigme-archicratique" class="glossary-section"> <section id="paradigme-archicratique" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Paradigme archicratique">Paradigme archicratique</h2> <h2 data-follow-section="Paradigme archicratique">
Paradigme archicratique
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Cette page de synthèse offre une vue densemble du système Cette page de synthèse offre une vue densemble du système
archicratique. Elle articule le noyau conceptuel, les scènes de archicratique. Elle articule le noyau conceptuel, les scènes de
@@ -210,7 +234,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="scenes-archicratiques" class="glossary-section"> <section id="scenes-archicratiques" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Scènes archicratiques">Scènes archicratiques</h2> <h2 data-follow-section="Scènes archicratiques">
Scènes archicratiques
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Les scènes archicratiques rendent possible la comparution des Les scènes archicratiques rendent possible la comparution des
architectures de régulation. Elles sont le lieu où lordre peut architectures de régulation. Elles sont le lieu où lordre peut
@@ -221,7 +247,10 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<div class="glossary-cards"> <div class="glossary-cards">
{scenes.map((entry) => ( {scenes.map((entry) => (
<a class="glossary-card glossary-card--wide" href={hrefOfGlossaryEntry(entry)}> <a
class="glossary-card glossary-card--wide"
href={hrefOfGlossaryEntry(entry)}
>
<strong>{entry.data.term}</strong> <strong>{entry.data.term}</strong>
<span>{entry.data.definitionShort}</span> <span>{entry.data.definitionShort}</span>
</a> </a>
@@ -234,7 +263,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="dynamiques-archicratiques" class="glossary-section"> <section id="dynamiques-archicratiques" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Dynamiques archicratiques">Dynamiques archicratiques</h2> <h2 data-follow-section="Dynamiques archicratiques">
Dynamiques archicratiques
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Cette famille rassemble les processus de déplacement, les dérives Cette famille rassemble les processus de déplacement, les dérives
et les formes de pathologisation de la régulation archicratique. et les formes de pathologisation de la régulation archicratique.
@@ -256,7 +287,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="meta-regimes-archicratiques" class="glossary-section"> <section id="meta-regimes-archicratiques" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Méta-régimes archicratiques">Méta-régimes archicratiques</h2> <h2 data-follow-section="Méta-régimes archicratiques">
Méta-régimes archicratiques
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Les méta-régimes décrivent les grandes formes historiques et Les méta-régimes décrivent les grandes formes historiques et
topologiques par lesquelles une société organise durablement ses topologiques par lesquelles une société organise durablement ses
@@ -284,7 +317,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
<section id="approfondir" class="glossary-section"> <section id="approfondir" class="glossary-section">
<div class="glossary-section__head"> <div class="glossary-section__head">
<div> <div>
<h2 data-follow-section="Prolonger la lecture">Prolonger la lecture</h2> <h2 data-follow-section="Prolonger la lecture">
Prolonger la lecture
</h2>
<p class="glossary-intro"> <p class="glossary-intro">
Quatre parcours complémentaires permettent délargir la lecture : Quatre parcours complémentaires permettent délargir la lecture :
lun vers les tensions irréductibles, lun vers les verbes de la scène lun vers les tensions irréductibles, lun vers les verbes de la scène
@@ -322,7 +357,9 @@ const indexCompletPageHref = "/glossaire/index-complet/";
Situer larchicratie dans son paysage de doctrines fondatrices et de Situer larchicratie dans son paysage de doctrines fondatrices et de
paradigmes régulateurs. paradigmes régulateurs.
</span> </span>
<small>{doctrinesCount} doctrine{doctrinesCount > 1 ? "s" : ""} · {paradigmesCount} paradigme{paradigmesCount > 1 ? "s" : ""}</small> <small>
{doctrinesCount} doctrine{doctrinesCount > 1 ? "s" : ""} · {paradigmesCount} paradigme{paradigmesCount > 1 ? "s" : ""}
</small>
</a> </a>
<a class="glossary-portal-card" href={indexCompletPageHref}> <a class="glossary-portal-card" href={indexCompletPageHref}>