fix: keyboard navigation for ContextMenu (WCAG 2.1.1) and SearchDialog combobox pattern
- ContextMenu: role=menu/menuitem/separator, aria-label, aria-disabled,
focus-visible ring, auto-focus first enabled item on open,
ArrowDown/Up roving focus (wrapping), Escape + Tab dismiss,
aria-hidden on decorative icons/status dot
- SearchDialog: role=dialog+aria-modal, combobox pattern on input
(role=combobox, aria-expanded, aria-autocomplete, aria-controls,
aria-activedescendant), focusedIndex state, ArrowDown/Up/Enter
keyboard navigation, role=listbox+option, aria-selected, role=status
+ aria-live=polite on empty state, footer hints updated with ↑↓
- Add 10 ContextMenu keyboard tests (role, aria-label, menuitem,
separator, Escape, Tab, ArrowDown, wrap, ArrowUp wrap, null guard)
- Add 13 SearchDialog keyboard tests (dialog, aria-modal, combobox,
listbox, option, ArrowDown, double-ArrowDown, clamp, ArrowUp-clamp,
Enter select, Enter noop, query reset, activedescendant)
Tests: 406 passed (383 existing + 23 new)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>