Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3697 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React from 'react';
import { NavLink, useNavigate, useLocation, Outlet } from 'react-router-dom';
import { Box, Grid, styled } from '@mui/material';
import BookOutlined from '@mui/icons-material/BookOutlined';
import CottageOutlined from '@mui/icons-material/CottageOutlined';
import PersonOutline from '@mui/icons-material/PersonOutline';
import SignalCellularAltOutlined from '@mui/icons-material/SignalCellularAltOutlined';

import colors from '@styles/config/colors';
import SideMenu from '@components/UI/sidemenu/SideMenu';

import { PageLayout } from '@shared/layouts';
import { ProvidersWrapper } from '@shared/providers';

const Navigation = styled(Box)(
  ({ theme }) => `
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  background-color: ${colors.main};
  padding: 1rem;
  display: none;
  z-index: 100;
  ul {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    li a {
        color: ${theme.palette.text.primary};
        display: flex;
        flex-direction: column;
        align-items: center;
        &.active {
          font-weight: 600;
        }
      }
  }
  ${theme.breakpoints.down('md')} {
    display: flex;
  }
`
);

const routes = [
  { label: 'Inicio', value: '/microlearning', icon: CottageOutlined },
  { label: 'Tópicos', value: '/microlearning/topics', icon: BookOutlined },
  {
    label: 'Progreso',
    value: '/microlearning/companies',
    icon: SignalCellularAltOutlined
  },
  { label: 'Perfil', value: '/microlearning/profile', icon: PersonOutline }
];

export function MicroLearningLayout() {
  const { pathname } = useLocation();
  const navigate = useNavigate();

  return (
    <>
      <Grid container spacing={1}>
        <Grid size={{ xs: 12, md: 4 }} sx={{ display: { xs: 'none', md: 'block' } }}>
          <SideMenu items={routes} onChange={(value) => navigate(value)} current={pathname} />
        </Grid>

        <Grid size={{ xs: 12, md: 8 }}>
          <ProvidersWrapper>
            <PageLayout>
              <Outlet />
            </PageLayout>
          </ProvidersWrapper>
        </Grid>
      </Grid>

      <Navigation sx={{ boxShadow: 2 }}>
        <ul>
          {routes.map(({ value, label, icon: Icon }) => (
            <li key={value}>
              <NavLink exact to={value}>
                <Icon />
                {label}
              </NavLink>
            </li>
          ))}
        </ul>
      </Navigation>
    </>
  );
}