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  
- Renommage svelte_core_bestpractices.md
- Passe svelte-autofixer : 0 issue restante hors {@html} first-party assumés
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user