feat(glossaire): enrich entries and refine glossary navigation #281

Merged
Archicratia merged 1 commits from feat/glossaire-enrich-navigation into main 2026-03-19 21:18:51 +00:00
57 changed files with 1471 additions and 429 deletions

View File

@@ -26,7 +26,7 @@ const fondamentaux = fondamentauxWanted
function resolveList(slugs = []) {
return slugs
.map((slug) => bySlug.get(slug))
.map((slug) => bySlug.get(String(slug || "").trim()))
.filter(Boolean);
}
@@ -42,43 +42,138 @@ function uniqueBySlug(entries) {
return out;
}
const relatedEntries = uniqueBySlug(resolveList(currentEntry.data.related ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
function sortByTerm(entries = []) {
return [...entries].sort((a, b) => collator.compare(a.data.term, b.data.term));
}
const opposedEntries = uniqueBySlug(resolveList(currentEntry.data.opposedTo ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
function familyOf(entry) {
return entry?.data?.family ?? "";
}
const seeAlsoEntries = uniqueBySlug(resolveList(currentEntry.data.seeAlso ?? []))
.sort((a, b) => collator.compare(a.data.term, b.data.term));
function kindOf(entry) {
return entry?.data?.kind ?? "";
}
const paradigmes = [...allEntries]
.filter((e) => e.data.kind === "paradigme" && slugOf(e) !== currentSlug)
.sort((a, b) => collator.compare(a.data.term, b.data.term));
const relatedEntries = sortByTerm(
uniqueBySlug(resolveList(currentEntry.data.related ?? []))
);
function contextualParadigmsFor(entry) {
const relatedParadigms = (entry.data.related ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const opposedEntries = sortByTerm(
uniqueBySlug(resolveList(currentEntry.data.opposedTo ?? []))
);
const seeAlsoParadigms = (entry.data.seeAlso ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const seeAlsoEntries = sortByTerm(
uniqueBySlug(resolveList(currentEntry.data.seeAlso ?? []))
);
const opposedParadigms = (entry.data.opposedTo ?? [])
.map((slug) => bySlug.get(slug))
.filter((e) => e && e.data.kind === "paradigme");
const familyLabels = {
"concept-fondamental": "Concept fondamental",
scene: "Scène",
dynamique: "Dynamique",
pathologie: "Pathologie",
topologie: "Topologie",
"meta-regime": "Méta-régime",
paradigme: "Paradigme",
doctrine: "Doctrine",
verbe: "Verbe",
"dispositif-ia": "Dispositif IA",
"tension-irreductible": "Tension irréductible",
};
const merged = uniqueBySlug([
...relatedParadigms,
...seeAlsoParadigms,
...opposedParadigms,
]);
const kindLabels = {
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
if (merged.length > 0) {
return merged.slice(0, 5);
const domainLabels = {
transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const currentFamily = familyOf(currentEntry);
const displayFamily =
familyLabels[currentFamily] ??
kindLabels[currentEntry.data.kind] ??
"Fiche";
const displayDomain =
domainLabels[currentEntry.data.domain] ??
currentEntry.data.domain;
const displayLevel =
levelLabels[currentEntry.data.level] ??
currentEntry.data.level;
function entriesOfSameFamily(entry) {
const family = familyOf(entry);
if (!family) return [];
if (family === "concept-fondamental") {
return fondamentaux;
}
if (entry.data.kind === "paradigme") {
return sortByTerm(
allEntries.filter((item) => familyOf(item) === family)
);
}
const sameFamilyEntries = entriesOfSameFamily(currentEntry);
const familySectionTitles = {
"concept-fondamental": "Noyau archicratique",
scene: "Scènes archicratiques",
dynamique: "Dynamiques archicratiques",
pathologie: "Pathologies archicratiques",
topologie: "Topologies voisines",
"meta-regime": "Méta-régimes archicratiques",
paradigme: "Paradigmes voisins",
doctrine: "Doctrines fondatrices",
verbe: "Verbes de la scène",
"dispositif-ia": "Dispositifs IA",
"tension-irreductible": "Tensions irréductibles",
};
const sameFamilyTitle =
familySectionTitles[currentFamily] ?? "Même famille";
function isTheoryEntry(entry) {
const family = familyOf(entry);
const kind = kindOf(entry);
return (
family === "paradigme" ||
family === "doctrine" ||
kind === "paradigme" ||
kind === "doctrine"
);
}
function contextualTheoryFor(entry) {
const fromRelations = uniqueBySlug([
...resolveList(entry.data.related ?? []),
...resolveList(entry.data.seeAlso ?? []),
...resolveList(entry.data.opposedTo ?? []),
])
.filter((item) => slugOf(item) !== currentSlug)
.filter((item) => isTheoryEntry(item));
if (fromRelations.length > 0) {
return sortByTerm(fromRelations).slice(0, 6);
}
if (familyOf(entry) === "paradigme") {
const preferred = [
"gouvernementalite",
"gouvernementalite-algorithmique",
@@ -100,6 +195,22 @@ function contextualParadigmsFor(entry) {
"grammatisation-et-proletarisation-cognitive",
];
return uniqueBySlug(
preferred
.filter((slug) => slug !== currentSlug)
.map((slug) => bySlug.get(slug))
.filter(Boolean)
).slice(0, 8);
}
if (familyOf(entry) === "doctrine") {
const preferred = [
"contractualisme-hobbesien",
"droit-naturel-et-propriete",
"volonte-generale",
"decisionnisme-souverain",
];
return uniqueBySlug(
preferred
.filter((slug) => slug !== currentSlug)
@@ -108,55 +219,56 @@ function contextualParadigmsFor(entry) {
).slice(0, 6);
}
return paradigmes.slice(0, 5);
return [];
}
const contextualParadigms = contextualParadigmsFor(currentEntry);
const contextualTheory = contextualTheoryFor(currentEntry);
const kindLabels = {
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
const showNoyau = currentFamily !== "concept-fondamental" && fondamentaux.length > 0;
const domainLabels = {
transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const showSameFamily =
sameFamilyEntries.length > 0 && currentFamily !== "concept-fondamental";
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const metaLabel = [
kindLabels[currentEntry.data.kind] ?? currentEntry.data.kind,
domainLabels[currentEntry.data.domain] ?? currentEntry.data.domain,
levelLabels[currentEntry.data.level] ?? currentEntry.data.level,
].join(" · ");
const relationSections = [
{
title: "Concepts liés",
items: relatedEntries,
},
{
title: "En tension avec",
items: opposedEntries,
},
{
title: "Voir aussi",
items: seeAlsoEntries,
},
].filter((section) => section.items.length > 0);
---
<nav class="glossary-aside" aria-label="Navigation du glossaire">
<div class="glossary-aside__block glossary-aside__block--intro">
<a class="glossary-aside__back" href="/glossaire/">← Retour au glossaire</a>
<div class="glossary-aside__title">Glossaire archicratique</div>
<div class="glossary-aside__meta">{metaLabel}</div>
<div class="glossary-aside__pills" aria-label="Repères de lecture">
<span class="glossary-aside__pill glossary-aside__pill--family">
{displayFamily}
</span>
<span class="glossary-aside__pill">{displayDomain}</span>
<span class="glossary-aside__pill">{displayLevel}</span>
</div>
</div>
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Portails</h2>
<ul class="glossary-aside__list">
<li><a href="/glossaire/">Index général</a></li>
<li><a href="/glossaire/paradigmes/">Page paradigmes</a></li>
<li><a href="/glossaire/archicrations/">Archicrations</a></li>
<li><a href="/glossaire/paradigmes/">Paradigmes et doctrines</a></li>
</ul>
</section>
{fondamentaux.length > 0 && (
{showNoyau && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Noyau archicratique</h2>
<ul class="glossary-aside__list">
@@ -178,52 +290,50 @@ const metaLabel = [
</section>
)}
{(relatedEntries.length > 0 || opposedEntries.length > 0 || seeAlsoEntries.length > 0) && (
{showSameFamily && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Autour de cette fiche</h2>
{relatedEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Liés</h3>
<ul class="glossary-aside__list">
{relatedEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
{opposedEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Opposés</h3>
<ul class="glossary-aside__list">
{opposedEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
{seeAlsoEntries.length > 0 && (
<>
<h3 class="glossary-aside__subheading">Voir aussi</h3>
<ul class="glossary-aside__list">
{seeAlsoEntries.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
)}
<h2 class="glossary-aside__heading">{sameFamilyTitle}</h2>
<ul class="glossary-aside__list">
{sameFamilyEntries.map((entry) => {
const active = slugOf(entry) === currentSlug;
return (
<li>
<a
href={hrefOf(entry)}
aria-current={active ? "page" : undefined}
class={active ? "is-active" : undefined}
>
{entry.data.term}
</a>
</li>
);
})}
</ul>
</section>
)}
{contextualParadigms.length > 0 && (
{relationSections.length > 0 && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">
{currentEntry.data.kind === "paradigme" ? "Paradigmes voisins" : "Paradigmes mobilisés"}
</h2>
<h2 class="glossary-aside__heading">Autour de cette fiche</h2>
{relationSections.map((section) => (
<>
<h3 class="glossary-aside__subheading">{section.title}</h3>
<ul class="glossary-aside__list">
{section.items.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
</>
))}
</section>
)}
{contextualTheory.length > 0 && (
<section class="glossary-aside__block">
<h2 class="glossary-aside__heading">Paysage théorique</h2>
<ul class="glossary-aside__list">
{contextualParadigms.map((entry) => (
{contextualTheory.map((entry) => (
<li><a href={hrefOf(entry)}>{entry.data.term}</a></li>
))}
</ul>
@@ -265,11 +375,28 @@ const metaLabel = [
line-height: 1.25;
}
.glossary-aside__meta{
.glossary-aside__pills{
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 8px;
}
.glossary-aside__pill{
display: inline-flex;
align-items: center;
padding: 4px 9px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.04);
font-size: 12px;
line-height: 1.35;
opacity: .78;
line-height: 1.3;
opacity: .9;
}
.glossary-aside__pill--family{
border-color: rgba(127,127,127,0.38);
font-weight: 800;
}
.glossary-aside__heading{
@@ -309,7 +436,8 @@ const metaLabel = [
}
@media (prefers-color-scheme: dark){
.glossary-aside__block{
.glossary-aside__block,
.glossary-aside__pill{
background: rgba(255,255,255,0.04);
}
}

View File

@@ -67,6 +67,19 @@ const glossaire = defineCollection({
links: z.array(linkSchema).default([]),
kind: z.enum(["concept", "topologie", "diagnostic", "verbe", "paradigme", "doctrine"]),
family: z.enum([
"concept-fondamental",
"scene",
"dynamique",
"pathologie",
"topologie",
"meta-regime",
"paradigme",
"doctrine",
"verbe",
"dispositif-ia",
"tension-irreductible",
]).optional(),
domain: z.enum(["transversal", "theorie", "cas-ia"]),
level: z.enum(["fondamental", "intermediaire", "avance"]),
related: z.array(z.string().min(1)).default([]),

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur des agencements hétérog
concepts: ["agencement-machinique", "agencement", "machine", "flux", "dispositif", "tension"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "cratialite", "archicration", "tension", "co-viabilite"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur fondationnel et structurant de la régulation : ensemb
concepts: ["arcalite", "archicratie", "cratialite", "archicration", "co-viabilite"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "cratialite", "archicration", "co-viabilite", "tension"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Méta-régime de régulation par lequel les sociétés humaine
concepts: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "tension"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["arcalite", "cratialite", "archicration", "co-viabilite", "tension"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur régulateur par lequel les tensions entre arcalités e
concepts: ["archicration", "archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "co-viabilite", "tension", "scene-depreuve"]

View File

@@ -8,10 +8,11 @@ comparisonTraditions: ["anthropologie politique comparative", "sociologie proces
edition: "glossaire"
status: "referentiel"
version: "0.1.0"
definitionShort: "Configurations dans lesquelles un régime archicratique se module, se fragmente ou se combine à dautres sans produire une forme unifiée."
definitionShort: "Configurations dans lesquelles un méta-régime archicratique se module, se fragmente ou se combine à dautres sans produire une forme unifiée."
concepts: ["archicrations-differentielles-et-formes-hybrides", "archicration", "hybridation", "modulation", "plasticite", "composition", "co-viabilite"]
links: []
kind: "topologie"
family: "topologie"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la régulation coll
concepts: ["archicrations-epistemiques", "archicration", "savoir", "episteme", "paradigme", "verite", "expertise"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "gouvernementalite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation collective p
concepts: ["archicrations-esthetico-symboliques", "archicration", "forme-symbolique", "imaginaire", "representation", "esthetique"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la stabilité colle
concepts: ["archicrations-guerrieres", "archicration", "puissance", "violence", "strategie", "dissuasion"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation collective s
concepts: ["archicrations-historiographiques", "archicration", "memoire", "recit", "temporalite", "historiographie"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la coordination col
concepts: ["archicrations-marchandes", "archicration", "marche", "echange", "prix", "coordination"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité dans lequel la régulation coll
concepts: ["archicrations-normativo-politiques", "archicration", "norme", "droit", "legalite", "souverainete"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation passe priori
concepts: ["archicrations-proto-symboliques", "archicration", "proto-symbolique", "rite", "tabou", "alliance", "co-viabilite"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où des puissances sacrales, de
concepts: ["archicrations-sacrales-non-etatiques", "archicration", "sacral", "rituel", "totemisme", "oracle", "co-viabilite"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-proto-symboliques"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lécriture ne prescrit p
concepts: ["archicrations-scripturo-cosmologiques","archicration","cosmos","cosmographie","ecriture","alignement","correspondance"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "archicrations-techno-logistiques"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lobligation découle d
concepts: ["archicrations-scripturo-normatives", "archicration", "scripturalite", "norme", "ecriture", "code", "obligation"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "domination-legale-rationnelle"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation sincarne
concepts: ["archicrations-techno-logistiques", "archicration", "techno-logistique", "megamachine", "infrastructure", "flux", "coordination"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "cybernetique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où lobligation procède d
concepts: ["archicrations-theologiques", "archicration", "revelation", "verbe", "transcendance", "doctrine", "orthodoxie", "exegese"]
links: []
kind: "topologie"
family: "meta-regime"
domain: "transversal"
level: "avance"
related: ["archicratie", "arcalite", "cratialite", "archicration", "co-viabilite", "decisionnisme-souverain"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Dérive dun régime archicratique dans laquelle les archite
concepts: ["autarchicratie", "archicratie", "archicration", "obliteration-archicratique", "scene-depreuve"]
links: []
kind: "diagnostic"
family: "pathologie"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "archicration", "obliteration-archicratique", "scene-depreuve", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme danalyse du pouvoir centré sur la prise en charg
concepts: ["biopolitique", "population", "vie", "gouvernementalite"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "intermediaire"
related: ["gouvernementalite", "archicratie", "co-viabilite"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Capacité dun système social à maintenir la continuité d
concepts: ["co-viabilite", "archicratie", "arcalite", "cratialite", "archicration", "tension"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "archicration", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme immanent de régulation dans lequel la tenue du coll
concepts: ["conatus-et-multitude", "conatus", "multitude", "affect", "puissance"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "tension", "co-viabilite", "theorie-de-la-resonance"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les formes sociales émer
concepts: ["configuration-et-interdependance", "configuration", "interdependance", "autocontrainte", "processus"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "co-viabilite", "tension", "conatus-et-multitude"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la sortie de la guerre de tous
concepts: ["contractualisme-hobbesien", "souverainete", "ordre", "tension"]
links: []
kind: "doctrine"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique selon lequel les collectifs humains doiven
concepts: ["cosmopolitique", "pluralite-des-mondes", "composition"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["technodiversite-et-cosmotechnie", "gouvernance-des-communs", "configuration-et-interdependance"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Vecteur opératoire et transformateur de la régulation : ense
concepts: ["cratialite", "archicratie", "arcalite", "archicration", "tension", "co-viabilite"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "arcalite", "archicration", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation centré sur les boucles de rétroacti
concepts: ["cybernetique", "retroaction", "pilotage", "tension"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "tension", "cratialite", "gouvernementalite-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice selon laquelle lordre politique se cons
concepts: ["decisionnisme-souverain", "decision", "exception", "souverainete", "theologie-politique"]
links: []
kind: "doctrine"
family: "doctrine"
domain: "theorie"
level: "fondamental"
related: ["contractualisme-hobbesien", "archicratie", "archicration", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique fondant la légitimité de lordre colle
concepts: ["democratie-deliberative", "deliberation", "discussion", "legitimite", "espace-public"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["volonte-generale", "archicration", "scene-depreuve", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique dans lequel le litige, le désaccord et l
concepts: ["dissensus-politique", "dissensus", "litige", "scene", "conflit"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicration", "scene-depreuve", "tension", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur la légalité formelle, la
concepts: ["domination-legale-rationnelle", "bureaucratie", "legalite", "administration", "regle", "procedure"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "arcalite", "cratialite", "archicration"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la loi naturelle, de la propri
concepts: ["droit-naturel-et-propriete", "propriete", "droit-naturel", "consentement", "encadrement-liberal"]
links: []
kind: "doctrine"
family: "doctrine"
domain: "theorie"
level: "fondamental"
related: ["contractualisme-hobbesien", "volonte-generale", "archicratie", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel lordre se maintient pa
concepts: ["exception-souveraine", "exception", "suspension", "souverainete", "urgence"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["decisionnisme-souverain", "archicratie", "tension", "autarchicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les échanges, obligation
concepts: ["fait-social-total", "echange", "obligation", "symbolisation", "cohesion"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "intermediaire"
related: ["archicratie", "arcalite", "co-viabilite", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur la coordination collective
concepts: ["gouvernance-des-communs", "communs", "coordination", "polycentrisme", "ressources"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "intermediaire"
related: ["co-viabilite", "archicratie", "democratie-deliberative", "tension"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur le calcul automatisé, la
concepts: ["gouvernementalite-algorithmique", "algorithme", "scoring", "autarchicratie"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "cas-ia"
level: "intermediaire"
related: ["gouvernementalite", "cybernetique", "autarchicratie", "obliteration-archicratique", "cratialite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme danalyse du pouvoir centré sur la conduite des c
concepts: ["gouvernementalite", "pouvoir", "population", "regulation"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "biopolitique", "gouvernementalite-algorithmique", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation technique dans lequel la capture, la
concepts: ["grammatisation-et-proletarisation-cognitive", "grammatisation", "proletarisation", "savoir", "automatisation", "technique"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "pharmacologie-technique", "preemption-algorithmique", "gouvernementalite-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel lordre social se repro
concepts: ["habitus-et-violence-symbolique", "habitus", "champ", "violence-symbolique", "reproduction"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "arcalite", "autarchicratie", "obliteration-archicratique"]

View File

@@ -20,6 +20,7 @@ concepts:
- "conflit"
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related:

View File

@@ -9,6 +9,7 @@ definitionShort: "Processus par lequel les architectures régulatrices continuen
concepts: ["obliteration-archicratique", "archicration", "autarchicratie", "scene-depreuve", "archicratie"]
links: []
kind: "diagnostic"
family: "dynamique"
domain: "transversal"
level: "fondamental"
related: ["archicration", "autarchicratie", "scene-depreuve", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme épistémologique selon lequel les phénomènes soci
concepts: ["complexite", "dialogique", "recursivite", "systeme"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["configuration-et-interdependance", "transduction-et-individuation", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur lambivalence constituti
concepts: ["pharmacologie-technique", "technique", "soin", "attention", "automatisation"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "co-viabilite", "tension", "preemption-algorithmique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique dans lequel la régulation doit ménager l
concepts: ["pluralite-natalite-action", "pluralite", "natalite", "action", "monde-commun"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicration", "scene-depreuve", "dissensus-politique", "archicratie"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les comportements sont an
concepts: ["preemption-algorithmique", "algorithme", "scoring", "nudging", "anticipation"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "cas-ia"
level: "avance"
related: ["gouvernementalite-algorithmique", "archicratie", "obliteration-archicratique", "autarchicratie"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Espace de comparution, dexposition et de révision dans leq
concepts: ["scene-depreuve", "archicration", "archicratie", "tension", "co-viabilite"]
links: []
kind: "concept"
family: "scene"
domain: "transversal"
level: "fondamental"
related: ["archicration", "archicratie", "tension", "co-viabilite", "obliteration-archicratique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation technique selon lequel les formes de
concepts: ["technodiversite-et-cosmotechnie", "technodiversite", "cosmotechnie", "technique", "pluralite", "monde"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "co-viabilite", "pharmacologie-technique", "agencement-machinique"]

View File

@@ -9,6 +9,7 @@ definitionShort: "Phénomène systémique général par lequel des forces, dynam
concepts: ["tension", "archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"]
links: []
kind: "concept"
family: "concept-fondamental"
domain: "transversal"
level: "fondamental"
related: ["archicratie", "co-viabilite", "arcalite", "cratialite", "archicration"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel les conflits sociaux so
concepts: ["justification", "grandeur", "cites", "regimes-de-justification"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["dissensus-politique", "scene-depreuve", "democratie-deliberative"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme relationnel dans lequel la qualité dun ordre dé
concepts: ["theorie-de-la-resonance", "resonance", "relation", "reponse", "monde"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "intermediaire"
related: ["archicratie", "co-viabilite", "tension", "scene-depreuve"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel laction collective rés
concepts: ["acteur-reseau", "traduction", "association", "hybridation"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["agencement-machinique", "configuration-et-interdependance", "cybernetique"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel les formes individuelles
concepts: ["transduction-et-individuation", "transduction", "individuation", "milieu", "tension"]
links: []
kind: "paradigme"
family: "paradigme"
domain: "theorie"
level: "avance"
related: ["archicratie", "archicration", "tension", "co-viabilite"]

View File

@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice faisant de la volonté générale, de l
concepts: ["volonte-generale", "legitimite", "collectif", "politique"]
links: []
kind: "doctrine"
family: "doctrine"
domain: "theorie"
level: "fondamental"
related: ["archicratie", "archicration", "scene-depreuve", "co-viabilite"]

View File

@@ -55,6 +55,107 @@ const { Content } = await render(entry);
const isAliasRoute = requestedSlug !== canonicalSlug;
const canonicalHref = `/glossaire/${canonicalSlug}/`;
const slugOf = (item) =>
String(item.id || "")
.trim()
.replace(/^\/+|\/+$/g, "")
.replace(/\.(md|mdx)$/i, "");
const hrefOf = (item) => `/glossaire/${slugOf(item)}/`;
const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
const bySlug = new Map(allEntries.map((item) => [slugOf(item), item]));
function resolveEntries(slugs = []) {
const seen = new Set();
return slugs
.map((slug) => bySlug.get(String(slug || "").trim()))
.filter(Boolean)
.filter((item) => {
const slug = slugOf(item);
if (seen.has(slug)) return false;
seen.add(slug);
return true;
})
.sort((a, b) => collator.compare(a.data.term, b.data.term));
}
const relatedEntries = resolveEntries(entry.data.related ?? []);
const opposedEntries = resolveEntries(entry.data.opposedTo ?? []);
const seeAlsoEntries = resolveEntries(entry.data.seeAlso ?? []);
const relationBlocks = [
{
title: "Concepts liés",
items: relatedEntries,
className: "is-related",
},
{
title: "En tension avec",
items: opposedEntries,
className: "is-opposed",
},
{
title: "Voir aussi",
items: seeAlsoEntries,
className: "is-see-also",
},
].filter((block) => block.items.length > 0);
const familyLabels = {
"concept-fondamental": "Concept fondamental",
scene: "Scène",
dynamique: "Dynamique",
pathologie: "Pathologie",
topologie: "Topologie",
"meta-regime": "Méta-régime",
paradigme: "Paradigme",
doctrine: "Doctrine",
verbe: "Verbe",
"dispositif-ia": "Dispositif IA",
"tension-irreductible": "Tension irréductible",
};
const kindLabels = {
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
const domainLabels = {
transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const familyKey = entry.data.family ?? "";
const displayFamily =
familyLabels[familyKey] ??
kindLabels[entry.data.kind] ??
"Fiche";
const displayDomain =
domainLabels[entry.data.domain] ??
entry.data.domain;
const displayLevel =
levelLabels[entry.data.level] ??
entry.data.level;
const hasScholarlyMeta =
(entry.data.mobilizedAuthors?.length ?? 0) > 0 ||
(entry.data.comparisonTraditions?.length ?? 0) > 0;
---
<GlossaryLayout
@@ -72,23 +173,66 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
</p>
)}
<h1>{entry.data.term}</h1>
<p><em>{entry.data.definitionShort}</em></p>
{(entry.data.mobilizedAuthors?.length > 0 || entry.data.comparisonTraditions) && (
<header class="glossary-entry-head">
<h1>{entry.data.term}</h1>
<p class="glossary-entry-dek">
<em>{entry.data.definitionShort}</em>
</p>
<div class="glossary-entry-signals" aria-label="Repères de lecture">
<span class="glossary-pill glossary-pill--family">
<strong>Famille :</strong> {displayFamily}
</span>
<span class="glossary-pill">
<strong>Domaine :</strong> {displayDomain}
</span>
<span class="glossary-pill">
<strong>Niveau :</strong> {displayLevel}
</span>
</div>
</header>
{hasScholarlyMeta && (
<div class="glossary-entry-meta">
{entry.data.mobilizedAuthors?.length > 0 && (
{(entry.data.mobilizedAuthors?.length ?? 0) > 0 && (
<p>
<strong>Auteurs mobilisés :</strong> {entry.data.mobilizedAuthors.join(" / ")}
</p>
)}
{entry.data.comparisonTraditions && (
{(entry.data.comparisonTraditions?.length ?? 0) > 0 && (
<p>
<strong>Traditions de comparaison :</strong> {entry.data.comparisonTraditions.join(" / ")}
</p>
)}
</div>
)}
<Content />
<div class="glossary-entry-body">
<Content />
</div>
{relationBlocks.length > 0 && (
<section class="glossary-relations" aria-label="Relations conceptuelles">
<h2>Relations conceptuelles</h2>
<div class="glossary-relations-grid">
{relationBlocks.map((block) => (
<section class={`glossary-relations-card ${block.className}`}>
<h3>{block.title}</h3>
<ul>
{block.items.map((item) => (
<li>
<a href={hrefOf(item)}>{item.data.term}</a>
<span> — {item.data.definitionShort}</span>
</li>
))}
</ul>
</section>
))}
</div>
</section>
)}
</GlossaryLayout>
<style>
@@ -99,10 +243,50 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
background: rgba(127,127,127,0.05);
font-size: 14px;
line-height: 1.45;
margin-bottom: 18px;
}
.glossary-entry-meta{
margin: 0 0 16px;
.glossary-entry-head{
margin-bottom: 18px;
}
.glossary-entry-head h1{
margin-bottom: 10px;
}
.glossary-entry-dek{
margin: 0 0 14px;
font-size: 1.02rem;
line-height: 1.6;
opacity: .95;
}
.glossary-entry-signals{
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0 0 6px;
}
.glossary-pill{
display: inline-flex;
align-items: center;
gap: 6px;
padding: 5px 10px;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 999px;
background: rgba(127,127,127,0.05);
font-size: 13px;
line-height: 1.35;
}
.glossary-pill--family{
border-color: rgba(127,127,127,0.36);
font-weight: 700;
}
.glossary-entry-meta{
margin: 0 0 18px;
padding: 10px 12px;
border: 1px solid rgba(127,127,127,0.18);
border-radius: 12px;
@@ -119,14 +303,77 @@ const canonicalHref = `/glossaire/${canonicalSlug}/`;
margin-top: 6px;
}
@media (prefers-color-scheme: dark){
.glossary-entry-meta{
background: rgba(255,255,255,0.03);
.glossary-entry-body{
margin-bottom: 28px;
}
.glossary-relations{
margin-top: 26px;
padding-top: 18px;
border-top: 1px solid rgba(127,127,127,0.18);
}
.glossary-relations h2{
margin-bottom: 14px;
}
.glossary-relations-grid{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 12px;
}
.glossary-relations-card{
border: 1px solid rgba(127,127,127,0.22);
border-radius: 16px;
padding: 14px 16px;
background: rgba(127,127,127,0.05);
}
.glossary-relations-card h3{
margin-top: 0;
margin-bottom: 10px;
font-size: 15px;
line-height: 1.35;
}
.glossary-relations-card ul{
margin: 0;
padding-left: 18px;
}
.glossary-relations-card li{
margin-bottom: 8px;
font-size: 14px;
line-height: 1.45;
}
.glossary-relations-card li:last-child{
margin-bottom: 0;
}
.glossary-relations-card span{
opacity: .9;
}
@media (max-width: 720px){
.glossary-entry-signals{
gap: 6px;
}
.glossary-pill{
font-size: 12px;
}
}
@media (prefers-color-scheme: dark){
.glossary-legacy-note{
.glossary-entry-meta{
background: rgba(255,255,255,0.03);
}
.glossary-legacy-note,
.glossary-pill,
.glossary-relations-card{
background: rgba(255,255,255,0.04);
}
}

View File

@@ -0,0 +1,223 @@
---
import SiteLayout from "../../layouts/SiteLayout.astro";
import { getCollection } from "astro:content";
const entries = await getCollection("glossaire");
const slugOf = (entry) => String(entry.id).replace(/\.(md|mdx)$/i, "");
const hrefOf = (entry) => `/glossaire/${slugOf(entry)}/`;
const collator = new Intl.Collator("fr", { sensitivity: "base", numeric: true });
const kindLabels = {
concept: "Concept",
diagnostic: "Diagnostic",
topologie: "Topologie",
verbe: "Verbe",
paradigme: "Paradigme",
doctrine: "Doctrine",
};
const domainLabels = {
transversal: "Transversal",
theorie: "Théorie",
"cas-ia": "Cas IA",
};
const levelLabels = {
fondamental: "Fondamental",
intermediaire: "Intermédiaire",
avance: "Avancé",
};
const sorted = [...entries].sort((a, b) => collator.compare(a.data.term, b.data.term));
function groupByInitial(list) {
const map = new Map();
for (const entry of list) {
const letter = (entry.data.term || "").trim().charAt(0).toUpperCase() || "#";
if (!map.has(letter)) map.set(letter, []);
map.get(letter).push(entry);
}
return [...map.entries()].sort((a, b) => collator.compare(a[0], b[0]));
}
const groupedAlpha = groupByInitial(sorted);
---
<SiteLayout title="Index complet du glossaire">
<section class="glossary-index-page">
<header class="glossary-index-page__hero">
<p class="glossary-index-page__kicker">Référentiel terminologique</p>
<h1>Index complet du glossaire</h1>
<p class="glossary-index-page__intro">
Cette page rassemble lensemble des entrées du glossaire dans un ordre alphabétique intégral.
Elle complète laccueil conceptuel du glossaire par une navigation plus encyclopédique.
</p>
</header>
<div class="glossary-index-page__topbar">
<a class="glossary-index-page__back" href="/glossaire/">← Retour à laccueil du glossaire</a>
<nav class="glossary-index-page__letters" aria-label="Lettres de lindex">
{groupedAlpha.map(([letter]) => (
<a href={`#letter-${letter}`}>{letter}</a>
))}
</nav>
</div>
<div class="glossary-index-page__groups">
{groupedAlpha.map(([letter, items]) => (
<section class="glossary-index-page__group" id={`letter-${letter}`}>
<h2>{letter}</h2>
<ul class="glossary-index-page__list">
{items.map((entry) => (
<li class="glossary-index-page__item">
<a class="glossary-index-page__term" href={hrefOf(entry)}>
{entry.data.term}
</a>
<p class="glossary-index-page__def">{entry.data.definitionShort}</p>
<p class="glossary-index-page__meta">
<span>{kindLabels[entry.data.kind] ?? entry.data.kind}</span>
<span>{domainLabels[entry.data.domain] ?? entry.data.domain}</span>
<span>{levelLabels[entry.data.level] ?? entry.data.level}</span>
</p>
</li>
))}
</ul>
</section>
))}
</div>
</section>
</SiteLayout>
<style>
.glossary-index-page{
padding: 8px 0 32px;
}
.glossary-index-page__hero{
margin-bottom: 22px;
}
.glossary-index-page__kicker{
margin: 0 0 8px;
font-size: 12px;
letter-spacing: .08em;
text-transform: uppercase;
opacity: .72;
}
.glossary-index-page__hero h1{
margin: 0 0 12px;
font-size: clamp(2.2rem, 4vw, 3rem);
line-height: 1.05;
letter-spacing: -.03em;
}
.glossary-index-page__intro{
max-width: 76ch;
margin: 0;
opacity: .92;
}
.glossary-index-page__topbar{
display: flex;
flex-direction: column;
gap: 14px;
margin: 22px 0 28px;
}
.glossary-index-page__back{
display: inline-flex;
width: fit-content;
align-items: center;
border: 1px solid rgba(127,127,127,0.28);
border-radius: 999px;
padding: 7px 14px;
text-decoration: none;
}
.glossary-index-page__letters{
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.glossary-index-page__letters a{
min-width: 34px;
text-align: center;
border: 1px solid rgba(127,127,127,0.24);
border-radius: 10px;
padding: 5px 8px;
text-decoration: none;
}
.glossary-index-page__groups{
display: flex;
flex-direction: column;
gap: 28px;
}
.glossary-index-page__group{
scroll-margin-top: calc(var(--sticky-offset) + 20px);
}
.glossary-index-page__group h2{
margin: 0 0 14px;
font-size: clamp(1.6rem, 2vw, 2rem);
line-height: 1.1;
}
.glossary-index-page__list{
list-style: none;
margin: 0;
padding: 0;
display: grid;
gap: 12px;
}
.glossary-index-page__item{
border: 1px solid rgba(127,127,127,0.20);
border-radius: 16px;
padding: 14px 16px;
background: rgba(127,127,127,0.04);
}
.glossary-index-page__term{
display: inline-block;
font-weight: 800;
font-size: 1.04rem;
text-decoration: none;
margin-bottom: 6px;
}
.glossary-index-page__def{
margin: 0 0 8px;
line-height: 1.5;
opacity: .94;
}
.glossary-index-page__meta{
display: flex;
flex-wrap: wrap;
gap: 8px;
margin: 0;
font-size: 12px;
opacity: .78;
}
.glossary-index-page__meta span{
border: 1px solid rgba(127,127,127,0.20);
border-radius: 999px;
padding: 2px 8px;
}
@media (prefers-color-scheme: dark){
.glossary-index-page__item{
background: rgba(255,255,255,0.04);
}
}
</style>

File diff suppressed because it is too large Load Diff