diff --git a/ccw/frontend/src/components/layout/AppShell.tsx b/ccw/frontend/src/components/layout/AppShell.tsx index d47830ef..b579a0b0 100644 --- a/ccw/frontend/src/components/layout/AppShell.tsx +++ b/ccw/frontend/src/components/layout/AppShell.tsx @@ -2,6 +2,7 @@ // AppShell Component // ======================================== // Root layout component combining Header, Sidebar, and MainContent +// Supports immersive mode to hide chrome for fullscreen experiences import { useState, useCallback, useEffect } from 'react'; import { useLocation } from 'react-router-dom'; @@ -16,6 +17,7 @@ import { AskQuestionDialog, A2UIPopupCard } from '@/components/a2ui'; import { BackgroundImage } from '@/components/shared/BackgroundImage'; import { useNotificationStore, selectCurrentQuestion, selectCurrentPopupCard } from '@/stores'; import { useWorkflowStore } from '@/stores/workflowStore'; +import { useAppStore, selectIsImmersiveMode } from '@/stores/appStore'; import { useWebSocketNotifications, useWebSocket } from '@/hooks'; export interface AppShellProps { @@ -40,6 +42,9 @@ export function AppShell({ const projectPath = useWorkflowStore((state) => state.projectPath); const location = useLocation(); + // Immersive mode (fullscreen) - hide chrome + const isImmersiveMode = useAppStore(selectIsImmersiveMode); + // Workspace initialization logic (URL > localStorage) const [isWorkspaceInitialized, setWorkspaceInitialized] = useState(false); @@ -157,32 +162,36 @@ export function AppShell({ }, [setCurrentPopupCard]); return ( -