// SPDX-License-Identifier: AGPL-3.0-or-later import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { Navigate, createBrowserRouter } from 'react-router'; import { RouterProvider } from 'react-router/dom'; import { RequireAuth, homeFor } from './auth/RequireAuth.tsx'; import { ChangePasswordPage } from './pages/ChangePasswordPage.tsx'; import { LoginPage } from './pages/LoginPage.tsx'; import { AboutPage } from './pages/AboutPage.tsx'; import { ADMIN_PAGES, AdminLayout, ComingSoon } from './pages/admin/AdminLayout.tsx'; import { UsersPage } from './pages/admin/UsersPage.tsx'; import { DashboardPage } from './pages/admin/DashboardPage.tsx'; import { TrunksPage } from './pages/admin/TrunksPage.tsx'; import { NumbersPage } from './pages/admin/NumbersPage.tsx'; import { OutboundPage } from './pages/admin/OutboundPage.tsx'; import { SettingsPage } from './pages/admin/SettingsPage.tsx'; import { SoundsPage } from './pages/admin/SoundsPage.tsx'; import { RingGroupsPage } from './pages/admin/RingGroupsPage.tsx'; import { QueuesPage } from './pages/admin/QueuesPage.tsx'; import { ConferencesPage } from './pages/admin/ConferencesPage.tsx'; import { PagingPage } from './pages/admin/PagingPage.tsx'; import { PhonesPage } from './pages/admin/PhonesPage.tsx'; import { AccountPage } from './pages/admin/AccountPage.tsx'; import { IvrsPage } from './pages/admin/IvrsPage.tsx'; import { OfficeHoursPage } from './pages/admin/OfficeHoursPage.tsx'; import { BlockedPage } from './pages/admin/BlockedPage.tsx'; import { CallsPage } from './pages/admin/CallsPage.tsx'; import { RecordingsPage } from './pages/admin/RecordingsPage.tsx'; import { CompanyContactsPage } from './pages/user/ContactsPage.tsx'; import { ReportsPage } from './pages/admin/ReportsPage.tsx'; import { SystemPage } from './pages/admin/SystemPage.tsx'; import { MePage } from './pages/user/MePage.tsx'; import { SetupPage } from './pages/SetupPage.tsx'; import './index.css'; const router = createBrowserRouter([ { path: '/login', Component: LoginPage }, { path: '/about', Component: AboutPage }, { path: '/change-password', Component: ChangePasswordPage }, { path: '/setup', element: {() => } }, { path: '/admin', element: {(user) => }, children: [ ...ADMIN_PAGES.map((p) => ({ ...(p.path ? { path: p.path } : { index: true }), element: p.path === '' ? ( ) : p.path === 'users' ? ( {(user) => } ) : p.path === 'settings' ? ( ) : p.path === 'outbound' ? ( ) : p.path === 'numbers' ? ( ) : p.path === 'trunks' ? ( ) : p.path === 'sounds' ? ( ) : p.path === 'ring-groups' ? ( ) : p.path === 'queues' ? ( ) : p.path === 'conferences' ? ( ) : p.path === 'paging' ? ( ) : p.path === 'devices' ? ( ) : p.path === 'ivrs' ? ( ) : p.path === 'hours' ? ( ) : p.path === 'blocked' ? ( ) : p.path === 'contacts' ? ( ) : p.path === 'calls' ? ( ) : p.path === 'recordings' ? ( ) : p.path === 'reports' ? ( ) : p.path === 'system' ? ( ) : ( ), })), { path: 'settings/:tab', element: }, { path: 'queues/:id', element: }, { path: 'account', element: }, ], }, { path: '/me/*', element: {(user) => } }, { path: '*', element: {(user) => }, }, ]); const queryClient = new QueryClient(); document.body.className = 'bg-white text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100'; createRoot(document.getElementById('root')!).render( , );