'use client' import { IconAlertCircle as AlertCircle, IconCheck as Check } from '@tabler/icons-react' import { toPublicErrorPayload } from '@/lib/errors/public-error' import type { TodoItem } from '@/lib/types/ai' import { cn } from '@/lib/utils' export type TodoListContentProps = { todos?: TodoItem[] message?: string summary?: string completedCount?: number totalCount?: number errorText?: string showSummary?: boolean itemVariant?: 'bordered' | 'plain' className?: string } export function TodoListContent({ todos = [], message, summary, completedCount, totalCount, errorText, showSummary = true, itemVariant = 'bordered', className }: TodoListContentProps) { const completed = completedCount ?? todos.filter(t => t.status === 'completed').length const total = totalCount ?? todos.length const getStatusIcon = (status: TodoItem['status']) => { switch (status) { case 'completed': return case 'in_progress': return (
) default: return (
) } } if (errorText) { const publicError = toPublicErrorPayload(errorText, { fallbackMessage: 'Failed to process todos' }) return (
Error: {publicError.error}
) } return (
{showSummary && (
{message || summary || 'Todo List'} ({completed}/{total})
)}
    {todos.map((todo, index) => (
  • {getStatusIcon(todo.status)}

    {todo.content}

  • ))}
{todos.length === 0 && (
No todos available
)}
) } export default TodoListContent