Skip to content
ZikZuk UI

TaskList

Stripe TaskList

A checklist of work toward one outcome: a business verification, a provider setup, a Home page's “Get started”. Rows show Stripe's statuses — not started, in progress, blocked, complete — with an optional connector line, a progress header and sub-tasks that fold away once their parent is done.

pnpm add @zikzuk/ui
import { TaskList, TaskListItem } from "@zikzuk/ui";

Get started

Connector and progress header. Rows with onPress are buttons; the blocked row never is.

Get started1 of 4 tasks
  1. Verify your business, CompleteApproved on 12 Oct 2026
  2. Go live, BlockedAdd a bank account first

Sub-tasks, work under way and a failed check

A parent without a status takes it from its sub-tasks, and folds them behind “Show steps” once complete.

  1. Identity check, CompleteComplete
  2. Document review, In progressChecking your documents…
  3. Test connection, FailedThe provider refused the API key

When to use

  • Setups, onboarding and “Get started” lists where order matters.
  • Any checklist of work where each row can open the task it names.
  • A blocked row says what it waits for in its second line; a failed check stays in progress with the reason in red.

Not for

  • A list of records — use List.
  • Navigation between pages — use links.

Props

TaskList

PropTypeDescription
childrenTaskListItem elementsStripe's form. Or pass tasks as data.
tasksTaskListTask[]Rows as data (each a TaskListItem's props plus key).
connectorboolean
Default false
A line joining the status circles; without it rows are separated by hairlines.
progressboolean
Default false
A header with a brand bar and “2 of 5 tasks”.
progressLabelstring
Default "Progress"
The progress header's label.
nounstring
Default "task"
Counted noun in “2 of 5 tasks”.
shimmerboolean
Default false
The in-progress row's detail shimmers.
announceboolean
Default true
Status changes are read out in a polite live region.
aria-labelstringNames the list for screen readers.
classNamestringExtra classes on the outer element.

TaskListItem

PropTypeDescription
titleReactNodeThe task.
status"not-started" | "in-progress" | "blocked" | "complete"Stripe's status. Older kit states (pending, running, done…) are accepted. Without it, derived from subTasks.
detailReactNodeSecond line: the answer when complete, the reason when blocked, what to do now.
errorbooleanThe last attempt failed: the detail reads as the reason, in red.
onPress(event) => voidMakes the whole row a button with a chevron. Blocked rows never are.
hrefstringWithout onPress: the title links here.
actionReactNodeWithout onPress: a control at the row's end.
selectedbooleanThe task whose pane is open: aria-current="step", brand title.
disabledbooleanNot pressable for now (while saving).
subTasksTaskListSubTask[]Nested tasks, indented and smaller.
shimmerbooleanOverride the list's shimmer for this row.