import FullPageLoader from "@/components/fullPageLoader"; import NotAvailableBanner from "@/components/notAvailableBanner"; import ProgressProvider from "@/components/progressBar"; import Sidebar from "@/components/sidebar"; import { ThemeProvider } from "@/components/themeProvider"; import { SidebarProvider } from "@/components/ui/sidebar"; import { useStoreSync } from "@/hooks/useStoreSync"; import { WebSocketProvider } from "@/hooks/useWebSocket"; import { getErrorMessage, ReduxProvider, useGetCoreConfigQuery } from "@/lib/store"; import { BifrostConfig } from "@/lib/types/config"; import { RbacProvider } from "@enterprise/lib/contexts/rbacContext"; import { useLocation } from "@tanstack/react-router"; import { NuqsAdapter } from "nuqs/adapters/tanstack-router"; import { Suspense, lazy, useEffect } from "react"; import { CookiesProvider } from "react-cookie"; import { toast, Toaster } from "sonner"; // Lazy import — only loaded in development, completely excluded from prod bundle const DevProfilerLazy = lazy(() => import("@/components/devProfiler").then((mod) => ({ default: mod.DevProfiler }))); const DevProfiler = () => ( ); function StoreSyncInitializer() { useStoreSync(); return null; } function AppContent({ children }: { children: React.ReactNode }) { const { data: bifrostConfig, error, isLoading } = useGetCoreConfigQuery({}); useEffect(() => { if (error) { toast.error(getErrorMessage(error)); } }, [error]); return ( {isLoading ? : {children}} ); } function FullPage({ config, children }: { config: BifrostConfig | undefined; children: React.ReactNode }) { const pathname = useLocation({ select: (l) => l.pathname }); if (config && config.is_db_connected) { return children; } if (config && config.is_logs_connected && pathname.startsWith("/workspace/logs")) { return children; } return ; } export function ClientLayout({ children }: { children: React.ReactNode }) { return ( {children} {process.env.NODE_ENV === "development" && !process.env.BIFROST_DISABLE_PROFILER && } ); }