66 */
77import { useState , useEffect , useCallback } from "react" ;
88import { Outlet , useLocation , useNavigate } from "react-router-dom" ;
9- import { PersonIcon } from "@radix-ui/react-icons" ;
9+ import { PersonIcon , ChevronRightIcon } from "@radix-ui/react-icons" ;
1010import { GlobalHeader , VerticalFeatureTabs } from "../components/GlobalHeader" ;
1111import { StatusBar } from "../components/StatusBar" ;
1212import { setAutoCopyOnSelect , getAutoCopyOnSelect } from "../components/Terminal" ;
@@ -19,7 +19,7 @@ import { Button } from "../components/ui/button";
1919import { invoke } from "@tauri-apps/api/core" ;
2020import { listen } from "@tauri-apps/api/event" ;
2121import { useAtom } from "jotai" ;
22- import { shortenPathsAtom , profileAtom , featureTabsLayoutAtom , workspaceDataAtom } from "../store" ;
22+ import { shortenPathsAtom , profileAtom , featureTabsLayoutAtom , workspaceDataAtom , dashboardSessionsVisibleAtom } from "../store" ;
2323import { AppConfigContext , useAppConfig , type AppConfig } from "../context" ;
2424import type { FeatureType , UserProfile } from "../types" ;
2525
@@ -82,12 +82,16 @@ export default function RootLayout() {
8282 // App state (non-routing)
8383 const [ featureTabsLayout ] = useAtom ( featureTabsLayoutAtom ) ;
8484 const [ workspace ] = useAtom ( workspaceDataAtom ) ;
85+ const [ dashboardSidebarVisible , setDashboardSidebarVisible ] = useAtom ( dashboardSessionsVisibleAtom ) ;
8586 const [ homeDir , setHomeDir ] = useState ( "" ) ;
8687 const [ shortenPaths , setShortenPaths ] = useAtom ( shortenPathsAtom ) ;
8788 const [ showSettings , setShowSettings ] = useState ( false ) ;
8889 const [ profile , setProfile ] = useAtom ( profileAtom ) ;
8990 const [ showProfileDialog , setShowProfileDialog ] = useState ( false ) ;
9091
92+ // Check if currently in workspace (Dashboard) view
93+ const isInWorkspace = location . pathname === "/workspace" ;
94+
9195 useEffect ( ( ) => {
9296 invoke < string > ( "get_home_dir" ) . then ( setHomeDir ) . catch ( ( ) => { } ) ;
9397 } , [ ] ) ;
@@ -164,7 +168,17 @@ export default function RootLayout() {
164168 onShowSettings = { ( ) => setShowSettings ( true ) }
165169 />
166170 < div className = "flex-1 flex overflow-hidden" >
167- { featureTabsLayout === "vertical" && workspace && < VerticalFeatureTabs /> }
171+ { featureTabsLayout === "vertical" && workspace && isInWorkspace && dashboardSidebarVisible && < VerticalFeatureTabs /> }
172+ { /* Show expand button when sidebar is hidden in workspace */ }
173+ { featureTabsLayout === "vertical" && isInWorkspace && ! dashboardSidebarVisible && (
174+ < button
175+ onClick = { ( ) => setDashboardSidebarVisible ( true ) }
176+ className = "shrink-0 w-6 flex items-center justify-center border-r border-border bg-card hover:bg-muted transition-colors"
177+ title = "Show sidebar"
178+ >
179+ < ChevronRightIcon className = "w-4 h-4 text-muted-foreground" />
180+ </ button >
181+ ) }
168182 < main className = "flex-1 overflow-auto" >
169183 < Outlet />
170184 </ main >
0 commit comments