data-flow-pipes
remotionui/data-flow-pipesFreeBlock
Pipeline running end to end: stages come up in order, pipes draw between them, and a stream of payloads hops through, lighting each stage and ticking its tally
Live preview
live · rendered by the registry
Rendered by remotionui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://remotionui.com/r/data-flow-pipes.jsonSource
1import { loadFont } from "@remotion/google-fonts/Inter";2import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";3import { CODE_THEMES } from "@/remotion/lib/code-syntax";4import { getSafeAreaPadding } from "@/remotion/lib/layout";5import { EASING } from "@/remotion/lib/motion-tokens";6import { samplePath } from "@/remotion/lib/path-utils";78const { fontFamily } = loadFont("normal", {9 weights: ["400", "500", "600", "700"],10 subsets: ["latin"],11});1213export type PipeStage = {14 /** Stage name, e.g. "Transcode". */15 label: string;16 /** Optional second line — the queue, the worker, the region. */17 detail?: string;18};1920export type DataFlowPipesProps = {21 /** Stages the payload passes through, in order. Two to five read best. */22 stages?: PipeStage[];23 /** Unit counted at each stage, shown next to the tally. */24 unit?: string;25 /** How many payloads are pushed through the pipeline. */26 packets?: number;27 backgroundColor?: string;28 accentColor?: string;29 theme?: "dark" | "light";30 /** Animation speed multiplier. */31 speed?: number;32};3334const DEFAULT_STAGES: PipeStage[] = [35 { label: "Ingest", detail: "s3://raw-takes" },36 { label: "Transcode", detail: "h264 · 4 workers" },37 { label: "Caption", detail: "whisper-large" },38 { label: "Deliver", detail: "edge cache" },39];4041/** Beat plan in seconds. */42const T = {43 nodes: 0,44 nodeStagger: 0.12,45 pipes: 0.5,46 pipeStagger: 0.16,47 firstPacket: 1.15,48 /** Gap between payloads leaving the source. */49 emit: 0.26,50 /** Time a payload spends in one pipe. */51 hop: 0.52,52 /** How long a node stays lit after a payload lands on it. */53 pulse: 0.5,54} as const;5556const clamp = {57 extrapolateLeft: "clamp",58 extrapolateRight: "clamp",59} as const;6061const CheckGlyph: React.FC<{62 size: number;63 color: string;64 progress: number;65}> = ({ size, color, progress }) => (66 <svg width={size} height={size} viewBox="0 0 24 24" fill="none">67 <path68 d="M4.8 12.6l4.9 4.9 9.5-10.4"69 stroke={color}70 strokeWidth={2.6}71 strokeLinecap="round"72 strokeLinejoin="round"73 strokeDasharray={22}74 strokeDashoffset={22 * (1 - progress)}75 />76 </svg>77);7879/**80 * A pipeline actually running rather than dots looping on a static graph:81 * stages come up in dependency order, the pipes draw between them, and then a82 * stream of payloads travels hop by hop — lighting each stage as it lands and83 * ticking that stage's tally — until the last one drains and completes.84// … truncated
More from remotionui
All 127 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| ai-composer-showcaseai-composer-showcase | remotionui | Blocks | Free | no deps | |
| ai-generation-canvasai-generation-canvas | remotionui | Blocks | Free | no deps | |
| animated-bar-chartanimated-bar-chart | remotionui | Blocks | Free | no deps | |
| audiogram-sceneaudiogram-scene | remotionui | Blocks | Free | no deps | |
| auto-fit-titleauto-fit-title | remotionui | Blocks | Free | no deps | |
| b-roll-stackb-roll-stack | remotionui | Blocks | Free | no deps | |
| bento-panbento-pan | remotionui | Blocks | Free | no deps | |
| browser-flowbrowser-flow | remotionui | Blocks | Free | no deps |
