import React, { useEffect } from "react"; import { Sidebar } from "./Sidebar"; import { TopBar } from "./TopBar"; import { NavBar, EVENT_NAV_IDS } from "./NavBar"; import { MainContent } from "./MainContent"; import { useAppNav } from "../contexts/AppNavContext"; import { useBreakpoint } from "../hooks/useBreakpoint"; export function AppShell() { const { activeNav, setActiveNav, selectedEventId, setSelectedEventId, setSearchQuery, sidebarCollapsed, setSidebarCollapsed, drawerOpen, setDrawerOpen, } = useAppNav(); const bp = useBreakpoint(); const isSmall = bp === "mobile" || bp === "tablet"; const handleEventSelect = (eventId: string) => { setSelectedEventId(eventId); setActiveNav("dashboard"); }; const handleOpenSearchPage = (query: string) => { setSearchQuery(query); setActiveNav("search"); }; useEffect(() => { if (!selectedEventId) return; if (activeNav === "questions" || activeNav === "quiz") { setActiveNav("event-activities"); } }, [selectedEventId, activeNav, setActiveNav]); useEffect(() => { if (activeNav === "dashboard" && selectedEventId) { setSidebarCollapsed(true); } }, [activeNav, selectedEventId, setSidebarCollapsed]); return (
{!isSmall && ( setSidebarCollapsed((v) => !v)} selectedEventId={selectedEventId} onEventSelect={handleEventSelect} /> )} {isSmall && ( {}} drawerOpen={drawerOpen} onDrawerClose={() => setDrawerOpen(false)} selectedEventId={selectedEventId} onEventSelect={handleEventSelect} /> )}
setDrawerOpen((v) => !v)} onNavigate={setActiveNav} onEventSelect={handleEventSelect} onOpenSearchPage={handleOpenSearchPage} /> {selectedEventId !== null && EVENT_NAV_IDS.has(activeNav) && ( )}
); }