import {
createBrowserRouter,
Navigate,
RouterProvider,
} from "react-router-dom";
import classNames from "classnames";
import AppProvider, { useAppContext } from "./contexts/AppContext";
import { useAuthContext } from "./contexts/AuthContext";
import { useThemeContext } from "./contexts/ThemeContext";
import ChatProvider from "./contexts/ChatContext";
import { ComponentsProvider, useComponents } from "./contexts/ComponentContext";
import { usePageAccess } from "./hooks/usePageAccess";
import AnalyticsLayout from "./layouts/AnalyticsLayout";
import Analytics from "./components/Analytics/Analytics";
import ChatInput from "./components/Chat/ChatInput";
import Header from "./components/Header";
import Login from "./components/Login";
import SessionModal from "./components/SessionEditor/SessionEditorModal";
import SettingsModal from "./components/Settings/SettingsModal";
import Sidebar from "./components/Sidebar";
import LoadingScreen from "./components/Base/LoadingScreen";
import Chat from "./components/Chat/Chat";
import { CreateRootConfig } from "./CreateRoot";
interface ProtectedRouteProps {
children: React.ReactElement;
requiredAccess?: string[];
}
interface AppProps {
customChatComponent?: React.ComponentType;
config?: CreateRootConfig;
}
const Layout = () => {
const { configs, customConfig, isSidebarOpen, toggleSidebar } = useAppContext();
const { ChatComponent } = useComponents();
const { chatBackground, theme } = useThemeContext();
const ActiveChatComponent = ChatComponent || Chat;
const defaultFlow = configs?.default_flow;
const sessionModal = configs?.list_flows || (Array.isArray(defaultFlow) && defaultFlow.length > 1) ?