This repository has been archived on 2024-10-29. You can view files and clone it, but cannot push or open issues or pull requests.
FunctionProject/website/components/Header/Header.jsx

94 lines
2.8 KiB
JavaScript

import { useState, useContext } from 'react'
import { UserContext } from '../../contexts/UserContext'
import Link from 'next/link'
import { useRouter } from 'next/router'
import NavigationLink from './NavigationLink'
import './Header.css'
export default function Header () {
const { isAuth, logoutUser, user } = useContext(UserContext)
const [isActive, setIsActive] = useState(false)
const { pathname } = useRouter()
const toggleNavbar = () => {
setIsActive(!isActive)
}
return (
<header className='Header'>
<div className='container'>
{/* Brand */}
<Link href='/'>
<a className='Header__brand-link'>
<img
id='brand-link__logo'
src='/images/FunctionProject_brand-logo.png'
alt='FunctionProject'
/>
<img
id='brand-link__logo-small-screen'
src='/images/FunctionProject_icon_small.png'
alt='FunctionProject'
/>
</a>
</Link>
{/* Hamburger icon on Mobile */}
<div
onClick={toggleNavbar}
className={`Header__hamburger ${
isActive ? 'Header__hamburger-active' : ''
}`}
>
<span />
</div>
{/* Navigation */}
<nav className='Header__navbar'>
<ul
className={`navbar__list ${isActive ? 'navbar__list-active' : ''}`}
>
<NavigationLink name='Accueil' path='/' />
<NavigationLink name='Fonctions' path='/functions' />
<NavigationLink name='Utilisateurs' path='/users' />
{!isAuth
? (
<>
<NavigationLink name="S'inscrire" path='/users/register' />
<NavigationLink name='Connexion' path='/users/login' />
</>
)
: (
<>
<li className='navbar-item'>
<Link href='/users/[name]' as={`/users/${user.name}`}>
<a
className={`navbar-link ${
pathname === '/users/[name]'
? 'navbar-link-active'
: null
}`}
>
Mon Profil
</a>
</Link>
</li>
<li className='navbar-item'>
<Link href='/'>
<a onClick={logoutUser} className='navbar-link'>
Se déconnecter
</a>
</Link>
</li>
</>
)}
{isAuth && user.isAdmin && (
<NavigationLink name='Admin' path='/admin' />
)}
</ul>
</nav>
</div>
</header>
)
}