Task Bar
A task bar is a toolbar-style container for task-related action buttons, using the ARIA toolbar role with accessible labeling. It renders as a <div> with role="toolbar" to group related task actions together, making the container semantically meaningful to assistive technologies.
Task bars are commonly used to provide quick access to frequently performed actions such as "New", "Open", "Save", or other task-specific operations. The component works with TaskBarItem child components or plain buttons.
Example
Show demo markup
<div class="task-bar" role="toolbar" aria-label="Tasks"><button class="task-bar-button">New</button><button class="task-bar-button">Open</button></div>
Usage example
<script lang="ts">
import TaskBar from "./TaskBar.svelte";
</script>
<TaskBar label="Tasks">
<button>New</button>
<button>Open</button>
<button>Save</button>
</TaskBar>
Show Svelte source
// In your Svelte component:
import TaskBar from "lily-design-system-svelte-headless/components/TaskBar/TaskBar.svelte";
<TaskBar>
<!-- list children -->
</TaskBar>
Usage
<TaskBar label="Document actions">
<TaskBarButton>New</TaskBarButton>
<TaskBarButton>Open</TaskBarButton>
<TaskBarButton>Save</TaskBarButton>
<TaskBarButton>Print</TaskBarButton>
</TaskBar>
<TaskBar label="Patient record shortcuts">
<TaskBarButton>New Referral</TaskBarButton>
<TaskBarButton>Book Appointment</TaskBarButton>
<TaskBarButton>Request Test</TaskBarButton>
<TaskBarButton disabled>Discharge</TaskBarButton>
</TaskBar>
Props
label: string (required) -- accessible name for the toolbar via aria-label
children: slot (required) -- task bar item elements
Keyboard Interactions
- Tab: Focus moves to the first focusable item within the toolbar (native browser behavior)
ARIA
role="toolbar" -- identifies the container as a toolbar widget, grouping related controls
aria-label -- provides the accessible name for the toolbar, set from the label prop
When to Use
- Use for a horizontal bar of task shortcuts or quick actions such as "New", "Open", "Save".
- Use for application-level quick access to frequently performed operations.
- Use when related action buttons should be semantically grouped as a toolbar for assistive technologies.
- Use when task actions are domain-specific operations (e.g., patient workflows, document management).
- Use with TaskBarButton children to provide consistent button styling within the bar.
When Not to Use
- Do not use for primary navigation -- use NavigationMenu instead.
- Do not use for tool actions such as text formatting -- use ToolBar instead.
- Do not use for tab-based content switching -- use TabBar instead.
- Do not use for a single action -- use Button instead.
Headless
This headless component renders a <div> with role="toolbar" and aria-label to identify it as a toolbar widget for assistive technologies. The consumer provides all child buttons, keyboard navigation (if arrow key support is desired), and visual styling including layout, spacing, and button appearance.
Styles
The consumer provides all CSS styling. The component renders with a .task-bar class for targeting. No default styles are included — this is a fully headless component.
Testing
- Verify the component renders a
<div> element with class task-bar
- Verify role="toolbar"` -- identifies the container as a toolbar widget, grouping related controls
- Verify aria-label
-- provides the accessible name for the toolbar, set from the label` prop
- Verify keyboard interactions work correctly
- Verify pass-through attributes are applied
Advice
- Designers: Arrange buttons in a logical order of frequency or workflow. Use icon+label or icon-only buttons with tooltips for space efficiency.
- Developers: Place TaskBarButton components or plain buttons as children. Consider implementing arrow key navigation within the toolbar for full WAI-ARIA toolbar compliance.
Implementation Notes
- Renders as a
<div> element with role="toolbar" to identify it as a toolbar widget
- Accessible name is set via
aria-label from the required label prop
- Content is provided through the children slot, typically TaskBarItem components or buttons
- Does not implement arrow key navigation itself; consumers can add keyboard navigation as needed
- Passes through all additional HTML attributes via
...restProps
- Uses
slot for children content
Composition
TaskBar uses the Bar/BarButton composition pattern. Place TaskBarButton components as children inside TaskBar. The TaskBar provides the role="toolbar" container with an accessible label, while each TaskBarButton provides an individual action button within the toolbar.
Related components
task-bar-button — one item in a task bar
References
- WAI-ARIA Toolbar Pattern: https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/
Canonical contract
Generated from this component's canonical metadata — the machine-checked source the implementations are held to.
Metadata
- Component: task-bar
- PascalCase: TaskBar
- Description: a horizontal bar of task shortcuts or actions
- Status: beta — implemented and unit-tested in all seven frameworks with an axe-clean demo page; not yet exercised in composed flows
- HTML tag: <div>
- CSS class: .task-bar
- Interactive: yes
ARIA
role="toolbar" -- identifies the container as a toolbar widget, grouping related controls aria-label -- provides the accessible name for the toolbar, set from the label prop
Keyboard
- Tab: Focus moves to the first focusable item within the toolbar (native browser behavior)
Props
label: string (required) -- accessible name for the toolbar via aria-label children: slot (required) -- task bar item elements