import * as React from 'react' import { useState } from 'react' import { ChevronDown, Check, Circle } from 'lucide-react' import { mergeClasses } from '../../utils/classNames' import { ProgressBar } from '../ProgressBar/ProgressBar' type TaskStatus = "COMPLETED" | "ACTIVE" | "TODO" export interface Task { /** Unique identifier for the task */ id: string /** Task description */ label: string /** Task status */ status: TaskStatus } export interface TaskProgressProps { /** Section title displayed in the collapsible header */ title?: string /** Array of tasks to display */ tasks: Task[] /** Whether the task list starts expanded */ defaultOpen?: boolean /** Additional Tailwind classes for prototype-specific styling (not part of SAIL API) */ className?: string } /** * TaskProgress Component * Displays a collapsible list of tasks with a progress bar summarizing completion. * Used in chat interfaces to visualize multi-step task execution state. */ export const TaskProgress: React.FC = ({ title = "Task Progress", tasks, defaultOpen = true, className, }) => { const [open, setOpen] = useState(defaultOpen) const completedCount = tasks.filter((t) => t.status === "COMPLETED").length const totalCount = tasks.length const progressValue = totalCount > 0 ? (completedCount / totalCount) * 100 : 0 const sailClasses = 'border border-gray-200 rounded-md overflow-hidden bg-white' return (
{open && (
    {tasks.map((task) => ( ))}
)}
) } interface TaskItemProps { task: Task } const TaskItem: React.FC = ({ task }) => { const statusIcon = () => { if (task.status === "COMPLETED") { return