Staaarter

Interactive Workflow Preview

A left-hand rail of workflow steps and a right-hand preview panel. Hovering (or focusing) a step swaps in its screenshot, bullet points, and action link on the right, so the panel reads as a live walkthrough of the workflow.

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 button, media-slot dependencies and any missing npm packages, and installs them straight into your project.

npx shadcn add https://staaarter.com/r/interactive-workflow-preview.json

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

Usage

The file also exports feature167Demo, 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 { Feature167, feature167Demo } from "@/components/blocks/feature/feature167";

export default function Page() {
  return <Feature167 {...feature167Demo} />;
}

Props

PropTypeDefaultDescription
eyebrowstringnoneSmall label above the heading.
headingReactNodenoneSection heading.
descriptionstringnoneSupporting copy under the heading.
stepsWorkflowStep[]noneWorkflow steps; the first is active on mount.
classNamestringnoneExtra classes for the outer section element.

Types

type WorkflowStep = {
  label: string;
  title: string;
  description: string;
  bullets: string[];
  image: { src: string; alt: string };
  actionLabel: string;
  actionHref: string;
};

Behavior notes

  • Real client-side state: hovering a step (`onMouseEnter`) sets the active preview shown on the right, not just a CSS `:hover` reveal; `onFocus`/`onClick` set the same state so the preview also updates for keyboard and touch users who can't hover. The first step (index 0) is active by default on mount.
  • Each step's icon comes from a fixed, hardcoded set indexed by step position rather than a per-step icon prop, since a "use client" component can't accept a component reference from a server parent.
  • The action link/button is decorative (an inert `<Link>`), not a real workflow trigger.
  • aria-selected on each step button and role="tablist"/role="tab" wire the rail for screen readers.
  • Demo props live in a sibling feature167.demo.tsx (no "use client" directive) per the client-block demo-file-split rule.