// frontend\src\components\ui\TaskList.tsx 'use client' export type TaskItem = { id: string status: 'idle' | 'running' | 'done' | 'error' | 'cancelled' title: string text?: string done?: number total?: number err?: string cancellable?: boolean // zeigt X nur wenn true fading?: boolean // für sanftes Ausblenden } type Props = { tasks: TaskItem[] onCancel?: (id: string) => void } function pct(done?: number, total?: number) { const d = Number(done ?? 0) const t = Number(total ?? 0) if (!t || t <= 0) return 0 return Math.max(0, Math.min(100, Math.round((d / t) * 100))) } export default function TaskList({ tasks, onCancel }: Props) { const visible = (tasks || []).filter((t) => t.status !== 'idle') return (