Accessibility
h2). Closing returns focus to the inbox trigger.
The drawer is non-modal: the page stays in the tab order and outside controls remain usable. Outside press and light dismiss do not close the inbox beside a live call surface; Escape, the trigger, the close control, and activating a row still close it.
The trigger exposes aria-expanded and an accessible name from triggerLabel(unreadCount). The unread tally appears in the counter beside the visible inbox label, not in the panel header or on the Unread filter segment.
The virtualized list exposes scrollRegionLabel. Each row is a NotificationItem whose whole surface is one Go to button, named by the row text and ending with the entry's Go to label, with read toggle, dismiss and actions menu above it.
A group heading is an h3 inside its own list item, placed before the first row of its group, so a screen reader announces the group before its rows. The list count includes the headings.