@@ -28,7 +28,7 @@ import React, {
2828 useState ,
2929} from "react" ;
3030import { useConnection } from "./lib/hooks/useConnection" ;
31- import { useDraggablePane } from "./lib/hooks/useDraggablePane" ;
31+ import { useDraggablePane , useDraggableSidebar } from "./lib/hooks/useDraggablePane" ;
3232import { StdErrNotification } from "./lib/notificationTypes" ;
3333
3434import { Tabs , TabsContent , TabsList , TabsTrigger } from "@/components/ui/tabs" ;
@@ -163,6 +163,7 @@ const App = () => {
163163 const progressTokenRef = useRef ( 0 ) ;
164164
165165 const { height : historyPaneHeight , handleDragStart } = useDraggablePane ( 300 ) ;
166+ const { width : sidebarWidth , isDragging : isSidebarDragging , handleDragStart : handleSidebarDragStart } = useDraggableSidebar ( 320 ) ;
166167
167168 const {
168169 connectionStatus,
@@ -562,32 +563,44 @@ const App = () => {
562563
563564 return (
564565 < div className = "flex h-screen bg-background" >
565- < Sidebar
566- connectionStatus = { connectionStatus }
567- transportType = { transportType }
568- setTransportType = { setTransportType }
569- command = { command }
570- setCommand = { setCommand }
571- args = { args }
572- setArgs = { setArgs }
573- sseUrl = { sseUrl }
574- setSseUrl = { setSseUrl }
575- env = { env }
576- setEnv = { setEnv }
577- config = { config }
578- setConfig = { setConfig }
579- bearerToken = { bearerToken }
580- setBearerToken = { setBearerToken }
581- headerName = { headerName }
582- setHeaderName = { setHeaderName }
583- onConnect = { connectMcpServer }
584- onDisconnect = { disconnectMcpServer }
585- stdErrNotifications = { stdErrNotifications }
586- logLevel = { logLevel }
587- sendLogLevelRequest = { sendLogLevelRequest }
588- loggingSupported = { ! ! serverCapabilities ?. logging || false }
589- clearStdErrNotifications = { clearStdErrNotifications }
590- />
566+ < div
567+ style = { { width : sidebarWidth , minWidth : 200 , maxWidth : 600 , transition : isSidebarDragging ? 'none' : 'width 0.15s' } }
568+ className = "bg-card border-r border-border flex flex-col h-full relative"
569+ >
570+ < Sidebar
571+ connectionStatus = { connectionStatus }
572+ transportType = { transportType }
573+ setTransportType = { setTransportType }
574+ command = { command }
575+ setCommand = { setCommand }
576+ args = { args }
577+ setArgs = { setArgs }
578+ sseUrl = { sseUrl }
579+ setSseUrl = { setSseUrl }
580+ env = { env }
581+ setEnv = { setEnv }
582+ config = { config }
583+ setConfig = { setConfig }
584+ bearerToken = { bearerToken }
585+ setBearerToken = { setBearerToken }
586+ headerName = { headerName }
587+ setHeaderName = { setHeaderName }
588+ onConnect = { connectMcpServer }
589+ onDisconnect = { disconnectMcpServer }
590+ stdErrNotifications = { stdErrNotifications }
591+ logLevel = { logLevel }
592+ sendLogLevelRequest = { sendLogLevelRequest }
593+ loggingSupported = { ! ! serverCapabilities ?. logging || false }
594+ clearStdErrNotifications = { clearStdErrNotifications }
595+ />
596+ { /* Drag handle for resizing sidebar */ }
597+ < div
598+ onMouseDown = { handleSidebarDragStart }
599+ style = { { cursor : 'col-resize' , position : 'absolute' , top : 0 , right : 0 , width : 6 , height : '100%' , zIndex : 10 , background : isSidebarDragging ? 'rgba(0,0,0,0.08)' : 'transparent' } }
600+ aria-label = "Resize sidebar"
601+ data-testid = "sidebar-drag-handle"
602+ />
603+ </ div >
591604 < div className = "flex-1 flex flex-col overflow-hidden" >
592605 < div className = "flex-1 overflow-auto" >
593606 { mcpClient ? (
0 commit comments