import { X } from "lucide-react"; import type React from "react"; import { useState } from "react"; import type { TimeRange } from "../types"; import { NavRail } from "./NavRail"; import type { DashboardSection } from "./routes"; import { TopBar } from "./TopBar"; export interface AppLayoutProps { activeSection: DashboardSection; onSectionChange: (section: DashboardSection) => void; range: TimeRange; onRangeChange: (range: TimeRange) => void; updatedAt: number | null; onSyncStart?: () => void; onSyncComplete?: (result: { success: boolean }) => void; children: React.ReactNode; } export function AppLayout({ activeSection, onSectionChange, range, onRangeChange, updatedAt, onSyncStart, onSyncComplete, children, }: AppLayoutProps) { const [menuOpen, setMenuOpen] = useState(false); const handleSectionChange = (section: DashboardSection) => { onSectionChange(section); setMenuOpen(false); }; return (
{/* Desktop Rail */} {/* Mobile Nav Drawer */} {menuOpen && (
setMenuOpen(false)} role="presentation">
e.stopPropagation()} role="dialog" aria-modal="true" aria-label="Navigation menu" >
OH MY PI Observability
)} {/* Main Layout Pane */}
setMenuOpen(true)} />
{children}
); }