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 Tooltip component manages individual tooltip instances, handling open/closed state, timing overrides, and accessibility features. It serves as the root container for each tooltip.
Root tooltip component that manages state and provides context for trigger, portal, and content components.
/**
* Root tooltip component managing individual tooltip state
* @param children - Child components (trigger, portal, content)
* @param open - Controlled open state
* @param defaultOpen - Initial open state for uncontrolled usage
* @param onOpenChange - Callback when open state changes
* @param delayDuration - Override provider delay duration
* @param disableHoverableContent - Override provider hover behavior
*/
interface TooltipProps {
children?: React.ReactNode;
open?: boolean;
defaultOpen?: boolean;
onOpenChange?: (open: boolean) => void;
delayDuration?: number;
disableHoverableContent?: boolean;
}
const Tooltip: React.FC<TooltipProps>;Usage Examples:
import { TooltipProvider, Tooltip } from "@radix-ui/react-tooltip";
// Basic uncontrolled tooltip
function BasicTooltip() {
return (
<TooltipProvider>
<Tooltip>
{/* Trigger and content components */}
</Tooltip>
</TooltipProvider>
);
}
// Controlled tooltip with custom state
function ControlledTooltip() {
const [open, setOpen] = React.useState(false);
return (
<TooltipProvider>
<Tooltip open={open} onOpenChange={setOpen}>
{/* Trigger and content components */}
</Tooltip>
</TooltipProvider>
);
}
// Default open tooltip
function DefaultOpenTooltip() {
return (
<TooltipProvider>
<Tooltip defaultOpen>
{/* Tooltip starts open */}
</Tooltip>
</TooltipProvider>
);
}
// Custom delay for specific tooltip
function CustomDelayTooltip() {
return (
<TooltipProvider delayDuration={700}>
<Tooltip delayDuration={200}>
{/* This tooltip opens faster than provider default */}
</Tooltip>
</TooltipProvider>
);
}Controls the open state in controlled mode.
booleanSets initial open state for uncontrolled tooltips.
booleanfalseCallback triggered when tooltip open state changes.
(open: boolean) => voidOverrides provider delay duration for this tooltip instance.
numberOverrides provider hover behavior for this tooltip instance.
booleantrue, tooltip closes when pointer leaves triggerThe Tooltip component provides two state management patterns:
Uncontrolled (Internal State):
<Tooltip defaultOpen={false}>
{/* Tooltip manages its own state */}
</Tooltip>Controlled (External State):
const [open, setOpen] = useState(false);
<Tooltip open={open} onOpenChange={setOpen}>
{/* You control the state */}
</Tooltip>The Tooltip component creates context providing:
closed, delayed-open, instant-open)const Root: React.FC<TooltipProps>;The Root component is an alias for Tooltip for shorter import names.
type TooltipProps = {
children?: React.ReactNode;
open?: boolean;
defaultOpen?: boolean;
onOpenChange?: (open: boolean) => void;
delayDuration?: number;
disableHoverableContent?: 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