- AccordionNew
- Alert
- Alert DialogNew
- AutocompleteNew
- AvatarNew
- Badge
- Breadcrumb
- Button
- CalendarNew
- CardNew
- Checkbox
- Checkbox GroupNew
- CollapsibleNew
- ComboboxNew
- CommandNew
- Context MenuNew
- Date PickerNew
- DialogNew
- DrawerNew
- EmptyNew
- FieldNew
- FieldsetNew
- FormNew
- FrameNew
- GroupNew
- Input
- Input GroupNew
- KbdNew
- Label
- MenuNew
- MeterNew
- Number Field
- OTP FieldNew
- Pagination
- PopoverNew
- Preview CardNew
- Progress
- Radio Group
- Scroll AreaNew
- Select
- Separator
- SheetNew
- SkeletonNew
- Slider
- Spinner
- StepperNew
- Switch
- Table
- TabsNew
- Textarea
- ToastNew
- ToggleNew
- Toggle GroupNew
- ToolbarNew
- Tooltip
Tooltip
A popup that appears when an element is hovered or focused, showing a hint for sighted users.
import { Button } from "mako-ui/components/button";
import {
Tooltip,
TooltipPopup,
TooltipTrigger,
} from "mako-ui/components/tooltip";
export default function Particle() {
return (
<Tooltip>
<TooltipTrigger render={<Button variant="outline" />}>
Hover me
</TooltipTrigger>
<TooltipPopup>Helpful hint</TooltipPopup>
</Tooltip>
);
}
Usage
import {
Tooltip,
TooltipCreateHandle,
TooltipPopup,
TooltipProvider,
TooltipTrigger,
} from "mako-ui/components/tooltip"<Tooltip>
<TooltipTrigger render={<Button variant="outline" />}>
Hover me
</TooltipTrigger>
<TooltipPopup>Helpful hint</TooltipPopup>
</Tooltip>API Reference
Tooltip
Root component.
TooltipTrigger
Trigger element that shows the tooltip on hover/focus.
TooltipPopup
Popup container that displays the tooltip content. Also exported as TooltipContent.
| Prop | Type | Default | Description |
|---|---|---|---|
side | "top" | "bottom" | "left" | "right" | "top" | Side of the trigger to position the tooltip |
align | "start" | "center" | "end" | "center" | Alignment relative to the trigger |
sideOffset | number | 4 | Distance from the trigger in pixels |
portalProps | PortalProps | - | Props forwarded to the internal portal (keepMounted, container, etc.) |
TooltipProvider
Provider for grouping tooltips.
TooltipCreateHandle
Creates a handle for detached tooltip triggers. Returns a handle object to attach to multiple triggers for animated transitions.
Examples
Grouped Tooltips
To group multiple tooltips so they appear instantly after the first one is opened, wrap them in TooltipProvider. The grouping logic ensures that once a tooltip becomes visible, the adjacent tooltips will be shown instantly.
import { BoldIcon, ItalicIcon, UnderlineIcon } from "lucide-react";
import { ToggleGroup, ToggleGroupItem } from "mako-ui/components/toggle-group";
import {
Tooltip,
TooltipPopup,
TooltipProvider,
TooltipTrigger,
} from "mako-ui/components/tooltip";
export default function Particle() {
return (
<TooltipProvider>
<ToggleGroup defaultValue={["bold"]} multiple>
<Tooltip>
<TooltipTrigger
render={<ToggleGroupItem aria-label="Toggle bold" value="bold" />}
>
<BoldIcon />
</TooltipTrigger>
<TooltipPopup>Bold</TooltipPopup>
</Tooltip>
<Tooltip>
<TooltipTrigger
render={
<ToggleGroupItem aria-label="Toggle italic" value="italic" />
}
>
<ItalicIcon />
</TooltipTrigger>
<TooltipPopup>Italic</TooltipPopup>
</Tooltip>
<Tooltip>
<TooltipTrigger
render={
<ToggleGroupItem
aria-label="Toggle underline"
value="underline"
/>
}
>
<UnderlineIcon />
</TooltipTrigger>
<TooltipPopup>Underline</TooltipPopup>
</Tooltip>
</ToggleGroup>
</TooltipProvider>
);
}
Animated Tooltips
You can create animated tooltips that smoothly transition between different triggers using detached triggers. This pattern allows multiple triggers to share a single tooltip popup, with automatic animations for position, size, and content changes.
To create detached triggers:
- Create a handle using
TooltipCreateHandle - Attach the same handle to multiple
TooltipTriggercomponents - Each trigger provides a
payloadprop containing the content component - Use a single
Tooltipcomponent with the handle to render the popup
"use client";
import { BoldIcon, ItalicIcon, UnderlineIcon } from "lucide-react";
import { ToggleGroup, ToggleGroupItem } from "mako-ui/components/toggle-group";
import {
Tooltip,
TooltipCreateHandle,
TooltipPopup,
TooltipProvider,
TooltipTrigger,
} from "mako-ui/components/tooltip";
import type { ComponentType } from "react";
const tooltipHandle = TooltipCreateHandle<ComponentType>();
const BoldContent = () => {
return <span>Make text bold</span>;
};
const ItalicContent = () => {
return <span>Apply italic formatting to text</span>;
};
const UnderlineContent = () => {
return <span>Underline text</span>;
};
export default function Particle() {
return (
<TooltipProvider>
<ToggleGroup defaultValue={["bold"]} multiple>
<TooltipTrigger
className="after:absolute after:left-full after:h-full after:w-1"
handle={tooltipHandle}
payload={BoldContent}
render={<ToggleGroupItem aria-label="Toggle bold" value="bold" />}
>
<BoldIcon aria-hidden="true" />
</TooltipTrigger>
<TooltipTrigger
className="after:absolute after:left-full after:h-full after:w-1"
handle={tooltipHandle}
payload={ItalicContent}
render={<ToggleGroupItem aria-label="Toggle italic" value="italic" />}
>
<ItalicIcon aria-hidden="true" />
</TooltipTrigger>
<TooltipTrigger
className="after:absolute after:left-full after:h-full after:w-1"
handle={tooltipHandle}
payload={UnderlineContent}
render={
<ToggleGroupItem aria-label="Toggle underline" value="underline" />
}
>
<UnderlineIcon aria-hidden="true" />
</TooltipTrigger>
</ToggleGroup>
<Tooltip handle={tooltipHandle}>
{({ payload: Payload }) => (
<TooltipPopup>{Payload !== undefined && <Payload />}</TooltipPopup>
)}
</Tooltip>
</TooltipProvider>
);
}