Checkable tasks with assignee, due date, priority and subtasks: deal follow-ups, onboarding, an editorial checklist, project to-dos. Optimistic toggles that revert on failure, inline add and edit, overdue and due-today tones, and a progress header that is announced politely.
Deal
Northwind renewal 2027
Follow-ups
1 of 5 done- Send revised quote with 12-month price lockDue November 12, 2026High priorityAssigned to Ayşe Kaya
- Confirm SSO requirements with ITDue November 10, 2026Urgent priorityAssigned to Mehmet Yılmaz
- Book on-site demo in RotterdamDue November 15, 2026Medium priorityAssigned to Daniel Brooks
- Share security questionnaireDue November 7, 2026Assigned to Mehmet Yılmaz
- Draft order formDue November 21, 2026
Installation
The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";
Usage
import { TaskList } from "@vamos-ui/react";
<TaskList
title="Follow-ups"
items={tasks}
onToggle={(id, done) => api.toggle(id, done)}
onAdd={(title, parentId) => api.add({ title, parentId })}
/>Drag reorder: wrap the list in the Sortable group when you need pointer dragging; onReorder already provides the keyboard alternative.
Examples
Pre-publish checklist (CMS)
variant="checklist": titles only, with optional hints; disabled items are system-checked.
Before publishing
3 of 6 done- Title under 60 characters
- Meta description written
- Featured image set (WebP, under 300 KB)
- Alt text on every image
3 of 7 images are missing alt text.
- Internal links to two related posts
- Slug checked by an editor
Locked after the post was scheduled.
Onboarding with subtasks (HR)
children nest; parents show "2/3" and collapse. sortCompleted moves done items down.
Onboarding · Selin Arslan
3 of 9 done- Day 1 — WelcomeOverdue · YesterdayAssigned to Zeynep Arıkan
- Lunch with the design team
- Laptop and badge handed over
- Accounts: Google Workspace, Slack, Figma
- Week 1 — PaperworkDue In 3 daysHigh priorityAssigned to Zeynep Arıkan
- Signed employment contract
- SGK registration
- Bank details for payroll
- 30-day check-in with managerDue Dec 14Assigned to Can Demir
Keyboard reorder (PRM)
onReorder enables Alt+↑ / Alt+↓ and receives the new sibling order.
Partner portal · Sprint 14
- Wireframes for the partner portalAssigned to Selin Arslan
- Commission rules specHigh priorityAssigned to Ayşe Kaya
- Partner onboarding emailsAssigned to İlker Şahin
- Payout export (CSV)Medium priority
Focus a checkbox and press Alt+↑ / Alt+↓ to move a task.
API
TaskList
| Prop | Type | Default |
|---|---|---|
itemsTasks, with optional children. | TaskData[] | — |
onToggleOptimistic; a rejection reverts the checkbox and shows a toast. | (id, done) => void | Promise<void> | — |
onAddAdd input (Enter creates and keeps focus) and "Add subtask". | (title, parentId?) => void | Promise<void> | — |
onEditInline title edit (pencil or double-click; Enter saves, Esc cancels). | (id, patch) => void | Promise<void> | — |
onRemoveDelete button per task. | (id) => void | Promise<void> | — |
onReorderAlt+↑ / Alt+↓ on a task. | (ids, parentId?) => void | Promise<void> | — |
titleHeading; labels the group. | ReactNode | — |
variantRich meta or titles only. | "list" | "checklist" | "list" |
showProgress"3 of 7 done" and a bar. | boolean | true |
hideCompleted / defaultHideCompleted / onHideCompletedChangeHeader toggle, controlled or not. | boolean / boolean / (hide) => void | — |
sortCompletedDone tasks below open ones. | boolean | false |
todayReference day for due states (default: live clock in the provider time zone). | string | Date | — |
readOnlyNo edits. | boolean | false |
labelsprogress, hideCompleted, add, due, overdue, priority levels, empty, allDone, … | Partial<TaskListLabels> | — |
TaskData
| Prop | Type | Default |
|---|---|---|
id / title / doneBasics. | string / string / boolean | — |
descriptionSecond line. | string | — |
assigneeAvatar + first name; full name for screen readers. | { id; name; avatar? } | — |
dueDue date. | YYYY-MM-DD | — |
priorityFlag; low is not shown. | "low" | "medium" | "high" | "urgent" | — |
childrenSubtasks. | TaskData[] | — |
disabledCan't be toggled or edited. | boolean | — |