import { useSearchExecutions } from '../../api/queries/executions'; import { useExecutionSearch } from './use-execution-search'; import { StatCard } from '../../components/shared/StatCard'; import { Pagination } from '../../components/shared/Pagination'; import { SearchFilters } from './SearchFilters'; import { ResultsTable } from './ResultsTable'; import styles from './ExecutionExplorer.module.css'; export function ExecutionExplorer() { const { toSearchRequest, offset, limit, setOffset } = useExecutionSearch(); const searchRequest = toSearchRequest(); const { data, isLoading, isFetching } = useSearchExecutions(searchRequest); const total = data?.total ?? 0; const results = data?.data ?? []; // Derive stats from current search results const failedCount = results.filter((r) => r.status === 'FAILED').length; const avgDuration = results.length > 0 ? Math.round(results.reduce((sum, r) => sum + r.durationMs, 0) / results.length) : 0; const showFrom = total > 0 ? offset + 1 : 0; const showTo = Math.min(offset + limit, total); return ( <> {/* Page Header */}