/* Copyright 2026 Marimo. All rights reserved. */
import { Tooltip as TooltipPrimitive } from "radix-ui";
import * as React from "react";
import { StyleNamespace } from "@/theme/namespace";
import { cn } from "@/utils/cn";
import { withFullScreenAsRoot, withSmartCollisionBoundary } from "./fullscreen";
const TooltipProvider = ({
delayDuration = 400,
...props
}: TooltipPrimitive.TooltipProviderProps) => (
);
const TooltipPortal = withFullScreenAsRoot(TooltipPrimitive.Portal);
const TooltipRoot = TooltipPrimitive.Root;
const InternalTooltipContent = withSmartCollisionBoundary(
TooltipPrimitive.Content,
);
const TooltipTrigger = TooltipPrimitive.Trigger;
const TooltipContent = React.forwardRef<
React.ElementRef,
React.ComponentPropsWithoutRef
>(({ className, sideOffset = 4, ...props }, ref) => (
));
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
const Tooltip: React.FC<
{
content: React.ReactNode;
usePortal?: boolean;
children: React.ReactNode;
asChild?: boolean;
side?: TooltipPrimitive.TooltipContentProps["side"];
tabIndex?: number;
align?: TooltipPrimitive.TooltipContentProps["align"];
} & React.ComponentPropsWithoutRef
> = ({
content,
children,
usePortal = true,
asChild = true,
tabIndex,
side,
align,
...rootProps
}) => {
if (content == null || content === "") {
return children;
}
return (
{children}
{usePortal ? (
{content}
) : (
{content}
)}
);
};
export {
Tooltip,
TooltipRoot,
TooltipTrigger,
TooltipContent,
TooltipPortal,
TooltipProvider,
};