From b6f57384b0698f63b9b3082db93fb1c47a295cd9 Mon Sep 17 00:00:00 2001 From: Max Ronzhin Date: Mon, 27 Jul 2026 01:31:52 +0300 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20?= =?UTF-8?q?=D1=84=D1=83=D1=82=D0=B5=D1=80=20=D0=BD=D0=B0=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0?= =?UTF-8?q?=D1=85,=20=D0=BA=D1=80=D0=BE=D0=BC=D0=B5=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BD=D0=B0=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `AppFooter` — версия инстанса из публичного `/api/health` (не требует авторизации, поэтому работает и на экранах входа; поля `version` может не быть — тогда версия не показывается) плюс копирайт с ТЕКУЩИМ годом и ссылкой на профиль автора. Подключён во все раскладки: `page-shell` (календарь, админка, профиль, мои конференции), `AuthLayout` (вход, регистрация, подтверждение email), `join-shell` и `lobby-shell`. В комнате конференции футера нет — там полноэкранное видео. Прежний футер админки (`.admin-footer`) удалён вместе со стилем — дубля не осталось. В брендовой панели экранов auth строка «© 2026 VidConf · self-hosted» ужата до «self-hosted»: год там был захардкожен, а два копирайта на одном экране — дубль. --- frontend/src/components/auth/AuthLayout.tsx | 12 +++++-- frontend/src/components/layout/AppFooter.tsx | 34 ++++++++++++++++++ frontend/src/pages/AdminPage.tsx | 12 ++----- frontend/src/pages/CalendarPage.tsx | 2 ++ frontend/src/pages/JoinPage.tsx | 2 ++ frontend/src/pages/LobbyPage.tsx | 2 ++ frontend/src/pages/MyConferencesPage.tsx | 2 ++ frontend/src/pages/ProfilePage.tsx | 2 ++ frontend/src/styles/admin.css | 6 ++-- frontend/src/styles/footer.css | 38 ++++++++++++++++++++ 10 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 frontend/src/components/layout/AppFooter.tsx create mode 100644 frontend/src/styles/footer.css diff --git a/frontend/src/components/auth/AuthLayout.tsx b/frontend/src/components/auth/AuthLayout.tsx index d734d0d..a6ab7fd 100644 --- a/frontend/src/components/auth/AuthLayout.tsx +++ b/frontend/src/components/auth/AuthLayout.tsx @@ -1,4 +1,5 @@ import type { ReactNode } from 'react' +import { AppFooter } from '@/components/layout/AppFooter' import { LogoMark } from '@/components/ui/LogoMark' import { ThemeToggle } from '@/components/ui/ThemeToggle' import '@/styles/auth.css' @@ -41,11 +42,18 @@ export function AuthLayout({ children }: { children: ReactNode }) {

- © 2026 VidConf · self-hosted + self-hosted

-
{children}
+ {/* Копирайт с годом и версией инстанса — общий `AppFooter` (он же на всех + остальных страницах). Из брендовой панели строку «© 2026 VidConf · + self-hosted» при этом ужали до «self-hosted»: год там был + захардкожен, а два копирайта на одном экране — дубль. */} +
+ {children} + +
) } diff --git a/frontend/src/components/layout/AppFooter.tsx b/frontend/src/components/layout/AppFooter.tsx new file mode 100644 index 0000000..ce1a124 --- /dev/null +++ b/frontend/src/components/layout/AppFooter.tsx @@ -0,0 +1,34 @@ +import { useQuery } from '@tanstack/react-query' +import { getHealth } from '@/api/health' +import '@/styles/footer.css' + +/** + * Общий футер приложения: версия инстанса и копирайт со ссылкой на автора. + * + * Ставится на всех страницах, КРОМЕ комнаты конференции (`RoomPage`) — там + * полноэкранное видео и тулбар, футеру места нет. Раскладок в приложении + * несколько (`page-shell`, `AuthLayout`, `join-shell`, `lobby-shell`), поэтому + * компонент рендерит только собственный `