DESIGN SYSTEM
24 février 2023
SOMMAIRE
Qu’est-ce qu’un Design System
Pourquoi ?
Comment ça marche ?
Principes
Un composant
Formulaires (Formik)
Tableaux (Headless UI)
Etat des lieux
A venir
QU’EST CE QU’UN
DESIGN SYSTEM
QU’EST-CE QU’UN DESIGN SYSTEM
Bibliothèque de composants graphiques
Composants JS
Style CSS
Ligne directrice
Palette de couleurs
Typographie
Iconographie
Composants UI
Grille de structures, espaces, tailles…
QU’EST-CE QU’UN DESIGN SYSTEM
Palette de couleurs
Couleurs principales
Brand color, functional color
Déclinaisons
QU’EST-CE QU’UN DESIGN SYSTEM
Typographie
Police
Tailles de polices
QU’EST-CE QU’UN DESIGN SYSTEM
Iconographie
Bibliothèque d’icones
Ajouts possibles
Illustrations
QU’EST-CE QU’UN DESIGN SYSTEM
Composants UI
Eléments
QU’EST-CE QU’UN DESIGN SYSTEM
Grid
Responsive
QU’EST-CE QU’UN DESIGN SYSTEM
Espacements
Tailles
Font Size
Line-height
EXEMPLES DE DESIGN-SYSTEM
Material Design
EXEMPLES DE DESIGN-SYSTEM
Etat Français
EXEMPLES DE DESIGN-SYSTEM
Etat Français
EXEMPLES DE DESIGN-SYSTEM
Decathlon (Vitamin)
EXEMPLES DE DESIGN-SYSTEM
Doctolib
02
POURQUOI UN DESIGN-
SYSTEM ?
POURQUOI UN DESIGN-SYSTEM ?
En général, enjeux design
Projet mené par le design -> à destination des développeurs
Respect de la charte graphique
Uniformiser les pratiques UI/UX
Composants utilisables pour le maquettage
D’autres enjeux chez Spikee
POURQUOI UN DESIGN-SYSTEM ?
POURQUOI UN DESIGN-SYSTEM ?
On pourrait utiliser Material, Bootstrap, Mui…
Customisable
Thèmes modifiables
Paramétrable
Beaucoup de propriétés prédéfinies
Démarrage rapide
POURQUOI UN DESIGN-SYSTEM ?
ou des libs UI pour chaque composant
Datepicker
Slider
Modal
POURQUOI UN DESIGN-SYSTEM ?
Besoins de la librairies
Accessibilité
Thèmes modifiables
Thèmes
Dark / Light, Thèmes différents
Unique
Ne pas ressembler à Material
Support navigateur
Fonctionnalités
Use Cases spécifiques
Contrôle complet des comportements
Maintenabilité
Simple à améliorer et maintenir
Ne pas se poser de questions si c’est faisable
Nir Ben-Yair
Frontend Team lead
Headless components in React and
why I stopped using a UI library for
our design system
POURQUOI UN DESIGN-SYSTEM ?
Choix initial :
Material UI + React-Bootstrap
Nouvelles fonctionnalités
De plus en plus de demandes
Use cases spécifiques
Ne répond plus au besoin
Perte de temps à essayer
de tordre la lib
Contournements non
satisfaisants
Difficile à maintenir
Nir Ben-Yair
Frontend Team lead
POURQUOI UN DESIGN-SYSTEM ?
Récrire des composants en entier ?
Contrôle total
Améliorations possible sans restrictions
Réécrire un Select
Accessibilité
Compatibilité navigateur
Navigation clavier
Autocomplete
Affichage paramétrable
Nir Ben-Yair
Frontend Team lead
“Can’t select a dropdown item on some iOS
devices on Safari (BUG-34939)”
Pedro Duarte / Radix UI
Next.js conf (2021)
POURQUOI UN DESIGN-SYSTEM ?
Headless UI
Se charge uniquement des comportements
Totale liberté dans le rendu
Nir Ben-Yair
Frontend Team lead
POURQUOI UN DESIGN-SYSTEM ?
Headless UI
Nir Ben-Yair
Frontend Team lead
Headless
lib
Custom
render
POURQUOI UN DESIGN-SYSTEM ?
Uniformiser les pratiques UI/UX
Charte graphique
Ergonomie
Total contrôle des composants
Rendu
Comportements
Maintenabilité
Gain de temps
Après un investissement maitrisé
On ne réinvente pas ce qui est très couteux
03
PRINCIPES
PRINCIPES
Peu de dépendances
Aucune lib UI
Lib headless
React-table
Lib utilitaires
Formik, Yup
Partis pris importants
Composants simples
Comportements par défaut
Extensibles si besoin
La priorité est : simplifier la construction d’application
Déporter la complexité dans le design-system
L’utilisateur finale se concentre sur le code métier
Le moins de code Js possible
Zéro CSS
PRINCIPES
Déporter la complexité dans le design-system
Complexité
essentielle
Complexité
obligatoire
Complexité
accidentelle
Complexité
essentielle
Complexité
obligatoire
Projet classique
Design-System
Projet avec
Design-system
PRINCIPES
Atomic Design
4
UN COMPOSANT
STRUCTURE D’UN COMPOSANT
Structure d’un composant
Source .jsx
Style .scss
Doc .mdx
Tests
STRUCTURE D’UN COMPOSANT
React
Props
Read-only
State
Modifiable
Peut-être asynchrone
Props
State
STRUCTURE D’UN COMPOSANT
Source .jsx
In : Props
Return JSX
PRINCIPES
Cas d’utilisation & Rendu DOM
PRINCIPES
Composants styles
5
DES FORMULAIRES !
FORMULAIRES
Composant classique
FORMULAIRES
Formik
Gestion des états
Gestion des événements
FORMULAIRES
Composant Design-System
Intégration de Formik
FORMULAIRES
Avec Formik
6
DES TABLEAUX !
TABLEAUX
Peut être assez complexe
Beaucoup d’options (tri, pagination, sélection, recherche…)
TABLEAUX
Utilisation
Doit être la plus simple possible
TABLEAUX
Définition du composant
react-table : Headless lib
7
ETAT DES LIEUX
ETAT DES LIEUX
Utilisations
Billing Labs
Intranet
ETAT DES LIEUX
Storybook
ETAT DES LIEUX
Environnement de dev
Bac à sable
ETAT DES LIEUX
Thèmes
Gestion de thèmes
Variante Dark/Light
Thèmes à développer
BillingLabs
Variante Light
ETAT DES LIEUX
Utilisations
Billing Labs
Intranet
Storybook
Environnement de dev
Bac à sable
Thèmes
Gestion de thèmes
Variante Dark/Light
Release / CI
Stabiliser les composants
Accessibilité
8
A VENIR
A VENIR
Priorité : Release des librairies
Semantic release
Doc développeur
Storybook
Guidelines
Thèmes
Theme Billing Labs
Starter kit
Démarrer un projet rapidement avec le design system
Composants plus larges
Organismes / Templates
Accessibilité
Headless UI
Identité
LE PROJET
Front > design-systems > spk-design-system-react
# npm install @spk/design-system-react
Straight to
the point
www.spikeelabs.fr

DesignSystem