dsfr
dsfr copied to clipboard
đ«đ· Official french government's design system (SystĂšme de Design de l'Ătat)
đ«đ· SystĂšme de Design de lâĂtat
Le SystĂšme de Design de lâĂtat (ci-aprĂšs, le DSFR) est un ensemble de composants web HTML, CSS et Javascript pour faciliter le travail des Ă©quipes projets des sites Internet publics, et crĂ©er des interfaces numĂ©riques de qualitĂ© et accessibles.
L'outil est développé, maintenu et géré par le Service d'Information du Gouvernement (SIG).
Son utilisation par les administrations est soumise à une demande d'agrément (voir partie 5 des Conditions Générales d'Utilisation).
Voir la documentation officielle.
Licence et droit d'utilisation
Le contenu de ce projet est placé sous licence MIT License, à l'exception de la fonte Marianne. Voir LICENSE.md.
â ïž Utilisation interdite en dehors des sites Internet de l'Ătat
Il est formellement interdit Ă tout autre acteur dâutiliser le SystĂšme de Design de lâĂtat (les administrations territoriales ou tout autre acteur privĂ©) pour des sites web ou des applications. Le SystĂšme de Design de lâĂtat reprĂ©sente lâidentitĂ© numĂ©rique de lâĂtat. En cas dâusage Ă des fins trompeuses ou frauduleuses, l'Ătat se rĂ©serve le droit dâentreprendre les actions nĂ©cessaires pour y mettre un terme.
Voir les conditions générales d'utilisation.
â ïž Prohibited Use Outside Government Websites
This Design System is only meant to be used by official French public services' websites and apps. Its main purpose is to make it easy to identify governmental websites for citizens. See terms.
Installation
L'installation du SystĂšme de Design de l'Ătat (ci-aprĂšs, le DSFR) peut se faire de maniĂšres diffĂ©rentes. En tĂ©lĂ©chargeant l'ensemble des fichiers nĂ©cessaires Ă son utilisation, en utilisant le gestionnaire de paquets NPM, ou encore via git.
Fichiers statiques
Il est possible de télécharger l'ensemble du DSFR au format zip ci-dessous. Le zip contient un ensemble de fichiers CSS et Javascript, ainsi que les différentes polices web utilisées (Marianne et Spectral), et un ensemble d'icÎnes et de pictogrammes.
Vous trouverez sur la page Release de Github, toutes les sources des versions précédentes et la derniÚre en date.
NPM
Le DSFR est disponible sur NPM via un ensemble de packages qu'il est possible d'ajouter directement à votre projet. Il est de ce fait nécessaire d'installer NodeJS, et d'avoir un fichier package.json à la racine de votre projet. (Il est possible d'en créer un directement via la commande npm init
).
Une fois en place, il suffit d'installer le package @gouvfr/dsfr contenant lâensemble des composants:
npm install @gouvfr/dsfr
Il est Ă©galement possible d'installer le package avec Yarn :
yarn add @gouvfr/dsfr
Une fois terminé le dsfr sera alors installé dans le dossier node_modules/@gouvfr/dsfr/
.
Pour visualiser les exemples, il est nécessaire de lancer un serveur local. Pour cela, installer le package browser-sync, puis lancer le serveur dans le dossier du dsfr :
npm install browser-sync
cd node_modules/@gouvfr/dsfr/
npm run serve
Une fois le serveur lancé, les exemples sont disponibles à l'adresse : http://localhost:8080/example/
Structure du DSFR
La structure que nous mettons Ă disposition , sur le zip ou npm est la suivante:
- dist : contient les fichiers css et js à importer en fonction des packages utilisés.
- src : contient les sources sass et js des différents composants.
- example : contient des snippets html dâexample des composants que vous pouvez consulter en local.
Configuration de votre projet
Lors de la crĂ©ation de votre projet, il est nĂ©cessaire dâadopter lâarborescence prĂ©vue par celui-ci, Ă savoir les fichiers HTML Ă la racine du projets, et les diffĂ©rentes sources du rĂ©pertoire dist dans des dossiers spĂ©cifiques :
Une structure minimale serait :
/ Racine du projet
âââ index.html
âââ dsfr.min.css
âââ dsfr.module.min.js
âââ dsfr.nomodule.min.js
âââ icons/
âââ favicon/
âââ fonts/
âââ utility/
âââ utilities.min.css
Les polices de caractÚres utilisées sur le DS, à savoir la Marianne et la Spectral, sont des fichiers .woff et .woff2, ils doivent se trouver dans le répertoire fonts
. Les dossiers fonts
et favicon
doivent ĂȘtre placĂ©s au mĂȘme niveau que le dossier contenant le CSS du core du dsfr (ou au mĂȘme niveau que le css dsfr.min.css
Ă la racine de dist, qui contient le core).
Le fichier utilities.min.css
doit ĂȘtre placĂ© un niveau plus bas que le dossier icons
, dans dossier utility par exemple, pour respecter les chemins d'accĂšs vers les icĂŽnes.
Le HTML
Le point de dĂ©part de lâutilisation du DSFR est la crĂ©ation de fichiers HTML, afin de pouvoir utiliser les diffĂ©rents composants. Ces fichiers sont Ă mettre Ă la racine de votre projet. Lâexemple ci dessous est le code minimal afin de pouvoir utiliser le DSFR.
Lâajout de lâattribut data-fr-scheme sur la balise html permet dâactiver la gestion des thĂšmes clair et sombre. Les valeurs possibles sont system
, light
, dark
. La valeur âsystemâ permet dâutiliser la configuration dĂ©finie sur le systĂšme dâexploitation de lâutilisateur.
Consulter la documentation des paramĂštres dâaffichage afin dâen savoir plus.
<!doctype html>
<html lang="fr" data-fr-scheme="system">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="format-detection" content="telephone=no,date=no,address=no,email=no,url=no">
<meta name="theme-color" content="#000091"><!-- DĂ©fini la couleur de thĂšme du navigateur (Safari/Android) -->
<link rel="apple-touch-icon" href="favicon/apple-touch-icon.png"><!-- 180Ă180 -->
<link rel="icon" href="favicon/favicon.svg" type="image/svg+xml">
<link rel="shortcut icon" href="favicon/favicon.ico" type="image/x-icon"><!-- 32Ă32 -->
<link rel="manifest" href="favicon/manifest.webmanifest" crossorigin="use-credentials">
<!-- Modifier les chemins relatifs des favicons en fonction de la structure du projet -->
<!-- Dans le fichier manifest.webmanifest aussi, modifier les chemins vers les images -->
<link rel="stylesheet" href="dsfr.min.css">
<link rel="stylesheet" href="utility/utility.min.css">
<title>Titre de la page - Nom du site</title>
</head>
<body>
<!--
code de la page
-->
<!-- Script en version es6 module et nomodule pour les navigateurs le ne supportant pas -->
<script type="module" src="dsfr.module.min.js"></script>
<script type="text/javascript" nomodule src="dsfr.nomodule.min.js"></script>
</body>
</html>
Les CSS
Afin dâinclure la totalitĂ© des composants et des styles du systĂšme de design, il est nĂ©cessaire dâinclure la feuille de style dist/dsfr.min.css
.
Les classes utilitaires, notamment les icĂŽnes, sont disponibles dans un fichier Ă part dans dist/utility/utility.scss
.
<html>
<head>
<link rel="stylesheet" href="dsfr.min.css">
<link rel="stylesheet" href="utility/utility.min.css">
Il est aussi possible dâimporter uniquement ce que lâon souhaite utiliser. En effet, pour ajouter un composant seul il suffit dâimporter son CSS ainsi que celui de chacune des dĂ©pendances de ce composant. Ces dĂ©pendances sont listĂ©s dans le README.md
de chaque package.
<html>
<head>
<link rel="stylesheet" href="core.min.css">
<link rel="stylesheet" href="link.min.css">
<link rel="stylesheet" href="button.min.css">
Le Javascript
Lâensemble du code javascript nĂ©cessaire au bon fonctionnement du DS se trouve dans deux fichiers dist/dsfr.module.min.js
et dist/dsfr.nomodule.min.js
.
Le fichier dsfr.module.min.js utilise les modules javascript natifs - sa balise script dâappel doit avoir lâattribut type=âmoduleâ.
Le fichier dsfr.nomodule.min.js est utilisĂ© par les anciens navigateurs ne supportant pas les modules javascript (es6) - sa balise script doit contenir lâattribut nomodule. Il est impĂ©ratif dâappeler les deux fichiers javascript afin que le code sâexĂ©cute correctement sur lâensemble des navigateurs supportĂ©s :
<script type="module" src="dsfr.module.min.js"></script>
<script type="text/javascript" nomodule src="dsfr.nomodule.min.js"></script>
</body>
</html>
NB : Le package analytics est gĂ©rĂ© indĂ©pendament et doit ĂȘtre ajoutĂ© aprĂšs le js du dsfr. Voir documention analytics
De la mĂȘme façon que le CSS il est possible dâimporter uniquement le JS des composants utilisĂ©s (et leurs dĂ©pendances).
IcĂŽnes
Les icÎnes sont stockées dans dist/icons
et classées par catégories.
Le design systĂšme utilise principalement des icĂŽnes de la librairie remixIcon. Il existe aussi des icĂŽnes personnalisĂ©es, celles-ci sont prĂ©fixĂ©e par âfr--â.
Afin dâutiliser ces icĂŽnes, des classes utilitaires CSS sont associĂ©s Ă chaque icĂŽne. Par ex. : fr-icon-error-fill
Ces classes sont disponibles dans utility
qui importe dist/utility/icons/icons.css
.
Il est aussi possible dâimporter uniquement certaines catĂ©gories dâicĂŽnes afin dâoptimiser le poids. Par ex. : dist/utility/icons/system/system.css
pour les icĂŽnes âsystemâ.
Pour plus dâinformations : Voir la documentation des icĂŽnes.
Favicon
La documentation des favicons détaille la façon de les implémenter dans vos pages.
Fonctionnement
BEM
Le DSFR utilise la méthodologie BEM (Block - Element - Modifier) comme convention de nommage des classes CSS. Elle permet aux développeurs une meilleure compréhension de la relation entre HTML et CSS dans un projet donné.
Selon cette méthodologie, un block représente le plus haut niveau d'abstraction d'un nouveau composant, par exemple .parent
.
Des Ă©lĂ©ments (ou enfants), peuvent ĂȘtre placĂ©s Ă l'intĂ©rieur de ces blocks, et sont dĂ©signĂ©s par deux underscore prĂ©cĂ©dĂ©s du nom du block : .parent__element
.
Les modifiers quant à eux, servent à manipuler les blocs, de maniÚre à les styliser de maniÚre indépendante en s'assurant de ne pas induire de changement à des blocks sans aucun rapport avec celui-ci. Ils sont notés à l'aide de deux tirets précédés du nom du block comme suit : .parent--modifier
.
Utilisation
Le DSFR est constitué de différents composants, que vous pouvez utiliser indépendamment au sein de votre projet.
Une documentation spĂ©cifique est prĂ©vue pour chaque composant, prĂ©cisant ses principes dâutilisation, ainsi que les snippets de code HTML Ă utiliser pour votre projet.
đ Vous ĂȘtes maintenant prĂȘt(e) Ă utiliser le DSFR.
Contribution
Le processus de contribution est détaillé sur la page CONTRIBUTING.md.