pro140 lines · framer-motion
Run Timeline
Every step of a run, in order. A vertical timeline of plan, tool, approval and message steps, with a progress rail that fills as the run moves.
- Use it for
- Run detail pages, side panels, post-mortems.
- Themes
- Light + dark
- License
- Commercial use (draft)
Live
Run #0412
LiveRead the ticket and plan
820ms3 sub-tasks
search_issues
412msrepo: acme/web
run_tests
214 passed
Ask to merge PR #482
Post summary to #eng
tsx
"use client";
import * as React from "react";
import { AnimatePresence, motion, useReducedMotion } from "framer-motion";
import { cn } from "@/lib/utils";
export type StepKind = "plan" | "tool" | "approval" | "message" | "error";
export type StepStatus = "pending" | "active" | "done" | "failed";
export interface RunStep {
id: string;
kind: StepKind;
label: string;
detail?: string;
durationMs?: number;
}
export interface RunTimelineProps {
steps?: RunStep[];
/** Index of the active step (controlled). */
activeIndex?: number;
/** Walk through the steps on a loop. */The rest is in Pro.
Full source, the rebuild prompt and registry install unlock with Pro or Lifetime.
Get ProHow it behaves
- →Steps have kinds (plan ◇, tool ƒ, approval ✋, message ↗, error !) and statuses derived from the active index.
- →Done steps fill black with a check and show their duration; the active step pulses; an active approval step turns signal-orange and reads 'Waiting for a human…'.
- →A primary-coloured rail scales from the top to show progress.
- →Controlled via activeIndex, or autoplay walks the steps on a loop.
Accessibility
- ✓Ordered list; the active step has aria-current=step.
- ✓List is aria-live=polite so screen readers hear progress.
- ✓Honours prefers-reduced-motion.