Tooltip
A small hint that appears on hover or focus to label a control.
Usage
A tooltip is a short, non-interactive hint that appears when its trigger is hovered or focused — most often to name an icon-only control. The trigger is wired to the popup through render: pass it your own Button (or any focusable element) and the tooltip manages its description and open/close.
Tooltip is a compound component built on Base UI's Tooltip:
TooltipProvider— wraps a group of tooltips and shares the hoverdelay. Place one high in your app so that once one tooltip has opened, moving to a sibling shows its tooltip instantly instead of waiting out the delay again.Tooltip— the root for a single tooltip. Holds its open state; settrackCursorAxisto follow the pointer ordisabledto suppress it.TooltipTrigger— the element the tooltip describes. Userenderto project it onto your own control.TooltipContent— the portalled, auto-positioned popup. Draws the bubble and the optionalarrow, and accepts the shared floating props (side,align,sideOffset, …).
Tooltips aren't reachable on touch or by screen readers
A tooltip only appears on hover/focus, so its text is invisible on touch devices and isn't announced as the control's
name. Always give an icon-only trigger its own aria-label (or visible text) — the tooltip is a visual nicety on top,
not the accessible name. For content that must be reachable by everyone, use a Popover.
Reach for a Tooltip to label or hint at a control. For rich or interactive floating content, use a Popover; for a list of actions, use a Dropdown Menu; for a hover preview of a link, use a Preview Card.
Examples
Side & alignment
Position the bubble with side (top / right / bottom / left) and align (start / center / end) on TooltipContent. It flips and shifts automatically to stay in view.
Shared provider
Wrap a group of controls — here a Toolbar of formatting buttons — in a single TooltipProvider. The first tooltip waits out the delay; once it's open, sweeping the pointer to a neighbour shows that tooltip immediately. Within that grace window the tooltip also skips its open/close animation, so it reads as one tooltip relocating across the toolbar rather than each popup re-bouncing.
Rich content
TooltipContent accepts any markup, so you can pair a label with a Kbd shortcut. Keep it terse and non-interactive — the popup closes as soon as the pointer leaves the trigger.
Follow the cursor
Set trackCursorAxis on the Tooltip to 'x', 'y', or 'both' so the bubble follows the pointer along that axis — handy over a wide target like a chart or canvas where a fixed anchor would feel disconnected.
Without an arrow
Pass arrow={false} to drop the pointer for a flatter bubble that sits flush against its offset.
RTL
Every Appica UI component supports right-to-left layouts out of the box. Set the dir attribute on a container (commonly your <html> element) so CSS logical properties resolve correctly, and wrap your tree in DirectionProvider so direction-aware placement follows the same direction.
start/end alignment mirrors with the document direction. For setup details and caveats, see the RTL guide.
Scoped RTL needs the direction on the positioner
The popup portals to <body>, so its start/end alignment mirrors from the document direction (read from CSS,
not from DirectionProvider) — automatic when <html dir="rtl">. If you instead scope RTL to a subtree of an LTR
page, set it on the positioner so alignment still mirrors: <TooltipContent positionerProps={{ dir: 'rtl' }}>. See
Floating popups in a scoped RTL region.
API reference
Tooltip wraps Base UI's Tooltip. Each part forwards every remaining prop to the matching Base UI primitive, so anything it accepts works here — the tables below list the Appica additions and the most common props. See the Base UI docs for the complete API.
TooltipProvider
Shares the hover delay across the tooltips it wraps. Renders no DOM of its own.
Tooltip
The root for a single tooltip. Holds the open state; renders no DOM of its own.
TooltipTrigger
The element the tooltip describes. Forwards Base UI's Tooltip.Trigger; use render to project it onto your own control.
TooltipContent
The portalled, auto-positioned bubble. Draws the popup and the optional arrow, and accepts the shared floating props. Defaults to side="top", align="center", and sideOffset={8} (or 4 without an arrow).
Accessibility
- The popup is wired to the trigger via
aria-describedby, so screen readers announce it as a description — not the control's name. Give icon-only triggers anaria-label(or visible text) of their own. - The tooltip opens on hover and keyboard focus, and closes on Escape, on blur, or when the pointer leaves.
- Tooltips don't open on touch — there's no hover — so never hide essential information in one.
- Within a
TooltipProvider, thedelayis shared and subsequent tooltips open instantly within thetimeoutwindow. - Enter/exit transitions are skipped when the user prefers reduced motion.