diff --git a/src/browser/components/ProjectSidebar.tsx b/src/browser/components/ProjectSidebar.tsx index 938ff073f..c84ba887c 100644 --- a/src/browser/components/ProjectSidebar.tsx +++ b/src/browser/components/ProjectSidebar.tsx @@ -21,7 +21,7 @@ import { TooltipWrapper, Tooltip } from "./Tooltip"; import SecretsModal from "./SecretsModal"; import type { Secret } from "@/common/types/secrets"; import { ForceDeleteModal } from "./ForceDeleteModal"; -import { WorkspaceListItem } from "./WorkspaceListItem"; +import { WorkspaceListItem, type WorkspaceSelection } from "./WorkspaceListItem"; import { RenameProvider } from "@/browser/contexts/WorkspaceRenameContext"; import { useProjectContext } from "@/browser/contexts/ProjectContext"; import { ChevronRight, KeyRound } from "lucide-react"; @@ -184,6 +184,23 @@ const ProjectSidebarInner: React.FC = ({ } = useWorkspaceContext(); // Get project state and operations from context + const handleSelectWorkspace = useCallback( + (selection: WorkspaceSelection) => { + onSelectWorkspace(selection); + // Auto-close sidebar in PWA mode or on mobile viewports + if (!collapsed && typeof window !== "undefined") { + const isPWA = window.matchMedia('(display-mode: standalone)').matches || + (window.navigator as any).standalone; // iOS Safari + const isMobileWidth = window.innerWidth <= 768; + + if (isPWA || isMobileWidth) { + onToggleCollapsed(); + } + } + }, + [onSelectWorkspace, collapsed, onToggleCollapsed] + ); + const { projects, openProjectCreateModal: onAddProject, @@ -573,7 +590,7 @@ const ProjectSidebarInner: React.FC = ({ projectName={projectName} isSelected={selectedWorkspace?.workspaceId === metadata.id} lastReadTimestamp={lastReadTimestamps[metadata.id] ?? 0} - onSelectWorkspace={onSelectWorkspace} + onSelectWorkspace={handleSelectWorkspace} onRemoveWorkspace={handleRemoveWorkspace} onToggleUnread={_onToggleUnread} />