import { createBrowserRouter, Navigate } from 'react-router'; import { AuthGuard } from '@/components/AuthGuard'; import { AccountSettingsLayout, AppearanceSettingsPage, AppLayout, IndexRedirect, FriendsPage, InvitePage, GuildView, InstanceSettingsPage, LoginPage, NoGuildView, OnboardingPage, ProfileSettingsPage, ProfileServerTab, RegisterPage, SecuritySettingsPage, SettingsLayout, StatusPage, } from '@/pages/lazyPages'; /** Таблица маршрутов: публичные страницы, защищённые и настройки. */ export const routes = [ { path: '/', children: [ { index: true, element: }, { path: 'login', element: }, { path: 'register', element: }, { path: 'status', element: }, // Страница приглашения: доступна без входа, гость видит предпросмотр. { path: 'invite/:code', element: }, { element: , children: [{ path: 'onboarding', element: }], }, { element: , children: [ { path: 'app', element: , children: [ { index: true, element: }, { path: 'empty', element: }, // Раздел друзей: статические сегменты выше динамических, // поэтому `friends` не перехватывается маршрутом `:guildId`. { path: 'friends', element: }, { path: 'friends/:channelId', element: }, { path: ':guildId', element: }, { path: ':guildId/:channelId', element: }, ], }, ], }, { element: , children: [ { path: 'settings', element: , children: [ { index: true, element: }, { // Настройки аккаунта и инстанса: /settings/account/* path: 'account', element: , children: [ { index: true, element: }, { path: 'profile', element: }, { path: 'security', element: }, { path: 'appearance', element: }, { path: 'instance', element: }, ], }, // Настройки пользовательских серверов: /settings/servers/:guildId { path: 'servers', element: }, { path: 'servers/:guildId', element: }, // Старые пути Фазы 1: закладки и внешние ссылки продолжают работать. { path: 'profile', element: }, { path: 'security', element: }, { path: 'appearance', element: , }, { path: 'instance', element: }, ], }, ], }, { path: '*', element: }, ], }, ]; export const router = createBrowserRouter(routes);