Accessibility
ControlIsland, ControlIslandStatus, ControlIslandVariant from @prepared911/ui/blocks/control-island.
role="group" named by label. The Supervisor variant gets its group from the Expanding ButtonGroup, with the same name.aria-pressed) named by its label whether or not the label is visible. Tab visits each in DOM order; arrows do nothing. A collapsed role's label also shows in a visual-only tooltip on hover and keyboard focus (announce={false}, so a screen reader reads the name once and the tooltip adds no description); the selected role shows its label and has no tooltip, and touch shows none.roleLabel. The queue label is plain text, so a screen reader reads "Calltaker, All queues".aria-hidden.aria-pressed. Its name does not change with the state, so the pressed state is the only thing that changes. It has a tooltip with the same text.aria-haspopup="menu" and aria-expanded, named by its visible label and described by statusMenuLabel. Enter, Space, or a press opens the menu on its first row; Escape closes it and returns focus to the pill. The menu is a radio group named by statusMenuLabel, and its rows are menuitemradio with aria-checked.<output> (role="status", polite) is mounted from the first render and empty until the status becomes Ringing, so entering Ringing is announced once with ringingAnnouncement, and leaving it clears the region.data-motion="reduced"): the chevron still turns over when the menu opens, without animating, and the Supervisor segments change width instantly. Nothing is shown only by movement.ButtonBorder, reserved and transparent outside forced colors so no size changes. The badge becomes Highlight. Busy, Ready, and Ringing stay told apart by their labels and the Ringing glyph, not by color.