Skip to content

Onboarding Checklist

OnboardingMIT
View in Storybook

Step-by-step onboarding checklist with progress tracking and completion state.

bun add @otfdashkit/ui

Preview

Onboarding Checklist
Loading Storybook preview…

Code

import { 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.

PropTypeDefaultDescription
collapsiblebooleantrueWhether the body is collapsible. Default true.
completedRecord<string, boolean>Controlled map of itemId → completed. If omitted, state is internal.
defaultOpenbooleantrueInitial open state (uncontrolled). Default true.
descriptionstringOptional subtitle / description.
hideProgressbooleanfalseHide the progress bar. Default false.
onComplete() => voidFired the first time every item flips to completed.
onItemChange(id: string, completed: boolean) => voidCalled when an item's completion changes.
titlestring'Getting started'Header title.