"use client"; import { motion } from "framer-motion"; import { COLORS, VizFrame } from "./common"; const STEPS = [ { label: "Collect", detail: "flights · video" }, { label: "Annotate", detail: "Roboflow" }, { label: "Convert", detail: "COCO ↔ YOLO" }, { label: "Stratify", detail: "train/val/test" }, { label: "Augment", detail: "albumentations" }, { label: "Balance", detail: "rare classes" }, { label: "Train", detail: "Adam · TensorBoard" }, { label: "Evaluate", detail: "mAP · PR · CM" }, { label: "Deploy", detail: "ONNX · Jetson" }, ]; export function LifecyclePipeline({ width = 940, height = 200, }: { width?: number; height?: number; }) { const padX = 30; const cellW = (width - padX * 2) / STEPS.length; const cy = height / 2; return ( {STEPS.map((s, i) => { const x = padX + i * cellW + cellW / 2; return ( {String(i + 1).padStart(2, "0")} {s.label} {s.detail} {i < STEPS.length - 1 ? ( ) : null} ); })} ); }