// 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(
,
);