/* ── TopBar — Professional header bar ── * Wren logo · version · mode badge · agent status · Deploy */ import { useMode } from "./ModeContext"; import { MODES } from "#/types/mode"; const VERSION = "0.4.2"; interface TopBarProps { isRunning?: boolean; taskCount?: number; elapsedMs?: number; onDeploy?: () => void; } function formatElapsed(ms: number): string { if (!ms) return "0:00"; const sec = Math.floor(ms / 1000); const m = Math.floor(sec / 60); const s = sec % 60; return `${m}:${s.toString().padStart(2, "0")}`; } export function TopBar({ isRunning = false, taskCount = 0, elapsedMs = 0, onDeploy, }: TopBarProps) { const { mode } = useMode(); const modeDef = MODES.find((m) => m.id === mode); return (
{/* Left: Logo + Version */}
{/* Wren logo */}
Wren {/* Version badge */} v{VERSION}
{/* Center: Mode badge + Agent status */}
{/* Mode badge */} {modeDef && ( {modeDef.shortLabel} )} {/* Agent status pill */} {isRunning ? "Agent Active" : "Agent Idle"} {taskCount > 0 && ( {" "} · {taskCount} tasks )} {isRunning && elapsedMs > 0 && ( {" "} · {formatElapsed(elapsedMs)} )}
{/* Right: Deploy button */}
); }