Accessibility
Toolbar from @prepared911/ui/toolbar presents a compact floating strip of actions. The component supplies the floating container and sizing; your job is to apply the toolbar role with a label, give each control an accessible name, and let keyboard users reach every affordance.
role="toolbar" and aria-label ("Message actions", "Selection actions"). When more than one toolbar exists on the page, labels disambiguate them for rotor users.Button inside carries a title/label; toggle buttons expose aria-pressed.@prepared911/ui, a Popover or Menu trigger wrapped in ToolbarItem is one roving item: the toolbar keeps one tab stop, and Arrow Left / Right (mirrored in RTL), Home, and End move across triggers like any other item. Enter, Space, or a press opens the surface; Escape closes it and focus returns to the trigger, which stays the tab stop. For a menu, Arrow Down opens on the first row and Arrow Up on the last; Tab from an open menu closes it and returns focus to the trigger. A disabled button inside a trigger is skipped by the arrows; disabled on ToolbarItem also works and wins. Put menu triggers in a horizontal toolbar; in a vertical toolbar Arrow Down and Arrow Up open the menu instead of moving.
role="toolbar" on the root with aria-label or aria-labelledby.role="group" around related subgroups (formatting vs alignment vs insert).aria-pressed; disabled buttons expose aria-disabled.Menu so keyboard users reach them without horizontal scrolling.