import { useEffect, useRef, useState } from 'react' import { CircleHelp } from 'lucide-react' import { addPxToValue } from '../../global-utils/GlobalUtils' import Block from '../Primitives/Block/Block' import Text from '../Text/Text' import { Tooltip } from '../Tooltip' import type { StatCardV2TitleProps } from './statcardV2.types' import type { StatCardV2TokensType } from './statcardV2.tokens' type StatCardV2TitleTextProps = { title: string id?: string tokens: StatCardV2TokensType isSmallScreen: boolean } const StatCardV2TitleText = ({ title, id, tokens, isSmallScreen, }: StatCardV2TitleTextProps) => { const [forceTooltipOpen, setForceTooltipOpen] = useState(false) const titleRef = useRef(null) useEffect(() => { if (!isSmallScreen || !forceTooltipOpen) return const handlePointerDown = (event: PointerEvent) => { if (titleRef.current?.contains(event.target as Node)) return setForceTooltipOpen(false) } document.addEventListener('pointerdown', handlePointerDown) return () => document.removeEventListener('pointerdown', handlePointerDown) }, [isSmallScreen, forceTooltipOpen]) const titleText = ( {title} ) if (!isSmallScreen) { return {titleText} } return ( { setForceTooltipOpen(!forceTooltipOpen) }} style={{ cursor: 'pointer' }} > {titleText} ) } type StatCardV2HelpIconProps = { helpIconText: string title: string tokens: StatCardV2TokensType isSmallScreen: boolean } const StatCardV2HelpIcon = ({ helpIconText, title, tokens, isSmallScreen, }: StatCardV2HelpIconProps) => { const [forceTooltipOpen, setForceTooltipOpen] = useState(false) const helpIconRef = useRef(null) useEffect(() => { if (!isSmallScreen || !forceTooltipOpen) return const handlePointerDown = (event: PointerEvent) => { if (helpIconRef.current?.contains(event.target as Node)) return setForceTooltipOpen(false) } document.addEventListener('pointerdown', handlePointerDown) return () => document.removeEventListener('pointerdown', handlePointerDown) }, [isSmallScreen, forceTooltipOpen]) const helpIconTrigger = ( ) if (!isSmallScreen) { return ( {helpIconTrigger} ) } return ( { setForceTooltipOpen(!forceTooltipOpen) }} > {helpIconTrigger} ) } const StatCardV2Title = ({ title, helpIconText, tokens, id, isSmallScreen = false, }: StatCardV2TitleProps) => { if (!title) return null return ( {helpIconText && ( )} ) } export default StatCardV2Title