Contribution
Contribuer à TDS
TDS est un projet open source. Les contributions sont bienvenues mais soumises à un processus de validation rigoureux pour garantir la stabilité du système.
Principes de contribution
Stabilité avant tout
TDS est utilisé par des services publics critiques. Chaque modification peut affecter des milliers d’interfaces. La stabilité prime sur les nouvelles fonctionnalités.
Rétrocompatibilité obligatoire
- Aucune suppression d’export public sans version majeure (semver)
- Aucune modification de token existant sans dépréciation préalable
- Les nouvelles fonctionnalités doivent être additives
Qualité non négociable
- Zéro erreur TypeScript
- Tests de validation passants
- Accessibilité WCAG AA pour tout nouveau composant
- Documentation obligatoire pour tout nouveau token ou composant
Types de contributions acceptées
| Type | Bienvenus | Processus |
|---|---|---|
| Correction de bug | ✅ | PR directe avec description du bug |
| Amélioration accessibilité | ✅ | PR avec description des tests AT |
| Nouveau token | ⚠️ | Discussion issue d’abord |
| Nouveau composant | ⚠️ | RFC obligatoire, discussion large |
| Refactoring majeur | ⚠️ | Approbation de l’équipe core |
| Modification de token existant | 🚫 | Rupture d’API — version majeure uniquement |
| Suppression d’export | 🚫 | Rupture d’API — version majeure uniquement |
Processus de contribution
-
Ouvrir une issue
Avant tout travail, ouvrez une issue pour décrire ce que vous souhaitez modifier. Cela évite les PR rejetées après travail.
Titre : [Bug] Le bouton danger ne respecte pas le contraste WCAG AA en état hoverDescription :- Version TDS affectée : 0.1.0- Comportement observé : ...- Comportement attendu : ...- Environnement : Chrome 120, Windows 11 -
Fork et branche
Fenêtre de terminal # Fork le dépôt sur GitHubgit clone https://github.com/VOTRE_USERNAME/tds.gitcd tds# Installer les dépendancespnpm install# Créer une branche descriptivegit checkout -b fix/button-danger-hover-contrast# ougit checkout -b feat/add-alert-component -
Développer
Fenêtre de terminal # Mode watchpnpm dev# Vérifier les typespnpm typecheck# Valider les tokenspnpm --filter @tds-tchad/core validate:tokens# Builderpnpm build# Valider les exportspnpm --filter @tds-tchad/core validate:exports -
Lint et format
Fenêtre de terminal pnpm lintpnpm format -
Ouvrir une Pull Request
Titre : fix: corriger le contraste du bouton danger en hoverDescription :## Problème résoluLe bouton danger (#DA291C) en état hover utilisait #FF665D (red.400)qui ne respectait pas le contraste WCAG AA (ratio 3.2:1 < 4.5:1 requis).## SolutionLe hover du bouton danger utilise désormais #B21F16 (red.600)qui respecte le contraste AA (ratio 6.1:1).## Tests- [ ] Testé en navigation clavier- [ ] Contraste vérifié avec axe DevTools- [ ] TypeScript sans erreur- [ ] Build successful
Standards de code
TypeScript
- Tous les exports publics doivent avoir un type explicite
- Pas de
any - Pas de
@ts-ignoresans justification dans un commentaire
Tokens
- Chaque nouveau token doit exister en
.ts,.jsonET.css - Les noms de tokens suivent la convention :
--tds-[catégorie]-[propriété]-[variante] - Les valeurs de tokens doivent être stables — pas de valeurs calculées complexes
CSS
- Pas de
!importantsauf en dernier recours justifié - Utiliser les tokens existants pour les valeurs
- Les sélecteurs ne dépassent pas 2 niveaux de spécificité
Versionnement (semver)
TDS suit la sémantique de versionnement stricte :
| Type de changement | Version |
|---|---|
| Correction de bug sans rupture | Patch (0.1.X) |
| Nouvelle fonctionnalité sans rupture | Minor (0.X.0) |
| Suppression d’export, modification de token | Major (X.0.0) |