import React, { ElementType, useEffect, useRef, useState } from "react"; import ReactTooltip from "react-tooltip"; import { Text, ThemeUIStyleObject } from "theme-ui"; import { ReactTooltipPortal } from "@/legacy/components/ReactTooltipPortal"; interface TextWithTooltipProps { text: string; as: ElementType; sx?: ThemeUIStyleObject; } export const TextWithTooltip: React.FC = ({ text, as, sx = {}, ...props }) => { const headingRef = useRef(null); const [showTooltip, setShowTooltip] = useState(null); const updateTooltipVisibility = () => { setShowTooltip( headingRef.current && headingRef.current.offsetWidth < headingRef.current.scrollWidth, ); }; useEffect(() => { updateTooltipVisibility(); window.addEventListener("resize", updateTooltipVisibility); return () => { window.removeEventListener("resize", updateTooltipVisibility); }; }, []); return ( <> {text} {/* eslint-disable-next-line @typescript-eslint/strict-boolean-expressions */} {showTooltip && ( {text} )} ); };