WCAG 2.1 AA — release blocker
Keyboard
| Key | Action |
|---|---|
Enter / Space | Open the popover (on the trigger). |
Escape | Close the popover and return focus to the trigger. |
Tab | Move focus through interactive elements inside the popover. |
Screen reader
PopoverTriggersetsaria-expandedandaria-haspopup="dialog".PopoverContentrendersrole="dialog"so assistive tech announces it as a dialog.- When the popover opens, focus moves to the first focusable element inside.
Focus management
- On open, focus moves into the popover content. On close, focus returns to the trigger.
Tabcycles through focusable children. Focus does not escape the popover while open.- Outside click dismisses via
onOpenChange(false)and returns focus to the trigger.
React Native
- Uses
<Modal>withonRequestClosefor Android back button. - Backdrop
Pressabledismisses on tap.
Color is never the only signal
- The popover background uses
bg-popoverwithtext-popover-foreground— 4.5:1 contrast verified.
Audit checklist
-
role="dialog"on the content -
aria-expandedon the trigger - Focus moves into popover on open
- Focus returns to trigger on close
- Escape dismisses the popover
- All interactive children keyboard-accessible
- 4.5:1 contrast in light and dark