feat(glossaire): enrich entries and refine glossary navigation #281
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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([]),
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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 à d’autres sans produire une forme unifiée."
|
||||
definitionShort: "Configurations dans lesquelles un méta-régime archicratique se module, se fragmente ou se combine à d’autres 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où l’obligation 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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où la régulation s’incarne
|
||||
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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Méta-régime de co-viabilité où l’obligation 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"]
|
||||
|
||||
@@ -9,6 +9,7 @@ definitionShort: "Dérive d’un 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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme d’analyse 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"]
|
||||
|
||||
@@ -9,6 +9,7 @@ definitionShort: "Capacité d’un 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Doctrine fondatrice selon laquelle l’ordre 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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme politique fondant la légitimité de l’ordre 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel l’ordre 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme d’analyse 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation dans lequel l’ordre 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"]
|
||||
|
||||
@@ -20,6 +20,7 @@ concepts:
|
||||
- "conflit"
|
||||
links: []
|
||||
kind: "paradigme"
|
||||
family: "paradigme"
|
||||
domain: "theorie"
|
||||
level: "avance"
|
||||
related:
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme de régulation fondé sur l’ambivalence constituti
|
||||
concepts: ["pharmacologie-technique", "technique", "soin", "attention", "automatisation"]
|
||||
links: []
|
||||
kind: "paradigme"
|
||||
family: "paradigme"
|
||||
domain: "theorie"
|
||||
level: "avance"
|
||||
related: ["archicratie", "co-viabilite", "tension", "preemption-algorithmique"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -9,6 +9,7 @@ definitionShort: "Espace de comparution, d’exposition 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel les conflits sociaux s’o
|
||||
concepts: ["justification", "grandeur", "cites", "regimes-de-justification"]
|
||||
links: []
|
||||
kind: "paradigme"
|
||||
family: "paradigme"
|
||||
domain: "theorie"
|
||||
level: "avance"
|
||||
related: ["dissensus-politique", "scene-depreuve", "democratie-deliberative"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme relationnel dans lequel la qualité d’un 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"]
|
||||
|
||||
@@ -12,6 +12,7 @@ definitionShort: "Paradigme sociologique selon lequel l’action 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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
223
src/pages/glossaire/index-complet.astro
Normal file
223
src/pages/glossaire/index-complet.astro
Normal 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 l’ensemble des entrées du glossaire dans un ordre alphabétique intégral.
|
||||
Elle complète l’accueil 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 à l’accueil du glossaire</a>
|
||||
|
||||
<nav class="glossary-index-page__letters" aria-label="Lettres de l’index">
|
||||
{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
Reference in New Issue
Block a user