Déclaration d'accessibilité — Whispet
1. Informations générales
CRE8EVE Sp. z o.o. s'engage à assurer l'accessibilité de l'application mobile Whispet conformément aux exigences de l'Acte européen sur l'accessibilité (European Accessibility Act, directive (UE) 2019/882) et de la norme EN 301 549, fondée sur les lignes directrices WCAG 2.1 au niveau AA.
La présente déclaration s'applique à l'application Whispet disponible sur la plateforme iOS.
2. Statut de conformité
L'application Whispet est partiellement conforme à la norme WCAG 2.1 au niveau AA.
« Partiellement conforme » signifie que certains éléments de contenu ne sont pas entièrement conformes à la norme d'accessibilité. Tu trouveras des informations détaillées sur les fonctionnalités mises en œuvre et les limitations connues dans les sections 3 et 4 du présent document.
3. Fonctionnalités d'accessibilité mises en œuvre
L'application Whispet offre les fonctionnalités d'accessibilité suivantes :
3.1. Prise en charge des lecteurs d'écran
- Tous les éléments interactifs (boutons, cartes, filtres, sélecteurs, navigation, formulaires, champs de date/heure) disposent d'étiquettes d'accessibilité localisées (
.accessibilityLabel) lisibles par VoiceOver - Les avatars des animaux disposent de descriptions alternatives localisées (par ex. « Avatar de Luna » / « Avatar of Luna ») dans toutes les langues prises en charge
- Les photos des animaux dans la galerie et la chronologie disposent de descriptions d'accessibilité pour les lecteurs d'écran
- Les boutons d'action flottants (FAB) disposent d'étiquettes d'accessibilité (
.accessibilityLabel) décrivant leur fonction - Les lignes de liste avec actions de balayage (
.swipeActions) comprennent des icônes supplémentaires dans la barre d'outils / le menu contextuel permettant d'accéder aux actions (modifier, supprimer, archiver, partager) sans le geste de balayage — offrant une alternative accessible aux utilisateurs de lecteurs d'écran - Les cartes médicales (vaccinations, médicaments, alimentation, allergènes, visites, documents) utilisent
.accessibilityElement(children: .combine), qui regroupe le contenu de la carte pour les lecteurs d'écran tout en maintenant l'interactivité des éléments internes (boutons, cases à cocher) - Les cases à cocher (Toggle) en mode sélection disposent d'étiquettes d'accessibilité localisées identifiant l'animal (par ex. « Sélectionner Luna »)
- Le menu contextuel (appui long) dispose d'un indice d'accessibilité (
.accessibilityHint) informant de la disponibilité des actions ainsi que d'une action de tap alternative permettant l'activation par lecteur d'écran sans le geste d'appui long - Les photos de groupe (multi-pet) disposent d'étiquettes d'accessibilité localisées indiquant le nombre d'animaux sur la photo
- Les icônes de statut de synchronisation, les séparateurs décoratifs (Divider), les flèches de navigation dans les paramètres et les icônes directionnelles décoratives sont masquées aux lecteurs d'écran (
.accessibilityHidden(true)), éliminant ainsi le bruit inutile dans la navigation - Tous les éléments décoratifs — effets de dégradé (bokeh, aurora), superpositions radiales — sont masqués aux lecteurs d'écran (
.accessibilityHidden(true)) dans toutes les variantes de thèmes (5 modes × 13 palettes) - Les curseurs (Slider) dans les formulaires de filtres disposent d'étiquettes d'accessibilité décrivant la valeur contrôlée
- Les éléments interactifs basés sur des gestes (
.onTapGesture,.gesture) disposent d'étiquettes d'accessibilité localisées : aperçu/ajout/suppression de photos dans la galerie et la chronologie, lien vers le site web de l'aliment, aperçu des photos de documents, chips d'action de vaccination, évaluation de l'alimentation, chips de sélection date/heure/fréquence, scan de codes QR/codes-barres, navigation dans le tableau de bord (carrousel des animaux, profil, chronologie) - Les écrans des nouvelles fonctionnalités — Import de l'historique des photos et Détection intelligente de photos d'animaux (Smart Detection) — disposent d'étiquettes d'accessibilité localisées sur tous les éléments interactifs (interrupteurs, filtres par type d'animal, barre de progression d'import, boutons d'action), garantissant une prise en charge complète par les lecteurs d'écran
3.2. Contrastes et couleurs
- Système central de couleurs
AppColorsavec variantes parColorScheme(clair/sombre) et mode High Contrast — vérifié pour la conformité du contraste aux WCAG - Les couleurs de statut (santé, poids, tendance, sexe) disposent de variantes adaptées au mode clair et sombre (
AppColors.*For(colorScheme)) - Prise en charge du mode clair et sombre (Light/Dark Mode) avec 13 variantes de dégradés
- Mode de contraste élevé (High Contrast Mode) — détails à la section 3.8
- Les informations ne sont pas transmises uniquement par la couleur — tous les statuts disposent d'icônes et d'étiquettes textuelles (par ex. flèches de tendance de poids, icônes de médicaments/vaccinations, symboles de sexe)
- Les éléments de chargement (skeleton loaders) utilisent les couleurs du thème (
surfaceContainer) au lieu de valeurs en dur, assurant un contraste adéquat tant en mode clair que sombre - Les couleurs de statut médical (médicaments, vaccinations, vermifuges, visites) disposent de couleurs de texte/icône dédiées (
foreground) garantissant un contraste sur les arrière-plans colorés des icônes dans chaque mode de luminosité - Les boutons d'action de balayage (swipe actions) sélectionnent automatiquement la couleur de texte/icône en fonction de la luminance de l'arrière-plan (
contrastText), et l'action d'archivage utilise les couleurs du thème (outline) au lieu d'un gris fixe - Les icônes des états vides (empty state) et des erreurs utilisent les couleurs du thème (
onSurfaceVariant) au lieu d'un gris fixe, assurant un contraste adéquat en mode sombre - Les arrière-plans des espaces réservés des photos dans la galerie utilisent les couleurs du thème (
surfaceContainerHighest) au lieu de valeurs en dur
3.3. Tailles des éléments interactifs
- Tous les boutons ont une taille minimale de zone tactile de 44 × 44 pt (conformément à WCAG 2.5.8 Target Size et aux Apple Human Interface Guidelines)
- Les champs de formulaire ont une hauteur garantissant un toucher confortable (≥ 48 pt)
- Prise en charge des paramètres système de taille de texte (Dynamic Type) — aucune limite supérieure
- Options supplémentaires de mise à l'échelle de la police dans les paramètres de l'application : 4 niveaux (0,85× / 1,0× / 1,15× / 1,3×) implémentés via
AppTypography
3.4. Structure et navigation
- La navigation principale (TabView, NavigationStack avec un
enum Routede 58 routes typées) utilise des composants natifs SwiftUI avec accessibilité intégrée - Étiquettes d'accessibilité (
.accessibilityLabel) sur les boutons d'icônes dans la barre d'outils (retour, fermer, menu, effacer, etc.), dans les en-têtes de bottom sheet, dans les panneaux de filtres, dans les menus contextuels (Menu) ainsi que sur les icônes auxiliaires des champs de texte - Prise en charge des gestes système natifs iOS (swipe-back, edge gestures, retour à deux doigts sur VoiceOver)
- Les champs de formulaire utilisent
TextFieldavec des étiquettes natives visibles au-dessus du champ et un espace réservé - L'ordre de tabulation entre les champs des formulaires est géré par le mécanisme de focus par défaut de SwiftUI avec prise en charge native de VoiceOver et des claviers matériels
3.5. Animations et mouvement
- Les principales animations (logo pulsant, effet bokeh, aurora, entrée échelonnée, illustration flottante) respectent le paramètre système Reduce Motion (
@Environment(\.accessibilityReduceMotion)) — elles sont désactivées ou immédiatement terminées (108 vérifications dereduceMotiondans le code de l'application) - Les animations des éléments de liste (staggered list) respectent le paramètre Reduce Motion — les éléments apparaissent immédiatement sans animation
3.6. Étiquettes d'accessibilité multilingues
- Les étiquettes d'accessibilité (
.accessibilityLabel) sont localisées en 6 langues : polonais, anglais, allemand, espagnol, français, italien (308 étiquettes dans le code de l'application) - Les étiquettes d'accessibilité utilisent le système de localisation de l'application (String Catalog
.xcstrings) et changent avec la langue de l'interface
3.7. Formats de données alternatifs
- Le graphique de poids dispose d'un tableau de données (data table) déroulant sous le graphique, présentant tous les enregistrements de poids sous forme textuelle (date et valeur en kg) — conformément à WCAG 1.1.1 (Contenu non textuel)
- Les chips de plage du graphique disposent d'étiquettes sémantiques avec des informations sur la plage sélectionnée
3.8. Mode de contraste élevé (High Contrast Mode)
L'application propose un mode de contraste élevé dédié, conçu pour les personnes malvoyantes, soutenant la conformité au critère WCAG 2.1 1.4.6 (Contraste amélioré, niveau AAA) et 1.4.11 (Contraste des éléments non textuels).
Activation : Paramètres → Apparence → bouton « Contraste élevé ». Le réglage est mémorisé entre les sessions.
Compatibilité : Le mode de contraste élevé fonctionne avec n'importe quel mode de thème (clair, sombre, système) et peut être combiné avec le mode OLED.
Modifications introduites par le mode de contraste élevé :
- Arrière-plans des écrans — uniformes : blanc pur (mode clair) ou noir pur (mode sombre) au lieu du dégradé de couleurs
- Effets décoratifs — désactivés : pas d'effets bokeh et aurora, qui peuvent gêner la lecture pour les personnes malvoyantes
- Texte — contraste maximal : noir pur (#000000) sur fond blanc ou blanc pur (#FFFFFF) sur fond noir
- Texte secondaire — gris foncé (#333333) sur fond clair ou gris clair (#CCCCCC) sur fond sombre, assurant un rapport de contraste supérieur à 7:1
- Bordures et contours — prononcés, plus marqués qu'en mode standard (gris #555555 sur fond clair, #AAAAAA sur fond sombre) — conforme à WCAG 1.4.11 (contraste non textuel min. 3:1)
- Panneaux glass (glassmorphisme) — presque opaques (95 % d'opacité) au lieu de semi-transparents, assurant la lisibilité du contenu sans interférence avec l'arrière-plan
- Champs de formulaire — fond opaque blanc/sombre avec une bordure noire/claire marquée au lieu de champs semi-transparents de type frosted glass
- Modales et dialogues — fond opaque, texte noir/blanc pur, contours marqués
- Chips et tags — couleurs de fond opaques au lieu de dégradés lerp, bordures marquées
- Sélecteurs de dégradés — désactivés (grisés à 0,35 d'opacité) lorsque le mode de contraste élevé est actif, avec un texte explicatif sur la substitution
Localisation : Les étiquettes du mode de contraste élevé sont disponibles dans les 6 langues prises en charge (polonais, anglais, allemand, espagnol, français, italien).
4. Limitations connues
Malgré nos efforts, les éléments suivants peuvent ne pas être entièrement accessibles :
4.1. Navigation au clavier externe
- Les formulaires s'appuient principalement sur l'ordre de focus par défaut de SwiftUI — la gestion explicite du focus (
@FocusState) n'est actuellement utilisée que dans certains champs de texte sélectionnés - L'application ne définit pas de raccourcis clavier personnalisés (
.keyboardShortcut) ; les gestes système iOS natifs et la navigation VoiceOver (rotor, un et deux doigts) restent disponibles
4.2. Grille de photos
- La grille de photos dans la galerie (masonry layout) peut être difficile à naviguer avec un lecteur d'écran en raison de sa disposition irrégulière
5. Plan d'action correctif
Nous travaillons systématiquement à l'amélioration de l'accessibilité de l'application. Les actions prévues comprennent :
- Introduction d'une gestion explicite du focus (
@FocusStateavec enums typés) dans les formulaires principaux (données de l'animal, clinique, allergène, visite vétérinaire, alimentation) - Ajout d'actions personnalisées localisées (
.accessibilityAction) aux lignes de liste avec actions de balayage, permettant d'invoquer modifier/supprimer/archiver sans le geste de balayage - Amélioration de l'accessibilité de la grille de photos dans la galerie (section 4.2)
- Tests réguliers avec le lecteur d'écran VoiceOver et les outils d'audit d'accessibilité
- Suivi de la conformité avec les mises à jour de la norme WCAG
6. Retour d'information et contact
Si tu rencontres un problème d'accessibilité dans l'application Whispet, contacte-nous :
- E-mail : hello@whispet.app
- Adresse : CRE8EVE Sp. z o.o., Tulipanowa 4, 72-003 Dobra, Pologne
Nous nous efforçons de répondre aux signalements d'accessibilité dans un délai de 14 jours ouvrés.
7. Procédure d'exécution
En cas de réponse insatisfaisante à un signalement d'accessibilité, l'Utilisateur a le droit :
- De déposer une plainte auprès du Président du Bureau de la concurrence et de la protection des consommateurs (UOKiK) — autorité compétente en matière d'accessibilité des produits et services dans le secteur privé en vertu de la directive (UE) 2019/882 : https://uokik.gov.pl
- De contacter le Médiateur des droits civiques (Ombudsman) : https://bip.brpo.gov.pl
- De contacter le Médiateur des consommateurs municipal ou de district
8. Informations techniques
- Plateforme : iOS 18+
- Framework : SwiftUI (API natives d'accessibilité iOS —
.accessibilityLabel,.accessibilityHint,.accessibilityElement,.accessibilityAction,.accessibilityHidden,@Environment(\.accessibilityReduceMotion), Dynamic Type,@FocusState) - Norme cible : WCAG 2.1 niveau AA
- Méthode d'évaluation : Auto-évaluation sur la base des lignes directrices WCAG 2.1, audit du code source pour les étiquettes d'accessibilité, contrastes et tailles des éléments interactifs
- Date du dernier audit : 3 juin 2026
- Langues de l'interface : polonais, anglais, allemand, espagnol, français, italien (6 langues)
9. Bases juridiques
- Directive (UE) 2019/882 — Acte européen sur l'accessibilité (European Accessibility Act)
- Loi polonaise du 26 mai 2023 sur la garantie du respect des exigences d'accessibilité de certains produits et services par les opérateurs économiques (Dz.U. 2023, pos. 1080) — transposition de la directive 2019/882 en droit polonais
- Norme EN 301 549 — Exigences d'accessibilité des produits et services TIC
- WCAG 2.1 (Web Content Accessibility Guidelines) niveau AA
Document mis à jour pour l'application Whispet v1.6 — 3 juin 2026
Version linguistique faisant foi
La présente traduction française est fournie à titre informatif uniquement. En cas de divergence ou de question d'interprétation, la version polonaise du document est la version juridiquement contraignante. La version anglaise constitue une traduction officielle de référence. En cas de contradiction entre les versions linguistiques, l'ordre de priorité suivant s'applique : polonais (contraignant) → anglais (référence) → français (informatif).