Description Accessibility: Keyboard & ARIA Tasks 2 & 3 - Changes
Changes
File
What changed
src/_includes/migration.njk
File drop zone: role="button", tabindex="0", aria-label, Enter/Space handler
src/integrations/index.njk
Pagination <li onclick> → <button> with aria-label; fixed broken aria-labelledby → aria-label on <nav>
src/_includes/feature_lists/features-table-base.njk
Feature info labels: role="button", tabindex="0", Enter/Space handler; dialog overlay: same; dialog containers: role="dialog", aria-modal, aria-labelledby with unique IDs
src/pricing/index.njk
Escape key closes active feature dialogs
src/_includes/components/ai-expert-modal.njk
role="dialog", aria-modal="true", aria-labelledby on modal; id on heading; aria-label on close button
src/js/ai-expert-modal.js
Escape key closes modal; focus trap (Tab/Shift+Tab cycle); focus moves to textarea on open
Test Plan
Keyboard navigation
Screen reader (VoiceOver on Mac: Cmd+F5)
Reactions are currently unavailable
You can’t perform that action at this time.
Accessibility: Keyboard & ARIA Tasks 2 & 3 - Changes
Changes
src/_includes/migration.njkrole="button",tabindex="0",aria-label, Enter/Space handlersrc/integrations/index.njk<li onclick>→<button>witharia-label; fixed brokenaria-labelledby→aria-labelon<nav>src/_includes/feature_lists/features-table-base.njkrole="button",tabindex="0", Enter/Space handler; dialog overlay: same; dialog containers:role="dialog",aria-modal,aria-labelledbywith unique IDssrc/pricing/index.njksrc/_includes/components/ai-expert-modal.njkrole="dialog",aria-modal="true",aria-labelledbyon modal;idon heading;aria-labelon close buttonsrc/js/ai-expert-modal.jsTest Plan
Keyboard navigation
/dashboard/migration/) - Tab to the drop zone, press Enter or Space, confirm file picker opens/integrations/) - Tab to PREVIOUS/NEXT buttons, press Enter, confirm pagination works/pricing/) - Tab to a feature info icon, press Enter, confirm dialog opens; press Escape to closeScreen reader (VoiceOver on Mac: Cmd+F5)