Хост-сайт — тестирование embed-сборки hash-роутер refactor/embed

Документы (Tilda-блоки)

Ниже — div'ы с классами rules_link, privacy_link, personal_data_link. Внутри каждого — два вложенных div (как делает Tilda), внутри которых ссылка с драфтовым href.

После загрузки /api/documents код заменяет href на URL из ответа бэкенда (или #, если бэкенд не вернул значение).

Страница / — хост-сайт.
Приложение встраивается через embed.js только для модалок (sign-in, sign-up, check-grabber, feedback) и виджета победителей.
Роутер не используется для навигации — все взаимодействие через модалки.
Архитектура embed (refactor/embed):
embed.js → создаёт Shadow DOM в #app → загружает version.json → инжектит fonts.css + root.css в <head> → инжектит app.css в Shadow DOM → загружает JS-бандл → ждёт app:ready → инициализирует клик-виджеты и монтирует #winners.

Заголовок хост-страницы

Это контент хост-сайта. Ниже находится #app, куда монтируется приложение через embed-скрипт.

После авторизации — редирект на /account/#/me (откроется страница ЛК с профилем).

Виджет победителей

Ниже находится #winners. embed.ts сам находит этот элемент, создаёт в нём Shadow DOM, инжектит CSS и монтирует отдельный Vue-инстанс с WinnersIndex.

Страница /account/ — полноценное SPA личного кабинета.
Роутер: createWebHashHistory(). Хеш-маршруты: #/me → профиль, #/me/profile, #/me/checks, #/me/prizes, #/me/achievements.
Защита: без токена restoreSession() редиректит на / (хост).

Перейти в ЛК → /account/#/me

Навигация внутри ЛК

Раздел URL Хеш
Профиль /account/#/me/profile #/me/profile
Чеки /account/#/me/checks #/me/checks
Призы /account/#/me/prizes #/me/prizes
Достижения /account/#/me/achievements #/me/achievements

Embed-приложение (SPA ЛК)

Ниже #app-account — контейнер для SPA личного кабинета. На этой странице embed.js найдёт этот контейнер как #app, создаст в нём Shadow DOM и загрузит приложение.