ComponentsTooltip

Tooltip

Popup with brief information shown when user interacts with an element using keyboard focus or mouse hover.

Documentation

Usage

import { Button, Tooltip } from "@optiaxiom/react";
 
export function App() {
  return (
    <Tooltip content="Sample tooltip content">
      <Button>Hover me</Button>
    </Tooltip>
  );
}

Controlled

Use the open and defaultOpen props to toggle between controlled and uncontrolled usage. And combine it with onOpenChange to listen for changes to the state.

Open: false

import { Button, Flex, Text, Tooltip } from "@optiaxiom/react";
import { useState } from "react";
 
export function App() {
  const [open, setOpen] = useState(false);
 
  return (
    <Flex gap="12">
      <Tooltip
        content="This is a controlled tooltip"
        onOpenChange={setOpen}
        open={open}
      >
        <Button>Hover me</Button>
      </Tooltip>
 
      <Text>Open: {open ? "true" : "false"}</Text>
    </Flex>
  );
}

Delay

Use the delayDuration prop to control how long to wait to open the tooltip after mouse hover.

import { Button, Flex, Tooltip } from "@optiaxiom/react";
 
export function App() {
  return (
    <Flex flexDirection="row">
      <Tooltip content="Sample tooltip content" delayDuration={0}>
        <Button>Delay duration 0ms</Button>
      </Tooltip>
 
      <Tooltip content="Sample tooltip content">
        <Button>Delay duration 700ms</Button>
      </Tooltip>
    </Flex>
  );
}

Placement

Use the side and align props to control where the tooltip is placed by default.

import { Button, Grid, Tooltip } from "@optiaxiom/react";
 
export function App() {
  return (
    <Grid gap="8" gridTemplateColumns="3">
      <Tooltip align="start" content="Top Start" side="top">
        <Button py="20">Top Start</Button>
      </Tooltip>
      <Tooltip align="center" content="Top Center" side="top">
        <Button py="20">Top Center</Button>
      </Tooltip>
      <Tooltip align="end" content="Top End" side="top">
        <Button py="20">Top End</Button>
      </Tooltip>
 
      <Tooltip align="start" content="Right Start" side="right">
        <Button py="20">Right Start</Button>
      </Tooltip>
      <Tooltip align="center" content="Right Center" side="right">
        <Button py="20">Right Center</Button>
      </Tooltip>
      <Tooltip align="end" content="Right End" side="right">
        <Button py="20">Right End</Button>
      </Tooltip>
 
      <Tooltip align="start" content="bottom-start" side="bottom">
        <Button py="20">Bottom Start</Button>
      </Tooltip>
      <Tooltip align="center" content="bottom-center" side="bottom">
        <Button py="20">Bottom Center</Button>
      </Tooltip>
      <Tooltip align="end" content="bottom-end" side="bottom">
        <Button py="20">Bottom End</Button>
      </Tooltip>
 
      <Tooltip align="start" content="Left Start" side="left">
        <Button py="20">Left Start</Button>
      </Tooltip>
      <Tooltip align="center" content="Left Center" side="left">
        <Button py="20">Left Center</Button>
      </Tooltip>
      <Tooltip align="end" content="Left End" side="left">
        <Button py="20">Left End</Button>
      </Tooltip>
    </Grid>
  );
}

Props

Tooltip

Doesn't render its own HTML element and forwards all props to the content component instead.

Prop

align

"center" | "end" | "start"

aria-label

A more descriptive label for accessibility purpose

string

auto

Enable this option to only show the tooltip when children is partially hidden due to text overflow.

false | true

className

string

content

The tooltip content.

ReactNode

defaultOpen

The initial open state in uncontrolled mode.

false | true

delayDuration

The duration from when the pointer enters the trigger until the tooltip gets opened. This will override the prop with the same name passed to Provider. @defaultValue 700

number

disabled

Whether to show or hide tooltip even if there’s content.

false | true

onEscapeKeyDown

Event handler called when the escape key is down. Can be prevented.

(event: KeyboardEvent) => void

onOpenChange

Handler that is called when the open state changes.

(open: boolean) => void

onPointerDownOutside

Event handler called when the a pointerdown event happens outside of the Tooltip. Can be prevented.

(event: PointerDownOutsideEvent) => void

open

The open state in controlled mode.

false | true

side

"bottom" | "left" | "right" | "top"

TooltipProvider

Doesn't render its own HTML element.

Prop

delayDuration

The duration from when the pointer enters the trigger until the tooltip gets opened. @defaultValue 700

number

disableHoverableContent

When true, trying to hover the content will result in the tooltip closing as the pointer leaves the trigger.

false | true

Default: true

skipDelayDuration

How much time a user has to enter another trigger without incurring a delay again. @defaultValue 300

number

Changelog

0.1.0

  • Added component