Toolbar
A container for grouping a set of buttons and controls.
Accessibility guidelines
To ensure that toolbars are accessible and helpful, follow these guidelines:
- Use inputs sparingly: Left and right arrow keys are used to both move the text insertion cursor in an input, and to navigate among controls in horizontal toolbars. When using an input in a horizontal toolbar, use only one and place it as the last element of the toolbar.
API reference
Import the component and assemble its parts:
import { Toolbar } from '@base-ui-components/react/toolbar';
<Toolbar.Root>
<Toolbar.Button />
<Toolbar.Link />
<Toolbar.Separator />
<Toolbar.Group>
<Toolbar.Button />
<Toolbar.Button />
<Toolbar.Group />
<Toolbar.Input />
</Toolbar.Root>
Root
A container for grouping a set of controls, such as buttons, toggle groups, or menus.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
cols |
|
| |
loop |
|
| |
orientation |
|
| |
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-orientation | Indicates the orientation of the toolbar. | |
data-disabled | Present when the toolbar is disabled. |
Button
A button that can be used as-is or as a trigger for other components.
Renders a <button>
element.
Prop | Type | Default | |
---|---|---|---|
focusableWhenDisabled |
|
| |
disabled |
|
| |
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-highlighted | Present when the button is the active item in the toolbar. | |
data-orientation | Indicates the orientation of the toolbar. | |
data-disabled | Present when the button is disabled. | |
data-focusable | Present when the button remains focusable when disabled. |
Link
A link component.
Renders an <a>
element.
Prop | Type | Default | |
---|---|---|---|
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-highlighted | Present when the link is the active item in the toolbar. | |
data-orientation | Indicates the orientation of the toolbar. |
Input
A native input element that integrates with Toolbar keyboard navigation.
Renders an <input>
element.
Prop | Type | Default | |
---|---|---|---|
focusableWhenDisabled |
|
| |
disabled |
|
| |
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-highlighted | Present when the input is the active item in the toolbar. | |
data-orientation | Indicates the orientation of the toolbar. | |
data-disabled | Present when the input is disabled. | |
data-focusable | Present when the input remains focusable when disabled. |
Group
Groups several toolbar items or toggles.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
disabled |
|
| |
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-orientation | Indicates the orientation of the toolbar. | |
data-disabled | Present when the group is disabled. |
Separator
A separator element accessible to screen readers.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-orientation | Indicates the orientation of the toolbar. |
Examples
Using with Menu
All Base UI popup components that provide a Trigger
component can be integrated with a toolbar by passing the trigger to Toolbar.Button
with the render
prop:
return (
<Toolbar.Root>
<Menu.Root>
<Toolbar.Button render={<Menu.Trigger />} />
<Menu.Portal>
{/* Compose the rest of the menu */}
</Menu.Portal>
</Menu.Root>
</Toolbar.Root>
)
This applies to AlertDialog
, Dialog
, Menu
, Popover
and Select
.
Using with Tooltip
Unlike other popups, the toolbar item should be passed to the render
prop of Tooltip.Trigger
:
return (
<Toolbar.Root>
<Tooltip.Root>
<Tooltip.Trigger render={<Toolbar.Button />} />
<Tooltip.Portal>
{/* Compose the rest of the tooltip */}
</Tooltip.Portal>
</Tooltip.Root>
</Toolbar.Root>
)
Using with NumberField
To use a NumberField in the toolbar, pass NumberField.Input
to Toolbar.Input
using the render
prop:
return (
<Toolbar.Root>
<NumberField.Root>
<NumberField.Group>
<NumberField.Decrement />
<Toolbar.Input render={<NumberField.Input />} />
<NumberField.Increment />
</NumberField.Group>
</NumberField.Root>
</Toolbar.Root>
)