"use client"; import { motion, AnimatePresence } from "framer-motion"; import { WorkflowExecution, NodeExecutionResult } from "@/lib/workflow/types"; interface PreviewPanelProps { execution: WorkflowExecution | null; nodeResults: Record; isRunning: boolean; onClose: () => void; } export default function PreviewPanel({ execution, nodeResults, isRunning, onClose }: PreviewPanelProps) { return ( {/* Header */}

Workflow Preview

{/* Status Badge */} {execution && (
{execution.status === 'running' && ( )} {execution.status}
)}
{/* Content */}
{isRunning && Object.keys(nodeResults).length === 0 ? (

Starting workflow...

) : Object.keys(nodeResults).length === 0 ? (

Click Preview to run workflow

) : (
{Object.entries(nodeResults).map(([nodeId, result]) => (
{/* Node Header */}

{nodeId}

{result.status}
{/* Node Output */} {result.output && (

Output:

                          {typeof result.output === 'string'
                            ? result.output
                            : JSON.stringify(result.output, null, 2)}
                        
)} {/* Error */} {result.error && (

Error:

                          {result.error}
                        
)} {/* Timing */} {result.startedAt && result.completedAt && (

Duration: {Math.round((new Date(result.completedAt).getTime() - new Date(result.startedAt).getTime()) / 1000)}s

)}
))}
)}
); }