import { DesktopOutlined, GlobalOutlined, LogoutOutlined, SettingOutlined, UserOutlined, } from "@ant-design/icons"; import { Layout, Menu, MenuProps, Popover } from "antd"; import React, { useState } from "react"; import AuthModal from "./AuthModal"; import "./styles.css"; import { StorePrototype, logOut, setLanguage, store } from "../config/store"; import { useSelector } from "react-redux"; import tr from "../config/translation"; import { Link, useNavigate } from "react-router-dom"; import logo from "../../static/android-chrome-192x192.png"; const { Header } = Layout; type NullableUser = { name: string | null; username: string } | null; const HeaderComponent = () => { const navigate = useNavigate(); const [authModalOpen, setAuthModalOpen] = useState(false); const [userMenuOpen, setUserMenuOpen] = useState(false); const [languageSelectOpen, setLanguageSelectOpen] = useState(false); const currentLanguage = useSelector( (state: StorePrototype) => state.settings.language ); const user: NullableUser = useSelector( (state: StorePrototype) => state.auth.user ); const languageSelectItems: MenuProps["items"] = [ { label: "English", key: "en", onClick: () => { store.dispatch(setLanguage("en")); window.location.reload(); }, }, { label: "Русский", key: "ru", onClick: () => { store.dispatch(setLanguage("ru")); window.location.reload(); }, }, ]; const userMenuItems: MenuProps["items"] = [ { label: {tr("Settings")}, key: "settings", icon: , }, { label: tr("Log out"), key: "logout", icon: , danger: true, onClick: () => store.dispatch(logOut()) && navigate("/"), }, ]; const items: MenuProps["items"] = [ { label: (
logo
), key: "logo", onClick: () => navigate("/"), }, { label: {tr("Dashboard")}, key: "dashboard", icon: , disabled: !user, }, { label: ( setLanguageSelectOpen(isOpen)} content={ } > {tr("Language")} ), key: "language", icon: , onClick: () => setLanguageSelectOpen(true), }, { label: user ? ( setUserMenuOpen(isOpen)} content={} > {user.username} ) : ( tr("Log in") ), key: "login", icon: , onClick: () => (user ? setUserMenuOpen(true) : setAuthModalOpen(true)), }, ]; return ( <>
); }; export default HeaderComponent;