import { RefreshCw, RotateCcw, Plus } from "lucide-react"; import { useWorkspaceStore } from "../workspace/store"; import type { SocketState } from "../terminal/socket"; import { Button } from "./ui"; const STATE_DOT_CLASS: Record = { disconnected: "bg-zinc-500", connecting: "bg-amber-500", connected: "bg-emerald-500", reconnecting: "bg-amber-500", ended: "bg-red-500", error: "bg-red-500", }; const STATE_LABEL: Record = { disconnected: "Disconnected", connecting: "Connecting\u2026", connected: "Connected", reconnecting: "Reconnecting\u2026", ended: "Session Ended", error: "Error", }; export function SessionControls() { const activeTab = useWorkspaceStore((s) => s.tabs.find((t) => t.id === s.activeTabId)); const connectionState: SocketState = useWorkspaceStore((s) => s.connectionStates[s.activeTabId] ?? "disconnected"); const isSharedSession = useWorkspaceStore((s) => s.isSharedSession); const reconnect = useWorkspaceStore((s) => s.reconnect); const newSession = useWorkspaceStore((s) => s.newSession); const resetSession = useWorkspaceStore((s) => s.resetSession); const socketBusy = connectionState === "connecting" || connectionState === "reconnecting"; return (
{isSharedSession && (
Shared session — other users may be connected and can send input
)}
{/* ---- identifiers ---- */}
Workspace default Session {activeTab?.sessionId ?? ""}
{/* ---- connection state ---- */}
{STATE_LABEL[connectionState]}
{/* ---- actions ---- */}
); }