@tour-kit/checklists API
API reference for @tour-kit/checklists: Checklist, ChecklistTask, useChecklist, useTask, and progress utilities
@tour-kit/checklists API Reference
Complete API reference for the checklists package. This package provides interactive checklists with task dependencies.
Providers
ChecklistProvider
Provider for checklists.
import { ChecklistProvider } from '@tour-kit/checklists';
<ChecklistProvider
checklists={[onboarding, setup]}
onTaskComplete={(checklistId, taskId) => {}}
onChecklistComplete={(checklistId) => {}}
>
{children}
</ChecklistProvider>| Prop | Type | Description |
|---|---|---|
checklists | ChecklistConfig[] | Array of checklist configs |
onTaskComplete | (checklistId, taskId) => void | Called when task completes |
onChecklistComplete | (checklistId) => void | Called when checklist completes |
Hooks
useChecklist
Hook for single checklist control.
import { useChecklist } from '@tour-kit/checklists';
const {
checklist,
tasks,
visibleTasks,
progress,
completeTask,
executeAction,
dismiss,
reset,
} = useChecklist('onboarding');| Return | Type | Description |
|---|---|---|
checklist | ChecklistState | Checklist state |
tasks | ChecklistTaskState[] | All tasks |
visibleTasks | ChecklistTaskState[] | Visible tasks (passing when condition) |
progress | { completed, total, percentage } | Progress stats |
completeTask | (taskId: string) => void | Mark task complete |
executeAction | (taskId: string) => void | Execute task action |
dismiss | () => void | Dismiss checklist |
reset | () => void | Reset checklist |
useTask
Hook for single task control.
import { useTask } from '@tour-kit/checklists';
const {
task,
isCompleted,
isLocked,
dependencies,
complete,
execute,
} = useTask('onboarding', 'profile');| Return | Type | Description |
|---|---|---|
task | ChecklistTaskState | Task state |
isCompleted | boolean | Whether task is complete |
isLocked | boolean | Whether blocked by dependencies |
dependencies | string[] | IDs of blocking tasks |
complete | () => void | Mark task complete |
execute | () => void | Execute task action |
useChecklistPersistence
Hook for persistence control.
import { useChecklistPersistence } from '@tour-kit/checklists';
const { save, load, clear } = useChecklistPersistence('onboarding');useChecklistsProgress
Hook for all checklists progress.
import { useChecklistsProgress } from '@tour-kit/checklists';
const progress = useChecklistsProgress();
// [{ id, title, completed, total, percentage }]Components
Checklist
Container component for checklist.
import { Checklist } from '@tour-kit/checklists';
<Checklist id="onboarding" className="custom-class">
<ChecklistProgress />
{tasks.map(task => (
<ChecklistTask key={task.id} taskId={task.id} />
))}
</Checklist>ChecklistTask
Individual task item.
import { ChecklistTask } from '@tour-kit/checklists';
<ChecklistTask
taskId="profile"
checklistId="onboarding"
showIcon
showDescription
/>| Prop | Type | Description |
|---|---|---|
taskId | string | Task ID |
checklistId | string | Parent checklist ID |
showIcon | boolean | Show task icon |
showDescription | boolean | Show task description |
ChecklistProgress
Progress bar/indicator.
import { ChecklistProgress } from '@tour-kit/checklists';
<ChecklistProgress
checklistId="onboarding"
showPercentage
showCount
/>ChecklistLauncher
Button to launch checklist.
import { ChecklistLauncher } from '@tour-kit/checklists';
<ChecklistLauncher checklistId="onboarding">
<button>Open Checklist</button>
</ChecklistLauncher>ChecklistPanel
Full panel UI with all features.
import { ChecklistPanel } from '@tour-kit/checklists';
<ChecklistPanel
checklistId="onboarding"
position="bottom-right"
collapsible
defaultExpanded={true}
/>| Prop | Type | Description |
|---|---|---|
checklistId | string | Checklist ID |
position | string | Panel position |
collapsible | boolean | Allow collapse |
defaultExpanded | boolean | Start expanded |
Headless Components
import { ChecklistHeadless, TaskHeadless } from '@tour-kit/checklists/headless';
<ChecklistHeadless id="onboarding">
{({ checklist, tasks, progress, completeTask }) => (
<CustomChecklist />
)}
</ChecklistHeadless>
<TaskHeadless checklistId="onboarding" taskId="profile">
{({ task, isCompleted, isLocked, complete, execute }) => (
<CustomTask />
)}
</TaskHeadless>Utilities
createChecklist
Factory function for checklist creation.
import { createChecklist } from '@tour-kit/checklists';
const checklist = createChecklist({
id: 'onboarding',
title: 'Get Started',
tasks: [/* ... */],
});createTask
Factory function for task creation.
import { createTask } from '@tour-kit/checklists';
const task = createTask({
id: 'profile',
title: 'Complete profile',
action: { type: 'navigate', url: '/settings' },
});calculateProgress
Calculate progress from state.
import { calculateProgress } from '@tour-kit/checklists';
const { completed, total, percentage, remaining } = calculateProgress(state);getNextTask
Get first incomplete unlocked task.
import { getNextTask } from '@tour-kit/checklists';
const next = getNextTask(state);getLockedTasks
Get tasks blocked by dependencies.
import { getLockedTasks } from '@tour-kit/checklists';
const locked = getLockedTasks(state);canCompleteTask
Check if task dependencies are met.
import { canCompleteTask } from '@tour-kit/checklists';
const canComplete = canCompleteTask('task-id', state);resolveTaskDependencies
Get topological sort of tasks.
import { resolveTaskDependencies } from '@tour-kit/checklists';
const order = resolveTaskDependencies(tasks);hasCircularDependency
Detect circular dependencies.
import { hasCircularDependency } from '@tour-kit/checklists';
const hasCircular = hasCircularDependency(tasks);Types
ChecklistConfig
interface ChecklistConfig {
id: string;
title: string;
description?: string;
icon?: string | ReactNode;
tasks: ChecklistTaskConfig[];
onComplete?: () => void;
onDismiss?: () => void;
dismissible?: boolean;
hideOnComplete?: boolean;
meta?: Record<string, unknown>;
}ChecklistTaskConfig
interface ChecklistTaskConfig {
id: string;
title: string;
description?: string;
icon?: string | ReactNode;
action?: TaskAction;
dependsOn?: string[];
when?: (context: ChecklistContext) => boolean;
completedWhen?: TaskCompletionCondition;
manualComplete?: boolean;
meta?: Record<string, unknown>;
}TaskAction
type TaskAction =
| { type: 'navigate'; url: string; external?: boolean }
| { type: 'callback'; handler: () => void | Promise<void> }
| { type: 'tour'; tourId: string }
| { type: 'modal'; modalId: string }
| { type: 'custom'; data: unknown };TaskCompletionCondition
type TaskCompletionCondition =
| { event: string }
| { selector: string }
| { custom: (ctx: ChecklistContext) => boolean };ChecklistProgress
interface ChecklistProgress {
completed: number;
total: number;
percentage: number;
remaining: number;
}