| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- import AdbIcon from '@mui/icons-material/Adb';
- import MenuIcon from '@mui/icons-material/Menu';
- import AppBar from '@mui/material/AppBar';
- import Box from '@mui/material/Box';
- import Button from '@mui/material/Button';
- import Container from '@mui/material/Container';
- import IconButton from '@mui/material/IconButton';
- import Menu from '@mui/material/Menu';
- import MenuItem from '@mui/material/MenuItem';
- import Toolbar from '@mui/material/Toolbar';
- import Tooltip from '@mui/material/Tooltip';
- import Typography from '@mui/material/Typography';
- import { signOut, useSession } from 'next-auth/react';
- import Image from 'next/image';
- import Link from 'next/link';
- import { useState } from 'react';
- import { LOGIN_PAGE, PROFILE_PAGE } from '../../../constants/pages';
-
- const pages = ['Link 1', 'Link 2', 'Link 3', 'Link4'];
-
- const Navbar = () => {
- const { data: session } = useSession();
- const [anchorElNav, setAnchorElNav] = useState(null);
- const [anchorElUser, setAnchorElUser] = useState(null);
-
- const handleOpenNavMenu = (event: any) => {
- setAnchorElNav(event.currentTarget);
- };
- const handleOpenUserMenu = (event: any) => {
- setAnchorElUser(event.currentTarget);
- };
-
- const handleCloseNavMenu = () => {
- setAnchorElNav(null);
- };
-
- const handleCloseUserMenu = () => {
- setAnchorElUser(null);
- };
-
- function logoutHandler() {
- signOut();
- }
-
- return (
- <AppBar
- position="static"
- sx={{ zIndex: 100, position: 'fixed', top: 0, left: 0 }}
- >
- <Container maxWidth="xl">
- <Toolbar disableGutters>
- <AdbIcon sx={{ display: { xs: 'none', md: 'flex' }, mr: 1 }} />
- <Typography
- variant="h6"
- noWrap
- sx={{
- mr: 2,
- display: { xs: 'none', md: 'flex' },
- fontFamily: 'monospace',
- fontWeight: 700,
- letterSpacing: '.3rem',
- color: 'inherit',
- textDecoration: 'none',
- }}
- >
- LOGO
- </Typography>
-
- <Box sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }}>
- <IconButton
- size="large"
- aria-label="account of current user"
- aria-controls="menu-appbar"
- aria-haspopup="true"
- onClick={handleOpenNavMenu}
- color="inherit"
- >
- <MenuIcon />
- </IconButton>
- <Menu
- id="menu-appbar"
- anchorEl={anchorElNav}
- anchorOrigin={{
- vertical: 'bottom',
- horizontal: 'left',
- }}
- keepMounted
- transformOrigin={{
- vertical: 'top',
- horizontal: 'left',
- }}
- open={Boolean(anchorElNav)}
- onClose={handleCloseNavMenu}
- sx={{
- display: { xs: 'block', md: 'none' },
- }}
- >
- {pages.map((page) => (
- <MenuItem key={page} onClick={handleCloseNavMenu}>
- <Typography textAlign="center">{page}</Typography>
- </MenuItem>
- ))}
- </Menu>
- </Box>
- <AdbIcon sx={{ display: { xs: 'flex', md: 'none' }, mr: 1 }} />
- <Typography
- variant="h5"
- noWrap
- component="a"
- href=""
- sx={{
- mr: 2,
- display: { xs: 'flex', md: 'none' },
- flexGrow: 1,
- fontFamily: 'monospace',
- fontWeight: 700,
- letterSpacing: '.3rem',
- color: 'inherit',
- textDecoration: 'none',
- }}
- >
- LOGO
- </Typography>
- <Box sx={{ flexGrow: 1, display: { xs: 'none', md: 'flex' } }}>
- {pages.map((page) => (
- <Button
- key={page}
- onClick={handleCloseNavMenu}
- sx={{ my: 2, color: 'white', display: 'block' }}
- >
- {page}
- </Button>
- ))}
- </Box>
-
- <Box sx={{ flexGrow: 0 }}>
- {session ? (
- <>
- <Tooltip title="Open settings">
- <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>
- <Image
- src="https://www.business2community.com/wp-content/uploads/2017/08/blank-profile-picture-973460_640.png"
- alt="profile picture"
- width={40}
- height={40}
- style={{ borderRadius: '50%' }}
- />
- </IconButton>
- </Tooltip>
- <Menu
- sx={{ mt: '45px' }}
- id="menu-appbar"
- anchorEl={anchorElUser}
- anchorOrigin={{
- vertical: 'top',
- horizontal: 'right',
- }}
- keepMounted
- transformOrigin={{
- vertical: 'top',
- horizontal: 'right',
- }}
- open={Boolean(anchorElUser)}
- onClose={handleCloseUserMenu}
- >
- <MenuItem onClick={handleCloseUserMenu}>
- <Link href={PROFILE_PAGE}>
- <a
- style={{
- textDecoration: 'none',
- color: 'inherit',
- fontSize: 15,
- marginLeft: 6,
- }}
- >
- PROFILE
- </a>
- </Link>
- </MenuItem>
- <MenuItem onClick={handleCloseUserMenu}>
- <Button color="inherit" onClick={logoutHandler}>
- Logout
- </Button>
- </MenuItem>
- </Menu>
- </>
- ) : (
- <Button color="inherit">
- <Link href={LOGIN_PAGE}>
- <a
- style={{
- textDecoration: 'none',
- color: 'inherit',
- fontSize: 17,
- }}
- >
- Login
- </a>
- </Link>
- </Button>
- )}
- </Box>
- </Toolbar>
- </Container>
- </AppBar>
- );
- };
- export default Navbar;
|