import { ExternalLink, Video } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { BifrostVideoDownloadOutput, BifrostVideoGenerationOutput, BifrostVideoListOutput } from "@/lib/types/logs"; import CollapsibleBox from "./collapsibleBox"; import { CodeEditor } from "@/components/ui/codeEditor"; interface VideoGenerationInput { prompt: string; } type VideoOutput = BifrostVideoGenerationOutput | BifrostVideoDownloadOutput; interface VideoViewProps { videoInput?: VideoGenerationInput; videoOutput?: VideoOutput; videoListOutput?: BifrostVideoListOutput; requestType?: string; } function getMethodTypeLabel(requestType?: string): string { if (!requestType) return "Video"; const normalized = requestType.toLowerCase(); if (normalized.includes("video_download")) return "Video Download"; if (normalized.includes("video_retrieve")) return "Video Retrieve"; if (normalized.includes("video_generation")) return "Video Generation"; if (normalized.includes("video_list")) return "Video List"; return "Video"; } export default function VideoView({ videoInput, videoOutput, videoListOutput, requestType }: VideoViewProps) { const methodTypeLabel = getMethodTypeLabel(requestType); const isDownload = requestType?.toLowerCase().includes("video_download"); const downloadOutput = isDownload && videoOutput ? (videoOutput as BifrostVideoDownloadOutput) : null; const generationOutput = !isDownload && videoOutput ? (videoOutput as BifrostVideoGenerationOutput) : null; const outputURL = generationOutput?.videos?.[0]?.url; return (
{videoInput && (
PROMPT
{videoInput.prompt}
)} {videoOutput && (
{downloadOutput ? ( <>
{downloadOutput.video_id && (
VIDEO ID
{downloadOutput.video_id}
)} {downloadOutput.content_type && (
CONTENT TYPE
{downloadOutput.content_type}
)}

Video content was successfully downloaded (content is not stored in logs)

) : generationOutput ? ( <>
{generationOutput.status && (
STATUS
{generationOutput.status}
)} {generationOutput.progress !== undefined && (
PROGRESS
{generationOutput.progress}%
)} {generationOutput.id && (
VIDEO ID
{generationOutput.id}
)}
{generationOutput.error && (generationOutput.error.message || generationOutput.error.code) && (
Error from provider
{generationOutput.error.code &&
{generationOutput.error.code}
} {generationOutput.error.message &&
{generationOutput.error.message}
}
)} {outputURL && (
Open video URL
)} ) : null}
)} {videoListOutput && ( JSON.stringify(videoListOutput, null, 2)} > )}
); }