This PR fixes #6776 Screenshots: <img width="1728" alt="image" src="https://github.com/user-attachments/assets/ca061c30-ddb7-40ff-8c54-8b0d85d40864"> --------- Co-authored-by: sid0-0 <a@b.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
79 lines
3.5 KiB
TypeScript
79 lines
3.5 KiB
TypeScript
import { AppRouterProviders } from '@/app/components/AppRouterProviders';
|
|
import { SettingsRoutes } from '@/app/components/SettingsRoutes';
|
|
import { VerifyEffect } from '@/auth/components/VerifyEffect';
|
|
import indexAppPath from '@/navigation/utils/indexAppPath';
|
|
import { AppPath } from '@/types/AppPath';
|
|
import { BlankLayout } from '@/ui/layout/page/BlankLayout';
|
|
import { DefaultLayout } from '@/ui/layout/page/DefaultLayout';
|
|
import {
|
|
createBrowserRouter,
|
|
createRoutesFromElements,
|
|
Route,
|
|
} from 'react-router-dom';
|
|
import { Authorize } from '~/pages/auth/Authorize';
|
|
import { Invite } from '~/pages/auth/Invite';
|
|
import { PasswordReset } from '~/pages/auth/PasswordReset';
|
|
import { SignInUp } from '~/pages/auth/SignInUp';
|
|
import { ImpersonateEffect } from '~/pages/impersonate/ImpersonateEffect';
|
|
import { NotFound } from '~/pages/not-found/NotFound';
|
|
import { RecordIndexPage } from '~/pages/object-record/RecordIndexPage';
|
|
import { RecordShowPage } from '~/pages/object-record/RecordShowPage';
|
|
import { ChooseYourPlan } from '~/pages/onboarding/ChooseYourPlan';
|
|
import { CreateProfile } from '~/pages/onboarding/CreateProfile';
|
|
import { CreateWorkspace } from '~/pages/onboarding/CreateWorkspace';
|
|
import { InviteTeam } from '~/pages/onboarding/InviteTeam';
|
|
import { PaymentSuccess } from '~/pages/onboarding/PaymentSuccess';
|
|
import { SyncEmails } from '~/pages/onboarding/SyncEmails';
|
|
|
|
export const createAppRouter = (
|
|
isBillingEnabled?: boolean,
|
|
isCRMMigrationEnabled?: boolean,
|
|
isServerlessFunctionSettingsEnabled?: boolean,
|
|
) =>
|
|
createBrowserRouter(
|
|
createRoutesFromElements(
|
|
<Route
|
|
element={<AppRouterProviders />}
|
|
// To switch state to `loading` temporarily to enable us
|
|
// to set scroll position before the page is rendered
|
|
loader={async () => Promise.resolve(null)}
|
|
>
|
|
<Route element={<DefaultLayout />}>
|
|
<Route path={AppPath.Verify} element={<VerifyEffect />} />
|
|
<Route path={AppPath.SignInUp} element={<SignInUp />} />
|
|
<Route path={AppPath.Invite} element={<Invite />} />
|
|
<Route path={AppPath.ResetPassword} element={<PasswordReset />} />
|
|
<Route path={AppPath.CreateWorkspace} element={<CreateWorkspace />} />
|
|
<Route path={AppPath.CreateProfile} element={<CreateProfile />} />
|
|
<Route path={AppPath.SyncEmails} element={<SyncEmails />} />
|
|
<Route path={AppPath.InviteTeam} element={<InviteTeam />} />
|
|
<Route path={AppPath.PlanRequired} element={<ChooseYourPlan />} />
|
|
<Route
|
|
path={AppPath.PlanRequiredSuccess}
|
|
element={<PaymentSuccess />}
|
|
/>
|
|
<Route path={indexAppPath.getIndexAppPath()} element={<></>} />
|
|
<Route path={AppPath.Impersonate} element={<ImpersonateEffect />} />
|
|
<Route path={AppPath.RecordIndexPage} element={<RecordIndexPage />} />
|
|
<Route path={AppPath.RecordShowPage} element={<RecordShowPage />} />
|
|
<Route
|
|
path={AppPath.SettingsCatchAll}
|
|
element={
|
|
<SettingsRoutes
|
|
isBillingEnabled={isBillingEnabled}
|
|
isCRMMigrationEnabled={isCRMMigrationEnabled}
|
|
isServerlessFunctionSettingsEnabled={
|
|
isServerlessFunctionSettingsEnabled
|
|
}
|
|
/>
|
|
}
|
|
/>
|
|
<Route path={AppPath.NotFoundWildcard} element={<NotFound />} />
|
|
</Route>
|
|
<Route element={<BlankLayout />}>
|
|
<Route path={AppPath.Authorize} element={<Authorize />} />
|
|
</Route>
|
|
</Route>,
|
|
),
|
|
);
|