Files
2026-06-29 19:11:45 +03:00

4.4 KiB
Raw Permalink Blame History

1. Маршруты и конфиг

  • 1.1 Добавить в shared/config/routes.ts константы вложенных путей профиля (PROFILE_DETAILS = '/profile/details', PROFILE_SECURITY, PROFILE_MNEMONIC, PROFILE_TRANSACTIONS); сохранить TRANSACTIONS для обратного редиректа.
  • 1.2 В app/providers/RouterProvider.tsx обернуть ProfilePage в <WalletLayout footer /> и описать вложенные маршруты: index<Navigate to="details" replace />, details, security, mnemonic, transactions.
  • 1.3 Заменить маршрут /transactions на <Navigate to="/profile/transactions" replace />; убрать прямой рендер TransactionsPage по /transactions.
  • 1.4 Добавить поясняющие комментарии о двух уровнях <Outlet/> (WalletLayout → ProfilePage).

2. Layout страницы профиля

  • 2.1 Переработать pages/profile/ui/ProfilePage.tsx в layout: убрать собственный WalletHeader; двухколоночная разметка — слева ProfileMenu, справа KycBanner над <Outlet/>.
  • 2.2 Обновить pages/profile/ui/ProfilePage.module.css: колонки ~25% / ~75% + gap; перенести медиа-брейкпоинты (< 1024px — стек в одну колонку, < 640px — паддинги).

3. Боковое меню (widget)

  • 3.1 Создать widgets/profile/ui/ProfileMenu.tsx: сверху закреплённый ProfileSummary, ниже список пунктов через NavLink (Данные профиля, Безопасность, Мнемоническая фраза, Транзакции) с подсветкой активного (aria-current/класс).
  • 3.2 Создать widgets/profile/ui/ProfileMenu.module.css (список, активное состояние, отступы).
  • 3.3 Экспортировать ProfileMenu из widgets/profile/index.ts.

4. Контент-пункты

  • 4.1 Создать компонент-пункт «Данные профиля» (рендерит <ProfileDetails/>); показывать Spinner, пока useMe грузится.
  • 4.2 Создать компонент-пункт «Безопасность» (<SecuritySection/>) с состоянием загрузки.
  • 4.3 Создать компонент-пункт «Мнемоническая фраза» (<MnemonicSection/>) с состоянием загрузки.
  • 4.4 Вынести содержимое pages/transactions/ui/TransactionsPage.tsx (список + табы «Транзакции/Заявки» для юр. лиц через useMe) в переиспользуемый блок и подключить как компонент-пункт «Транзакции»; показывать Spinner во время загрузки.

5. Состояние загрузки

  • 5.1 Заменить if (!data) return null в блоках профиля на отображение <Spinner label="Загрузка" /> в области контента (меню остаётся доступным).
  • 5.2 Убедиться, что Spinner центрируется в правой колонке (использовать fullscreen/класс в пределах контента).

6. Проверка

  • 6.1 npm run build (tsc) проходит без ошибок типов и сборки.
  • 6.2 Ручная проверка deep-link: прямой переход на /profile/details, /profile/security, /profile/mnemonic, /profile/transactions открывает нужный пункт.
  • 6.3 /profile редиректит на /profile/details; /transactions редиректит на /profile/transactions.
  • 6.4 Кнопка «Назад» переключает между ранее открытыми пунктами; активный пункт меню подсвечен.
  • 6.5 Транзакции: для юр. лица видны табы «Транзакции/Заявки», для физлица — только список.
  • 6.6 Мобильный вид (< 1024px): меню и контент схлопываются в одну колонку; KycBanner и Spinner отображаются корректно.