import { AgentCollapsedRail, AgentCommandPanel, AgentPersona } from "@/features/agent"; import { cn } from "@/shared/ui/cn"; import { useEffect, type ComponentProps } from "react"; import { getAgentPanelMaxWidth, getWorkbenchViewportLayout } from "../layout/workbench-layout"; import { useAgentPanelResize } from "../hooks/use-agent-panel-resize"; type AgentPanelProps = Omit, "collapsing" | "onCollapse">; type WorkbenchAgentPanelsProps = { panelProps: AgentPanelProps; panelOpen: boolean; panelCollapsing: boolean; personaState: ComponentProps["state"]; statusLabel: string; viewportWidth: number; onCollapsePanel: () => void; onExpandPanel: () => void; onWidthCommit?: (width: number) => void; }; export function WorkbenchAgentPanels({ panelProps, panelOpen, panelCollapsing, personaState, statusLabel, viewportWidth, onCollapsePanel, onExpandPanel, onWidthCommit }: WorkbenchAgentPanelsProps) { const resize = useAgentPanelResize(viewportWidth); const defaultWidth = getWorkbenchViewportLayout(viewportWidth).agentWidth; const committedWidth = resize.committedWidth ?? defaultWidth; useEffect(() => { onWidthCommit?.(committedWidth); }, [committedWidth, onWidthCommit]); return (
{panelOpen ? ( <>
span]:bg-blue-500 [&>span]:opacity-100" )} role="separator" tabIndex={0} title="拖拽调整 Agent 面板宽度" onKeyDown={resize.handleKeyDown} onPointerDown={resize.handlePointerDown} >
) : ( )}
); }