Onboarding Checklist
OnboardingMITStep-by-step onboarding checklist with progress tracking and completion state.
bun add @otfdashkit/ui
Preview
Onboarding ChecklistOnboarding
Loading Storybook preview…
Code
@otfdashkit/uiimport { Checklist, ChecklistItem, Button } from '@otfdashkit/ui'
export function Example() {
return (
<div className="max-w-md w-full">
<Checklist
title="Getting started"
description="Finish setup to unlock the full workspace."
>
<ChecklistItem
id="invite"
title="Invite your teammates"
description="Add at least one collaborator to your workspace."
action={<Button size="sm" variant="outline">Invite</Button>}
/>
<ChecklistItem
id="connect"
title="Connect a GitHub repo"
description="Sync issues and PRs automatically."
action={<Button size="sm" variant="outline">Connect</Button>}
/>
<ChecklistItem
id="key"
title="Add an API key"
description="So Claude can ship code on your behalf."
action={<Button size="sm" variant="outline">Add</Button>}
/>
<ChecklistItem
id="deploy"
title="Deploy to production"
description="Go live with a single click."
action={<Button size="sm">Deploy</Button>}
/>
</Checklist>
</div>
)
}
Free with the SDK. This pattern ships in @otfdashkit/ui under the MIT license.
Props
Props declared in the Checklist source. Inherited HTML attributes are not listed.
| Prop | Type | Default | Description |
|---|---|---|---|
| collapsible | boolean | true | Whether the body is collapsible. Default true. |
| completed | Record<string, boolean> | Controlled map of itemId → completed. If omitted, state is internal. | |
| defaultOpen | boolean | true | Initial open state (uncontrolled). Default true. |
| description | string | Optional subtitle / description. | |
| hideProgress | boolean | false | Hide the progress bar. Default false. |
| onComplete | () => void | Fired the first time every item flips to completed. | |
| onItemChange | (id: string, completed: boolean) => void | Called when an item's completion changes. | |
| title | string | 'Getting started' | Header title. |