import React from "react"; import { TerminalComponent, type TerminalRef } from "./terminal"; import { TerminalSessionTabs, type TerminalSessionInfo } from "./terminal-session-tabs"; import type { TerminalSession } from "../../../api/terminal"; interface Props { instanceId: string; sessions: TerminalSession[]; sessionInfos: TerminalSessionInfo[]; activeSessionId: string; terminalRefs: React.MutableRefObject>>; isFullscreen: boolean; status: string; error: string | null; loading: boolean; showResetConfirm: boolean; onFullscreenClick: (e: React.MouseEvent) => void; onSelect: (id: string) => void; onClose: (id: string) => void; onCreate: () => void; onRename: (id: string, name: string) => void; onNavigateBack: () => void; onToggleFullscreen: () => void; onFontSizeChange: (delta: number) => void; onShowResetConfirm: () => void; onHideResetConfirm: () => void; onReset: () => void; onTerminalReady: ( sendData: (data: string) => void, status: "connecting" | "connected" | "disconnected" | "error" | "resetting", focusInput: () => void, changeFontSize: (delta: number) => void, ) => void; } export const DesktopTerminalView: React.FC = ({ instanceId, sessions, sessionInfos, activeSessionId, terminalRefs, isFullscreen, status, error, loading, showResetConfirm, onFullscreenClick, onSelect, onClose, onCreate, onRename, onNavigateBack, onToggleFullscreen, onFontSizeChange, onShowResetConfirm, onHideResetConfirm, onReset, onTerminalReady, }) => { return (
{!isFullscreen && (

Terminal

)} {isFullscreen ? (
{showResetConfirm && (

Reset terminal? This will kill the current shell session and start fresh.

)}
) : ( )}
{error &&
{error}
} {sessions .filter((session) => session.id === activeSessionId) .map((session) => (
onClose(session.id)} isMobile={false} showControls={!isFullscreen} onTerminalReady={onTerminalReady} />
))} {sessions.length === 0 && !loading && (

No terminal sessions. Press Alt+Shift+N to create one.

)}
); };