v0.1 - макет интерфейса, аутентификация через логин, аккаунт админа, создание партии в 2 этапа, базовые настройки профиля и группы, переключение между группами, статистика

This commit is contained in:
2026-06-16 17:41:06 +03:00
parent 6ab74f01aa
commit 56b5d09a4d
123 changed files with 13572 additions and 21 deletions
+44
View File
@@ -0,0 +1,44 @@
import { NavLink, Outlet, useNavigate } from "react-router-dom";
import { useAdminLogout } from "../../hooks/admin";
export function AdminLayout() {
const logout = useAdminLogout();
const navigate = useNavigate();
const doLogout = async () => {
await logout.mutateAsync().catch(() => {});
navigate("/admin/login", { replace: true });
};
const tab = ({ isActive }: { isActive: boolean }) =>
"btn small" + (isActive ? " btn-primary" : " btn-ghost");
return (
<div className="app-shell">
<header className="top-bar">
<span className="title">Админ-панель</span>
<button className="btn btn-ghost small" onClick={doLogout}>
Выйти
</button>
</header>
<div className="row" style={{ padding: "10px 14px", gap: 8 }}>
<NavLink to="/admin/records" className={tab}>
Записи
</NavLink>
<NavLink to="/admin/accounts" className={tab}>
Аккаунты
</NavLink>
<NavLink to="/admin/factions" className={tab}>
Фракции
</NavLink>
<NavLink to="/admin/logs" className={tab}>
Логи
</NavLink>
</div>
<main className="app-main" style={{ paddingBottom: 24 }}>
<Outlet />
</main>
</div>
);
}