- Boutons sans aria-label descriptif
- Éléments interactifs sans rôles ARIA
- Navigation sans landmarks
- Texte
text-muted-foregroundpeut ne pas respecter WCAG AA - Éléments d'état (success, warning) à vérifier
- Focus trap manquant dans les modales
- Ordre de tabulation non optimisé
- Skip links absents
- Contenus dynamiques non annoncés
- États des composants non verbalisés
- Utilisation de composants sémantiques HTML5
- Structure heading hiérarchique correcte
- Formulaires avec labels associés
- ✅ Contraste 4.5:1 minimum
- ✅ Navigation entièrement au clavier
- ✅ Contenu accessible aux lecteurs d'écran
- ✅ Textes alternatifs pour toutes les images
- ✅ Contraste 7:1 pour le texte
- ✅ Pas de contenu clignotant
- ✅ Support complet des technologies d'assistance
// 1. Hook d'accessibilité global
const useAccessibility = () => {
const [announcements, setAnnouncements] = useState([]);
const [focusManagement, setFocusManagement] = useState(null);
const announce = (message: string, priority: 'polite' | 'assertive' = 'polite') => {
setAnnouncements(prev => [...prev, { message, priority, id: Date.now() }]);
};
return { announce, focusManagement };
};
// 2. Composant Screen Reader
const ScreenReaderAnnouncements = () => (
<div className="sr-only" aria-live="polite" aria-atomic="true">
{/* Annonces dynamiques */}
</div>
);
// 3. FocusTrap pour modales
const FocusTrap = ({ children, active }) => {
// Implémentation du piège de focus
};// Bouton accessible
const AccessibleButton = ({
children,
ariaLabel,
ariaDescribedBy,
loadingText,
...props
}) => (
<Button
aria-label={ariaLabel}
aria-describedby={ariaDescribedBy}
aria-busy={isLoading}
{...props}
>
{isLoading && <span className="sr-only">{loadingText}</span>}
{children}
</Button>
);
// Navigation avec landmarks
const AccessibleNavigation = () => (
<nav role="navigation" aria-label="Navigation principale">
<ul role="menubar">
<li role="menuitem">
<Link
to="/dashboard"
aria-current={location.pathname === '/dashboard' ? 'page' : undefined}
>
Tableau de bord
</Link>
</li>
</ul>
</nav>
);- Audit complet avec axe-core (1 jour)
- Ajout aria-labels sur tous les boutons (1 jour)
- Implémentation focus management (2 jours)
- Tests contraste automatisés (1 jour)
- Documentation guide accessibilité (1 jour)
- Conformité légale : Respect RGAA/WCAG obligatoire
- Marché élargi : +15% d'utilisateurs potentiels
- SEO : Meilleur référencement Google
- Réputation : Image d'entreprise inclusive
Effort estimé : 7-9 jours développeur
ROI : Critique pour conformité légale et expansion marché