import { useState } from 'react'; import { WithTooltip } from '@snack-uikit/tooltip'; import { TagLinkProps, TagProps, TagWithTooltipProps } from '../../types'; import { TagBase } from '../TagBase'; import { TagLink } from '../TagLink'; export function isTagLinkProps(props: TagProps): props is TagLinkProps { return 'href' in props && props.href !== undefined; } function isTagWithTooltip(props: TagProps): props is TagWithTooltipProps { return 'tooltip' in props && props.tooltip !== undefined; } export function Tag(props: TagProps) { const [restrictOpenTooltip, setRestrictOpenTooltip] = useState(false); const isLinkTag = isTagLinkProps(props); if (!isTagWithTooltip(props)) { return isLinkTag ? : ; } const { tooltip } = props; const tooltipProps = tooltip && { ...tooltip, open: restrictOpenTooltip ? false : tooltip.open, }; const tagBaseWithTooltipProps = { ...props, changeRestrictTooltipState: setRestrictOpenTooltip }; return ( {isLinkTag ? : } ); }