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`), поэтому + * компонент рендерит только собственный `