"use client" import * as React from "react" import { Badge } from "@/components/ui/badge" import { Card, CardContent, CardHeader } from "@/components/ui/card" import { Checkbox } from "@/components/ui/checkbox" import { Label } from "@/components/ui/label" import { TaskPriorityBadge } from "@/components/task-priority-badge" import { DashboardSectionTitle } from "@/components/dashboard-section-heading" import { cn } from "@/lib/utils" export interface TaskListItem { id: number label: string due: string priority: "high" | "medium" | "low" done: boolean } export function TaskListPanel({ title = "Tasks", headingId, headingLevel = "h2", plain = false, defaultTasks, }: { title?: string headingId?: string headingLevel?: "h1" | "h2" plain?: boolean defaultTasks: TaskListItem[] }) { const [tasks, setTasks] = React.useState(defaultTasks) const pending = tasks.filter((task) => !task.done).length const header = (
{title} {pending} pending
) const rows = tasks.map((task) => { const taskDomId = `task-${task.id}` return (
setTasks((prev) => prev.map((current) => current.id === task.id ? { ...current, done: checked === true } : current, ), ) } className="mt-0.5" aria-label={`${task.done ? "Mark incomplete" : "Mark complete"}: ${task.label}`} />
) }) if (plain) { return (
{header}
{rows}
) } return ( {header} {rows} ) }