import React from "react";
import ReactDOM from "react-dom/client";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import App from "@/App.jsx";
import PrivateRoute, {
AdminRoute,
ManagerRoute,
} from "@/components/PrivateRoute";
import Login from "@/pages/Login";
import SimpleSSOPassthrough from "@/pages/Login/SSO/simple";
import OnboardingFlow from "@/pages/OnboardingFlow";
import "@/index.css";
const isDev = import.meta.env.DEV;
const REACTWRAP = isDev ? React.Fragment : React.StrictMode;
const router = createBrowserRouter([
{
path: "/",
element: ,
children: [
{
path: "/",
lazy: async () => {
const { default: Main } = await import("@/pages/Main");
return { element: };
},
},
{
path: "/login",
element: ,
},
{
path: "/sso/simple",
element: ,
},
{
path: "/workspace/:slug/settings/:tab",
lazy: async () => {
const { default: WorkspaceSettings } = await import(
"@/pages/WorkspaceSettings"
);
return { element: };
},
},
{
path: "/workspace/:slug",
lazy: async () => {
const { default: WorkspaceChat } = await import(
"@/pages/WorkspaceChat"
);
return { element: };
},
},
{
path: "/workspace/:slug/t/:threadSlug",
lazy: async () => {
const { default: WorkspaceChat } = await import(
"@/pages/WorkspaceChat"
);
return { element: };
},
},
{
path: "/accept-invite/:code",
lazy: async () => {
const { default: InvitePage } = await import("@/pages/Invite");
return { element: };
},
},
// Admin routes
{
path: "/settings/llm-preference",
lazy: async () => {
const { default: GeneralLLMPreference } = await import(
"@/pages/GeneralSettings/LLMPreference"
);
return { element: };
},
},
{
path: "/settings/transcription-preference",
lazy: async () => {
const { default: GeneralTranscriptionPreference } = await import(
"@/pages/GeneralSettings/TranscriptionPreference"
);
return {
element: ,
};
},
},
{
path: "/settings/audio-preference",
lazy: async () => {
const { default: GeneralAudioPreference } = await import(
"@/pages/GeneralSettings/AudioPreference"
);
return {
element: ,
};
},
},
{
path: "/settings/embedding-preference",
lazy: async () => {
const { default: GeneralEmbeddingPreference } = await import(
"@/pages/GeneralSettings/EmbeddingPreference"
);
return {
element: ,
};
},
},
{
path: "/settings/text-splitter-preference",
lazy: async () => {
const { default: EmbeddingTextSplitterPreference } = await import(
"@/pages/GeneralSettings/EmbeddingTextSplitterPreference"
);
return {
element: ,
};
},
},
{
path: "/settings/vector-database",
lazy: async () => {
const { default: GeneralVectorDatabase } = await import(
"@/pages/GeneralSettings/VectorDatabase"
);
return {
element: ,
};
},
},
{
path: "/settings/agents",
lazy: async () => {
const { default: AdminAgents } = await import("@/pages/Admin/Agents");
return { element: };
},
},
{
path: "/settings/agents/builder",
lazy: async () => {
const { default: AgentBuilder } = await import(
"@/pages/Admin/AgentBuilder"
);
return {
element: (
),
};
},
},
{
path: "/settings/agents/builder/:flowId",
lazy: async () => {
const { default: AgentBuilder } = await import(
"@/pages/Admin/AgentBuilder"
);
return {
element: (
),
};
},
},
{
path: "/settings/event-logs",
lazy: async () => {
const { default: AdminLogs } = await import("@/pages/Admin/Logging");
return { element: };
},
},
{
path: "/settings/embed-chat-widgets",
lazy: async () => {
const { default: ChatEmbedWidgets } = await import(
"@/pages/GeneralSettings/ChatEmbedWidgets"
);
return { element: };
},
},
// Manager routes
{
path: "/settings/security",
lazy: async () => {
const { default: GeneralSecurity } = await import(
"@/pages/GeneralSettings/Security"
);
return { element: };
},
},
{
path: "/settings/privacy",
lazy: async () => {
const { default: PrivacyAndData } = await import(
"@/pages/GeneralSettings/PrivacyAndData"
);
return { element: };
},
},
{
path: "/settings/interface",
lazy: async () => {
const { default: InterfaceSettings } = await import(
"@/pages/GeneralSettings/Settings/Interface"
);
return { element: };
},
},
{
path: "/settings/branding",
lazy: async () => {
const { default: BrandingSettings } = await import(
"@/pages/GeneralSettings/Settings/Branding"
);
return { element: };
},
},
{
path: "/settings/default-system-prompt",
lazy: async () => {
const { default: DefaultSystemPrompt } = await import(
"@/pages/Admin/DefaultSystemPrompt"
);
return { element: };
},
},
{
path: "/settings/chat",
lazy: async () => {
const { default: ChatSettings } = await import(
"@/pages/GeneralSettings/Settings/Chat"
);
return { element: };
},
},
{
path: "/settings/beta-features",
lazy: async () => {
const { default: ExperimentalFeatures } = await import(
"@/pages/Admin/ExperimentalFeatures"
);
return { element: };
},
},
{
path: "/settings/api-keys",
lazy: async () => {
const { default: GeneralApiKeys } = await import(
"@/pages/GeneralSettings/ApiKeys"
);
return { element: };
},
},
{
path: "/settings/system-prompt-variables",
lazy: async () => {
const { default: SystemPromptVariables } = await import(
"@/pages/Admin/SystemPromptVariables"
);
return {
element: ,
};
},
},
{
path: "/settings/browser-extension",
lazy: async () => {
const { default: GeneralBrowserExtension } = await import(
"@/pages/GeneralSettings/BrowserExtensionApiKey"
);
return {
element: ,
};
},
},
{
path: "/settings/workspace-chats",
lazy: async () => {
const { default: GeneralChats } = await import(
"@/pages/GeneralSettings/Chats"
);
return { element: };
},
},
{
path: "/settings/invites",
lazy: async () => {
const { default: AdminInvites } = await import(
"@/pages/Admin/Invitations"
);
return { element: };
},
},
{
path: "/settings/users",
lazy: async () => {
const { default: AdminUsers } = await import("@/pages/Admin/Users");
return { element: };
},
},
{
path: "/settings/workspaces",
lazy: async () => {
const { default: AdminWorkspaces } = await import(
"@/pages/Admin/Workspaces"
);
return { element: };
},
},
// Onboarding Flow
{
path: "/onboarding",
element: ,
},
{
path: "/onboarding/:step",
element: ,
},
// Experimental feature pages
{
path: "/settings/beta-features/live-document-sync/manage",
lazy: async () => {
const { default: LiveDocumentSyncManage } = await import(
"@/pages/Admin/ExperimentalFeatures/Features/LiveSync/manage"
);
return {
element: ,
};
},
},
{
path: "/settings/community-hub/trending",
lazy: async () => {
const { default: CommunityHubTrending } = await import(
"@/pages/GeneralSettings/CommunityHub/Trending"
);
return { element: };
},
},
{
path: "/settings/community-hub/authentication",
lazy: async () => {
const { default: CommunityHubAuthentication } = await import(
"@/pages/GeneralSettings/CommunityHub/Authentication"
);
return {
element: ,
};
},
},
{
path: "/settings/community-hub/import-item",
lazy: async () => {
const { default: CommunityHubImportItem } = await import(
"@/pages/GeneralSettings/CommunityHub/ImportItem"
);
return {
element: ,
};
},
},
{
path: "/settings/mobile-connections",
lazy: async () => {
const { default: MobileConnections } = await import(
"@/pages/GeneralSettings/MobileConnections"
);
return { element: };
},
},
// Catch-all route for 404s
{
path: "*",
lazy: async () => {
const { default: NotFound } = await import("@/pages/404");
return { element: };
},
},
],
},
]);
ReactDOM.createRoot(document.getElementById("root")).render(
);