Skip to content
Snippets Groups Projects
Drawer.tsx 1.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { staticRoutes } from '../routes';
    import { useOAuth } from '../services/OAuth2';
    
    import { Link, useNavigate } from 'react-router-dom';
    
    import { Button } from './Button';
    import { ArrowLeftOnRectangleIcon } from '@heroicons/react/24/outline';
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    
    export const Drawer = () => {
    
      const { user, logout } = useOAuth();
    
      const navigate = useNavigate();
    
      const path = window.location.pathname;
    
      const links = staticRoutes.map(route => {
    
        let className = "h-10 flex hover:text-white hover:bg-infn items-center hover:rounded-lg ph-4 ";
        if (route.path === path) {
          className += "rounded-lg bg-gray-200";
        }
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
        return (
    
          <li className={className} key={route.path}>
    
            <Link className='p-4' to={route.path}>{route.title}</Link>
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
          </li>
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
    
    
      const logoutAndRedirect = () => {
        logout();
        navigate("/");
      }
    
      const userName: string | null = user?.profile && user?.profile["name"] ? user?.profile["name"] : null;
    
    
      return (
        <div className='h-full bg-gray-100 dark:bg-gray-800'>
    
          <img className="w-full bg-gray-100 p-4" alt="" src="/logo530.png" />
    
          <div>
    
              userName ? <div className='p-4 mx-auto text-xl font-semibold'>{userName}</div> : null
    
            <nav className='p-4'>
              <ul>
                {links}
              </ul>
            </nav>
          </div>
          <Button
            className='p-8 absolute inset-x-0 bottom-4'
            title='Logout'
            icon={<ArrowLeftOnRectangleIcon />}
    
          />
        </div>
    
    Jacopo Gasparetto's avatar
    Jacopo Gasparetto committed
      )
    }