Tooltips provide helpful information about UI elements when users hover or focus on them. Use them for labels, keyboard shortcuts, and explanations.
Basic Usage
import { Tooltip } from "@soft-ui/react/tooltip"
import { IconButton } from "@soft-ui/react/icon-button"
import { RiSettings4Fill } from "@soft-ui/icons"
function Example() {
return (
<Tooltip.Root>
<Tooltip.Trigger>
<IconButton><RiSettings4Fill /></IconButton>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Arrow />
<Tooltip.Simple>Settings</Tooltip.Simple>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
)
}
Tooltip offers three content variants:
Simple
Basic text with optional keyboard shortcut:
import { Tooltip } from "@soft-ui/react/tooltip"
import { IconButton } from "@soft-ui/react/icon-button"
import { RiSaveFill } from "@soft-ui/icons"
function Example() {
return (
<Tooltip.Root>
<Tooltip.Trigger>
<IconButton><RiSaveFill /></IconButton>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Arrow />
<Tooltip.Simple shortcut={["⌘", "S"]}>
Save
</Tooltip.Simple>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
)
}
Explainer
Title with description and optional shortcut:
import { Tooltip } from "@soft-ui/react/tooltip"
import { IconButton } from "@soft-ui/react/icon-button"
import { RiMagicFill } from "@soft-ui/icons"
function Example() {
return (
<Tooltip.Root>
<Tooltip.Trigger>
<IconButton><RiMagicFill /></IconButton>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Arrow />
<Tooltip.Explainer title="AI Assistant" shortcut={["⌘", "K"]}>
Get help from AI to generate code and answer questions
</Tooltip.Explainer>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
)
}
Breakdown
Data visualization tooltips with title, description, and labeled items:
import { Tooltip } from "@soft-ui/react/tooltip"
function Example() {
return (
<Tooltip.Root>
<Tooltip.Trigger>
<div>Hover over chart</div>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Breakdown
title="March 2024"
description="Total revenue"
items={[
{ label: "Product A", value: "$45,231", color: "blue" },
{ label: "Product B", value: "$32,123", color: "success" },
{ label: "Product C", value: "$12,456", color: "warning" },
]}
/>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
)
}
Shared Delay with Provider
Use Tooltip.Provider to coordinate delays across multiple tooltips:
import { Tooltip } from "@soft-ui/react/tooltip"
import { IconButton } from "@soft-ui/react/icon-button"
import { RiHomeFill, RiUserFill } from "@soft-ui/icons"
function Example() {
return (
<Tooltip.Provider delay={200}>
<Tooltip.Root>
<Tooltip.Trigger>
<IconButton><RiHomeFill /></IconButton>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Simple>Home</Tooltip.Simple>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
<Tooltip.Root>
<Tooltip.Trigger>
<IconButton><RiUserFill /></IconButton>
</Tooltip.Trigger>
<Tooltip.Portal>
<Tooltip.Positioner>
<Tooltip.Popup>
<Tooltip.Simple>Profile</Tooltip.Simple>
</Tooltip.Popup>
</Tooltip.Positioner>
</Tooltip.Portal>
</Tooltip.Root>
</Tooltip.Provider>
)
}
Tooltips automatically animate with spring physics and respect reduced motion preferences.
API Reference
For complete prop documentation including positioning and delay options, see the Tooltip API reference.