Tooltip
Atom
Small floating helper text on hover or focus.
Playground
Every control sets a real prop of TooltipProps. The JSX below updates as you go.
Web
iOS
Android
JSX · TooltipProps
Variants
7 examples from src/atoms/tooltip/tooltip.md, each rendered live from its own JSX.
Anatomy
1
Trigger
2
Bubble
3
Arrow
Dimmed parts appear only in some states or variants.
Props
13 props on TooltipProps, grouped as they are declared in source. Required props are marked *.
Accessibility and keyboard
Keyboard
Tab
Focus on the trigger shows the tip
Escape
Hides the tip without moving focus
Semantics
Roles
alert
button
States
expanded
ARIA on web
aria-expanded
aria-live
From the docs
Small floating helper text on hover or focus.
Hover and focus are pointer-and-keyboard affordances. Touch pointers are skipped, and iOS and Android never fire hover at all. On touch the built-in triggers toggle the tip on tap (tap again to close it; a tip is never modal, so a tap elsewhere goes to the page). A long press is not taken: it belongs to the platform and to the control. An element trigger has no tap toggle either, because that press belongs to the child, so on native and on touch the controlled open prop is the way to show its tip: drive it from w
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
The examples pinned open leave room on the bubble's side, as a page would: the bubble floats and takes no room of its own.
The bubble floats over the page: it is drawn in the overlay layer of the nearest OverlayProvider, placed against its trigger, and changes no layout, so a tip on a table row's action never grows the cell. It centers on the trigger at the side you pick, flips to the opposite side when the visible area has no room there, and slides to stay inside it. Moving the pointer from the trigger onto the bubble keeps it up. With no OverlayProvider mounted it still floats, on an absolute anchor beside the trigger, but an ancestor that clips its content can then cut it off.
The bubble inverts against the page (dark in the light scheme, light in the dark one) and sets its text in Dark Factory's label type; iOS, which has no tooltip, shows the same bubble, and Android keeps the Material 3 plain tooltip.
The trigger is a boolean axis of its own, resolved first match wins:
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--bg
--fd
--ft
--ln2
--sf2
--sh-md
--tx