import Login from "./Login"; import { Icon, MenuItem, Container, Menu, MenuList, Typography, IconButton, Toolbar, Box, AppBar, } from "@mui/material"; import { MouseEvent, MouseEventHandler, useContext, useState } from "react"; import Link from "./Link"; import { useSession } from "next-auth/react"; import { TranslateContext } from "../Modules/context"; interface MenuItemsInterface { pages: { name: string; link: string }[]; handleCloseNavMenu: MouseEventHandler; } // Returns all the menu items function MenuItems({ pages, handleCloseNavMenu }: MenuItemsInterface) { return ( <> {pages.map((page) => ( {page.name} ))} ); } interface MainInterface { league?: number; } // Used to create a menu const Layout = ({ league }: MainInterface) => { const [anchorElNav, setAnchorElNav] = useState(null); const handleOpenNavMenu = (event: MouseEvent) => { setAnchorElNav(event.currentTarget); }; const handleCloseNavMenu = () => { setAnchorElNav(null); }; const { data: session } = useSession(); if (!league && session) { league = session.user.favoriteLeague ? session.user.favoriteLeague : undefined; } const t = useContext(TranslateContext); const pages = [{ name: t("Home"), link: "/" }]; pages.push({ name: t("Download"), link: `/download` }); // Checks if the player is logged in if (session || league) { if (session?.user.admin) { pages.push({ name: "Admin", link: "/admin" }); } pages.push({ name: t("Leagues"), link: "/leagues" }); } // Checks if the player should see the league links if (league) { pages.push({ name: t("Standings"), link: `/${league}` }); pages.push({ name: t("Predictions"), link: `/${league}/${session?.user.id}/predictions`, }); pages.push({ name: t("Squad"), link: `/${league}/squad` }); pages.push({ name: t("Transfers"), link: `/${league}/transfer` }); } const MenuItemsLarge = ( ); const MenuItemsSmall = ( <> {" "} menu {MenuItemsLarge} ); const MenuCount = pages.length; return ( sports_soccer 5 ? "flex" : "none", md: MenuCount > 7 ? "flex" : "none", lg: MenuCount > 10 ? "flex" : "none", xl: "none", }, }} > {MenuItemsSmall} 5 ? "none" : "flex", md: MenuCount > 7 ? "none" : "flex", lg: MenuCount > 10 ? "none" : "flex", xl: "flex", }, }} > {MenuItemsLarge} ); }; export default Layout;