import {
createMemoryHistory,
createRootRoute,
createRoute,
createRouter,
RouterProvider,
} from '@tanstack/react-router'
import type { JSX } from 'react'
import { useState } from 'react'
import { AppLayout } from './AppLayout.js'
import { NotFound } from './components/NotFound.js'
import { ActivitiesPage } from './pages/ActivitiesPage/ActivitiesPage.js'
import { LanguagesPage } from './pages/LanguagesPage.js'
import { MainPage } from './pages/MainPage/MainPage.js'
import { RoutePriorityPage } from './pages/RoutePriorityPage.js'
import { RoutesPage } from './pages/RoutesPage/RoutesPage.js'
import { SelectChainPage } from './pages/SelectChainPage/SelectChainPage.js'
import { SelectEnabledToolsPage } from './pages/SelectEnabledToolsPage.js'
import { SelectTokenPage } from './pages/SelectTokenPage/SelectTokenPage.js'
import { BookmarksPage } from './pages/SendToWallet/BookmarksPage.js'
import { ConnectedWalletsPage } from './pages/SendToWallet/ConnectedWalletsPage.js'
import { RecentWalletsPage } from './pages/SendToWallet/RecentWalletsPage.js'
import { SendToConfiguredWalletPage } from './pages/SendToWallet/SendToConfiguredWalletPage.js'
import { SendToWalletPage } from './pages/SendToWallet/SendToWalletPage.js'
import { SettingsPage } from './pages/SettingsPage/SettingsPage.js'
import { SlippagePage } from './pages/SettingsPage/SlippageSettings/SlippagePage.js'
import { TransactionDetailsPage } from './pages/TransactionDetailsPage/TransactionDetailsPage.js'
import { TransactionPage } from './pages/TransactionPage/TransactionPage.js'
import { navigationRoutes } from './utils/navigationRoutes.js'
const rootRoute = createRootRoute({
component: AppLayout,
notFoundComponent: NotFound,
})
const indexRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.home,
component: MainPage,
})
const settingsLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.settings,
})
const settingsIndexRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: '/',
component: SettingsPage,
})
const settingsBridgesRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: navigationRoutes.bridges,
component: () => ,
})
const settingsExchangesRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: navigationRoutes.exchanges,
component: () => ,
})
const settingsLanguagesRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: navigationRoutes.languages,
component: LanguagesPage,
})
const settingsRoutePriorityRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: navigationRoutes.routePriority,
component: RoutePriorityPage,
})
const settingsSlippageRoute = createRoute({
getParentRoute: () => settingsLayoutRoute,
path: navigationRoutes.slippage,
component: SlippagePage,
})
const fromTokenLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.fromToken,
})
const fromTokenIndexRoute = createRoute({
getParentRoute: () => fromTokenLayoutRoute,
path: '/',
component: () => ,
})
const fromTokenFromChainRoute = createRoute({
getParentRoute: () => fromTokenLayoutRoute,
path: navigationRoutes.fromChain,
component: () => ,
})
const toTokenLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.toToken,
})
const toTokenIndexRoute = createRoute({
getParentRoute: () => toTokenLayoutRoute,
path: '/',
component: () => ,
})
const toTokenToChainRoute = createRoute({
getParentRoute: () => toTokenLayoutRoute,
path: navigationRoutes.toChain,
component: () => ,
})
const toTokenNativeRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.toTokenNative,
component: () => ,
})
const routesLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.routes,
})
const routesIndexRoute = createRoute({
getParentRoute: () => routesLayoutRoute,
path: '/',
component: RoutesPage,
})
const routesTransactionExecutionRoute = createRoute({
getParentRoute: () => routesLayoutRoute,
path: navigationRoutes.transactionExecution,
})
const routesTransactionExecutionIndexRoute = createRoute({
getParentRoute: () => routesTransactionExecutionRoute,
path: '/',
component: TransactionPage,
})
const routesTransactionExecutionDetailsRoute = createRoute({
getParentRoute: () => routesTransactionExecutionRoute,
path: navigationRoutes.transactionDetails,
component: TransactionDetailsPage,
})
const activitiesLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.activities,
})
const activitiesIndexRoute = createRoute({
getParentRoute: () => activitiesLayoutRoute,
path: '/',
component: ActivitiesPage,
})
const activitiesDetailsRoute = createRoute({
getParentRoute: () => activitiesLayoutRoute,
path: navigationRoutes.transactionDetails,
component: TransactionDetailsPage,
})
const activitiesTransactionExecutionRoute = createRoute({
getParentRoute: () => activitiesLayoutRoute,
path: navigationRoutes.transactionExecution,
component: TransactionPage,
})
const sendToWalletLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.sendToWallet,
})
const sendToWalletIndexRoute = createRoute({
getParentRoute: () => sendToWalletLayoutRoute,
path: '/',
component: SendToWalletPage,
})
const sendToWalletBookmarksRoute = createRoute({
getParentRoute: () => sendToWalletLayoutRoute,
path: navigationRoutes.bookmarks,
component: BookmarksPage,
})
const sendToWalletRecentWalletsRoute = createRoute({
getParentRoute: () => sendToWalletLayoutRoute,
path: navigationRoutes.recentWallets,
component: RecentWalletsPage,
})
const sendToWalletConnectedWalletsRoute = createRoute({
getParentRoute: () => sendToWalletLayoutRoute,
path: navigationRoutes.connectedWallets,
component: ConnectedWalletsPage,
})
const configuredWalletsRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.configuredWallets,
component: SendToConfiguredWalletPage,
})
const transactionExecutionLayoutRoute = createRoute({
getParentRoute: () => rootRoute,
path: navigationRoutes.transactionExecution,
})
const transactionExecutionIndexRoute = createRoute({
getParentRoute: () => transactionExecutionLayoutRoute,
path: '/',
component: TransactionPage,
})
const transactionExecutionDetailsRoute = createRoute({
getParentRoute: () => transactionExecutionLayoutRoute,
path: navigationRoutes.transactionDetails,
component: TransactionDetailsPage,
})
const routeTree = rootRoute.addChildren([
indexRoute,
settingsLayoutRoute.addChildren([
settingsIndexRoute,
settingsLanguagesRoute,
settingsRoutePriorityRoute,
settingsSlippageRoute,
settingsBridgesRoute,
settingsExchangesRoute,
]),
fromTokenLayoutRoute.addChildren([
fromTokenIndexRoute,
fromTokenFromChainRoute,
]),
toTokenLayoutRoute.addChildren([toTokenIndexRoute, toTokenToChainRoute]),
toTokenNativeRoute,
routesLayoutRoute.addChildren([
routesIndexRoute,
routesTransactionExecutionRoute.addChildren([
routesTransactionExecutionIndexRoute,
routesTransactionExecutionDetailsRoute,
]),
]),
transactionExecutionLayoutRoute.addChildren([
transactionExecutionIndexRoute,
transactionExecutionDetailsRoute,
]),
activitiesLayoutRoute.addChildren([
activitiesIndexRoute,
activitiesDetailsRoute,
activitiesTransactionExecutionRoute,
]),
sendToWalletLayoutRoute.addChildren([
sendToWalletIndexRoute,
sendToWalletBookmarksRoute,
sendToWalletRecentWalletsRoute,
sendToWalletConnectedWalletsRoute,
]),
configuredWalletsRoute,
])
declare module '@tanstack/react-router' {
interface Register {
router: ReturnType
}
}
export const AppDefault = (): JSX.Element => {
const [router] = useState(() =>
createRouter({
routeTree,
history: createMemoryHistory({ initialEntries: ['/'] }),
defaultPreload: 'intent',
})
)
return
}