bit Bheadless

Accessibility Utilities

The low-level building blocks the components are made of — hidden labels, separators, live regions, announcements, hotkeys, focus scopes, reading direction and roving focus.

Implementation: CSS Tailwind

Visually hidden

BitBhVisuallyHidden hides content visually but keeps it in the accessibility tree — the label of an icon-only button is read as "Edit", "Notifications", "Delete". With Focusable="true" the content is revealed while keyboard focus is inside it: Tab into this demo to uncover the skip link.

Skip to content
Main content — the skip link moves focus here.

Separator

BitBhSeparator renders role="separator" (plus aria-orientation="vertical" when Orientation is vertical) so assistive tech announces the boundary between groups of content. When the line is purely visual, Decorative="true" renders role="none" instead. Both emit data-orientation for styling.

bit Bheadless

Unstyled, accessible components for Blazor.

Docs Source Changelog
or

Live regions

BitBhLiveRegion is rendered from the first render (live regions must exist before their content changes), so updating its content is announced. Polite regions (role="status") wait for the user to be idle; assertive ones (role="alert") interrupt — reserve them for urgent problems. Set VisuallyHidden="true" to announce without showing.

Announcer

For fire-and-forget messages from code, inject IBitBhAnnouncer and call AnnounceAsync. It writes to one shared, visually hidden live region (the one toasts and drag-and-drop use too), so nothing needs to be rendered. The log below only mirrors what a screen reader hears.

Notebook
Fountain pen
Desk lamp
Cart: 0 item(s)
  1. Nothing announced yet.

Hotkeys

BitBhHotkey registers a global shortcut while it is rendered and renders nothing. mod is ⌘ on Apple platforms and Ctrl elsewhere. Shortcuts without Ctrl / ⌘ (like shift+?) are ignored while typing in a text field unless AllowInInputs is set. Advertise shortcuts with aria-keyshortcuts.

Last shortcut: (none)

Focus scope and focus trap

BitBhFocusScope manages focus for a region: it moves focus inside when it activates, can trap Tab / Shift+Tab (Trapped) or just wrap it (Loop), and restores focus to where it was when it deactivates. BitBhFocusTrap is the same component with Trapped on by default. Click "Edit profile": focus lands on the first field and stays in the form; Save, Cancel or Escape return it to the button.

Ada Lovelace [email protected]

Reading direction

BitBhDirectionProvider cascades the reading direction to every component below it. In RTL, Left / Right arrow keys are mirrored: ArrowLeft moves to the next radio or tab. Set the HTML dir attribute as well so the layout flips; a component's own Dir parameter takes precedence.

Overview — focus a tab and press the arrow keys.

Roving focus

BitBhRovingFocusGroup + BitBhRovingFocusItem implement a roving tabindex for your own composite widgets: the group is a single Tab stop, arrow keys (per Orientation) and Home / End move between items, disabled items are skipped and the last focused item is remembered. Give the group the role that matches your widget — here a toolbar of toggle chips.

Filters: Engineering
An unhandled error has occurred. Reload 🗙