import "../css/components/sidebar.css"; import React, { useState } from "react"; import { Box, Divider, Drawer, IconButton, List, ListItemButton, ListItemIcon, ListItemText, Typography, } from "@mui/material"; import { AccessTimeFilled, AccountCircle as AccountCircleIcon, Code as CodeIcon, Logout as LogoutIcon, ManageAccounts as ManageAccountsIcon, Menu as MenuIcon, Settings as SettingsIcon, Telegram as TelegramIcon, } from "@mui/icons-material"; import { Link } from "react-router-dom"; import { useNavigate } from "react-router-dom"; import SearchBar from "./searchbar"; import { useCategories, useQuery, useSettingsOpen, useUser } from "./ContextProvider"; import { wholePath } from "../lib/common"; import { useCat, useMenuMode } from "./MenuProvider"; import MetahkgLogo from "./logo"; /** * The sidebar is a * drawer that is opened by clicking on the menu icon on the top left of the * screen. It contains a list of links to different pages */ export default function SideBar() { const [open, setOpen] = useState(false); const [query, setQuery] = useQuery(); const [cat] = useCat(); const [menuMode] = useMenuMode(); const [, setSettingsOpen] = useSettingsOpen(); const [user] = useUser(); const categories = useCategories(); const navigate = useNavigate(); const toggleDrawer = (open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => { if ( event.type === "keydown" && ((event as React.KeyboardEvent).key === "Tab" || (event as React.KeyboardEvent).key === "Shift") ) { return; } setOpen(open); }; function onClick() { setOpen(false); } return (
Support Ukraine
{ setQuery(e.target.value); }} onKeyPress={(e) => { if (e.key === "Enter" && query) { navigate( `/search?q=${encodeURIComponent(query)}` ); setOpen(false); } }} />
{[ { title: "Recall", link: "/recall", icon: , }, { title: user ? "Logout" : "Login / Register", link: `/users/${ user ? "logout" : "login" }?returnto=${encodeURIComponent(wholePath())}`, icon: user ? : , }, ].map((item, index) => ( {item.icon} {item.title} ))} {[ categories.filter((i) => !i.hidden), user && categories.filter((i) => i.hidden), ].map( (cats, index) => cats && (
{cats.map((category, index) => ( ({ color: cat === category.id && menuMode === "category" ? theme.palette.secondary .main : "white", "&:hover": { color: `${theme.palette.secondary.main} !important`, }, })} onClick={onClick} > {category.name} ))}
) )} {[ { icon: , title: "Telegram group", link: "https://t.me/+WbB7PyRovUY1ZDFl", }, { icon: , title: "Source code", link: "https://gitlab.com/metahkg/metahkg", }, ].map((item, index) => ( {item.icon} ))} {user && ( {user?.name} )} { setOpen(false); setSettingsOpen(true); }} > Settings {process.env.REACT_APP_version && (

Metahkg Web{" "} {process.env.REACT_APP_build && ( {process.env.REACT_APP_build} )}{" "} (v{process.env.REACT_APP_version})

)}
); }