diff --git a/client/src/layout/components/footer/index.tsx b/client/src/layout/components/footer/index.tsx index 1cff5388..bb0d6fb2 100644 --- a/client/src/layout/components/footer/index.tsx +++ b/client/src/layout/components/footer/index.tsx @@ -286,12 +286,12 @@ export default function MainFooter() { {intl.formatMessage({ id: "layout.footer.personal-data", })} - - + */} + {intl.formatMessage({ id: "layout.footer.accessibility", })} - */} + {intl.formatMessage({ id: "layout.footer.legals", @@ -315,7 +315,12 @@ export default function MainFooter() { id: "layout.footer.switch-theme", })} - + {intl.formatMessage({ id: "layout.footer.version" }, { version })} diff --git a/client/src/layout/components/footer/locales/en.json b/client/src/layout/components/footer/locales/en.json index 6d0d0cab..f11793c5 100644 --- a/client/src/layout/components/footer/locales/en.json +++ b/client/src/layout/components/footer/locales/en.json @@ -13,7 +13,7 @@ "layout.footer.legal-notice": "Legal notice", "layout.footer.personal-data": "Personal data", "layout.footer.cookies": "Cookies", - "layout.footer.accessibility": "Accessibility", + "layout.footer.accessibility": "Accessibility: currently being optimized.", "layout.footer.legals": "Legal notices", "layout.footer.version": "App version v{version}", "layout.footer.switch-theme": "Theme" diff --git a/client/src/layout/components/footer/locales/fr.json b/client/src/layout/components/footer/locales/fr.json index a7df344c..0ca12844 100644 --- a/client/src/layout/components/footer/locales/fr.json +++ b/client/src/layout/components/footer/locales/fr.json @@ -13,7 +13,7 @@ "layout.footer.legal-notice": "Mentions légales", "layout.footer.personal-data": "Données personnelles", "layout.footer.cookies": "Cookies", - "layout.footer.accessibility": "Accessibilité", + "layout.footer.accessibility": "Accessibilité : en cours d'optimisations", "layout.footer.legals": "Mentions légales", "layout.footer.version": "Version de l'application v{version}", "layout.footer.switch-theme": "Thème" diff --git a/client/src/pages/about/accessibility/index.tsx b/client/src/pages/about/accessibility/index.tsx new file mode 100644 index 00000000..8f46e6a6 --- /dev/null +++ b/client/src/pages/about/accessibility/index.tsx @@ -0,0 +1,163 @@ +import { + Breadcrumb, + Col, + Container, + Link, + Row, + Text, + Title, + useDSFRConfig, +} from "@dataesr/dsfr-plus"; +import { RawIntlProvider, createIntl } from "react-intl"; + +const modules = import.meta.glob("./locales/*.json", { + eager: true, + import: "default", +}); +const messages = Object.keys(modules).reduce((acc, key) => { + const locale = key.match(/\.\/locales\/(.+)\.json$/)?.[1]; + if (locale) { + return { ...acc, [locale]: modules[key] }; + } + return acc; +}, {}); + +const formating = { + br: () =>
, + ul: (chunks: any) => , + li: (chunks: any) =>
  • {chunks}
  • , + aC: (chunks) => ( + + {chunks} + + ), + aDef: (chunks) => ( + + {chunks} + + ), + aSp: (chunks) => ( + + {chunks} + + ), +}; + +export default function Accessibility() { + const { locale } = useDSFRConfig(); + const intl = createIntl({ locale, messages: messages[locale] }); + + return ( + + + + + {intl.formatMessage({ id: "app.accessibility.breadcrumb.home" })} + + + {intl.formatMessage({ id: "app.accessibility.breadcrumb.current" })} + + + + + {intl.formatMessage({ id: "app.accessibility.title" })} + + + + + + +
    + + {intl.formatMessage({ id: "app.accessibility.declaration" })} + + + + {intl.formatMessage({ + id: "app.accessibility.declaration.text", + })} + + +
    +
    + + {intl.formatMessage({ + id: "app.accessibility.compliance.title", + })} + + + {intl.formatMessage({ + id: "app.accessibility.compliance.status", + })} + +
    +
    + + {intl.formatMessage( + { id: "app.accessibility.tech.title" }, + formating + )} + + + {intl.formatMessage( + { id: "app.accessibility.tech" }, + formating + )} + +
    +
    + + {intl.formatMessage( + { id: "app.accessibility.utils.title" }, + formating + )} + + + {intl.formatMessage( + { id: "app.accessibility.utils" }, + formating + )} + +
    +
    + + {intl.formatMessage( + { id: "app.accessibility.contactUs" }, + formating + )} + + + {intl.formatMessage( + { id: "app.accessibility.contactUs.text" }, + formating + )} + +
    +
    + + {intl.formatMessage( + { id: "app.accessibility.recourse.title" }, + formating + )} + + + {intl.formatMessage( + { id: "app.accessibility.recourse.text" }, + formating + )} + +
    + +
    +
    +
    + ); +} diff --git a/client/src/pages/about/accessibility/locales/fr.json b/client/src/pages/about/accessibility/locales/fr.json new file mode 100644 index 00000000..dc3d9bbe --- /dev/null +++ b/client/src/pages/about/accessibility/locales/fr.json @@ -0,0 +1,18 @@ +{ + "app.accessibility.breadcrumb.home": "Accueil", + "app.accessibility.breadcrumb.current": "Accessibilité", + "app.accessibility.title": "Accessibilité", + "app.accessibility.declaration": "Déclaration d'accessibilité", + "app.accessibility.declaration.text": "Le Ministère de l'Enseignement Supérieur et de la Recherche s’engage à rendre son site « scanR » accessible conformément à l’article 47 de la loi n° 2005-102 du 11 février 2005.", + "app.accessibility.compliance.title": "État de conformité", + "app.accessibility.compliance.status": "Actuellement, scanR est en cours d'évaluation pour assurer sa conformité avec le référentiel général d'amélioration de l'accessibilité RGAA version 4.1. Nous reconnaissons qu'il peut exister des aspects où notre site n'est pas encore pleinement conforme. Les détails de non-conformité seront répertoriés dès que l'évaluation sera complète.", + "app.accessibility.tech.title": "Technologies utilisées pour la réalisation du site", + "app.accessibility.tech": "", + "app.accessibility.utils.title": "Outils pour évaluer l'accessibilité", + "app.accessibility.utils": "", + "app.accessibility.contactUs": "Retour d'information et contact", + "app.accessibility.contactUs.text": "Si vous n’arrivez pas à accéder à un contenu ou à un service, vous pouvez contacter le responsable du site internet pour être orienté vers une alternative accessible ou obtenir le contenu sous une autre forme.

    Contactez nous ", + "app.accessibility.recourse.title": "Voies de recours", + "app.accessibility.recourse.text": "Si vous constatez un défaut d’accessibilité vous empêchant d’accéder à un contenu ou une fonctionnalité du site, que vous nous le signalez et que vous ne parvenez pas à obtenir une réponse rapide de notre part, vous êtes en droit de faire parvenir vos doléances ou une demande de saisine au Défenseur des droits. Plusieurs moyens sont à votre disposition : ", + "app.accessibility.help": "Nous apprécions grandement vos retours, car ils nous aident à améliorer continuellement l'accessibilité de notre site pour tous les utilisateurs." +} \ No newline at end of file diff --git a/client/src/router.tsx b/client/src/router.tsx index 2d75ee48..b9d8b411 100644 --- a/client/src/router.tsx +++ b/client/src/router.tsx @@ -26,6 +26,7 @@ import ScanrPublicationsDocs from "./pages/docs/objects/publications"; import { DocsLayout } from "./pages/docs/layout"; import ProjectsDocs from "./pages/docs/objects/projects"; import LegalNotices from "./pages/about/legal-notices"; +import Accessibility from "./pages/about/accessibility"; function ScrollToTopOnLocationChange() { const { pathname } = useLocation(); @@ -57,6 +58,7 @@ export default function Router() { Overview} /> } /> + } /> } /> } /> } />