'use client' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table' import { PaginationControls } from '@/components/pagination-controls' import { usePagination } from '@/hooks/use-pagination' import type { ProjectSummary } from '@/lib/parse-logs' import { formatCost, formatTokens, formatDuration, formatNumber } from '@/lib/format' export function ProjectsTable({ projects }: { projects: ProjectSummary[] }) { const pagination = usePagination(projects, 20) const topTools = (toolCalls: Record) => Object.entries(toolCalls) .sort((a, b) => b[1] - a[1]) .slice(0, 3) .map(([name, count]) => `${name} (${count})`) .join(', ') return ( Projects {projects.length} projects tracked Project Sessions Messages Tokens Cost Duration Top Tools {pagination.pageItems.map((p) => ( {p.name} {formatNumber(p.sessions)} {formatNumber(p.totalMessages)} {formatTokens(p.totalTokens)} {formatCost(p.totalCost)} {formatDuration(p.totalDurationMinutes)} {topTools(p.toolCalls)} ))}
{pagination.totalPages > 1 && ( )}
) }