import { Maximize2Icon, Minimize2Icon, PanelBottomIcon, PanelRightIcon } from "lucide-react"; import { memo } from "react"; import { Toggle } from "../ui/toggle"; import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip"; interface PanelLayoutControlsProps { showTerminalControl?: boolean; terminalAvailable: boolean; terminalOpen: boolean; terminalShortcutLabel: string | null; rightPanelAvailable: boolean; rightPanelOpen: boolean; rightPanelShortcutLabel: string | null; rightPanelUnavailableLabel?: string; /** Running + waiting subagents in this thread; badges the right panel toggle. */ liveAgentCount: number; onToggleTerminal: () => void; onToggleRightPanel: () => void; } export const PanelLayoutControls = memo(function PanelLayoutControls({ showTerminalControl = true, terminalAvailable, terminalOpen, terminalShortcutLabel, rightPanelAvailable, rightPanelOpen, rightPanelShortcutLabel, rightPanelUnavailableLabel = "Right panel is unavailable", liveAgentCount, onToggleTerminal, onToggleRightPanel, }: PanelLayoutControlsProps) { return (
{showTerminalControl ? ( }> {terminalAvailable ? `Toggle terminal drawer${terminalShortcutLabel ? ` (${terminalShortcutLabel})` : ""}` : "Terminal drawer is unavailable"} ) : null} }> 0 ? `Toggle right panel, ${liveAgentCount} ${liveAgentCount === 1 ? "agent" : "agents"} working` : "Toggle right panel" } variant="ghost" size="sm" disabled={!rightPanelAvailable} > {liveAgentCount > 0 ? ( {liveAgentCount} ) : null} {rightPanelAvailable ? `Toggle right panel${rightPanelShortcutLabel ? ` (${rightPanelShortcutLabel})` : ""}${ liveAgentCount > 0 ? ` ยท ${liveAgentCount} ${liveAgentCount === 1 ? "agent" : "agents"} working` : "" }` : rightPanelUnavailableLabel}
); }); export const RightPanelMaximizeControl = memo(function RightPanelMaximizeControl({ maximized, onToggle, }: { maximized: boolean; onToggle: () => void; }) { const label = maximized ? "Restore panel size" : "Maximize panel"; return ( {maximized ? ( ) : ( )} } /> {label} ); });