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 {
terminalAvailable: boolean;
terminalOpen: boolean;
terminalShortcutLabel: string | null;
rightPanelAvailable: boolean;
rightPanelOpen: boolean;
rightPanelShortcutLabel: string | null;
/** Running + waiting subagents in this thread; badges the right panel toggle. */
liveAgentCount: number;
onToggleTerminal: () => void;
onToggleRightPanel: () => void;
}
export const PanelLayoutControls = memo(function PanelLayoutControls({
terminalAvailable,
terminalOpen,
terminalShortcutLabel,
rightPanelAvailable,
rightPanelOpen,
rightPanelShortcutLabel,
liveAgentCount,
onToggleTerminal,
onToggleRightPanel,
}: PanelLayoutControlsProps) {
return (
}
/>
{terminalAvailable
? `Toggle terminal drawer${terminalShortcutLabel ? ` (${terminalShortcutLabel})` : ""}`
: "Terminal drawer is unavailable"}
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`
: ""
}`
: "Right panel is unavailable"}
);
});
export const RightPanelMaximizeControl = memo(function RightPanelMaximizeControl({
maximized,
onToggle,
}: {
maximized: boolean;
onToggle: () => void;
}) {
const label = maximized ? "Restore panel size" : "Maximize panel";
return (
{maximized ? (
) : (
)}
}
/>
{label}
);
});