Tooltip
A popup that appears when an element is hovered or focused, showing a hint for sighted users.
Accessibility guidelines
To ensure that tooltips are accessible and helpful, follow these guidelines:
- Provide an accessible name for the trigger: The tooltip’s trigger must have a meaningful label. This can be its visible text or an
aria-label
/aria-labelledby
attribute. The label should closely match the tooltip’s content to ensure consistency for screen reader users. - Avoid tooltips for critical information: Tooltips work well for enhancing UI clarity (like labeling icon buttons) but should not be the sole means of conveying important information. Since tooltips do not appear on touch devices, consider using a Popover for essential content.
- Avoid tooltips for “infotips”: If your tooltip is attached to an “info icon” button whose only purpose is to show the tooltip, opt for Popover and add the
openOnHover
prop instead. Tooltips should describe an element that performs an action separate from opening the tooltip itself.
API reference
Import the component and assemble its parts:
import { Tooltip } from '@base-ui-components/react/tooltip';
<Tooltip.Provider>
<Tooltip.Root>
<Tooltip.Trigger />
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Arrow />
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
</Tooltip.Provider>
Provider
Provides a shared delay for multiple tooltips. The grouping logic ensures that once a tooltip becomes visible, the adjacent tooltips will be shown instantly.
Prop | Type | Default | |
---|---|---|---|
delay |
|
| |
closeDelay |
|
| |
timeout |
|
|
Root
Groups all parts of the tooltip. Doesn’t render its own HTML element.
Prop | Type | Default | |
---|---|---|---|
defaultOpen |
|
| |
open |
|
| |
onOpenChange |
|
| |
action |
|
| |
onOpenChangeComplete |
|
| |
trackCursorAxis |
|
| |
delay |
|
| |
closeDelay |
|
| |
hoverable |
|
|
Trigger
An element to attach the tooltip to.
Renders a <button>
element.
Prop | Type | Default | |
---|---|---|---|
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-popup-open | Present when the corresponding tooltip is open. |
Portal
A portal element that moves the popup to a different part of the DOM.
By default, the portal element is appended to <body>
.
Prop | Type | Default | |
---|---|---|---|
container |
|
| |
keepMounted |
|
|
Positioner
Positions the tooltip against the trigger.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
align |
|
| |
alignOffset |
|
| |
side |
|
| |
sideOffset |
|
| |
arrowPadding |
|
| |
anchor |
|
| |
collisionBoundary |
|
| |
collisionPadding |
|
| |
sticky |
|
| |
positionMethod |
|
| |
trackAnchor |
|
| |
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-open | Present when the tooltip is open. | |
data-closed | Present when the tooltip is closed. | |
data-anchor-hidden | Present when the anchor is hidden. | |
data-side | Indicates which side the tooltip is positioned relative to the trigger. |
CSS Variable | Description | |
---|---|---|
--anchor-height | The anchor's height. | |
--anchor-width | The anchor's width. | |
--available-height | The available height between the trigger and the edge of the viewport. | |
--available-width | The available width between the trigger and the edge of the viewport. | |
--transform-origin | The coordinates that this element is anchored to. Used for animations and transitions. |
Popup
A container for the tooltip contents.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-open | Present when the tooltip is open. | |
data-closed | Present when the tooltip is closed. | |
data-instant | Present if animations should be instant. | |
data-side | Indicates which side the tooltip is positioned relative to the trigger. | |
data-starting-style | Present when the tooltip is animating in. | |
data-ending-style | Present when the tooltip is animating out. |
Arrow
Displays an element positioned against the tooltip anchor.
Renders a <div>
element.
Prop | Type | Default | |
---|---|---|---|
className |
|
| |
render |
|
|
Attribute | Description | |
---|---|---|
data-open | Present when the tooltip is open. | |
data-closed | Present when the tooltip is closed. | |
data-uncentered | Present when the tooltip arrow is uncentered. | |
data-anchor-hidden | Present when the anchor is hidden. | |
data-side | Indicates which side the tooltip is positioned relative to the trigger. |