import * as TooltipPrimitive from '@radix-ui/react-tooltip' import type * as React from 'react' import { cn } from '../../utils' import { popoverContentClassName } from '../Popover/Popover' /** Provides the delay and open behavior for all Tooltip instances in a subtree. Wrap your layout root once — not needed around every tooltip. */ const TooltipProvider = TooltipPrimitive.Provider export type TooltipProps = React.ComponentProps /** * Root state container for a tooltip. Manages open/closed state and hover delay. * Compose with TooltipTrigger and TooltipContent. */ const Tooltip = TooltipPrimitive.Root Tooltip.displayName = 'Tooltip' export type TooltipTriggerProps = React.ComponentProps< typeof TooltipPrimitive.Trigger > /** Element that opens the tooltip on hover or focus. Use `asChild` to make any element the trigger. */ const TooltipTrigger = TooltipPrimitive.Trigger export type TooltipContentProps = React.ComponentPropsWithoutRef< typeof TooltipPrimitive.Content > type TooltipContentPropsWithRef = TooltipContentProps & { ref?: React.Ref> } /** * Floating content panel of the tooltip. Renders inside a portal. Accepts * `side` and `align` for positioning. Add `` inside for a * directional arrow. */ const TooltipContent = ({ className, sideOffset = 4, ref, ...props }: TooltipContentPropsWithRef) => ( ) type TooltipArrowProps = React.ComponentPropsWithoutRef< typeof TooltipPrimitive.Arrow > & { ref?: React.Ref> } /** Directional arrow rendered inside TooltipContent. Points toward the trigger. */ const TooltipArrow = ({ className, ref, ...props }: TooltipArrowProps) => ( ) TooltipArrow.displayName = TooltipPrimitive.Arrow.displayName TooltipTrigger.displayName = TooltipPrimitive.Trigger.displayName TooltipContent.displayName = TooltipPrimitive.Content.displayName export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipArrow, }