@gouvfr/dsfr 1.14.1 → 1.14.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gouvfr/dsfr",
3
- "version": "1.14.1",
3
+ "version": "1.14.2-rc.1",
4
4
  "description": "Système de Design de l'Etat - DSFR",
5
5
  "repository": "git@github.com:GouvernementFR/dsfr.git",
6
6
  "author": "Service d'Information du Gouvernement <maxime.beaugrand@pm.gouv.fr>",
package/publiccode.yml CHANGED
@@ -4,8 +4,8 @@ url: https://github.com/GouvernementFR/dsfr
4
4
  landingURL: https://www.systeme-de-design.gouv.fr/
5
5
  creationDate: 2021-04-08
6
6
  latestRelease:
7
- date: 2025-08-29
8
- version: "1.14.1"
7
+ date: 2025-09-11
8
+ version: "1.14.2"
9
9
  logo: |-
10
10
  https://www.systeme-de-design.gouv.fr/uploads/banner_img_aaa47076b8.png
11
11
  usedBy:
@@ -60,7 +60,7 @@ metadataFiles:
60
60
  changelog: CHANGELOG.md
61
61
  codeOfConduct: null
62
62
  governance: null
63
- lastUpdated: 2025-08-29
63
+ lastUpdated: 2025-09-11
64
64
  screenshots: |-
65
65
  https://www.systeme-de-design.gouv.fr/uploads/composants_groupe_de_boutons_6db9a05d35.png
66
66
  genericName: dsfr
@@ -109,7 +109,7 @@ Ne pas changer l’icône et la couleur d’un badge système.
109
109
  La couleur des badges standard peut être personnalisée, parmi les couleurs illustratives autorisées uniquement.
110
110
 
111
111
  :::fr-table[Tableau personnalisation design]{valign=top multiline=true caption=false}
112
- | Éléments | Indice thème claire | Indice thème sombre |
112
+ | Éléments | Indice thème clair | Indice thème sombre |
113
113
  |:-----|:-----|:-----|
114
114
  | **Fond** | Indice **950**<br>_exemple : `$pink-tuile-950`_ | Indice **100**<br>_exemple : `$pink-tuile-100`_ |
115
115
  | **Texte** | Indice **sun**<br>_exemple : `$pink-tuile-sun-425`_ | Indice **moon**<br>_exemple : `$pink-tuile-moon-750`_ |
@@ -102,7 +102,7 @@ export const EllipsisStory = {
102
102
  render: () => renders([
103
103
  {
104
104
  ellipsis: true,
105
- label: 'Label très long qui sera tronqué lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam purus sit amet luctus'
105
+ label: 'Libellé très long qui sera tronqué lorem ipsum dolor sit amet consectetur adipiscing elit ut aliquam purus sit amet luctus'
106
106
  }
107
107
  ])
108
108
  };
@@ -48,20 +48,24 @@ Le composant **Bouton** est un élément interactif permettant de déclencher de
48
48
 
49
49
  #### Groupes de boutons
50
50
 
51
- Les boutons peuvent être regroupés pour former des ensembles d'actions. Le groupe est formé par la succession de boutons enveloppés par l'élément HTML `<div>` et la classe `fr-btns-group`.
51
+ Les boutons peuvent être regroupés pour former des ensembles d'actions. Le groupe est formé par la succession de boutons structurés sous forme de liste par l'élément HTML `<ul>` et la classe `fr-btns-group`.
52
52
  Un groupe est dit **hiérarchisé** s'il dispose d'un bouton primaire et de boutons secondaires. Sauf cas exceptionnel, n'utiliser qu'un seul bouton primaire dans un groupe. Un groupe **non hiérarchisé** est lui constitué uniquement de boutons secondaires, tertiaires, et/ou tertiaires sans contours.
53
53
 
54
54
  **Exemple de groupe de boutons**
55
55
 
56
56
  ```HTML
57
- <div class="fr-btns-group">
57
+ <ul class="fr-btns-group">
58
+ <li>
58
59
  <button class="fr-btn" type="button">
59
60
  Bouton 1
60
61
  </button>
62
+ </li>
63
+ <li>
61
64
  <button class="fr-btn fr-btn--secondary" type="button">
62
65
  Bouton 2
63
66
  </button>
64
- </div>
67
+ </li>
68
+ </ul>
65
69
  ```
66
70
 
67
71
  ---
@@ -97,7 +97,6 @@ Pour **regrouper plusieurs checkboxes liées**, utilisez un élément `<fieldset
97
97
  <label class="fr-label" for="checkboxes-3">
98
98
  Libellé case à cocher
99
99
  </label>
100
- </div>
101
100
  </div>
102
101
  </div>
103
102
  <div class="fr-messages-group" id="checkboxes-messages" aria-live="polite">
@@ -36,7 +36,7 @@ let dataFooter = {
36
36
  links: [
37
37
  {label: 'legifrance.gouv.fr'},
38
38
  {label: 'gouvernement.fr'},
39
- {label: 'service-public.fr'},
39
+ {label: 'service-public.gouv.fr'},
40
40
  {label: 'data.gouv.fr'}
41
41
  ]
42
42
  },
@@ -34,7 +34,7 @@ let dataFooter = {
34
34
  desc: lorem(),
35
35
  links: [
36
36
  {label: 'info.gouv.fr', href: 'https://info.gouv.fr', blank: true, attributes: { title: getBlankTitle('info.gouv.fr') }},
37
- {label: 'service-public.fr', href: 'https://service-public.fr', blank: true, attributes: { title: getBlankTitle('service-public.fr') }},
37
+ {label: 'service-public.gouv.fr', href: 'https://service-public.gouv.fr', blank: true, attributes: { title: getBlankTitle('service-public.gouv.fr') }},
38
38
  {label: 'legifrance.gouv.fr', href: 'https://legifrance.gouv.fr', blank: true, attributes: { title: getBlankTitle('legifrance.gouv.fr') }},
39
39
  {label: 'data.gouv.fr', href: 'https://data.gouv.fr', blank: true, attributes: { title: getBlankTitle('data.gouv.fr') }}
40
40
  ]
@@ -52,7 +52,7 @@ Le composant **Pied de page** est constitué d'un élément `<footer>` de classe
52
52
  - Un bloc de contenu, un élément `<div>` de classe `fr-footer__content` contenant :
53
53
  - Une description du site, optionnelle, un élément `<p>` de classe `fr-footer__content-desc`. La description doit être concise et informative, ne pas dépasser 3 lignes.
54
54
  - Une liste de liens, **obligatoire et non modifiable**, `<ul>` de classe `fr-footer__content-list`, avec des `<li>` de classe `fr-footer__content-item`, et des liens `<a>` de classe `fr-footer__content-link`.
55
- - Les liens doivent être ordonnés dans cet ordre : info.gouv.fr, service-public.fr, legifrance.gouv.fr, data.gouv.fr
55
+ - Les liens doivent être ordonnés dans cet ordre : info.gouv.fr, service-public.gouv.fr, legifrance.gouv.fr, data.gouv.fr
56
56
  - Les liens doivent pointer vers les sites respectifs en s'ouvrant dans une nouvelle fenêtre.
57
57
  - Le bloc logos partenaires, optionnel, une `<div>`de classe `fr-footer__partners`. Ce bloc contient :
58
58
  - Un titre `<h2>`, ou autre niveau d'entête, de classe `fr-footer__partners-title`.
@@ -88,7 +88,7 @@ Le composant **Pied de page** est constitué d'un élément `<footer>` de classe
88
88
  <a title="info.gouv.fr - nouvelle fenêtre" href="https://info.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">info.gouv.fr</a>
89
89
  </li>
90
90
  <li class="fr-footer__content-item">
91
- <a title="service-public.fr - nouvelle fenêtre" href="https://service-public.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">service-public.fr</a>
91
+ <a title="service-public.gouv.fr - nouvelle fenêtre" href="https://service-public.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">service-public.gouv.fr</a>
92
92
  </li>
93
93
  <li class="fr-footer__content-item">
94
94
  <a title="legifrance.gouv.fr - nouvelle fenêtre" href="https://legifrance.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">legifrance.gouv.fr</a>
@@ -309,7 +309,7 @@ Cet exemple inclut un bloc de navigation, un bloc-marque avec logo opérateur, e
309
309
  <a title="info.gouv.fr - nouvelle fenêtre" href="https://info.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">info.gouv.fr</a>
310
310
  </li>
311
311
  <li class="fr-footer__content-item">
312
- <a title="service-public.fr - nouvelle fenêtre" href="https://service-public.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">service-public.fr</a>
312
+ <a title="service-public.gouv.fr - nouvelle fenêtre" href="https://service-public.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">service-public.gouv.fr</a>
313
313
  </li>
314
314
  <li class="fr-footer__content-item">
315
315
  <a title="legifrance.gouv.fr - nouvelle fenêtre" href="https://legifrance.gouv.fr" target="_blank" rel="noopener external" class="fr-footer__content-link">legifrance.gouv.fr</a>
@@ -24,7 +24,7 @@ if (footer.content === true) data.content = {
24
24
  desc: lorem('', 240),
25
25
  links: [
26
26
  {label: 'info.gouv.fr', href: 'https://info.gouv.fr', blank: true, attributes: { title: getBlankTitle('info.gouv.fr') }},
27
- {label: 'service-public.fr', href: 'https://service-public.fr', blank: true, attributes: { title: getBlankTitle('service-public.fr') }},
27
+ {label: 'service-public.gouv.fr', href: 'https://service-public.gouv.fr', blank: true, attributes: { title: getBlankTitle('service-public.gouv.fr') }},
28
28
  {label: 'legifrance.gouv.fr', href: 'https://legifrance.gouv.fr', blank: true, attributes: { title: getBlankTitle('legifrance.gouv.fr') }},
29
29
  {label: 'data.gouv.fr', href: 'https://data.gouv.fr', blank: true, attributes: { title: getBlankTitle('data.gouv.fr') }}
30
30
  ]
@@ -240,7 +240,7 @@ const footerArgs = {
240
240
  contentDescription: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris.',
241
241
  contentLinks: [
242
242
  { label: 'info.gouv.fr', href: 'https://info.gouv.fr', blank: true, attributes: { title: 'info.gouv.fr - nouvelle fenêtre' } },
243
- { label: 'service-public.fr', href: 'https://service-public.fr', blank: true, attributes: { title: 'service-public.fr - nouvelle fenêtre' } },
243
+ { label: 'service-public.gouv.fr', href: 'https://service-public.gouv.fr', blank: true, attributes: { title: 'service-public.gouv.fr - nouvelle fenêtre' } },
244
244
  { label: 'legifrance.gouv.fr', href: 'https://legifrance.gouv.fr', blank: true, attributes: { title: 'legifrance.gouv.fr - nouvelle fenêtre' } },
245
245
  { label: 'data.gouv.fr', href: 'https://data.gouv.fr', blank: true, attributes: { title: 'data.gouv.fr - nouvelle fenêtre' } }
246
246
  ],
@@ -170,10 +170,14 @@ La modale avec une **zone d’action** permet de guider l’utilisateur vers des
170
170
  </div>
171
171
  <!-- Zone d'action de la modale -->
172
172
  <div class="fr-modal__footer">
173
- <div class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left">
174
- <button type="button" class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left">Libellé bouton</button>
175
- <button type="button" class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left fr-btn--secondary">Libellé bouton</button>
176
- </div>
173
+ <ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left">
174
+ <li>
175
+ <button type="button" class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left">Libellé bouton</button>
176
+ </li>
177
+ <li>
178
+ <button type="button" class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left fr-btn--secondary">Libellé bouton</button>
179
+ <li>
180
+ </ul>
177
181
  </div>
178
182
  </div>
179
183
  </div>
@@ -1,7 +1,11 @@
1
- const footer = `<div class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left">
1
+ const footer = `<ul class="fr-btns-group fr-btns-group--right fr-btns-group--inline-reverse fr-btns-group--inline-lg fr-btns-group--icon-left">
2
+ <li>
2
3
  <button class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left">Libellé bouton</button>
4
+ </li>
5
+ <li>
3
6
  <button class="fr-btn fr-icon-checkbox-circle-line fr-btn--icon-left fr-btn--secondary">Libellé bouton</button>
4
- </div>`;
7
+ </li>
8
+ </ul>`;
5
9
 
6
10
  const body = `<p>Lorem ipsum dolor sit amet, consectetur adipiscing, incididunt, ut labore et dolore magna aliqua. Vitae sapien pellentesque habitant morbi tristique senectus et. Diam maecenas sed enim ut. Accumsan lacus vel facilisis volutpat est. Ut aliquam purus sit amet luctus. Lorem ipsum dolor sit amet consectetur adipiscing elit ut.</p>
7
11
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing, incididunt, ut labore et dolore magna aliqua. Vitae sapien pellentesque habitant morbi tristique senectus et. Diam maecenas sed enim ut. Accumsan lacus vel facilisis volutpat est. Ut aliquam purus sit amet luctus. Lorem ipsum dolor sit amet consectetur adipiscing elit ut.</p>
@@ -48,4 +48,4 @@ Privilégier la pagination au rechargement automatique ou à un bouton “Voir p
48
48
 
49
49
  ### Règles éditoriales
50
50
 
51
- La pagination n’est régit par aucune règle éditoriale spécifique.
51
+ La pagination n’est régie par aucune règle éditoriale spécifique.
@@ -6,6 +6,8 @@ let data = {
6
6
  ...range,
7
7
  isStep: true,
8
8
  isDouble: true,
9
+ minValueLabel: getText('label.min-value', 'range'),
10
+ maxValueLabel: getText('label.max-value', 'range'),
9
11
  step: isNaN(range.step) ? ((range.max - range.min) / 10) | 0 : range.step,
10
12
  value: isNaN(range.value) ? (range.max - range.min) * 0.25 + range.min : range.value,
11
13
  value2: isNaN(range.value2) ? (range.max - range.min) * 0.75 + range.min : range.value2
@@ -5,6 +5,8 @@ range.max = range.max ?? 100;
5
5
  let data = {
6
6
  ...range,
7
7
  isDouble: true,
8
+ minValueLabel: getText('label.min-value', 'range'),
9
+ maxValueLabel: getText('label.max-value', 'range'),
8
10
  value: isNaN(range.value) ? (range.max - range.min) * 0.25 + range.min : range.value,
9
11
  value2: isNaN(range.value2) ? (range.max - range.min) * 0.75 + range.min : range.value2
10
12
  };
@@ -76,8 +76,8 @@ inputAttributes.name = range.name;
76
76
  inputAttributes.type = 'range';
77
77
  inputAttributes['aria-labelledby'] = label.attributes.id;
78
78
  if (range.isDouble) {
79
- inputAttributes['aria-label'] = getText('label.min-value', 'range');
80
- inputAttributes['aria-labelledby'] = `${range.id} ${label.attributes.id} `;
79
+ inputAttributes['aria-label'] = range.minValueLabel;
80
+ inputAttributes['aria-labelledby'] = `${range.id} ${label.attributes.id}`;
81
81
  }
82
82
  if (range.min) inputAttributes.min = range.min;
83
83
  if (range.max) inputAttributes.max = range.max;
@@ -89,7 +89,7 @@ const input2Attributes = {
89
89
  value: range.value2,
90
90
  id: `${range.id}-2`,
91
91
  name: `${range.name}-2`,
92
- 'aria-label': getText('label.max-value', 'range'),
92
+ 'aria-label': range.maxValueLabel,
93
93
  'aria-labelledby': `${range.id}-2 ${label.attributes.id}`
94
94
  }
95
95
 
@@ -82,7 +82,8 @@ const rangeArgTypes = {
82
82
  control: 'number',
83
83
  description: 'valeur initiale du curseur',
84
84
  type: {
85
- value: 'integer'
85
+ value: 'integer',
86
+ required: true
86
87
  }
87
88
  },
88
89
  step: {
@@ -127,9 +128,36 @@ const rangeArgTypes = {
127
128
  eq: true
128
129
  },
129
130
  control: 'number',
130
- description: '2eme valeur initiale pour le curseur double',
131
+ description: 'Deuxième valeur initiale pour le curseur double',
131
132
  type: {
132
- value: 'integer'
133
+ value: 'integer',
134
+ required: true
135
+ },
136
+ table: { category: 'variant' }
137
+ },
138
+ minValueLabel: {
139
+ if: {
140
+ arg: 'isDouble',
141
+ eq: true
142
+ },
143
+ control: 'text',
144
+ description: 'Label pour le 1er curseur en mode double (attribut aria-label)',
145
+ type: {
146
+ value: 'string',
147
+ required: true
148
+ },
149
+ table: { category: 'variant' }
150
+ },
151
+ maxValueLabel: {
152
+ if: {
153
+ arg: 'isDouble',
154
+ eq: true
155
+ },
156
+ control: 'text',
157
+ description: 'Label pour le Deuxième curseur en mode double (attribut aria-label)',
158
+ type: {
159
+ value: 'string',
160
+ required: true
133
161
  },
134
162
  table: { category: 'variant' }
135
163
  },
@@ -169,6 +197,8 @@ const rangeArgs = {
169
197
  disabled: false,
170
198
  size: 'md',
171
199
  isDouble: false,
200
+ minValueLabel: 'Valeur minimale',
201
+ maxValueLabel: 'Valeur maximale',
172
202
  value2: 70,
173
203
  isStep: false,
174
204
  indicators: true,
@@ -190,6 +220,8 @@ const rangeProps = (args) => {
190
220
  prefix: args.prefix || rangeArgs.prefix,
191
221
  suffix: args.suffix || rangeArgs.suffix,
192
222
  isDouble: args.isDouble || false,
223
+ minValueLabel: args.isDouble ? args.minValueLabel || rangeArgs.minValueLabel : undefined,
224
+ maxValueLabel: args.isDouble ? args.maxValueLabel || rangeArgs.maxValueLabel : undefined,
193
225
  isStep: args.isStep || false,
194
226
  indicators: args.indicators || false,
195
227
  disabled: args.disabled || rangeArgs.disabled,
@@ -112,7 +112,7 @@ Seule la couleur des tags cliquables peut être personnalisée, parmi les couleu
112
112
 
113
113
  :::fr-table[Tableau personnalisation design]{valign=top multiline=true caption=false}
114
114
 
115
- | Éléments | Indice thème clair | Indice thème clair |
115
+ | Éléments | Indice thème clair | Indice thème sombre |
116
116
  |:-----|:-----|:-----|
117
117
  | **Fond** | Indice **925**<br> exemple : `$pink-tuile-925` | Indice **125**<br> exemple : `$pink-tuile-125` |
118
118
  | **Texte et icône**| Indice **sun**<br> exemple : `$pink-tuile-sun-425` | Indice **moon**<br> exemple : `$pink-tuile-moon-750` |
@@ -30,11 +30,12 @@ L’image de marque de l’État et la représentation que s’en fait le citoye
30
30
 
31
31
  ### En application
32
32
 
33
- 1. Que vous utilisiez ou non les composants de la librairie, le respect des [fondamentaux](../index.md) du DSFR est obligatoire : ils sont le seul moyen d’assurer la cohérence des interfaces de l’État ;
34
- 2. Vous avez l’obligation d’utiliser les [composants](../../../../component/_part/doc/index.md) du DSFR s’ils existent dans la librairie, en respectant scrupuleusement leurs règles d’utilisation ;
35
- 3. Vous pouvez créer vos propres composants seulement s’ils n’existent pas dans la librairie
36
- 4. Si vous pensez quun composant n’existe pas, pensez à interroger la communauté. Il y a de fortes chances qu’il ait déjà été créé par une autre équipe.
37
- 5. Si vous créez un composant et si vous pensez qu’il pourrait être utile à d’autres équipes, pensez à nous le partager pour qu’il soit réintégré à la librairie.
33
+ 1. L’application du DSFR doit toujours être complète. Le détournement de composants, l’ajout de sur-couches graphiques quelconques ou la simple recherche de ressemblance avec le Système de Design ne sont pas autorisés.
34
+ 2. Que vous utilisiez ou non les composants de la librairie, le respect des [fondamentaux](../index.md) du DSFR est obligatoire : ils sont le seul moyen d’assurer la cohérence des interfaces de l’État ;
35
+ 3. Vous avez l’obligation d’utiliser les [composants](../../../../component/_part/doc/index.md) du DSFR s’ils existent dans la librairie, en respectant scrupuleusement leurs règles d’utilisation ;
36
+ 4. Vous pouvez créer vos propres composants seulement sils n’existent pas dans la librairie
37
+ 5. Si vous pensez qu’un composant n’existe pas, pensez à interroger la communauté. Il y a de fortes chances qu’il ait déjà été créé par une autre équipe.
38
+ 6. Si vous créez un composant et si vous pensez qu’il pourrait être utile à d’autres équipes, pensez à nous le partager pour qu’il soit réintégré à la librairie.
38
39
 
39
40
  ## Le détail des fondamentaux
40
41
 
@@ -15,11 +15,11 @@ order: 6
15
15
  :::fr-table[Caractéristiques de la grille]{valign=top multiline=true}
16
16
  | Mise en page | Valeurs en px | Résolution maquette en px | Token | Largeur max. du contenu | Tailles des gouttières (optionnelles) |
17
17
  | --- | --- | --- | --- | --- | --- |
18
- | XS | de 0 à 575 | 320 | | / | 16 px |
19
- | SM | de 576 à 767 | 576 | `$bp-sm` | / | 16 px |
18
+ | XS | de 0 à 575 | 320 | | / | 16px |
19
+ | SM | de 576 à 767 | 576 | `$bp-sm` | / | 16px |
20
20
  | MD | de 768 à 991 | 768 | `$bp-md` | / | 16px |
21
21
  | LG | de 992 à 1247 | 992 | `$bp-lg` | / | 24px |
22
- | XL | ≥ 1248 | 1440 | `$bp-xl` | 1200 | 24 px |
22
+ | XL | ≥ 1248 | 1440 | `$bp-xl` | 1200 | 24px |
23
23
  :::
24
24
 
25
25
  ## Points de rupture
@@ -46,7 +46,7 @@ L’ancienne nomenclature des classes en `fr-fi` (remplacée par `fr-icon`) est
46
46
 
47
47
  **Ajout d'icônes personnalisées**
48
48
 
49
- Pour ajouter une icône qui ne serait pas présente dans le DSFR, il est possible de créer un fichier SVG ou de l’importer depuis la librairie Remixicon. Il faudra ensuite créer un fichier CSS pour associé une classe à cette icône, en suivant la nomenclature `fr-icon-[nom-de-l'icône]`. Par exemple, pour une icône nommée `custom-icon`, le fichier CSS contiendra :
49
+ Pour ajouter une icône qui ne serait pas présente dans le DSFR, il est possible de créer un fichier SVG ou de le télécharger depuis la librairie Remixicon. Il faudra ensuite créer un fichier CSS pour associé une classe à cette icône, en suivant la nomenclature `fr-icon-[nom-de-l'icône]`. Par exemple, pour une icône nommée `custom-icon`, le fichier CSS contiendra :
50
50
 
51
51
  ```CSS
52
52
  .fr-icon-custom-icon::before,
@@ -56,7 +56,19 @@ Pour ajouter une icône qui ne serait pas présente dans le DSFR, il est possibl
56
56
  }
57
57
  ```
58
58
 
59
- Ne pas modifier directement les fichiers CSS du DSFR, mais plutôt créer un fichier CSS personnalisé pour vos icônes. De cette manière, vous pourrez monter de version du DSFR sans perdre vos modifications.
59
+ [Facultatif] Pour fonctionner sur Internet Explorer 11, il faudra également ajouter, de préférence dans un autre fichier CSS, la règle suivante :
60
+
61
+ ```CSS
62
+ @media screen and (min-width: 0\0) and (min-resolution: 72dpi) {
63
+ .fr-icon-custom-icon::before,
64
+ .fr-icon-custom-icon::after {
65
+ background-image: url("../icons/custom-icon.svg");
66
+ }
67
+ }
68
+ ```
69
+
70
+ >[!NOTE]
71
+ >Ne pas modifier directement les fichiers CSS du DSFR, mais plutôt créer un fichier CSS personnalisé pour vos icônes. De cette manière, vous pourrez monter de version du DSFR sans perdre vos modifications.
60
72
 
61
73
  ## Sélection d’icônes
62
74
 
@@ -67,7 +79,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
67
79
 
68
80
  ### Arrows
69
81
 
70
- #### Icônes créées par l'équipe DSFR
82
+ #### Arrows - Icônes créées par l'équipe DSFR
71
83
 
72
84
  <div class="dsfr-doc-preview">
73
85
  <span class="fr-icon-arrow-left-s-first-line" aria-hidden="true"></span>
@@ -88,7 +100,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
88
100
 
89
101
  :::
90
102
 
91
- #### Icônes proposées par RemixIcon
103
+ #### Arrows - Icônes proposées par RemixIcon
92
104
 
93
105
  <div class="dsfr-doc-preview">
94
106
  <span class="fr-icon-arrow-left-s-fill" aria-hidden="true"></span>
@@ -1747,7 +1759,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
1747
1759
 
1748
1760
  ### Editor
1749
1761
 
1750
- #### Icônes créées par l'équipe DSFR
1762
+ #### Editor - Icônes créées par l'équipe DSFR
1751
1763
 
1752
1764
  <div class="dsfr-doc-preview">
1753
1765
  <span class="fr-icon-bold" aria-hidden="true"></span>
@@ -1770,7 +1782,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
1770
1782
 
1771
1783
  :::
1772
1784
 
1773
- #### Icônes proposées par RemixIcon
1785
+ #### Editor - Icônes proposées par RemixIcon
1774
1786
 
1775
1787
  <div class="dsfr-doc-preview">
1776
1788
  <span class="fr-icon-code-view" aria-hidden="true"></span>
@@ -2518,7 +2530,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
2518
2530
 
2519
2531
  ### System
2520
2532
 
2521
- #### Icônes créées par l'équipe DSFR
2533
+ #### System - Icônes créées par l'équipe DSFR
2522
2534
 
2523
2535
  <div class="dsfr-doc-preview">
2524
2536
  <span class="fr-icon-error-fill" aria-hidden="true"></span>
@@ -2552,7 +2564,7 @@ Les icônes classées dans dsfr sont soit des icônes créées spécialement, so
2552
2564
 
2553
2565
  :::
2554
2566
 
2555
- #### Icônes proposées par RemixIcon
2567
+ #### System - Icônes proposées par RemixIcon
2556
2568
 
2557
2569
  <div class="dsfr-doc-preview">
2558
2570
  <span aria-hidden="true" class="fr-icon-add-line"></span>
@@ -138,7 +138,7 @@ La librairie de SVG se trouve dans **dist/artwork/pictograms**.
138
138
 
139
139
  ##### Utilisation des pictogrammes
140
140
 
141
- Pour intégrer ces pictogrammes, il convient d’utiliser une balise `<svg>` et d’importer à l’intérieur les 3 parties du svg. Chaque partie doit être insérée, à la manière des <span>spritesheet</span>, via une balise `<use>` et l’attribut href :
141
+ Pour intégrer ces pictogrammes, il convient d’utiliser une balise `<svg>` et d’importer à l’intérieur les 3 parties du svg. Chaque partie doit être insérée, à la manière des <span lang="en">spritesheet</span>, via une balise `<use>` et l’attribut href :
142
142
 
143
143
  ```HTML
144
144
  <svg class="fr-artwork" aria-hidden="true" viewBox="0 0 80 80" width="80px" height="80px">