import * as React from 'react';
import AppBar from '@mui/material/AppBar';
import Box from '@mui/material/Box';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import MenuIcon from '@mui/icons-material/Menu';
import Button from '@mui/material/Button';
import Link from 'next/link';
import { Stack } from '@mui/material';
import SignInButton from './account-login-button';
import MobileDrawer from './MobileMenu';
import LogoAndName from './LogoAndName';
import { NavItems } from '@/data/navigation-items';
import { useUserContext } from '@/context/UserContext';
import ProfileMenu from './profile-menu';

const drawerWidth = 280
export default function Navbar() {
  const { userData, session_valid } = useUserContext();
  const [mobileOpen, setMobileOpen] = React.useState(false);

  const handleDrawerToggle = () => {
    setMobileOpen((prevState) => !prevState);
  };

  return (
    <Box sx={{ display: 'flex', position:'sticky' }}>      
      <AppBar
        component='nav'
        sx={{
          position: 'relative',
          backgroundColor: 'transparent',
          backgroundImage: 'initial',
          borderBottom: '1.5px solid rgba(143, 231, 137, 0.1)',
          paddingX: { xs: 2, md: '3%', lg: '7%' },
          paddingY: { xs: '5px', md: '15px' },
        }}
        elevation={0}
      >
        <Toolbar
          sx={{backgroundColor: 'transparent', justifyContent: 'space-between'}}
          disableGutters
        >
          <LogoAndName />

          <Box sx={{ display: { xs: 'none', lg: 'initial' } }}>
            {NavItems.map((item, index) => (
              <Link
                href={item.href}
                key={index}
              >
                <Button sx={{ color: '#000', ml: index === 0 ? '0' : { md: '25px', lg: '20px' } }}>{item.title}</Button>
              </Link>
            ))}
          </Box>

          <Stack 
            direction='row'
            spacing={1}
            alignItems={'center'}
          >
            {userData && session_valid &&
              <ProfileMenu />
            }

            <IconButton
              color="inherit"
              edge="start"
              onClick={handleDrawerToggle}
              sx={{ display: { lg: 'none' } }}
            >
              <MenuIcon />
            </IconButton>

            <Box sx={{ display: { xs: 'none', md: 'initial' }}}>
              <SignInButton />
            </Box>

          </Stack>

          <MobileDrawer
            handleDrawerToggle={handleDrawerToggle}
            navItems={NavItems}
            mobileOpen={mobileOpen}
            drawerWidth={drawerWidth}
          />
        </Toolbar>
      </AppBar>
    </Box>
  );
}
