"use client" import * as React from "react" import * as TooltipPrimitive from "@radix-ui/react-tooltip" import { cn, useIsMobileScreen } from "@/lib/utils" type TooltipTriggerContextType = { open: boolean setOpen: React.Dispatch> } // https://github.com/radix-ui/primitives/issues/1573 const TooltipTriggerContext = React.createContext({ open: false, setOpen: () => {}, // eslint-disable-line }) const Tooltip: React.FC< TooltipPrimitive.TooltipProps & { isMobile?: boolean } > = ({ children, isMobile, ...props }) => { const [open, setOpen] = React.useState(props.defaultOpen ?? false) // we only want to enable the "click to open" functionality on mobile // const { isMd } = useTwBreakpoint('md'); // use isMobile instead const isMobileScreen = useIsMobileScreen() const isMd = isMobile ?? isMobileScreen return ( { setOpen(e) }} open={open} > {children} ) } Tooltip.displayName = "Tooltip" const TooltipProvider = TooltipPrimitive.Provider // const Tooltip = TooltipPrimitive.Root; // const TooltipTrigger = TooltipPrimitive.Trigger; const TooltipTrigger = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef & { isMobile?: boolean } >(({ children, isMobile, ...props }, ref) => { const isMobileScreen = useIsMobileScreen() const isMd = isMobile ?? isMobileScreen const { setOpen } = React.useContext(TooltipTriggerContext) return ( { !isMd && e.preventDefault() setOpen(true) }} > {children} ) }) TooltipTrigger.displayName = "TooltipTrigger" const TooltipContent = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, sideOffset = 4, ...props }, ref) => ( )) TooltipContent.displayName = TooltipPrimitive.Content.displayName export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipTriggerContext, }