import { autoUpdate, offset, shift, useFloating, useFocus, useHover, useInteractions } from '@floating-ui/react'; import { useState } from 'react'; export default function Tooltip({ children, message }: { children: React.ReactNode; message: string }) { const [isOpen, setIsOpen] = useState(false); const { x, y, strategy, refs, context } = useFloating({ open: isOpen, onOpenChange: setIsOpen, placement: 'top', middleware: [offset(8), shift()], whileElementsMounted(...args) { const cleanup = autoUpdate(...args, { animationFrame: true }); return cleanup; }, }); const hover = useHover(context); const focus = useFocus(context); const { getReferenceProps, getFloatingProps } = useInteractions([hover, focus]); return ( <>
{children}
{isOpen && (
{message}
)} ); }