import React, { useState } from 'react'; import { useWorkflowInstances } from '@/api/workflows'; import type { InstanceStatus, WorkflowInstance } from '@/api/workflows'; import { Badge } from '@/components/ui/Badge'; import { Select } from '@/components/ui/Select'; import { Skeleton } from '@/components/ui/Skeleton'; import { EmptyState } from '@/components/ui/EmptyState'; import { Card } from '@/components/ui/Card'; import { AlertCircle, ChevronRight } from 'lucide-react'; const statusFilterOptions = [ { value: '', label: 'Alle Status' }, { value: 'pending', label: 'Wartend' }, { value: 'in_progress', label: 'In Bearbeitung' }, { value: 'completed', label: 'Abgeschlossen' }, { value: 'rejected', label: 'Abgelehnt' }, { value: 'cancelled', label: 'Abgebrochen' }, ]; function statusBadgeVariant( status: string ): 'success' | 'warning' | 'danger' | 'info' | 'secondary' { switch (status) { case 'completed': return 'success'; case 'in_progress': return 'info'; case 'pending': return 'warning'; case 'rejected': return 'danger'; case 'cancelled': return 'secondary'; default: return 'secondary'; } } function statusLabel(status: string): string { const map: Record = { pending: 'Wartend', in_progress: 'In Bearbeitung', completed: 'Abgeschlossen', rejected: 'Abgelehnt', cancelled: 'Abgebrochen', }; return map[status] ?? status; } export interface WorkflowInstanceListProps { onSelectInstance: (instance: WorkflowInstance) => void; } export function WorkflowInstanceList({ onSelectInstance, }: WorkflowInstanceListProps) { const [statusFilter, setStatusFilter] = useState(''); const [page, setPage] = useState(1); const pageSize = 20; const queryStatus = statusFilter !== '' ? (statusFilter as InstanceStatus) : undefined; const { data, isLoading, isError, refetch } = useWorkflowInstances( page, pageSize, queryStatus ); const instances = data?.items ?? []; const total = data?.total ?? 0; const totalPages = Math.ceil(total / pageSize); return (
{/* Filter bar */}