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);