Multi-step progress indicator with numbered circles connected by a progress line. Perfect for account setup wizards that show users their completion status.
Centered horizontal step tracker: numbered circles connected by a progress line, with the current and completed steps distinguished by border and fill color. The component has no internal state at all; every circle's completed/current status is derived fresh on each render from the currentStep number prop.
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://ui.beste.co/r/onboarding5?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/onboarding5?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/onboarding5.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports onboarding5Demo alongside the block: the exact props behind the preview above. Spread it to get a working step tracker in one line.
import { Onboarding5, onboarding5Demo } from "@/components/beste/block/onboarding5";
export default function OnboardingPage() {
return <Onboarding5 {...onboarding5Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Onboarding5 } from "@/components/beste/block/onboarding5";
export default function OnboardingPage() {
return (
<Onboarding5
badge={{ label: "Setup", variant: "secondary" }}
heading="Complete your profile"
description="Follow these steps to get started with your account."
steps={[
{ id: "1", title: "Create account", description: "Sign up with your email" },
{ id: "2", title: "Verify email", description: "Check your inbox" },
{ id: "3", title: "Add details", description: "Tell us about yourself" },
]}
currentStep={1}
primaryButton={{ label: "Continue", href: "/setup/step-2" }}
secondaryButton={{ label: "Skip for now", href: "/dashboard" }}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
badge | { label: string; variant?: "default" | "secondary" | "outline" } | – | Small badge above the heading |
heading | string | – | Main headline |
description | string | – | Supporting copy below the heading |
steps | Step[] | [] | Ordered steps rendered as numbered circles |
currentStep | number | 0 | Index of the active step; drives completed/current styling only |
primaryButton | { label: string; href: string } | – | Primary CTA below the track |
secondaryButton | { label: string; href: string } | – | Secondary/ghost CTA next to the primary one |
className | string | – | Extra classes for the outer <section> |
type Step = {
id: string;
title: string;
description?: string;
};useState in the file): currentStep is a plain number prop, so completed/current styling, the connector line colors, and the mobile summary all re-derive directly from whatever value the parent passes. Nothing inside the block advances the step count.hidden sm:block); a single summary line below the whole track (block sm:hidden) shows steps[currentStep]'s title and description instead of squeezing every label under its circle.i and i + 1 only turns bg-primary when i < currentStep; the segment leading into the current step stays the muted bg-border color.steps is empty the component returns null rather than rendering an empty shell.currentStep, so pagination must be implemented by the page that renders it (e.g. by changing the prop on navigation).onboarding12
Visual progress tracker featuring a circular percentage indicator with completion stats and task list. Perfect for profile setup flows that encourage users to reach 100% completion.
onboarding6
Vertical timeline layout with step indicators, descriptions, and a connecting progress line. Perfect for workspace setup flows with detailed step explanations.
onboarding9
Animated step wizard with square numbered indicators and content cards for each step. Perfect for product walkthroughs that guide users through key features.
onboarding8
Interactive form wizard with segmented progress bar, form fields, and back/next navigation. Perfect for account registration flows collecting user and company information.
onboarding7
Card-based progress tracker showing completion percentage and a checklist of tasks with visual status. Perfect for gamified onboarding that motivates users to finish setup.
onboarding1
Centered welcome screen featuring a hero image, step counter, and dual CTAs. Perfect for app onboarding flows that guide users through a multi-step setup process.