# Contribuer au DSMMG Merci de prendre le temps de contribuer. Ce guide décrit le workflow attendu pour ajouter / modifier un composant, fixer un bug, ou faire évoluer le design system. ## Setup local ```sh git clone https://git.dinawo.fr/ManageMate-Group/DSMMG.git cd DSMMG pnpm install pnpm build # build tous les packages dans le bon ordre pnpm storybook # lance Storybook localement (port 6006) pnpm demo # lance la demo Vite (port 5180) pnpm --filter @managemate/react test:watch ``` Pré-requis : Node ≥ 20, pnpm ≥ 9, Git. ## Workflow d'une PR 1. **Créer une branche** depuis `main` : - `feat/` — nouvelle fonctionnalité - `fix/` — correction de bug - `chore/` — outillage, refacto sans surface publique - `docs/` — documentation 2. **Coder + tests** : - Tests unitaires (`*.test.tsx`) avec Vitest + axe-core - Stories Storybook (`*.stories.tsx`) avec autodocs - Doc MDX pour les composants publics 3. **Ajouter un changeset** : `pnpm changeset` (sélectionner les packages impactés et le bump approprié — patch / minor / major). 4. **Push** + ouvrir la PR sur `main`. 5. **CI doit passer** : - lint + typecheck - tests Vitest - axe-core (pas de violation a11y) - lint contraste WCAG (`pnpm lint:contrast`) - build Storybook + visual regression - bundle size budget (`pnpm size`) 6. **1 review minimum** d'un CODEOWNER avant merge. ## Conventions de code ### Naming - **Tokens couleur** : `--mmg-color-*` (jamais `--mmg-color-synapse-*` directement dans un composant — toujours `--mmg-color-accent-*`). - **Classes CSS** : `mmg-` BEM-like (`mmg-btn`, `mmg-btn--primary`, `mmg-btn__icon`). - **Utilitaires CSS** : `mmg-u-*` (`mmg-u-stack`, `mmg-u-text-primary`). - **Composants React** : PascalCase (`Button`, `ProfileHeader`, `MetricCard`). **Un fichier par composant**, pas de monolithe. - **Tests** : `.test.tsx`, **stories** : `.stories.tsx`. ### Sémantique - Choisir le tag HTML selon **la sémantique**, pas selon la taille visuelle. Un titre de page reste `

` même s'il est stylé en `display-xl`. - Préférer `