// ======================================== // TerminalPanel Component // ======================================== // Right-side sliding panel for terminal monitoring. // Follows IssueDrawer pattern: overlay + fixed panel + translate-x animation. import { useEffect, useCallback } from 'react'; import { cn } from '@/lib/utils'; import { useTerminalPanelStore } from '@/stores/terminalPanelStore'; import { TerminalNavBar } from './TerminalNavBar'; import { TerminalMainArea } from './TerminalMainArea'; export function TerminalPanel() { const isPanelOpen = useTerminalPanelStore((s) => s.isPanelOpen); const closePanel = useTerminalPanelStore((s) => s.closePanel); const handleClose = useCallback(() => { closePanel(); }, [closePanel]); // ESC key to close useEffect(() => { if (!isPanelOpen) return; const handleEsc = (e: KeyboardEvent) => { if (e.key === 'Escape') handleClose(); }; window.addEventListener('keydown', handleEsc); return () => window.removeEventListener('keydown', handleEsc); }, [isPanelOpen, handleClose]); return ( <> {/* Overlay */}