1Sponsor

Setup Flow

@clack-style step flow with ◇/◆/│ visual language, badge, info steps, and multi-select

Terminal

Installation

pnpm dlx shadcn@latest add https://termcn.dev/r/setup-flow.json

Usage

import { SetupFlow } from "@/components/ui/setup-flow";
<SetupFlow title="create-app">
  <SetupFlow.Badge label="v1.0.0" />
  <SetupFlow.Step status="done">Project name set to my-app</SetupFlow.Step>
  <SetupFlow.Step status="done">Template selected: React</SetupFlow.Step>
  <SetupFlow.Step status="active">Installing dependencies...</SetupFlow.Step>
  <SetupFlow.MultiSelect
    label="Select features"
    hint="space to toggle, enter to confirm"
    options={[
      { value: "ts", label: "TypeScript" },
      { value: "eslint", label: "ESLint", description: "Code linting" },
      { value: "prettier", label: "Prettier", description: "Formatting" },
    ]}
    onSubmit={(values) => console.log(values)}
  />
</SetupFlow>

API Reference

SetupFlow

PropTypeDefault
titlestringundefined
titleFont"block" | "simple" | "shade" | "slim""block"
titleColorstring"#888888"
titleColorAltstringundefined
connectorCharstring"│"
connectorColorstringundefined
childrenReactNoderequired

SetupFlow.Badge

PropTypeDefault
labelstringrequired
bgstring"cyan"
colorstring"black"

SetupFlow.Step

PropTypeDefault
iconstringundefined
iconColorstringundefined
status"done" | "active" | "pending" | "success" | "error""done"
childrenReactNoderequired

SetupFlow.Spinner

PropTypeDefault
labelstringrequired
onComplete() => voidundefined

SetupFlow.MultiSelect

PropTypeDefault
labelstringrequired
hintstringundefined
options{ value: string; label: string; description?: string }[]required
valuesstring[]undefined
onChange(values: string[]) => voidundefined
onSubmit(values: string[]) => voidundefined
checkedCharstring"■"
uncheckedCharstring"□"
checkedColorstring"green"