feat(oki): intro publique, chimen, PWA offline, contribuer, kréyòl, ton OKI
- Landing : intro « Pourquoi ce site ? » (Chat Control expliqué au grand public) + sommaire-chimen en 3 arcs (Fondations 🟢 / Reprendre le contrôle 🟡 / Autodéfense avancée 🔴) avec compte d'outils par catégorie - PWA : service worker offline-first (précache coquille, network-first avec repli cache pour les fiches consultées), badge hors-ligne discret - Page /contribuer (3 voies + forge labola) + template d'issue Forgejo .gitea/ISSUE_TEMPLATE/nouvo-zouti.yaml ; liens GitHub → labola.o-k-i.net - Fiches jumelles créoles : chargeur content/outils/gcf/, affichage selon la langue avec bandeaux « an chantyé » / « póko tradui », 6 pilotes (signal, protonmail, brave, bitwarden, ublock, quad9) — À FAIRE RELIRE par un locuteur natif - Ton OKI : les 6 mêmes fiches réécrites (tutoiement, registre militant-chaleureux) ; le script de migration n'écrase plus les fiches retravaillées (--force pour tout régénérer) - UI : View Transitions (respect reduced-motion), aide clavier « ? » (dialog natif, raccourcis / h a), progression locale « jès fèt » (localStorage uniquement, compteur visible après le premier geste) - docs/DEPLOYMENT.md : guide VPS (Caddy, nginx, YunoHost, Docker, rsync) - Audits : axe-core 0 violation (5 pages), Lighthouse 99-98/100/100/100 ; corrections contraste monogrammes + ordre des titres - Budgets : JS 46 Ko gzip, CSS 3,5 Ko, 59 pages prérendues Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import DifficultyBadge from './DifficultyBadge.svelte'
|
||||
import { isAdopted } from '$lib/adopted.svelte'
|
||||
import { t } from '$lib/i18n/index.svelte'
|
||||
|
||||
interface CardTool {
|
||||
@@ -22,6 +23,13 @@
|
||||
{tool.monogram ?? tool.name.slice(0, 2)}
|
||||
</span>
|
||||
<h3><a href="/outils/{tool.slug}">{tool.name}</a></h3>
|
||||
{#if isAdopted(tool.slug)}
|
||||
<!-- information périphérique (doctrine §3.5) : discret, jamais bloquant -->
|
||||
<span class="adopted" title={t('adopted.marked')}>
|
||||
<span aria-hidden="true">✓</span>
|
||||
<span class="visually-hidden">{t('adopted.marked')}</span>
|
||||
</span>
|
||||
{/if}
|
||||
</header>
|
||||
|
||||
<p class="excerpt"><span class="visually-hidden">{t('tool.why')} : </span>{tool.excerpt}</p>
|
||||
@@ -51,14 +59,17 @@
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* la couleur de marque en anneau, jamais en fond de texte :
|
||||
contraste AA garanti quel que soit l'outil (doctrine §4.3) */
|
||||
.monogram {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
inline-size: 2.5rem;
|
||||
block-size: 2.5rem;
|
||||
border-radius: var(--radius-2);
|
||||
background: var(--tool-color, var(--oki-surface-2));
|
||||
color: white;
|
||||
background: var(--oki-surface-2);
|
||||
border: 3px solid var(--tool-color, var(--oki-line));
|
||||
color: var(--oki-ink);
|
||||
font-weight: 700;
|
||||
font-size: var(--text-0);
|
||||
}
|
||||
@@ -83,6 +94,18 @@
|
||||
border-radius: var(--radius-2);
|
||||
}
|
||||
|
||||
.adopted {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
inline-size: 1.4rem;
|
||||
block-size: 1.4rem;
|
||||
border-radius: 50%;
|
||||
background: var(--oki-vert);
|
||||
color: oklch(98% 0 0);
|
||||
font-size: var(--text-0);
|
||||
margin-inline-start: auto;
|
||||
}
|
||||
|
||||
.excerpt {
|
||||
color: var(--oki-ink-2);
|
||||
font-size: var(--text-0);
|
||||
|
||||
Reference in New Issue
Block a user