Design system
Statut
Document de cadrage frontend — version initiale.
Objectif
Le design system DMV doit garantir une cohérence visuelle et fonctionnelle sans ralentir le développement.
Il doit définir les conventions utiles : couleurs, typographie, espacements, boutons, cartes, formulaires, modales, états et feedbacks.
État actuel visible
Le repo montre :
- Tailwind CSS 4 dans les deux frontends ;
- police Ubuntu côté site public ;
- fichiers de styles globaux ;
- helpers
buttonStylesdans le public et le backoffice ; - composants UI comme
Carousel,Switch,Disclosure, panels et modales ; - styles répétés dans plusieurs pages backoffice.
Aucun package de design system partagé n'est confirmé.
Principes
- Documenter avant de multiplier les variantes.
- Limiter le nombre de styles de boutons.
- Standardiser les états : loading, empty, error, success, disabled.
- Utiliser des composants simples et composables.
- Garder les classes Tailwind lisibles.
- Éviter la sur-abstraction.
Tokens à formaliser
| Token | Objectif |
|---|---|
| Couleurs | Hiérarchie, actions, alertes, surfaces. |
| Typographie | Tailles, poids, titres, textes secondaires. |
| Espacements | Rythme visuel cohérent. |
| Rayons | Cohérence des cartes, boutons, modales. |
| Ombres | Profondeur sobre et non envahissante. |
| États | Focus, hover, active, disabled, erreur. |
Composants prioritaires
- Bouton.
- Champ texte.
- Select.
- Switch.
- Badge.
- Card.
- Modal / sheet.
- Toast ou message de feedback.
- Loader.
- Empty state.
- Tabs.
- Layout page.
Public vs backoffice
Le design system peut avoir deux densités :
- public : plus aéré, mobile-first, contenu local prioritaire ;
- backoffice : plus dense, orienté traitement, tableaux et actions.
Les deux doivent partager les principes et composants de base quand c'est utile.
Vision cible
La cible n'est pas un design system lourd. C'est une bibliothèque de conventions suffisantes pour :
- réduire la duplication ;
- accélérer la production ;
- maintenir la cohérence ;
- améliorer l'accessibilité ;
- faciliter les futures apps connectées.
Points à clarifier
- Faut-il créer un package partagé ?
- Quelle stratégie TypeScript/JavaScript entre public et backoffice ?
- Quels composants doivent être stabilisés en premier ?
- Quelle documentation visuelle utiliser ?
- Comment auditer les variantes existantes ?