import React from "react";
import { useTerminalPage } from "../hooks/use-terminal-page";
import { MobileTerminalView } from "../components/features/terminal/MobileTerminalView";
import { DesktopTerminalView } from "../components/features/terminal/DesktopTerminalView";
export const TerminalPage: React.FC = () => {
const {
instanceId,
navigate,
isMobile,
isFullscreen,
setIsFullscreen,
terminalRefs,
headerAutoHide,
terminalStatuses,
showResetConfirm,
setShowResetConfirm,
showSpecialKeysPanel,
setShowSpecialKeysPanel,
activeModifier,
setActiveModifier,
isKeyboardOpen,
keyboardHeight,
sessions,
activeSessionId,
loading,
error,
handleFullscreenClick,
handleSelect,
handleClose,
handleCreate,
handleRename,
handleTerminalReady,
handleFontSizeChange,
handleSendKey,
handleReset,
sessionInfos,
} = useTerminalPage();
if (!instanceId) {
return (
Terminal
No instance ID provided.
);
}
const status = terminalStatuses[activeSessionId ?? "default"] ?? "connecting";
if (isMobile) {
return (
navigate("/sessions")}
onFontSizeChange={handleFontSizeChange}
onSelect={handleSelect}
onClose={handleClose}
onCreate={handleCreate}
onRename={handleRename}
onTerminalReady={handleTerminalReady}
onSendKey={handleSendKey}
onModifierChange={setActiveModifier}
onShowSpecialKeys={() => setShowSpecialKeysPanel(true)}
onHideSpecialKeys={() => setShowSpecialKeysPanel(false)}
onKeepFocus={() => {
/* focus handled by ref */
}}
/>
);
}
return (
navigate("/sessions")}
onToggleFullscreen={() => setIsFullscreen((p) => !p)}
onFontSizeChange={handleFontSizeChange}
onShowResetConfirm={() => setShowResetConfirm(true)}
onHideResetConfirm={() => setShowResetConfirm(false)}
onReset={handleReset}
onTerminalReady={handleTerminalReady}
/>
);
};