forked from ORGANISATION-KA-INTERNATIONALE/FEDIVERSE-OKI
Réécriture SvelteKit statique (Svelte 5 runes + TS, adapter-static)
- Données PeerTube (GADE), Castopod (KUTE) et Mastodon (BOKANTE) bakées au build via +page.server.ts (throttle + retry 429 + déduplication) - Charte OKI complète : tokens, thème sombre par défaut (clair opt-in, anti-FOUC), Archivo/Inter self-hébergées, flag-bar, sprite SVG (zéro emoji en interface, zéro Font Awesome/CDN) - i18n FR/EN par routage [[locale]], bundles JSON, hreflang, %lang% serveur - Pages : accueil, /video/[uuid] (embed, téléchargements, partage, commentaires, JSON-LD VideoObject), /categories/[id], /recherche (index JSON baké, recherche client), /direct (live + annonce multi-fuseaux), /dons, /mentions-legales, /offline + 404 kréyòl - Motion gwoka : KineticText (scrub view()), ScrollProgressBar, FlagChip, reveal syncopé, View Transitions, gate prefers-reduced-motion unique - PWA : manifest + Workbox generateSW (fallback /offline/), registerSW statique - Sécurité : CSP par page en <meta> (SHA-256 des inline via scripts/postbuild-csp.mjs) + headers globaux (_headers Cloudflare et .htaccess o2switch), redirections des anciennes URLs PHP - Doc : docs/DEPLOIEMENT-SVELTEKIT.md
This commit is contained in:
+113
@@ -0,0 +1,113 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<title>404 — Paj la pa la</title>
|
||||
<style>
|
||||
:root {
|
||||
--noir-oki: #0d0d0d;
|
||||
--blanc-creme: #fff8e7;
|
||||
--or-oki: #fdb813;
|
||||
--vert-oki: #00d66c;
|
||||
--rouge-oki: #ff1654;
|
||||
--line: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Archivo', 'Arial Black', Arial, sans-serif;
|
||||
background: var(--noir-oki);
|
||||
color: var(--blanc-creme);
|
||||
min-height: 100dvh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.flag-bar {
|
||||
height: 6px;
|
||||
background: linear-gradient(
|
||||
to right,
|
||||
var(--noir-oki) 0 25%,
|
||||
var(--or-oki) 25% 50%,
|
||||
var(--vert-oki) 50% 75%,
|
||||
var(--rouge-oki) 75% 100%
|
||||
);
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 1.5rem;
|
||||
text-align: center;
|
||||
padding: 4rem 1.5rem;
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 96px;
|
||||
height: 96px;
|
||||
color: var(--or-oki);
|
||||
}
|
||||
|
||||
.status {
|
||||
font-weight: 900;
|
||||
font-size: clamp(3rem, 10vw, 6rem);
|
||||
line-height: 1;
|
||||
color: var(--or-oki);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 900;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -0.01em;
|
||||
font-size: clamp(1.6rem, 5vw, 2.6rem);
|
||||
}
|
||||
|
||||
p {
|
||||
opacity: 0.7;
|
||||
font-family: 'Inter', Arial, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
display: inline-block;
|
||||
padding: 0.75rem 1.5rem;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.03em;
|
||||
color: var(--or-oki);
|
||||
border: 2px solid var(--or-oki);
|
||||
border-radius: 3px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover,
|
||||
a:focus-visible {
|
||||
background: var(--or-oki);
|
||||
color: var(--noir-oki);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="flag-bar" aria-hidden="true"></div>
|
||||
<main>
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="square" aria-hidden="true">
|
||||
<path d="M4 6h16v12H4z" />
|
||||
<path d="M4 6l3-3h10l3 3M4 18l3 3h10l3-3M4 10h16M4 14h16" />
|
||||
</svg>
|
||||
<p class="status">404</p>
|
||||
<h1 lang="gcf">Paj la pa la</h1>
|
||||
<p>Cette page n'existe pas ou a été déplacée.</p>
|
||||
<a href="/">Retour à l'accueil</a>
|
||||
</main>
|
||||
<div class="flag-bar" aria-hidden="true"></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user