Band
A band is the strip that separates two areas of a window: the search field under a toolbar, the composer under a message list, the action row along the bottom. Padding, and one rule on one edge.
It renders a plain <div> with no ARIA role, and that is the design rather than an oversight.
The shape is chrome, not meaning.
Basic
Inbox
24Message list goes here.
Which edge
edge takes top, bottom, both or none.
The default is bottom, and it is a coin toss made explicit: across the blueprint catalog the
split is exactly 12 bands ruled on top and 12 on the bottom. Say which one you mean at the call
site rather than relying on the default to match your layout.
edge="bottom"
content between two bands
edge="top"
Padding and surface
padding takes none, xs, sm, md or lg on the token scale. surface takes none,
subtle or muted for the band that sits on its own background.
Draft saved a moment ago.
Why not toolbar, container or card.header
All three were considered and rejected, and the reasons are worth knowing because they are the reasons a band exists at all.
| Candidate | Why it does not fit |
|---|---|
toolbar |
renders role="toolbar", an ARIA composite widget promising operable controls with arrow-key navigation. A band holding one search field does not deliver that, and the role would be a promise the surface does not keep. |
container |
caps and centers its width. A band runs edge to edge; capping it is the opposite of the point. |
card.header / card.footer |
bring exactly this shape — and only at the two ends of a card. A window with seven bands has two of them. |
When a band does carry meaning
Use as when the strip is a real landmark, and give it a name:
{{-- A band that IS the page footer, not one that merely looks like one. --}}
<x-wirekit::band as="footer" edge="top" aria-label="Page actions">
…
</x-wirekit::band>
Without as, no role is emitted and none is implied.
Keyboard Interaction
A band is a layout wrapper and takes no focus of its own. Keyboard interaction belongs to
whatever it contains — and that is the reason it emits no role: a role="toolbar" would
announce arrow-key navigation between the controls inside, which nothing here implements.