Implement comprehensive accessibility improvements (WCAG 2.1)#332
Closed
yshmarov wants to merge 1 commit into
Closed
Implement comprehensive accessibility improvements (WCAG 2.1)#332yshmarov wants to merge 1 commit into
yshmarov wants to merge 1 commit into
Conversation
- Add skip navigation links to application, centered, and static layouts - Replace onclick handler on notification rows with proper <a> links - Replace inline onchange on language picker with Stimulus controller - Add alt text to all logo images (navbar, footer, centered layout) - Add role="alert" to error explanation partial for screen readers - Fix features list: change misused <dl> to proper <ul>/<li> - Fix dialog controller: store/restore focus instead of blurring, and properly clean up event listeners - Add aria-label to user avatar dropdown button - Add aria-hidden="true" to decorative SVGs/icons across nav_link helper, TabsComponent, EmptyStateComponent, sidebar, navbar, modal - Fix privacy_setting_icon: replace invalid alt on <span> with role="img" and aria-label - Add prefers-reduced-motion support to disable animations/transitions - Remove viewport zoom restriction on mobile browsers (WCAG 1.4.4), keep only for native app shells - Update CLAUDE.md with accessibility guidelines section https://claude.ai/code/session_016dLbGjCok7srCAqX5uH6pt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements comprehensive accessibility improvements across the application to meet WCAG 2.1 standards. Changes include semantic HTML fixes, proper ARIA attributes, keyboard navigation support, focus management, and motion preferences handling.
Key Changes
Documentation & Guidelines
CLAUDE.mdcovering semantic HTML, images/icons, focus management, ARIA, forms, motion, and JavaScript best practicesSemantic HTML & Structure
onclickhandler with proper<a>link wrapper for keyboard accessibility<dl>to proper<ul>/<li>structureid="main-content"anchors to all layout templates for skip navigation linksImages & Icons
altattributes to all logo images with site name fallbackaria-hidden="true"to all decorative SVG icons and images throughout components and viewsprivacy_setting_iconhelper: changed from invalidalton<span>to properrole="img"andaria-labelForms & Interaction
onchangehandler to Stimulus controller (locale_picker_controller.js)<label class="sr-only">for language picker accessibilityrole="alert"to error messages for screen reader announcementsFocus & Keyboard Navigation
dialog_controller.jsto restore focus to trigger element when modal closes (WCAG 2.4.3)aria-labelto user menu buttonMotion & Zoom
prefers-reduced-motion: reducemedia query to disable animations for users with motion sensitivityuser-scalable=0restriction for regular mobile browsers (only restrict in native app shells per WCAG 1.4.4)Component Updates
empty_state_component.rbto addaria-hidden="true"to decorative iconstabs_component.html.erbto addaria-hidden="true"to tab iconsnav_linkhelper to properly handle emoji icons witharia-hiddenwrapperImplementation Details
aria-hidden="true"to prevent screen reader clutterrole="img"witharia-labelfor proper semantic meaningsr-onlyandfocus:not-sr-onlyutilities for keyboard-only visibilityhttps://claude.ai/code/session_016dLbGjCok7srCAqX5uH6pt