import { useState } from "react"; import { useMobile } from "@/hooks/use-mobile"; import { cn } from "@/lib/utils"; import { useConnectionStore } from "@/stores/connection-store"; import { HelpDialog } from "../help/help-dialog"; import { SettingsDialog } from "../settings/settings-dialog"; import { AiInstallIndicator } from "./ai-install-indicator"; import { MobileBottomNav } from "./mobile-bottom-nav"; import { TopNav } from "./top-nav.js"; interface AppLayoutProps { children?: React.ReactNode; breadcrumb?: { modality?: string; modalityTab?: string; toolName?: string }; navVariant?: "light" | "dark"; } export function AppLayout({ children, breadcrumb, navVariant }: AppLayoutProps) { const [settingsOpen, setSettingsOpen] = useState(false); const [helpOpen, setHelpOpen] = useState(false); const isMobile = useMobile(); const connectionStatus = useConnectionStore((s) => s.status); const bannerVisible = connectionStatus !== "connected"; return (
{/* Top navigation bar */} setHelpOpen(true)} onSettingsClick={() => setSettingsOpen(true)} /> {/* Main content area */}
{children}
{/* Mobile bottom nav */} {isMobile && setSettingsOpen(true)} />} {/* Settings dialog */} setSettingsOpen(false)} /> {/* Help dialog */} setHelpOpen(false)} /> {/* Global AI install progress */}
); }