Skip to content

Improve accessibility for WCAG 2.1 AA compliance#2

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1755650845-accessibility-improvements
Open

Improve accessibility for WCAG 2.1 AA compliance#2
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1755650845-accessibility-improvements

Conversation

@devin-ai-integration

Copy link
Copy Markdown

Link to Devin run: https://app.devin.ai/sessions/56b4722a407a491099f0163e0f294ddc
Requested by: @samfert-codeium

Summary

This PR implements comprehensive accessibility improvements to make Firefly III compliant with WCAG 2.1 AA standards. The changes enhance usability for users with disabilities while maintaining existing functionality and design patterns.

Changes in this pull request:

  • Semantic HTML Structure: Added proper HTML5 landmarks (<main>, <nav>, <header>, <footer>) with ARIA labels across both v1 (Twig) and v2 (Blade) layout templates
  • Keyboard Navigation: Implemented skip links to allow keyboard users to jump directly to main content
  • Screen Reader Support: Added comprehensive ARIA labels, descriptions, and live regions for dynamic content announcements
  • Form Accessibility: Enhanced Vue.js transaction components with proper form labeling, combobox patterns, and error announcements
  • Heading Hierarchy: Improved heading structure (h1 → h2 → h3) for better screen reader navigation
  • Flash Message Accessibility: Added ARIA live regions to flash messages for proper screen reader announcements
  • Translation Integration: Added accessibility-specific translation keys to support multilingual accessibility labels

Files Modified:

Layout Templates

  • resources/views/layout/default.twig - v1 interface accessibility improvements
  • resources/views/v2/layout/v2.blade.php - v2 interface accessibility improvements
  • resources/views/partials/flashes.twig - Flash message accessibility

Vue.js Components

  • resources/assets/v1/src/components/transactions/CreateTransaction.vue - Form accessibility and live regions
  • resources/assets/v1/src/components/transactions/AccountSelect.vue - Combobox patterns and proper labeling
  • resources/assets/v1/src/components/transactions/Amount.vue - Form accessibility and error handling
  • resources/assets/v1/src/components/transactions/TransactionDescription.vue - Combobox accessibility

Translations

  • resources/lang/en_US/firefly.php - Added accessibility-related translation keys

⚠️ Important Review Notes

This PR requires careful testing as the accessibility improvements could not be fully validated due to local environment setup issues.

Critical Review Checklist:

  1. Translation Keys: Verify all new translation keys load correctly in both Twig and Vue contexts
  2. Screen Reader Testing: Test with actual assistive technology (NVDA, JAWS, VoiceOver)
  3. Keyboard Navigation: Verify skip links work and tab order is logical
  4. ARIA Patterns: Validate combobox, live region, and labeling implementations are correct
  5. Cross-Interface Compatibility: Test both v1 and v2 interfaces maintain functionality
  6. Form Accessibility: Ensure form validation errors are properly announced
  7. Visual Regression: Confirm no visual layout issues were introduced

Potential Risk Areas:

  • Complex ARIA patterns that could make accessibility worse if implemented incorrectly
  • Translation key references across mixed template systems (Twig/Blade/Vue)
  • Vue.js component integration with new ARIA attributes
  • Bootstrap/AdminLTE CSS framework compatibility

The accessibility improvements follow established WCAG 2.1 AA guidelines and leverage existing application patterns like the sr-only class and translation system for consistency.

- Add semantic HTML structure with proper landmarks (main, nav, header, footer)
- Implement comprehensive ARIA labels and descriptions throughout the application
- Add skip links for keyboard navigation to main content
- Enhance Vue.js components with proper form accessibility patterns
- Add live regions for dynamic content announcements (flash messages, errors)
- Improve heading hierarchy and focus management
- Add screen reader support for interactive elements
- Include multilingual accessibility labels in translation system

Changes cover both v1 (Twig/Vue.js) and v2 (Blade/Alpine.js) interfaces:
- Layout templates: semantic structure, navigation labels, breadcrumb accessibility
- Vue components: combobox patterns, form labeling, error announcements
- Flash messages: proper alert roles and live regions
- Translation keys: comprehensive accessibility labels in English

These improvements enhance usability for users with disabilities while maintaining
existing functionality and design patterns.

Co-Authored-By: Sam Fertig <sam.fertig@codeium.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants