"use client"; import { useRouter } from "next/navigation"; import { truncateText } from "@/lib/truncate-text"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Skeleton } from "@/components/ui/skeleton"; // Generic table row data interface export interface LogTableRow { id: string; input: string; output: string; model: string; createdTime: string; detailPath: string; } interface LogsTableProps { data: LogTableRow[]; isLoading: boolean; error: Error | null; caption: string; emptyMessage: string; } export function LogsTable({ data, isLoading, error, caption, emptyMessage, }: LogsTableProps) { const router = useRouter(); const tableHeader = ( Input Output Model Created ); if (isLoading) { return ( {tableHeader} {[...Array(3)].map((_, i) => ( ))}
); } if (error) { return (

Error fetching data: {error.message || "An unknown error occurred"}

); } if (data.length === 0) { return

{emptyMessage}

; } return ( {caption} {tableHeader} {data.map((row) => ( router.push(row.detailPath)} className="cursor-pointer hover:bg-muted/50" > {truncateText(row.input)} {truncateText(row.output)} {row.model} {row.createdTime} ))}
); }