A React tooltip component from Radix UI Primitives, part of an open-source UI component library for building high-quality, accessible design systems and web apps
Overall
score
96%
The TooltipTrigger component handles user interactions that show and hide tooltips. It responds to hover, focus, keyboard events, and touch interactions while maintaining accessibility.
Interactive trigger element that responds to user interactions to control tooltip visibility.
/**
* Interactive trigger element for showing/hiding tooltips
* Extends all standard button element props and event handlers
* @param children - Content of the trigger element
* @param asChild - When true, merges props with child element instead of rendering button
*/
type TooltipTriggerElement = React.ComponentRef<"button">;
interface TooltipTriggerProps extends React.ComponentPropsWithoutRef<"button"> {
asChild?: boolean;
}
const TooltipTrigger: React.forwardRef<TooltipTriggerElement, TooltipTriggerProps>;Usage Examples:
import {
TooltipProvider,
Tooltip,
TooltipTrigger,
TooltipPortal,
TooltipContent
} from "@radix-ui/react-tooltip";
// Basic button trigger
function BasicTrigger() {
return (
<TooltipProvider>
<Tooltip>
<TooltipTrigger>Hover me</TooltipTrigger>
<TooltipPortal>
<TooltipContent>Tooltip content</TooltipContent>
</TooltipPortal>
</Tooltip>
</TooltipProvider>
);
}
// Using asChild to trigger on custom element
function CustomTrigger() {
return (
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<button className="custom-button">
Custom styled button
</button>
</TooltipTrigger>
<TooltipPortal>
<TooltipContent>Tooltip for custom button</TooltipContent>
</TooltipPortal>
</Tooltip>
</TooltipProvider>
);
}
// Trigger with icon and text
function IconTrigger() {
return (
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<button>
<Icon name="help" />
Help
</button>
</TooltipTrigger>
<TooltipPortal>
<TooltipContent>Get help with this feature</TooltipContent>
</TooltipPortal>
</Tooltip>
</TooltipProvider>
);
}
// Trigger with event handlers
function EventHandlerTrigger() {
return (
<TooltipProvider>
<Tooltip>
<TooltipTrigger
onClick={() => console.log("Clicked!")}
onFocus={() => console.log("Focused!")}
>
Interactive trigger
</TooltipTrigger>
<TooltipPortal>
<TooltipContent>Click or focus me</TooltipContent>
</TooltipPortal>
</Tooltip>
</TooltipProvider>
);
}Merges props with child element instead of rendering default button.
booleanfalsetrue, trigger props are merged with the child elementThe trigger accepts all standard HTML button props:
(event: MouseEvent) => void(event: FocusEvent) => void(event: FocusEvent) => void(event: PointerEvent) => void(event: PointerEvent) => void(event: PointerEvent) => voidbooleanstringReact.CSSPropertiesThe trigger participates in grace area calculations:
The trigger automatically handles accessibility:
closed, delayed-open, instant-open)const Trigger: React.forwardRef<TooltipTriggerElement, TooltipTriggerProps>;The Trigger component is an alias for TooltipTrigger for shorter import names.
type TooltipTriggerElement = React.ComponentRef<"button">;
type TooltipTriggerProps = React.ComponentPropsWithoutRef<"button"> & {
asChild?: boolean;
};Install with Tessl CLI
npx tessl i tessl/npm-radix-ui--react-tooltipevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10