# Guide de contribution
Merci de votre intérêt pour contribuer au site de l'ORGANISATION KA INTERNATIONALE !
Le site est une application **SvelteKit + Svelte 5 (runes) + TypeScript**, entièrement pré-rendue en statique. Avant de contribuer, lisez `charte-oki-design-system.md` (marque) et `svelte_core_bestpractices.md` (conventions Svelte 5).
## Ajouter du contenu
Le contenu éditorial vit dans les bundles i18n : `src/lib/i18n/fr/*.json` et `src/lib/i18n/en/*.json` — **toujours modifier les deux locales**.
### Ajouter un service hébergé
Éditez `src/lib/i18n/fr/services.json` (et `en/`) :
```json
{
"name": "NOM_DU_SERVICE",
"platform": "Nom de la plateforme",
"description": "Description du service",
"url": "https://service.o-k-i.net/",
"linkText": "Accéder à SERVICE"
}
```
Le service apparaîtra automatiquement dans la grille de fallback du village (`HostingVillage.svelte`). Pour qu'il ait aussi son bâtiment dans la scène SVG, voir « Modifier un composant ».
### Ajouter un projet web
Éditez `src/lib/i18n/fr/projects.json` (et `en/`). Le champ `icon` attend un emoji legacy qui sera remplacé au rendu par un picto du sprite — voir le mapping dans `src/lib/components/sections/pictos.ts` et choisissez-en un qui y figure.
### Ajouter un client ou partenaire
Placez le logo dans `src/lib/assets/images/` (et `clients/` pour les clients), puis importez-le dans le composant de section concerné via vite-imagetools :
```ts
import logo from '$lib/assets/images/mon-logo.png?format=avif;webp;png&w=320;640&as=picture';
```
et affichez-le avec ``. Ne jamais référencer une image distante : tout asset est self-hébergé (doctrine souveraineté + CSP).
### Ajouter une valeur
Éditez `src/lib/i18n/fr/values.json` (et `en/`). Le champ `icon` suit le même mapping que les projets (`pictos.ts`).
### Modifier la navigation
Éditez `src/lib/i18n/fr/navigation.json` (et `en/`) :
```json
{ "text": "Texte du lien", "url": "/#ancre", "external": false }
```
Pour un lien externe, mettez `"external": true`. Les URLs de la version EN doivent pointer sous `/en/`.
### Modifier les informations de contact
Les liens de contact sont regroupés dans `src/lib/i18n/fr/contact.json` (et `en/`). L'icône de chaque lien est déduite de son libellé (`whatsapp`, `telegram`, `discord`, `labola`, `kontak`/`mail`). Les emojis en tête des titres de groupes sont convertis en pictos du sprite (`pictos.ts`).
## Modifier les styles
- **Tokens (couleurs, typo, espacements, motion)** : `src/lib/styles/oki-tokens.css` — ne jamais recopier une valeur de la charte à la main, utiliser les variables.
- **Primitives partagées** (boutons, cartes, tags, flag-bar, gate reduced-motion) : `src/lib/styles/base.css`.
- **Styles d'une section** : dans le `