Animated Checklist
betaA task list whose boxes fill with a bounce and whose done tasks strike through, quieten to muted text and can glide to the bottom, with an add row.
- Forms
- 1 file
- 2 npm packages
- Accessibility notes
- Animates with motion
pnpm dlx @dowel-ui/cli add animated-checklistnpm packages installed: class-variance-authority, motion.
import { AnimatedChecklist } from "@/components/ui/animated-checklist";Default
Gallery
Sort Done
Sizes
<AnimatedChecklist>
| Prop | Type | Default |
|---|---|---|
addLabel | string | "Add new task" |
allowAddShow the "Add new task" row. | boolean | true |
bounceFill overshoot, 0–100. | number | 50 |
boxSizeCheckbox size in pixels. The corner stays 32% of it. Defaults to one line of the label at | number | — |
defaultItemsInitial tasks when uncontrolled. | ChecklistItem[] | [] |
itemsControlled tasks. | ChecklistItem[] | — |
maxItemsThe add row hides once the list reaches this many tasks. | number | Number.POSITIVE_INFINITY |
maxLengthLongest task label, in characters. | number | 40 |
onItemsChangeCalled with the new list whenever a task is checked, added or removed. | (items: ChecklistItem[]) => void | — |
placeholder | string | "New task" |
radiusCard corner radius in pixels. Defaults to 18. | number | — |
removableShow a remove button on each task. | boolean | false |
size | "sm" | "md" | "lg" | "md" |
sortDoneOnce a task has finished its tick, glide it to the bottom of the list, and back to its place when unticked. Changes only the order shown. | boolean | false |
stroke | boolean | — |
Plus every attribute of <div> except defaultValue, onChange.
10/10
checks passed
- Tested — passes
- axe assertion — passes
- Keyboard tested — passes
- Storybook examples — passes
- Accessibility documented — passes
- Semantic tokens only — passes
- Motion from tokens — passes
- className merged — passes
- Visible focus — passes
- No fixed widths — passes