Skip to main content

Tooltip

A popup that displays information related to an element when the element receives keyboard focus or the mouse hovers over it.

1'use client';
2
3import { Button } from '@/components/ui/button';
4import { Tooltip } from '@/components/ui/tooltip';
5
6export function Default() {
7 return (
8 <Tooltip>
9 <Tooltip.Trigger asChild>
10 <Button variant="outline">Hover me</Button>
11 </Tooltip.Trigger>
12 <Tooltip.Content>
13 <p>Add to library</p>
14 </Tooltip.Content>
15 </Tooltip>
16 );
17}

Installation

pnpm dlx mateui add tooltip

Anatomy

1import { Tooltip } from '@/components/ui/tooltip';
1<Tooltip>
2 <Tooltip.Trigger asChild>
3 <Button variant="outline">Hover me</Button>
4 </Tooltip.Trigger>
5 <Tooltip.Content>
6 <p>Helpful tooltip text</p>
7 </Tooltip.Content>
8</Tooltip>

Features

  • Multiple positions - Top, bottom, left, or right placement
  • Delay control - Configurable hover delay
  • Smooth animations - Fade and blur entrance effects
  • Arrow indicator - Visual pointer to the trigger element

Variants

Positions

1'use client';
2
3import { Button } from '@/components/ui/button';
4import { Tooltip } from '@/components/ui/tooltip';
5
6export function Positions() {
7 return (
8 <div className="flex flex-col items-center gap-10 md:flex-row">
9 <Tooltip>
10 <Tooltip.Trigger asChild>
11 <Button variant="outline">Top</Button>
12 </Tooltip.Trigger>
13 <Tooltip.Content side="top">Tooltip on top</Tooltip.Content>
14 </Tooltip>
15
16 <Tooltip>
17 <Tooltip.Trigger asChild>
18 <Button variant="outline">Bottom</Button>
19 </Tooltip.Trigger>
20 <Tooltip.Content side="bottom">Tooltip on bottom</Tooltip.Content>
21 </Tooltip>
22
23 <Tooltip>
24 <Tooltip.Trigger asChild>
25 <Button variant="outline">Left</Button>
26 </Tooltip.Trigger>
27 <Tooltip.Content side="left">Tooltip on left</Tooltip.Content>
28 </Tooltip>
29
30 <Tooltip>
31 <Tooltip.Trigger asChild>
32 <Button variant="outline">Right</Button>
33 </Tooltip.Trigger>
34 <Tooltip.Content side="right">Tooltip on right</Tooltip.Content>
35 </Tooltip>
36 </div>
37 );
38}

API Reference

Tooltip

PropTypeDefaultDescription
delayDurationnumber200Delay before showing (ms)
openboolean-Controlled open state
onOpenChange(open: boolean) => void-Callback when state changes

Tooltip.Trigger

PropTypeDefaultDescription
asChildbooleanfalseRender as child element
classNamestring-Additional CSS classes

Tooltip.Content

PropTypeDefaultDescription
side'top' | 'bottom' | 'left' | 'right''top'Tooltip position
sideOffsetnumber4Distance from trigger (px)
classNamestring-Additional CSS classes

Variants

Different Positions

1// Top (default)
2<Tooltip>
3 <Tooltip.Trigger asChild>
4 <Button>Top</Button>
5 </Tooltip.Trigger>
6 <Tooltip.Content side="top">
7 <p>Tooltip on top</p>
8 </Tooltip.Content>
9</Tooltip>
10
11// Bottom
12<Tooltip>
13 <Tooltip.Trigger asChild>
14 <Button>Bottom</Button>
15 </Tooltip.Trigger>
16 <Tooltip.Content side="bottom">
17 <p>Tooltip on bottom</p>
18 </Tooltip.Content>
19</Tooltip>

Custom Delay

1<Tooltip delayDuration={500}>
2 <Tooltip.Trigger asChild>
3 <Button>Slow tooltip</Button>
4 </Tooltip.Trigger>
5 <Tooltip.Content>
6 <p>This appears after 500ms</p>
7 </Tooltip.Content>
8</Tooltip>