import { useApiHost } from "@/api"; import { useTranslation } from "react-i18next"; import { cn } from "@/lib/utils"; type ChatEvent = { id: string; score?: number }; type ChatEventThumbnailsRowProps = { events: ChatEvent[]; anchor?: { id: string } | null; }; /** * Horizontal scroll row of event thumbnail images for chat. * Optionally renders an anchor thumbnail with a "reference" badge above the * results, and per-event similarity scores when provided. * Renders nothing when there is nothing to show. */ export function ChatEventThumbnailsRow({ events, anchor = null, }: ChatEventThumbnailsRowProps) { const apiHost = useApiHost(); const { t } = useTranslation(["views/chat"]); if (events.length === 0 && !anchor) return null; const renderThumb = (event: ChatEvent, isAnchor = false) => ( {typeof event.score === "number" && !isAnchor && ( {Math.round(event.score * 100)}% )} {isAnchor && ( {t("anchor")} )} ); return (
{anchor && (
{renderThumb(anchor, true)}
)} {events.length > 0 && (
{events.map((event) => renderThumb(event))}
)}
); }