Aller au contenu

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

TypeBienvenusProcessus
Correction de bugPR 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

  1. 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 hover
    Description :
    - Version TDS affectée : 0.1.0
    - Comportement observé : ...
    - Comportement attendu : ...
    - Environnement : Chrome 120, Windows 11
  2. Fork et branche

    Fenêtre de terminal
    # Fork le dépôt sur GitHub
    git clone https://github.com/VOTRE_USERNAME/tds.git
    cd tds
    # Installer les dépendances
    pnpm install
    # Créer une branche descriptive
    git checkout -b fix/button-danger-hover-contrast
    # ou
    git checkout -b feat/add-alert-component
  3. Développer

    Fenêtre de terminal
    # Mode watch
    pnpm dev
    # Vérifier les types
    pnpm typecheck
    # Valider les tokens
    pnpm --filter @tds-tchad/core validate:tokens
    # Builder
    pnpm build
    # Valider les exports
    pnpm --filter @tds-tchad/core validate:exports
  4. Lint et format

    Fenêtre de terminal
    pnpm lint
    pnpm format
  5. Ouvrir une Pull Request

    Titre : fix: corriger le contraste du bouton danger en hover
    Description :
    ## Problème résolu
    Le 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).
    ## Solution
    Le 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-ignore sans justification dans un commentaire

Tokens

  • Chaque nouveau token doit exister en .ts, .json ET .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 !important sauf 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 changementVersion
Correction de bug sans rupturePatch (0.1.X)
Nouvelle fonctionnalité sans ruptureMinor (0.X.0)
Suppression d’export, modification de tokenMajor (X.0.0)