Compare commits
14 Commits
docs/local
...
2f249b420f
| Author | SHA1 | Date | |
|---|---|---|---|
| 2f249b420f | |||
| d6b4eb82f4 | |||
| bfa44fecda | |||
| e329235aa9 | |||
| 8cbaa5117c | |||
| 3086f333ed | |||
| c1c3c19d13 | |||
| ddcd0acd4d | |||
| 9bc4eeb3e7 | |||
| 7a9a5319ac | |||
| 7d75de5c9f | |||
| a1bfbf4405 | |||
|
|
be26b425d8 | ||
|
|
abf88e7037 |
@@ -297,6 +297,19 @@ jobs:
|
||||
docker image tag archicratie-web:blue "archicratie-web:blue.BAK.${TS}" || true
|
||||
docker image tag archicratie-web:green "archicratie-web:green.BAK.${TS}" || true
|
||||
|
||||
BUILD_TIME_RAW="$(TZ=Europe/Paris date '+%Y-%m-%dT%H:%M:%S%z')"
|
||||
BUILD_TIME="${BUILD_TIME_RAW:0:${#BUILD_TIME_RAW}-2}:${BUILD_TIME_RAW:${#BUILD_TIME_RAW}-2}"
|
||||
|
||||
PUBLIC_OPS_ENV=staging \
|
||||
PUBLIC_OPS_UPSTREAM=web_blue \
|
||||
PUBLIC_BUILD_SHA="${AFTER}" \
|
||||
PUBLIC_BUILD_TIME="${BUILD_TIME}" \
|
||||
node scripts/write-ops-health.mjs
|
||||
|
||||
test -f public/__ops/health.json
|
||||
echo "=== public/__ops/health.json (blue/staging) ==="
|
||||
cat public/__ops/health.json
|
||||
|
||||
docker compose -p "$PROJ" -f docker-compose.yml build web_blue
|
||||
docker rm -f archicratie-web-blue || true
|
||||
docker compose -p "$PROJ" -f docker-compose.yml up -d --force-recreate --remove-orphans web_blue
|
||||
@@ -306,6 +319,11 @@ jobs:
|
||||
wait_url "http://127.0.0.1:8081/annotations-index.json" "blue annotations-index"
|
||||
wait_url "http://127.0.0.1:8081/pagefind/pagefind.js" "blue pagefind.js"
|
||||
|
||||
wait_url "http://127.0.0.1:8081/__ops/health.json" "blue ops health"
|
||||
|
||||
curl -fsS --max-time 6 "http://127.0.0.1:8081/__ops/health.json" \
|
||||
| python3 -c 'import sys, json; j=json.load(sys.stdin); print("env=", j.get("env")); print("upstream=", j.get("upstream")); print("buildSha=", j.get("buildSha")); print("builtAt=", j.get("builtAt"))'
|
||||
|
||||
CANON="$(curl -fsS --max-time 6 "http://127.0.0.1:8081/archicrat-ia/chapitre-1/" | grep -oE 'rel="canonical" href="[^"]+"' | head -n1 || true)"
|
||||
echo "canonical(blue)=$CANON"
|
||||
echo "$CANON" | grep -q 'https://staging\.archicratie\.trans-hands\.synology\.me/' || {
|
||||
@@ -353,6 +371,19 @@ jobs:
|
||||
docker compose -p "$PROJ" -f docker-compose.yml up -d --force-recreate --remove-orphans web_green || true
|
||||
}
|
||||
|
||||
BUILD_TIME_RAW="$(TZ=Europe/Paris date '+%Y-%m-%dT%H:%M:%S%z')"
|
||||
BUILD_TIME="${BUILD_TIME_RAW:0:${#BUILD_TIME_RAW}-2}:${BUILD_TIME_RAW:${#BUILD_TIME_RAW}-2}"
|
||||
|
||||
PUBLIC_OPS_ENV=prod \
|
||||
PUBLIC_OPS_UPSTREAM=web_green \
|
||||
PUBLIC_BUILD_SHA="${AFTER}" \
|
||||
PUBLIC_BUILD_TIME="${BUILD_TIME}" \
|
||||
node scripts/write-ops-health.mjs
|
||||
|
||||
test -f public/__ops/health.json
|
||||
echo "=== public/__ops/health.json (green/prod) ==="
|
||||
cat public/__ops/health.json
|
||||
|
||||
# build/restart green
|
||||
if ! docker compose -p "$PROJ" -f docker-compose.yml build web_green; then
|
||||
echo "❌ build green failed"; rollback; exit 4
|
||||
@@ -366,6 +397,11 @@ jobs:
|
||||
if ! wait_url "http://127.0.0.1:8082/annotations-index.json" "green annotations-index"; then rollback; exit 4; fi
|
||||
if ! wait_url "http://127.0.0.1:8082/pagefind/pagefind.js" "green pagefind.js"; then rollback; exit 4; fi
|
||||
|
||||
if ! wait_url "http://127.0.0.1:8082/__ops/health.json" "green ops health"; then rollback; exit 4; fi
|
||||
|
||||
curl -fsS --max-time 6 "http://127.0.0.1:8082/__ops/health.json" \
|
||||
| python3 -c 'import sys, json; j=json.load(sys.stdin); print("env=", j.get("env")); print("upstream=", j.get("upstream")); print("buildSha=", j.get("buildSha")); print("builtAt=", j.get("builtAt"))'
|
||||
|
||||
CANON="$(curl -fsS --max-time 6 "http://127.0.0.1:8082/archicrat-ia/chapitre-1/" | grep -oE 'rel="canonical" href="[^"]+"' | head -n1 || true)"
|
||||
echo "canonical(green)=$CANON"
|
||||
echo "$CANON" | grep -q 'https://archicratie\.trans-hands\.synology\.me/' || {
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -31,3 +31,4 @@ public/favicon_io.zip
|
||||
|
||||
# local temp workspace
|
||||
.tmp/
|
||||
public/__ops/health.json
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
20
scripts/write-ops-health.mjs
Normal file
20
scripts/write-ops-health.mjs
Normal file
@@ -0,0 +1,20 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
const root = process.cwd();
|
||||
const outDir = path.join(root, "public", "__ops");
|
||||
const outFile = path.join(outDir, "health.json");
|
||||
|
||||
const payload = {
|
||||
service: "archicratie-site",
|
||||
env: process.env.PUBLIC_OPS_ENV || "unknown",
|
||||
upstream: process.env.PUBLIC_OPS_UPSTREAM || "unknown",
|
||||
buildSha: process.env.PUBLIC_BUILD_SHA || "unknown",
|
||||
builtAt: process.env.PUBLIC_BUILD_TIME || new Date().toISOString(),
|
||||
};
|
||||
|
||||
fs.mkdirSync(outDir, { recursive: true });
|
||||
fs.writeFileSync(outFile, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
||||
|
||||
console.log(`✅ ops health written: ${outFile}`);
|
||||
console.log(payload);
|
||||
@@ -2,6 +2,8 @@
|
||||
"/archicrat-ia/prologue/": {
|
||||
"p-0-d7974f88": "p-0-e729df02",
|
||||
"p-17-b8c5bf21": "p-17-3deef56b",
|
||||
"p-22-a416d473": "p-22-5bfa283b",
|
||||
"p-23-d91a7b78": "p-23-0e7b37e9",
|
||||
"p-4-8ed4f807": "p-4-90b2a1cc",
|
||||
"p-5-85126fa5": "p-5-d788c546",
|
||||
"p-7-64a0ca9c": "p-7-4efdb1d4"
|
||||
|
||||
@@ -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([]),
|
||||
|
||||
@@ -56,9 +56,9 @@ Cela signifie que le politique s’est décousu de ses formes historiques. Il co
|
||||
|
||||
Autrement dit, nous avons changé d’époque sans encore avoir pu changé de lexique. Nous continuons de penser avec des formes obsolètes ce qui s’active sous nos yeux. Nous employons les mots d’hier pour décrire des processus qui les excèdent de toutes parts. Nous parlons de gouvernements, là où il faudrait parler de structures de régulation composite. Nous discutons de lois, là où il faudrait décrire des protocoles, des seuils, des scénographies d’ajustement, des mécanismes de *feedback* algorithmique, des normes sans normalisateurs.
|
||||
|
||||
Cette disjonction entre l’expérience vécue de la contrainte et le vocabulaire disponible pour la dire n’est pas qu’un problème théorique. Elle produit une désorientation profonde. Elle empêche de penser le réel, de localiser les responsabilités et rend inopérantes les critiques. Elle altère la capacité collective à formuler des exigences, jusqu’à dissoudre les repères et les registres d’action.
|
||||
Cette disjonction entre l’expérience vécue de la contrainte et le vocabulaire disponible pour l'exprimer n’est pas qu’un problème théorique. Elle produit une désorientation profonde. Elle empêche de penser le réel, de localiser les responsabilités et rend inopérantes les critiques. Elle altère la capacité collective à formuler des exigences, jusqu’à dissoudre les repères et les registres d’action.
|
||||
|
||||
Cette impuissance démocratique généralisée à nommer, situer, orienter les formes réelles de la régulation se donne parfois à voir dans des situations d’apparente clarté — et c’est peut-être là le plus troublant. Prenons un exemple rendu brûlant par l’actualité française en 2025 : la proposition de ce que l’on appelle la *taxe Zucman*. Formulée par l’éminent économiste Gabriel Zucman, cette mesure vise à instaurer un impôt minimal annuel sur le patrimoine des ultra-riches — en France et dans le monde — au-delà d’un seuil (autour de 100 millions d’euros). Le taux proposé est d’environ 2 % sur la valeur totale du patrimoine net, qu’il soit liquide ou partiellement non liquide (actions non cotées, participations, biens immobiliers), ce qui pose des défis de paiement et d’évaluation.
|
||||
Cette impuissance démocratique à nommer, situer et orienter les formes réelles de la régulation — impuissance qui tend à se généraliser — apparaît parfois au grand jour dans des situations d’apparente clarté, ce qui est peut‑être le plus troublant. En témoigne un exemple rendu brûlant par l’actualité française de 2025 : la proposition de ce qu’on a appelé la taxe Zucman. Formulée par l’économiste Gabriel Zucman, cette mesure prévoit l’instauration d’un impôt minimal annuel sur le patrimoine des ultra-riches, en France comme à l’échelle mondiale, au‑delà d’un seuil d’environ 100 millions d’euros. Le taux proposé, de l’ordre de 2% de la valeur totale du patrimoine net, qu’il soit liquide ou non (actions non cotées, participations, biens immobiliers), soulève toutefois d’importants problèmes de paiement et d’évaluation.
|
||||
|
||||
L’idée est de corriger ce que Zucman identifie comme un déséquilibre fiscal majeur : les très grandes fortunes paient aujourd’hui, proportionnellement, beaucoup moins que ce que permettrait une imposition équitable et progressive, notamment en raison de l’évasion fiscale, de la mise sous structures opaques par *holding*, du transfert du patrimoine privée en patrimoine professionnel ou de la dissociation entre richesse effective et revenu imposable.
|
||||
|
||||
|
||||
@@ -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"]
|
||||
@@ -41,7 +42,9 @@ L’archicration se joue dans les scènes de création et de réception des form
|
||||
|
||||
Ces régimes montrent que la co-viabilité peut être stabilisée par des dispositifs sensibles et symboliques.
|
||||
|
||||
La forme esthétique devient alors une infrastructure du lien social.
|
||||
Mais ces formes peuvent également reconfigurer la perception du commun, déplacer les frontières du visible et du dicible et ouvrir des scènes de dissensus.
|
||||
|
||||
La forme esthétique devient ainsi une infrastructure du lien social, capable à la fois de stabiliser et de transformer l’ordre collectif.
|
||||
|
||||
## Renvois
|
||||
|
||||
|
||||
@@ -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