import { useDispatch, useSelector } from "react-redux"; import { closeMenu, selectMenu } from "@/store/menu.ts"; import React, { useMemo } from "react"; import { CandlestickChart, LayoutDashboard, Radio, Settings, Users, } from "lucide-react"; import router from "@/router.tsx"; import { useLocation } from "react-router-dom"; import { useTranslation } from "react-i18next"; import { mobile } from "@/utils/device.ts"; type MenuItemProps = { title: string; icon: React.ReactNode; path: string; }; function MenuItem({ title, icon, path }: MenuItemProps) { const location = useLocation(); const dispatch = useDispatch(); const active = useMemo( () => location.pathname === `/admin${path}` || location.pathname + "/" === `/admin${path}`, [location.pathname, path], ); const redirect = async () => { if (mobile) dispatch(closeMenu()); await router.navigate(`/admin${path}`); }; return (
{icon}
{title}
); } function MenuBar() { const { t } = useTranslation(); const open = useSelector(selectMenu); return (
} path={"/"} /> } path={"/users"} /> } path={"/broadcast"} /> } path={"/channel"} /> } path={"/charge"} />
); } export default MenuBar;