PR Summary

What problems was I solving

A React Doctor accessibility scan reported high-confidence issues in the repository: several custom combobox-style popover triggers exposed aria-expanded without a matching aria-controls relationship, and the shared ResolvedImage image component did not explicitly resolve alternative text from consumer props or the asset model.

What user-facing changes did I ship

Improved screen-reader support for the organization tenant switcher, analytics attribution/page filters, page-link domain dropdown, and all rendered images. There are no visible UI or functional behavior changes.

How I implemented it

Applied targeted, rollback-friendly fixes in six React component files. Four management-ui popover components now generate stable React IDs via useId() and link their triggers to their popup content/list containers with aria-controls. The two ResolvedImage implementations (page-rendering-react and page-ui) now explicitly destructure the alt prop and render <img alt={alt ?? src.altText ?? ""}>, keeping consumer alt text, asset alt text, and a safe fallback in precedence order.

Description for the changelog

Fixed six React Doctor accessibility errors across management-ui and page rendering packages by adding stable aria-controls linkages to four custom combobox popovers and explicit alt text fallbacks to the two shared ResolvedImage components.

management-ui: combobox popover accessibility links

low4 files
Adds stable `useId()`-generated `aria-controls` associations between combobox trigger buttons and their popover list/content regions across the tenant selector, attribution filter, page filter, and page-link domain dropdown.

page rendering: ResolvedImage alt-handling

low2 files
Adds explicit `alt` prop handling to the two shared `ResolvedImage` renderers, applying consumer-provided alt text first, then the asset's `altText`, then an empty-string fallback.