import { Play } from "lucide-react"; import type { IssueWorkProduct } from "@paperclipai/shared"; import { formatBytes, getIssueOutputs, isImageContentType, isVideoLikeOutput, outputFilename, type IssueOutputItem, } from "@/lib/issue-output"; import { OutputPrimaryCard } from "./OutputPrimaryCard"; import { OutputRow } from "./OutputRow"; import { cn, relativeTime } from "@/lib/utils"; interface IssueOutputSectionProps { workProducts: IssueWorkProduct[] | null | undefined; /** Optional resolver for the artifact creator's display name. */ resolveCreatorName?: (item: IssueOutputItem) => string | null; onMediaClick?: (item: IssueOutputItem) => void; } function isMediaOutput(item: IssueOutputItem) { const meta = item.metadata; return Boolean(meta && ( isImageContentType(meta.contentType) || isVideoLikeOutput(meta.contentType, meta.originalFilename) )); } function OutputMediaPreview({ item, creatorName, onMediaClick, }: { item: IssueOutputItem; creatorName?: string | null; onMediaClick?: (item: IssueOutputItem) => void; }) { const meta = item.metadata; if (!meta) return null; const filename = outputFilename(item); const isVideo = isVideoLikeOutput(meta.contentType, meta.originalFilename); const metaBits = [meta.contentType, formatBytes(meta.byteSize)]; if (creatorName) metaBits.push(creatorName); metaBits.push(relativeTime(item.createdAt)); const preview = ( <> {isVideo ? (