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
+47
View File
@@ -0,0 +1,47 @@
import { Plus, Settings, Users } from "lucide-react";
import { useNavigate } from "react-router-dom";
import { useToast } from "../context/ToastContext";
import { useMe } from "../hooks/auth";
export function BottomBar() {
const { data: me } = useMe();
const navigate = useNavigate();
const toast = useToast();
const hasGroup = me?.active_group_id != null;
const activeGroup = me?.groups.find((g) => g.id === me?.active_group_id);
const onCreate = () => {
if (!hasGroup) {
toast.show("Вы не состоите в группе. Создайте или вступите в группу.");
navigate("/group");
return;
}
navigate("/match/new");
};
return (
<nav className="bottom-bar">
<button className="slot" onClick={() => navigate("/group")}>
<Users size={20} />
<span className="name">{activeGroup ? activeGroup.name : "Группа"}</span>
</button>
<div className="spacer" />
<button className="slot" onClick={() => navigate("/account")}>
<Settings size={20} />
<span>Аккаунт</span>
</button>
<button
className="fab"
aria-disabled={!hasGroup}
aria-label="Создать партию"
onClick={onCreate}
>
<Plus size={26} />
</button>
</nav>
);
}