Surfaced by @paper/bulma in #760.
TabsItem in renderless mode (as={null}) registers Atom's null element, so focusSelectedTab / focusAdjacent are no-ops. ArrowLeft/ArrowRight still update selection, panels, and aria-selected, but the visible focus ring and screen-reader announcement stay on the previously focused node.
BuTab has to render li > a with is-active on the li (Bulma's fixture). Emerald uses a real <button> tab and never hits this.
This is an APG tabs deviation the axe sweep cannot catch.
Expected
Let TabsItem accept an element input at registration so a renderless consumer can point focus-follow at the real control (the <a> inside the <li>).
Surfaced by
@paper/bulmain #760.TabsItemin renderless mode (as={null}) registers Atom's null element, sofocusSelectedTab/focusAdjacentare no-ops. ArrowLeft/ArrowRight still update selection, panels, andaria-selected, but the visible focus ring and screen-reader announcement stay on the previously focused node.BuTabhas to renderli > awithis-activeon theli(Bulma's fixture). Emerald uses a real<button>tab and never hits this.This is an APG tabs deviation the axe sweep cannot catch.
Expected
Let
TabsItemaccept an element input at registration so a renderless consumer can point focus-follow at the real control (the<a>inside the<li>).