"use client" import { CheckCircle, Clock, Target } from "lucide-react" import { Badge } from "@/components/ui/badge" import { cn } from "@/lib/utils" interface RoadmapItem { title: string description: string status: "completed" | "planned" } const roadmapItems: RoadmapItem[] = [ { title: "findPort", description: "WebSerial-based robot detection and connection management", status: "completed", }, { title: "calibrate", description: "Real-time joint calibration with visual feedback and data export", status: "completed", }, { title: "teleoperate", description: "Manual robot control with keyboard and slider inputs", status: "completed", }, { title: "record", description: "Record robot trajectories and sensor data to create datasets", status: "planned", }, { title: "replay", description: "Replay any recorded episode or episodes from existing datasets", status: "planned", }, { title: "train", description: "Run training based on a given dataset to create a policy", status: "planned", }, { title: "eval", description: "Run inference using trained policies for autonomous operation", status: "planned", }, ] const statusConfig = { completed: { icon: CheckCircle, label: "COMPLETED", dotColor: "bg-green-500 dark:bg-green-400", textColor: "text-green-600 dark:text-green-400", bgColor: "bg-green-500/10 dark:bg-green-400/5", borderColor: "border-green-500/30 dark:border-green-400/20", }, planned: { icon: Clock, label: "PLANNED", dotColor: "bg-slate-500 dark:bg-muted-foreground", textColor: "text-slate-600 dark:text-muted-foreground", bgColor: "bg-slate-500/10 dark:bg-muted-foreground/5", borderColor: "border-slate-500/30 dark:border-muted-foreground/20", }, } export function RoadmapSection() { const completedCount = roadmapItems.filter((item) => item.status === "completed").length const totalCount = roadmapItems.length return (

Roadmap

lfg o7

{/* Header */}
SYSTEM OBJECTIVES
{completedCount} ACTIVE
{totalCount - completedCount} QUEUED
PROGRESS: {Math.round((completedCount / totalCount) * 100)}%
{/* Progress Bar */}
{/* Items List */}
{roadmapItems.map((item, index) => { const config = statusConfig[item.status] const StatusIcon = config.icon return (
{/* Number */}
{String(index + 1).padStart(2, "0")}
{/* Content */}

{item.title}()

{item.description}

{/* Status Badge */} {config.label} {/* Status Icon */}
) })}
{/* Footer */}

REFERENCE: functions based on the original{" "} LeRobot {" "} (python) and adapted for web robotic ai

) }