diff --git a/docs/TZ.md b/docs/TZ.md index 8e31104..ebd6b05 100644 --- a/docs/TZ.md +++ b/docs/TZ.md @@ -4,7 +4,7 @@ | | | |---|---| -| Версия ТЗ | 0.54 | +| Версия ТЗ | 0.55 | | Дата | 2026-10-09 | | Статус | На обсуждении | @@ -511,10 +511,13 @@ отозвать — при блокировке/выходе доступ закрывается на стороне SSO; у gntodo webhook отзывает только MCP-токены. -### 3.17. Экран входа (0.38) +### 3.17. Экран входа (0.38, карточка — 0.55) -- Отдельный маршрут `/login` вне навигационной оболочки: логотип, название и - единственная кнопка «Войти» — инициация SSO-флоу (`/auth/login` с `return_to`). +- Отдельный маршрут `/login` вне навигационной оболочки: **карточка кита** + (`GnCard`, 460px) с логотипом, названием и единственной кнопкой «Войти» — + инициация SSO-флоу (`/auth/login` с `return_to`). Пока `/auth/me` не ответил, + в карточке только лого и лоадер — кнопка не вспыхивает перед редиректом уже + залогиненного; тот же вид, что на экране входа gnexus-creds. - Не залогиненный пользователь направляется на экран входа с любого маршрута (`/auth/me` → 401); после логина возвращается на исходный адрес. Истёкшая сессия в API/SSE-коде тоже ведёт на `/login`, а не на бэкендовый SSO-флоу. diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index 048578c..4d05dcc 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -1,18 +1,23 @@ @@ -56,17 +70,23 @@ display: flex; align-items: center; justify-content: center; - padding: 1rem; + padding: 1.5rem; } .login-card { + /* карточка кита: width: max-content / max-width: 340px — снимаем, задаём + размер экрана входа (как у китовой .login-card: 460px) */ + width: 100%; + max-width: 460px; + min-width: 0; + padding: 20px; + text-align: center; +} +/* колонка содержимого: внутри карточки кита своего отступа достаточно */ +.login-inner { display: flex; flex-direction: column; align-items: center; gap: 1rem; - padding: 2.5rem 3rem; - /* карточка кита: width: max-content / max-width: 340px сброшены — центр сама */ - max-width: 100%; - width: auto; } .login-logo { width: 72px; @@ -77,12 +97,20 @@ font-size: 1.25rem; } .login-subtitle { - margin: 0 0 1.25rem; + margin: 0; /* приглушённый текст в цвет .identity-meta кита */ color: #787c99; } .login-btn { + margin-top: 0.25rem; font-size: 1rem; padding: 0.75rem 2rem; } +/* узкий экран: «ВОЙТИ ЧЕРЕЗ GNEXUS» в одну строку не влезает при 16px */ +@media (max-width: 420px) { + .login-btn { + font-size: 0.875rem; + padding: 0.75rem 1rem; + } +} \ No newline at end of file