Staaarter

Setup Checklist with Progress Sidebar

A multi-step setup checklist with per-step status indicators and ETAs, paired with a sticky sidebar that shows a static completion-progress bar and a handful of key stats, suited to onboarding, implementation guides, or setup wizards.

By Staaarter Team
Feature
Docs
Live preview

Docs

Installation

A real shadcn registry command, not a copy-paste stand-in: it fetches this block plus its dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/setup-checklist-progress-sidebar.json

Prefer not to use the CLI? Copy the source from the Code toggle above into src/components/blocks/feature/feature168.tsx instead.

Usage

The file also exports feature168Demo, the exact props behind the preview above. Spread it to get a working section in one line, then replace it with your own data.

import { Feature168, feature168Demo } from "@/components/blocks/feature/feature168";

export default function Page() {
  return <Feature168 {...feature168Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringnoneSmall label above the heading.
headingReactNodenoneSection heading.
descriptionstringnoneSupporting copy under the heading.
stepsSetupStep[]noneChecklist steps, rendered in array order.
progressPercentnumbernoneStatic completion percentage (0-100) shown in the sidebar's progress bar.
progressLabelstring"Setup progress"Label above the sidebar progress bar.
statsSidebarStat[]noneKey/value stats listed under the sidebar progress bar.
classNamestringnoneExtra classes for the outer section element.

Types

type SetupStepStatus = "complete" | "in-progress" | "upcoming";

type SetupStep = {
  title: string;
  description: string;
  status: SetupStepStatus;
  eta: string;
};

type SidebarStat = {
  label: string;
  value: string;
};

Behavior notes

  • Fully static server component: `progressPercent` and every step's `status` are fixed props, not tracked or recalculated on the client.
  • The sidebar uses `lg:sticky lg:top-24` so it stays in view as the checklist scrolls past it on large screens; both columns stack on mobile.
  • Each step's status icon (check, dot, or empty circle) is derived from the `status` string via a lookup, not passed in as a component reference.