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>
)