Vertical timeline layout with step indicators, descriptions, and a connecting progress line. Perfect for workspace setup flows with detailed step explanations.
Vertical timeline of setup steps: each row pairs a circular indicator (checkmark, icon, or number) with a title and description, connected by a vertical line down the left edge. Like its horizontal sibling, the block has no internal step state; currentStep is a plain number that only affects styling on each render.
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/onboarding6?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://ui.beste.co/r-base/onboarding6?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/onboarding6.tsx and the badge and button shadcn/ui primitives it depends on.
The installed file exports onboarding6Demo alongside the block: the exact props behind the preview above. Spread it to get a working timeline in one line.
import { Onboarding6, onboarding6Demo } from "@/components/beste/block/onboarding6";
export default function OnboardingPage() {
return <Onboarding6 {...onboarding6Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Onboarding6 } from "@/components/beste/block/onboarding6";
export default function OnboardingPage() {
return (
<Onboarding6
badge={{ label: "Getting Started", variant: "secondary" }}
heading="Set up your workspace"
description="Complete these steps to start collaborating with your team."
steps={[
{ id: "1", title: "Create your account", description: "Sign up with your work email." },
{ id: "2", title: "Invite team members", description: "Add colleagues to collaborate." },
{ id: "3", title: "Start collaborating", description: "You're all set." },
]}
currentStep={1}
primaryButton={{ label: "Continue Setup", 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 | TimelineStep[] | [] | Ordered steps rendered top to bottom |
currentStep | number | 0 | Index of the active step; drives completed/current styling only |
primaryButton | { label: string; href: string } | – | Primary CTA below the timeline |
secondaryButton | { label: string; href: string } | – | Secondary/ghost CTA next to the primary one |
className | string | – | Extra classes for the outer <section> |
type TimelineStep = {
id: string;
title: string;
description?: string;
icon?: LucideIcon;
};useState) exists in this file: currentStep is a plain number prop, so completed/current styling is a pure derivation on every render, and nothing inside the block advances or rewinds the timeline.step.icon overrides the numbered fallback for any step that is not yet completed, which means it renders for both the current step and every upcoming step; only once a step is marked completed (index < currentStep) does the checkmark take over from the icon.absolute left-5 top-10 h-full) and only turns bg-primary when that row's step is completed; the last step in the list renders no connector at all.pb-8 last:pb-0 on each step wrapper rather than a space-y utility on the container, so the connector line's height calculation lines up with the padding of each row.steps is empty the component returns null rather than rendering an empty shell.currentStep is entirely the responsibility of the page that renders this block.onboarding5
Multi-step progress indicator with numbered circles connected by a progress line. Perfect for account setup wizards that show users their completion status.
onboarding10
Interactive accordion layout where each step expands to reveal detailed instructions and action buttons. Perfect for setup guides that let users complete tasks at their own pace.
onboarding11
Desktop wizard with a vertical side navigation menu and content panels for each step. Perfect for comprehensive account setup requiring multiple configuration screens.
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.
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.