import { PLAYER_STATUS_EVENT_TYPE, type PlayerStatusData, } from "../core/detectors/objective/player-status"; import { EventCardMeta, EventCardShell } from "./EventCardShell"; import { FrameThumb } from "./FrameThumb"; import { formatClock, useEventTimeFormatter } from "./format"; import { MetaPills } from "./MetaChips"; export function PlayerStatusCard(props: { t: number; confidence: number; data: PlayerStatusData; thumbnail?: string; detectedAt?: number; /** lazy loader for the exact analyzed frame — enables fixture export */ getFrame?: () => Promise; onInspect?: () => void; }) { const { t, confidence, data, thumbnail, detectedAt, getFrame, onInspect } = props; const side = (index: 0 | 1) => data.dead[index] .map((dead, slot) => (dead ? "✕" : data.special[index][slot] ? "★" : "·")) .join(""); const formatDetectedAt = useEventTimeFormatter(); return ( {data.time !== null ? `${formatClock(data.time)} · ` : null} {side(0)} – {side(1)} {detectedAt ? {formatDetectedAt(detectedAt)} : null} ); }