@@ -23,7 +23,7 @@ import { TooltipWrapper, Tooltip } from "./Tooltip";
2323import SecretsModal from "./SecretsModal" ;
2424import type { Secret } from "@/common/types/secrets" ;
2525import { ForceDeleteModal } from "./ForceDeleteModal" ;
26- import { WorkspaceListItem } from "./WorkspaceListItem" ;
26+ import { WorkspaceListItem , type WorkspaceSelection } from "./WorkspaceListItem" ;
2727import { RenameProvider } from "@/browser/contexts/WorkspaceRenameContext" ;
2828import { useProjectContext } from "@/browser/contexts/ProjectContext" ;
2929import { ChevronRight , KeyRound } from "lucide-react" ;
@@ -194,6 +194,31 @@ const ProjectSidebarInner: React.FC<ProjectSidebarProps> = ({
194194 updateSecrets : onUpdateSecrets ,
195195 } = useProjectContext ( ) ;
196196
197+ // Mobile breakpoint for auto-closing sidebar
198+ const MOBILE_BREAKPOINT = 768 ;
199+
200+ // Wrapper to close sidebar on mobile after workspace selection
201+ const handleSelectWorkspace = useCallback (
202+ ( selection : WorkspaceSelection ) => {
203+ onSelectWorkspace ( selection ) ;
204+ if ( window . innerWidth <= MOBILE_BREAKPOINT && ! collapsed ) {
205+ onToggleCollapsed ( ) ;
206+ }
207+ } ,
208+ [ onSelectWorkspace , collapsed , onToggleCollapsed ]
209+ ) ;
210+
211+ // Wrapper to close sidebar on mobile after adding workspace
212+ const handleAddWorkspace = useCallback (
213+ ( projectPath : string ) => {
214+ onAddWorkspace ( projectPath ) ;
215+ if ( window . innerWidth <= MOBILE_BREAKPOINT && ! collapsed ) {
216+ onToggleCollapsed ( ) ;
217+ }
218+ } ,
219+ [ onAddWorkspace , collapsed , onToggleCollapsed ]
220+ ) ;
221+
197222 // Workspace-specific subscriptions moved to WorkspaceListItem component
198223
199224 // Store as array in localStorage, convert to Set for usage
@@ -427,13 +452,13 @@ const ProjectSidebarInner: React.FC<ProjectSidebarProps> = ({
427452 // Create new workspace for the project of the selected workspace
428453 if ( matchesKeybind ( e , KEYBINDS . NEW_WORKSPACE ) && selectedWorkspace ) {
429454 e . preventDefault ( ) ;
430- onAddWorkspace ( selectedWorkspace . projectPath ) ;
455+ handleAddWorkspace ( selectedWorkspace . projectPath ) ;
431456 }
432457 } ;
433458
434459 window . addEventListener ( "keydown" , handleKeyDown ) ;
435460 return ( ) => window . removeEventListener ( "keydown" , handleKeyDown ) ;
436- } , [ selectedWorkspace , onAddWorkspace ] ) ;
461+ } , [ selectedWorkspace , handleAddWorkspace ] ) ;
437462
438463 return (
439464 < RenameProvider onRenameWorkspace = { onRenameWorkspace } >
@@ -575,7 +600,7 @@ const ProjectSidebarInner: React.FC<ProjectSidebarProps> = ({
575600 >
576601 < div className = "border-hover border-b px-3 py-2" >
577602 < button
578- onClick = { ( ) => onAddWorkspace ( projectPath ) }
603+ onClick = { ( ) => handleAddWorkspace ( projectPath ) }
579604 data-project-path = { projectPath }
580605 aria-label = { `Add workspace to ${ projectName } ` }
581606 className = "text-muted border-border-medium hover:bg-hover hover:border-border-darker hover:text-foreground w-full cursor-pointer rounded border border-dashed bg-transparent px-3 py-1.5 text-left text-[13px] transition-all duration-200"
@@ -602,7 +627,7 @@ const ProjectSidebarInner: React.FC<ProjectSidebarProps> = ({
602627 isSelected = { selectedWorkspace ?. workspaceId === metadata . id }
603628 isDeleting = { deletingWorkspaceIds . has ( metadata . id ) }
604629 lastReadTimestamp = { lastReadTimestamps [ metadata . id ] ?? 0 }
605- onSelectWorkspace = { onSelectWorkspace }
630+ onSelectWorkspace = { handleSelectWorkspace }
606631 onRemoveWorkspace = { handleRemoveWorkspace }
607632 onToggleUnread = { _onToggleUnread }
608633 />
0 commit comments