"use client"; import { OpenAIResponse, InputItemListResponse } from "@/lib/types"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { DetailLoadingView, DetailErrorView, DetailNotFoundView, DetailLayout, PropertiesCard, PropertyItem, } from "@/components/layout/detail-layout"; import { GroupedItemsDisplay } from "./grouping/grouped-items-display"; interface ResponseDetailViewProps { response: OpenAIResponse | null; inputItems: InputItemListResponse | null; isLoading: boolean; isLoadingInputItems: boolean; error: Error | null; inputItemsError: Error | null; id: string; } export function ResponseDetailView({ response, inputItems, isLoading, isLoadingInputItems, error, inputItemsError, id, }: ResponseDetailViewProps) { const title = "Responses Details"; if (error) { return ; } if (isLoading) { return ; } if (!response) { return ; } // Main content cards const mainContent = ( <> Input {/* Show loading state for input items */} {isLoadingInputItems ? (
) : inputItemsError ? (
Error loading input items: {inputItemsError.message}
Falling back to response input data.
) : null} {/* Display input items if available, otherwise fall back to response.input */} {(() => { const dataToDisplay = inputItems?.data && inputItems.data.length > 0 ? inputItems.data : response.input; if (dataToDisplay && dataToDisplay.length > 0) { return ( ); } else { return (

No input data available.

); } })()}
Output {response.output?.length > 0 ? ( ) : (

No output data available.

)}
); // Properties sidebar const sidebar = ( {response.temperature && ( )} {response.top_p && } {response.parallel_tool_calls && ( )} {response.previous_response_id && ( {response.previous_response_id} } hasBorder /> )} {response.error && ( {response.error.code}: {response.error.message} } className="pt-1 mt-1 border-t border-red-200" /> )} ); return ( ); }