diff --git a/cheatsheets/accessibilite/assets/logo.svg b/cheatsheets/accessibilite/assets/logo.svg new file mode 100644 index 0000000..0af8456 --- /dev/null +++ b/cheatsheets/accessibilite/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cheatsheets/accessibilite/config.json b/cheatsheets/accessibilite/config.json new file mode 100644 index 0000000..a2bfa76 --- /dev/null +++ b/cheatsheets/accessibilite/config.json @@ -0,0 +1,9 @@ +{ + "template": "grid-flow", + "mainColor": "#003366", + "secondaryColor": "#004D99", + "name": "Accessibilité en 2025", + "description": "Une vue d'ensemble sur l'accessibilité en 2025", + "categoryId": "web", + "icon": "assets/logo.svg" +} \ No newline at end of file diff --git a/cheatsheets/accessibilite/index.md b/cheatsheets/accessibilite/index.md new file mode 100644 index 0000000..8662ddf --- /dev/null +++ b/cheatsheets/accessibilite/index.md @@ -0,0 +1,246 @@ +::: column +# Référentiels +[RGAA: Régérentiel général d'amélioration de l'accessibilité](https://accessibilite.numerique.gouv.fr/): Obligations légales, critères de contrôles et tests\ +[WCAG](https://www.w3.org/WAI/standards-guidelines/wcag/): Standards internationaux\ +[ARA](https://ara.numerique.gouv.fr/): Plateforme d'audit, avec une valeur légale + +# Légal +Concerne les **organismes publics** +Mais également les **entreprises privées** + - Avec un chiffre d'affaire supérieur à 250 millions d'euros par an + - Certaines liées au secteur public ou subventionnés + +Et à partir de **Juin 2025**: extension des obligations + - Pour le e-commerce, guichets automatiques (banques, transports), liseuses, logiciels, terminaux de paiement, services de téléphonie et messagerie, billetterie en ligne notamment. + - Jusqu'à 2030 pour s'y conformer pour les services existants avant le 28 Juin 2025. Obligatoire dès 2025 pour les nouveaux services. + +Des sanctions: + - Jusqu'à **50 000 euros** d'amendes par service non conforme **RGAA** - renouvelable tous les 6 mois + - **25 000 euros** d'amende supplémentaire si aucune communication du niveau d'accessibilité et aucune planification. + +# Guidelines + +## Stucture HTML + +**Spécifier la langue de la page** +```html + +``` +*Facilite la vocalisation correcte du contenu par les lecteurs d’écran.*\ +\ +**Utiliser une seule balise `
+```
+*Laisser l'attribut `alt` à vide si l'image est uniquement décorative. Elle sera alors ignorée par les vocalisateurs*\
+\
+**Utiliser `role="img"` sur les SVG porteurs d'information**
+```html
+
+```
+*Permettre la vocalisation du contenu SVG*\
+\
+**Retirer de la navigation/vocalisation les svg uniquement décoratifs**
+```html
+
+```
+ou
+```html
+
+```
+
+## Navigation
+
+**Garantir l’accès clavier à tous les éléments interactifs**
+*Tout ce qui est cliquable doit être navigable avec Tab et activable avec Entrée/Espace.*\
+\
+**Ajouter un lien d’évitement ([skiplink](https://www.systeme-de-design.gouv.fr/composants-et-modeles/composants/lien-d-evitement/))**
+```html
+Aller au contenu
+```
+*Faciliter l'accès direct au contenu pour les utilisateurs clavier.*\
+\
+**Suivre un ordre de tabulation logique**
+```html
+Formats acceptés : PDF, DOC
+``` +*Fournir une aide supplémentaire pour la saisie.*\ +\ +**Utiliser autocomplete là où pertinent** +```html + +``` +*Améliorer l’expérience utilisateur et la saisie. Voir la documentation de [l'autocomplete](https://developer.mozilla.org/fr/docs/Web/HTML/Attributes/autocomplete)*\ +\ +**Indiquer les erreurs associées aux champs requis** +```html + +Ce champ est obligatoire +``` +*Signaler visuellement et vocalement l’erreur.* + +# Outils/Aides +[MDN](https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements)\ +[WCAG Color contrast checker](https://chromewebstore.google.com/detail/wcag-color-contrast-check/plnahcmalebffmaghcpcmpaciebdhgdf)\ +[Headingsmap](https://chromewebstore.google.com/detail/headingsmap/flbjommegcjonpdmenkdiocclhjacmbi)\ +[Lighthouse](https://developer.chrome.com/docs/lighthouse/overview?hl=fr)\ +[JAWS](https://www.freedomscientific.com/products/software/jaws/)\ +[NVDA](https://www.nvaccess.org/) + +::: \ No newline at end of file diff --git a/cheatsheets/categories.json b/cheatsheets/categories.json index ac4d84c..6afbca7 100644 --- a/cheatsheets/categories.json +++ b/cheatsheets/categories.json @@ -9,6 +9,11 @@ "name": "Eco concept", "icon": "nest_eco_leaf" }, + { + "id": "web", + "name": "WEB", + "icon": "language" + }, { "id": "iot", "name": "IOT", diff --git a/package-lock.json b/package-lock.json index ae7ef3e..1aa378e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,6 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@types/glob": "^8.1.0", "ejs": "^3.1.9", "glob": "^10.3.10", "markdown-it": "^13.0.1", @@ -18,6 +17,7 @@ }, "devDependencies": { "@types/ejs": "^3.1.2", + "@types/glob": "^8.1.0", "@types/markdown-it": "^12.2.3", "@types/markdown-it-container": "^2.0.5", "@types/markdown-it-highlightjs": "^3.3.1", @@ -210,6 +210,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, "dependencies": { "@types/minimatch": "^5.1.2", "@types/node": "*" @@ -268,12 +269,14 @@ "node_modules/@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true }, "node_modules/@types/node": { "version": "20.4.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.0.tgz", - "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==" + "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==", + "dev": true }, "node_modules/abbrev": { "version": "1.1.1", @@ -1927,6 +1930,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, "requires": { "@types/minimatch": "^5.1.2", "@types/node": "*" @@ -1984,12 +1988,14 @@ "@types/minimatch": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true }, "@types/node": { "version": "20.4.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.0.tgz", - "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==" + "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==", + "dev": true }, "abbrev": { "version": "1.1.1",