Some checks failed
CI / build-and-test (pull_request) Has been cancelled
- API: дата старта всегда YYYY-MM-DD; фронт: parseRaceDate без двойного T00:00:00 - GET /health с version из package.json; Vite define __FRONTEND_VERSION__ - Футер с версиями клиента/сервера (BEM), сетка app-shell на три ряда - AbortController для карточки старта; ретраи GET при 502–504 и понятные ошибки шлюза - Русские подписи навигации/страниц, lang=ru, без английских фраз в интерфейсе
44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { NavLink, Outlet } from "react-router-dom";
|
||
import { AppShellFooter } from "./AppShellFooter";
|
||
|
||
export function AppLayout(): JSX.Element {
|
||
return (
|
||
<div className="app-shell">
|
||
<header className="app-shell__header">
|
||
<div className="app-shell__brand">Календарь стартов</div>
|
||
<nav className="app-shell__nav" aria-label="Основная навигация">
|
||
<NavLink
|
||
to="/"
|
||
end
|
||
className={({ isActive }) =>
|
||
isActive ? "app-shell__link app-shell__link--active" : "app-shell__link"
|
||
}
|
||
>
|
||
Обзор
|
||
</NavLink>
|
||
<NavLink
|
||
to="/races"
|
||
className={({ isActive }) =>
|
||
isActive ? "app-shell__link app-shell__link--active" : "app-shell__link"
|
||
}
|
||
>
|
||
Старты
|
||
</NavLink>
|
||
<NavLink
|
||
to="/races/new"
|
||
className={({ isActive }) =>
|
||
isActive ? "app-shell__link app-shell__link--active" : "app-shell__link"
|
||
}
|
||
>
|
||
+ Добавить
|
||
</NavLink>
|
||
</nav>
|
||
</header>
|
||
<main className="app-shell__main">
|
||
<Outlet />
|
||
</main>
|
||
<AppShellFooter />
|
||
</div>
|
||
);
|
||
}
|