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 }