docs+fix: nettoyage post-migration et conformité svelte-autofixer

- CONTRIBUTING.md et SEO.md réécrits pour la structure SvelteKit
- README : section documents de référence (charte, recette, AGENTS.md, guides Svelte 5)
- Liens internes via resolve()/asset() de $app/paths, externes en rel="external"
- Seo.svelte : JSON-LD construits dans le script (</script> échappé)
- Titres de sections : {' '} remplacé par &#32;
- Renommage svelte_core_bestpractices.md
- Passe svelte-autofixer : 0 issue restante hors {@html} first-party assumés
This commit is contained in:
sucupira
2026-07-21 08:41:55 -04:00
parent d0d80a105e
commit 30858926fa
28 changed files with 217 additions and 277 deletions
+2 -1
View File
@@ -1,5 +1,6 @@
<script lang="ts">
import { page } from '$app/state';
import { resolve } from '$app/paths';
const status = $derived(page.status);
const is404 = $derived(status === 404);
@@ -19,7 +20,7 @@
{:else}
<p class="fr">{page.error?.message ?? 'Une erreur est survenue.'}</p>
{/if}
<a class="btn" href="/">Retour à l'accueil</a>
<a class="btn" href={resolve('/')}>Retour à l'accueil</a>
</section>
<style>
+5 -4
View File
@@ -1,4 +1,5 @@
<script lang="ts">
// {@html} sur contenu first-party (JSON i18n du dépôt), aucune donnée utilisateur.
import Seo from '$lib/components/Seo.svelte';
import donations from '$lib/data/donations.json';
import { getBundle } from '$lib/i18n';
@@ -46,7 +47,7 @@
<div class="donation-grid">
{#each donations.oneTime as d (d.url)}
<a href={d.url} class="donation-amount" target="_blank" rel="noopener noreferrer">
<a href={d.url} class="donation-amount" target="_blank" rel="external noopener noreferrer">
{d.amount}{t.support.one_time_suffix}
</a>
{/each}
@@ -86,7 +87,7 @@
href={d.url}
class="donation-amount monthly"
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
>
{d.amount}{t.support.monthly_suffix}
</a>
@@ -126,7 +127,7 @@
<a
href={donations.liberapay}
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
class="alt-donation-card alt-donation-card--liberapay"
>
<svg class="icon alt-donation-icon" aria-hidden="true"
@@ -139,7 +140,7 @@
<a
href={donations.kofi}
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
class="alt-donation-card alt-donation-card--kofi"
>
<svg class="icon alt-donation-icon" aria-hidden="true"
+5 -4
View File
@@ -1,4 +1,5 @@
<script lang="ts">
// {@html} sur contenu first-party (JSON i18n du dépôt), aucune donnée utilisateur.
import Seo from '$lib/components/Seo.svelte';
import donations from '$lib/data/donations.json';
import { getBundle } from '$lib/i18n';
@@ -46,7 +47,7 @@
<div class="donation-grid">
{#each donations.oneTime as d (d.url)}
<a href={d.url} class="donation-amount" target="_blank" rel="noopener noreferrer">
<a href={d.url} class="donation-amount" target="_blank" rel="external noopener noreferrer">
{d.amount}{t.support.one_time_suffix}
</a>
{/each}
@@ -86,7 +87,7 @@
href={d.url}
class="donation-amount monthly"
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
>
{d.amount}{t.support.monthly_suffix}
</a>
@@ -126,7 +127,7 @@
<a
href={donations.liberapay}
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
class="alt-donation-card alt-donation-card--liberapay"
>
<svg class="icon alt-donation-icon" aria-hidden="true"
@@ -139,7 +140,7 @@
<a
href={donations.kofi}
target="_blank"
rel="noopener noreferrer"
rel="external noopener noreferrer"
class="alt-donation-card alt-donation-card--kofi"
>
<svg class="icon alt-donation-icon" aria-hidden="true"
+2 -1
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import { resolve } from '$app/paths';
import Seo from '$lib/components/Seo.svelte';
import { getBundle } from '$lib/i18n';
@@ -212,7 +213,7 @@
<!-- Back to Home -->
<div class="legal-back">
<a href="/en/" class="btn btn-solid">{t.ui.back_home}</a>
<a href={resolve('/en/')} class="btn btn-solid">{t.ui.back_home}</a>
</div>
</div>
</section>
+5 -4
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import { asset } from '$app/paths';
import ResponsiveImage from '$lib/components/ResponsiveImage.svelte';
import Seo from '$lib/components/Seo.svelte';
import KineticText from '$lib/components/motion/KineticText.svelte';
@@ -48,18 +49,18 @@
<div class="press-visual-grid">
{#each t.press.visuals as visual, i (visual.pdf)}
<div class="press-visual">
<a href={pictures[i].img.src} target="_blank" rel="noopener noreferrer">
<a href={asset(pictures[i].img.src)} target="_blank" rel="noopener noreferrer">
<ResponsiveImage picture={pictures[i]} alt={visual.caption} loading="lazy" />
<span class="press-visual-caption">{visual.caption}</span>
</a>
<a href="/assets/press/{visual.pdf}" class="press-visual-pdf-link">
<a href={asset(`/assets/press/${visual.pdf}`)} class="press-visual-pdf-link">
{t.press.visual_pdf_label}
</a>
</div>
{/each}
</div>
<div class="press-visuals-pdf">
<a href="/assets/press/{t.press.visuals_pdf_file}" class="btn btn-solid">
<a href={asset(`/assets/press/${t.press.visuals_pdf_file}`)} class="btn btn-solid">
{t.press.visuals_pdf_label}
</a>
</div>
@@ -71,7 +72,7 @@
<KineticText text={t.press.links_title} as="h2" class="press-section-title" />
<div class="press-links-list">
{#each t.press.links as link (link.url)}
<a href={link.url} target="_blank" rel="noopener noreferrer">{link.text}</a>
<a href={link.url} target="_blank" rel="external noopener noreferrer">{link.text}</a>
{/each}
</div>
</div>
+2 -1
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import { resolve } from '$app/paths';
import Seo from '$lib/components/Seo.svelte';
import { getBundle } from '$lib/i18n';
@@ -221,7 +222,7 @@
<!-- Retour à l'accueil -->
<div class="legal-back">
<a href="/" class="btn btn-solid">{t.ui.back_home}</a>
<a href={resolve('/')} class="btn btn-solid">{t.ui.back_home}</a>
</div>
</div>
</section>
+5 -1
View File
@@ -1,3 +1,7 @@
<script lang="ts">
import { resolve } from '$app/paths';
</script>
<svelte:head>
<title>Hors ligne · ORGANISATION KA INTERNATIONALE</title>
<meta name="robots" content="noindex" />
@@ -12,7 +16,7 @@
rétablie.
</p>
<p class="fr" lang="en">This page is not available offline. It will be back as soon as your connection is restored.</p>
<a class="btn" href="/">Retour à l'accueil</a>
<a class="btn" href={resolve('/')}>Retour à l'accueil</a>
</section>
<style>
+5 -4
View File
@@ -1,4 +1,5 @@
<script lang="ts">
import { asset } from '$app/paths';
import ResponsiveImage from '$lib/components/ResponsiveImage.svelte';
import Seo from '$lib/components/Seo.svelte';
import KineticText from '$lib/components/motion/KineticText.svelte';
@@ -48,18 +49,18 @@
<div class="press-visual-grid">
{#each t.press.visuals as visual, i (visual.pdf)}
<div class="press-visual">
<a href={pictures[i].img.src} target="_blank" rel="noopener noreferrer">
<a href={asset(pictures[i].img.src)} target="_blank" rel="noopener noreferrer">
<ResponsiveImage picture={pictures[i]} alt={visual.caption} loading="lazy" />
<span class="press-visual-caption">{visual.caption}</span>
</a>
<a href="/assets/press/{visual.pdf}" class="press-visual-pdf-link">
<a href={asset(`/assets/press/${visual.pdf}`)} class="press-visual-pdf-link">
{t.press.visual_pdf_label}
</a>
</div>
{/each}
</div>
<div class="press-visuals-pdf">
<a href="/assets/press/{t.press.visuals_pdf_file}" class="btn btn-solid">
<a href={asset(`/assets/press/${t.press.visuals_pdf_file}`)} class="btn btn-solid">
{t.press.visuals_pdf_label}
</a>
</div>
@@ -71,7 +72,7 @@
<KineticText text={t.press.links_title} as="h2" class="press-section-title" />
<div class="press-links-list">
{#each t.press.links as link (link.url)}
<a href={link.url} target="_blank" rel="noopener noreferrer">{link.text}</a>
<a href={link.url} target="_blank" rel="external noopener noreferrer">{link.text}</a>
{/each}
</div>
</div>