'use client'; import { ReactNode, useRef, useState } from 'react'; import * as Tooltip from '@radix-ui/react-tooltip'; import MenuSurface from './MenuSurface'; import useSupportsHover from '@/utility/useSupportsHover'; import clsx from 'clsx/lite'; import useClickInsideOutside from '@/utility/useClickInsideOutside'; export default function TooltipPrimitive({ content, className, classNameTrigger: classNameTriggerProp, sideOffset = 10, supportMobile = true, children, }: { content?: ReactNode className?: string classNameTrigger?: string sideOffset?: number supportMobile?: boolean children: ReactNode }) { const refTrigger = useRef(null); const refContent = useRef(null); const [isOpen, setIsOpen] = useState(false); const supportsHover = useSupportsHover(); const includeButton = supportMobile && !supportsHover; useClickInsideOutside({ htmlElements: [refTrigger, refContent], onClickOutside: () => { if (!supportsHover) { setIsOpen(false); } }, }); const classNameTrigger = clsx( 'link cursor-default inline-block', classNameTriggerProp, ); return ( {includeButton ? : {children} } {content && {content} } ); };