chat / packages /client /src /components /InfoHoverCard.tsx
helloya20's picture
Upload 2345 files
f0743f4 verified
import { useState } from 'react';
import { CircleHelpIcon } from 'lucide-react';
import { HoverCard, HoverCardTrigger, HoverCardPortal, HoverCardContent } from './HoverCard';
import { ESide } from '~/common';
type InfoHoverCardProps = {
side?: ESide;
text: string;
};
const InfoHoverCard = ({ side, text }: InfoHoverCardProps) => {
const [isOpen, setIsOpen] = useState(false);
return (
<HoverCard openDelay={50} open={isOpen} onOpenChange={setIsOpen}>
<HoverCardTrigger
tabIndex={0}
className="inline-flex cursor-help items-center justify-center rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring-primary focus-visible:ring-offset-2"
onFocus={() => setIsOpen(true)}
onBlur={() => setIsOpen(false)}
aria-label={text}
>
<CircleHelpIcon className="h-5 w-5 text-text-tertiary" aria-hidden="true" />
</HoverCardTrigger>
<HoverCardPortal>
<HoverCardContent side={side} className="z-[999] w-80">
<div className="space-y-2">
<span className="text-sm text-text-secondary">{text}</span>
</div>
</HoverCardContent>
</HoverCardPortal>
</HoverCard>
);
};
export default InfoHoverCard;