Refonte complète en SvelteKit (méthode OKI, AI-Overview ready)
Reconstruit le site statique mono-page (Bulma + htmx + Strapi) en SvelteKit 2 + Svelte 5 (runes) + TypeScript, 100 % statique (adapter-static), auto-hébergé. - Contenu enrichi à partir du dossier documentaire sourcé : 28 pages (histoire, Mé 67, procès 1968, 9 fiches militants, idéologie, héritage, publications, charte, orientation, sources, FAQ, actualités, contact, mentions légales). - Souveraineté : retrait de Bulma/htmx/mustache/ionicons/Plausible/Google Fonts et de l'API Strapi. Polices Archivo/Inter et sprite SVG auto-hébergés (zéro emoji). - Identité GONG (drapeau vert/blanc/rouge), thème sombre par défaut + clair AA, cadences motion gwoka, KineticText, timeline, 404 kréyòl, PWA hors-ligne. - SEO/AI-Overview : HTML sémantique, JSON-LD (Organization, Person, Event, FAQPage, Article...), hreflang, sitemap dynamique, robots/humans.txt. - Sécurité : CSP hachée + en-têtes (.htaccess o2switch + _headers Cloudflare), HSTS. - Actualités éditées via Sveltia CMS (git-based) ; Strapi retiré. npm run build : vert · npm run check : 0 erreur / 0 warning · JS 97 Ko gzip. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b89c1a80b7
commit
cd9b9b093c
@@ -0,0 +1,208 @@
|
||||
<script lang="ts">
|
||||
import Seo from '$lib/components/Seo.svelte';
|
||||
import Breadcrumb from '$lib/components/Breadcrumb.svelte';
|
||||
import Resume from '$lib/components/Resume.svelte';
|
||||
import SectionTitle from '$lib/components/SectionTitle.svelte';
|
||||
import { webPage } from '$lib/seo';
|
||||
import { SITE, evenementsMai1967 as m } from '$lib/data/gong';
|
||||
|
||||
const crumbs = [
|
||||
{ name: 'Accueil', path: '/' },
|
||||
{ name: 'Mé 67', path: '/me-67/' }
|
||||
];
|
||||
|
||||
const eventNode = {
|
||||
'@type': 'Event',
|
||||
'@id': `${SITE.url}/me-67/#event`,
|
||||
name: 'Émeutes de mai 1967 en Guadeloupe (Mé 67)',
|
||||
description:
|
||||
"Répression sanglante d'une grève ouvrière à Pointe-à-Pitre les 26-28 mai 1967. Bilan estimé par les historiens : 80 à 200 victimes.",
|
||||
startDate: '1967-05-26',
|
||||
endDate: '1967-05-28',
|
||||
eventStatus: 'https://schema.org/EventScheduled',
|
||||
location: {
|
||||
'@type': 'Place',
|
||||
name: 'Pointe-à-Pitre, Guadeloupe',
|
||||
address: { '@type': 'PostalAddress', addressLocality: 'Pointe-à-Pitre', addressRegion: 'Guadeloupe', addressCountry: 'FR' }
|
||||
},
|
||||
about: { '@id': `${SITE.url}/#organization` }
|
||||
};
|
||||
</script>
|
||||
|
||||
<Seo
|
||||
title="Mé 67 — les émeutes de mai 1967 en Guadeloupe"
|
||||
description="Les 26-28 mai 1967, la répression d'une grève ouvrière à Pointe-à-Pitre fait de 8 (bilan officiel) à 200 morts (estimations des historiens). Récit, bilan et rôle du GONG."
|
||||
path="/me-67/"
|
||||
type="article"
|
||||
graph={[webPage('/me-67/', 'Mé 67 — émeutes de mai 1967', 'Récit et bilan des tueries de mai 1967 à Pointe-à-Pitre.'), eventNode]}
|
||||
breadcrumb={crumbs}
|
||||
/>
|
||||
|
||||
<main id="contenu" class="section">
|
||||
<div class="container">
|
||||
<Breadcrumb items={crumbs} />
|
||||
<p class="surtitre"><span class="flag-chip" aria-hidden="true"></span> 26 — 28 mai 1967 · Pointe-à-Pitre</p>
|
||||
<h1>Mé 67</h1>
|
||||
|
||||
<div class="lecture">
|
||||
<Resume
|
||||
lead="« Mé 67 » désigne la répression sanglante des 26, 27 et 28 mai 1967 à Pointe-à-Pitre, en Guadeloupe. Partie d'une grève des ouvriers du bâtiment, elle a fait, selon les historiens, entre 80 et 200 victimes — un massacre colonial longtemps occulté."
|
||||
points={[
|
||||
'Déclencheur : une grève pour +2,5 % de salaire, sur fond d’agression raciste.',
|
||||
'Le 26 mai, les forces de l’ordre tirent à balles réelles.',
|
||||
'Jacques Nestor, militant du GONG (26 ans), est la première victime.',
|
||||
'Bilan officiel : 7-8 morts. Estimations des historiens : 80 à 200 victimes.'
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- CONTEXTE -->
|
||||
<section class="section--tight">
|
||||
<SectionTitle title="Comment tout a commencé" as="h2" id="contexte" />
|
||||
<div class="lecture prose">
|
||||
<p><strong>Le contexte social.</strong> {m.contexte.social}</p>
|
||||
<p><strong>L'étincelle raciste.</strong> {m.contexte.racial}</p>
|
||||
<p><strong>Le contexte politique.</strong> {m.contexte.politique}</p>
|
||||
<p><strong>L'arrière-plan international.</strong> {m.contexte.international}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- DÉROULEMENT -->
|
||||
<section class="section--tight">
|
||||
<SectionTitle title="Trois jours de répression" as="h2" id="deroulement" />
|
||||
<ol class="jours">
|
||||
{#each Object.entries(m.deroulement) as [jour, recit] (jour)}
|
||||
<li class="jour">
|
||||
<p class="jour__date">{jour}</p>
|
||||
<p class="jour__txt">{recit}</p>
|
||||
</li>
|
||||
{/each}
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
<!-- BILAN -->
|
||||
<section class="section--tight">
|
||||
<SectionTitle title="Le bilan" as="h2" id="bilan" />
|
||||
<div class="bilan">
|
||||
<div class="bilan__stat"><span class="bilan__num">7–8</span><span>morts (bilan officiel)</span></div>
|
||||
<div class="bilan__stat is-strong"><span class="bilan__num">80–200</span><span>victimes (estimations des historiens)</span></div>
|
||||
<div class="bilan__stat"><span class="bilan__num">30+</span><span>blessés</span></div>
|
||||
</div>
|
||||
<p class="lecture prose note">{m.bilan.note}</p>
|
||||
</section>
|
||||
|
||||
<!-- RÔLE DU GONG -->
|
||||
<section class="section--tight">
|
||||
<SectionTitle title="Quel a été le rôle du GONG ?" as="h2" id="role-gong" />
|
||||
<div class="lecture prose">
|
||||
<p>
|
||||
Le GONG a soutenu les revendications ouvrières et participé à la mobilisation. Mais
|
||||
l'enquête a établi que les émeutes étaient <strong>spontanées</strong>.
|
||||
</p>
|
||||
<ul>
|
||||
{#each m.roleDuGONG.actions as a (a)}
|
||||
<li>{a}</li>
|
||||
{/each}
|
||||
</ul>
|
||||
<p><strong>La controverse.</strong> {m.roleDuGONG.controverse}</p>
|
||||
<blockquote>
|
||||
{m.roleDuGONG.rapportsPolice}
|
||||
<footer>— Commissaire divisionnaire Honoré Gévaudan, rapport de 1967</footer>
|
||||
</blockquote>
|
||||
<p><strong>Une élimination préméditée ?</strong> {m.roleDuGONG.analyse}</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<p class="src lecture">Sources : {m.source}.</p>
|
||||
|
||||
<nav class="suite" aria-label="Poursuivre la lecture">
|
||||
<a class="btn btn--ghost" href="/proces-1968/">Le procès de 1968 →</a>
|
||||
<a class="btn btn--ghost" href="/militants/jacques-nestor/">Jacques Nestor →</a>
|
||||
</nav>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<style>
|
||||
.surtitre {
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
font-family: var(--font-display);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
font-size: 0.85rem;
|
||||
color: var(--muted);
|
||||
}
|
||||
.jours {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: var(--space-2);
|
||||
}
|
||||
.jour {
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--line);
|
||||
border-left: 4px solid var(--accent);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-3);
|
||||
}
|
||||
.jour__date {
|
||||
font-family: var(--font-display);
|
||||
text-transform: uppercase;
|
||||
font-weight: 800;
|
||||
color: var(--accent);
|
||||
margin: 0 0 0.3rem;
|
||||
}
|
||||
.jour__txt {
|
||||
margin: 0;
|
||||
color: var(--muted);
|
||||
}
|
||||
.bilan {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||
gap: var(--space-2);
|
||||
margin-bottom: var(--space-3);
|
||||
}
|
||||
.bilan__stat {
|
||||
background: var(--card-bg);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-3);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.3rem;
|
||||
color: var(--muted);
|
||||
}
|
||||
.bilan__stat.is-strong {
|
||||
border-color: var(--accent);
|
||||
border-width: 2px;
|
||||
}
|
||||
.bilan__num {
|
||||
font-family: var(--font-display);
|
||||
font-weight: 900;
|
||||
font-size: 2rem;
|
||||
color: var(--creme);
|
||||
line-height: 1;
|
||||
}
|
||||
.note {
|
||||
font-style: italic;
|
||||
color: var(--muted);
|
||||
}
|
||||
.src {
|
||||
color: var(--muted-fort);
|
||||
font-size: 0.85rem;
|
||||
margin-top: var(--space-3);
|
||||
}
|
||||
.suite {
|
||||
display: flex;
|
||||
gap: 0.6rem;
|
||||
flex-wrap: wrap;
|
||||
margin-top: var(--space-4);
|
||||
}
|
||||
blockquote footer {
|
||||
margin-top: 0.4rem;
|
||||
font-size: 0.85rem;
|
||||
color: var(--muted-fort);
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user