ComponentsFlows & wizards

Setup checklist

A "Get started" panel for onboarding: ordered setup steps with a progress ring, deep-link actions, estimates, optional and locked steps, skip with undo, a completion state and dismissal with a launcher pill to reopen it. Completion comes from the app.

Progress circle · disclosure pattern business/setup-checklist.tsxtheme · material · accent · density · font

Set up Moda Atölye

1 of 5 complete

  1. Take cards and bank transfers. Payouts land in your account two business days later.

    Connect iyzico

Installation

$ pnpm add @vamos-ui/react

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 { SetupChecklist, SetupChecklistLauncher } from "@vamos-ui/react/business";

<SetupChecklist items={steps} onSkip={skip} dismissed={hidden} onDismissedChange={setHidden} onAllDone={celebrate} />
{hidden ? <SetupChecklistLauncher items={steps} onOpen={() => setHidden(false)} floating /> : null}

Items are an <ol>; each title is a disclosure button whose name includes the status ("Connect payments, in progress"). Progress changes are announced politely.

Examples

Dependent steps

locked: { reason } shows a lock, disables the action and explains what unlocks it.

Partner onboarding

Finish these to start reselling.

  1. Review and sign version 3.2 (October 2026).

Dismiss and reopen

Dismissal is controlled so you can persist it; the launcher pill shows progress and reopens the guide.

CRM workspace setup

2 of 4 complete

  1. Sync Gmail or Microsoft 365 so replies land on the right deal.

Loading and complete

Skeleton rows while loading; when every required step is done or skipped the panel switches to its completion state.

Get started

Get started

3 of 3 complete

You're all set

Everything is in place. You can hide this guide; it stays in Help.

API

SetupChecklist

PropTypeDefault
items
{ id, title, description?, status: "todo" | "in_progress" | "done" | "skipped", action?: { label, href?, onSelect? }, optional?, locked?: { reason }, estimate? }.
SetupItem[]—
title / description
Header text.
string"Get started" / "{done} of {total} complete"
variant
Surface and density.
"card" | "sidebar" | "popover""card"
onSkip / onUndoSkip
Show Skip for now / Undo skip.
(id: string) => void—
dismissed / onDismissedChange
Controlled dismissal; renders nothing while dismissed.
boolean / (d: boolean) => void—
expandFirstIncomplete
Open the first unfinished step; moves along as steps complete (focus never jumps).
booleantrue
onAllDone
Called once when every required step is done or skipped.
() => void—
loading
Skeleton rows.
booleanfalse
labels
Built-in strings (setupChecklist namespace).
Partial<SetupChecklistLabels>—

SetupChecklistLauncher

PropTypeDefault
items
For the progress text.
SetupItem[]—
onOpen
Reopen the checklist.
() => void—
floating
Fixed at the bottom end of the viewport.
booleanfalse