A checklist that strikes out completed tasks and moves them to the bottom of the list.
Click a row to toggle it.
Options you can pass to customize this component.
tasksTask[]The rows to show, each one an id, a label, and an optional done flag. Pass this to drive the list yourself.
defaultTasksTask[]The rows to start with when you are not driving the list. The list tracks which ones are done on its own.
onTasksChange(tasks: Task[]) => voidCalled with the full list every time a row is ticked or unticked.
sizesmmdlgRow size. Text, circle, padding and radius all scale together, and the circle always matches one line of the label.
accentstringAny CSS color for the filled circle and the focus ring. The strike and the faded text stay grey.
onSettled() => voidOn TaskItem only. Fires once a row has finished ticking, which is how TaskList knows when to move it down.
classNamestringExtra classes merged onto the root element (data-slot="task-list").
npx shadcn@latest add swamimalode07/rare-ui/task-list"use client"import { TaskList } from "@/components/ui/task-list"export function Demo() {return (<TaskListdefaultTasks={[{ id: "ship", label: "Ship a new component to the registry", done: true },{ id: "preview", label: "Record a preview for the gallery" },{ id: "star", label: "Star Rare UI" },]}/>)}// one row on its own, no list around it// <TaskItem label="Star Rare UI" size="sm" onCheckedChange={setDone} />
Click the code icon in the top-right corner to view the source code.
Most components here are recreations of great work from around the web. I don't claim to be the original creator - this is my attempt to reverse-engineer, replicate, and often add a few extra features. I've tried to credit everyone; if I missed someone, let me know.
1