Multi-Step Pipeline Tracker
Numbered-step progress, a stage+percentage variant, a Steps/Plan outline, and an inference-queue surface for local workflows.
Multi-Step Pipeline Tracker
The MultiStepPipelineTracker is a horizontal numbered-step progress indicator (active / completed / pending) that maps directly to usePipeline's onProgress ({ currentStep, completed, total }). StagePipelineTracker is a single-stage label + 0–100 bar for ingest; StepsPlan is a vertical connector-bar outline with expandable per-step detail; and InferenceQueueSurface visualizes pending tasks grouped by priority (interactive / background) over useInferenceQueue.
Preview
Installation
pnpm dlx shadcn@latest add @localmode/ui/conversation/pipeline-trackernpx shadcn@latest add @localmode/ui/conversation/pipeline-trackeryarn dlx shadcn@latest add @localmode/ui/conversation/pipeline-trackerbunx --bun shadcn@latest add @localmode/ui/conversation/pipeline-trackerData source & dependencies
Data source: renders the step/progress shape you pass — works with any backend. Recommended producer: usePipeline progress and useInferenceQueue from @localmode/react (on-device, optional).
clsx+tailwind-merge— via the sharedcn()util (installed automatically as a registry dependency)
Files installed
pipeline-tracker.tsx—MultiStepPipelineTracker,StagePipelineTracker,StepsPlan,InferenceQueueSurfacelib/utils.ts— thecn()helper (if not already present)
Props
MultiStepPipelineTracker
Prop
Type
Examples
Track pipeline progress
import { usePipeline } from '@localmode/react';
import { MultiStepPipelineTracker } from '@/components/pipeline-tracker';
const { progress } = usePipeline(steps);
<MultiStepPipelineTracker
steps={['Chunk', 'Embed', 'Index']}
completed={progress?.completed ?? 0}
currentStep={progress?.currentStep}
/>Customization
Use StagePipelineTracker for single-stage ingest with a percentage bar, or StepsPlan for an editable plan outline. The queue surface is presentational over useInferenceQueue — map your pending tasks into QueuedTask[].
These primitives are presentational and hook-driven: they render props and emit callbacks, holding only local view state. The orchestration state (e.g. usePipeline) lives in your app. Every surface uses shadcn/ui CSS-variable utilities, so it inherits your theme — restyle the copied file freely.