Deployment Pipeline
motiq/deployment-pipelineFreeComponent
Visualize a CI/CD deployment run: ordered stages with queued/running/passed/failed/cancelled/skipped status, running-stage emphasis, per-stage durations, expandable logs, and a Retry control. Display-only — the host app supplies the pipeline data.
Live preview
live · rendered by the registry
Rendered by motiq on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.motiq.dev/r/deployment-pipeline.jsonSource
1"use client";23import * as React from "react";4import { motion, AnimatePresence } from "motion/react";56import { cn } from "@/lib/utils";7import { useReducedMotion, useVisibilityPause } from "@/lib/motiq";89/**10 * DeploymentPipeline — an accessible, reduced-motion-safe visualization of a11 * CI/CD deployment run: ordered stages, per-stage status, live emphasis on the12 * running stage, expandable logs, durations, and a Retry affordance on13 * failed/cancelled stages.14 *15 * This component is display-only: it never talks to a deployment provider. The16 * host application owns the pipeline data and passes it in via `stages`, and17 * decides what `onRetry` does. Clean-room original.18 */1920export type StageStatus =21 | "queued"22 | "running"23 | "passed"24 | "failed"25 | "cancelled"26 | "skipped";2728export interface Stage {29 /** Stable identifier, unique within the pipeline. */30 id: string;31 /** Human label, e.g. "Build". */32 name: string;33 status: StageStatus;34 /** Wall-clock duration in milliseconds, if known. */35 durationMs?: number;36 /** Console lines for this stage, revealed when the row is expanded. */37 logs?: string[];38}3940export interface DeploymentPipelineProps {41 /** The ordered stages of the run (controlled by the host application). */42 stages: Stage[];43 /** Called with a stage id when its Retry control is activated. */44 onRetry?: (stageId: string) => void;45 /** Id of a stage whose logs start expanded. */46 defaultExpandedId?: string;47 /** Accessible name for the pipeline list. */48 label?: string;49 className?: string;50}5152interface StatusMeta {53 /** Short text label, announced to assistive tech alongside the icon. */54 label: string;55 /** CSS custom property that tints this status. */56 color: string;57 /** Whether this status offers a Retry control. */58 retryable: boolean;59}6061// Semantic status tokens (no obsolete fallbacks — the tokens exist). Status is62// always icon + label, never color alone.63const STATUS: Record<StageStatus, StatusMeta> = {64 queued: { label: "Queued", color: "var(--color-neutral, var(--color-muted))", retryable: false },65 running: { label: "Running", color: "var(--color-accent)", retryable: false },66 passed: { label: "Passed", color: "var(--color-success)", retryable: false },67 failed: { label: "Failed", color: "var(--color-error)", retryable: true },68 cancelled: { label: "Cancelled", color: "var(--color-neutral, var(--color-muted))", retryable: true },69// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from motiq
All 100 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Activity Streamactivity-stream | motiq | Components | Free | 1 dep | |
| Adaptive Safe-Zone Gridadaptive-safe-zone-grid | motiq | Components | Free | no deps | |
| Agent Run Timelineagent-run-timeline | motiq | Components | Free | 1 dep | |
| AI Response Streamai-response-stream | motiq | Components | Free | 1 dep | |
| Animated Accordionanimated-accordion | motiq | Components | Free | 2 deps | |
| Animated Buttonanimated-button | motiq | Components | Free | 1 dep | |
| Animated Dialoganimated-dialog | motiq | Components | Free | 2 deps | |
| Animated Gridanimated-grid | motiq | Components | Free | 2 deps |
