Skip to main content
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 Variants

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.