v0.1 - макет интерфейса, аутентификация через логин, аккаунт админа, создание партии в 2 этапа, базовые настройки профиля и группы, переключение между группами, статистика
This commit is contained in:
@@ -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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user