122 lines
2.9 KiB
JavaScript
122 lines
2.9 KiB
JavaScript
import { useState, useEffect } from "react";
|
|
import { Link } from "react-scroll";
|
|
import { useTranslation } from "react-i18next";
|
|
|
|
function Navbar() {
|
|
const [navActive, setNavActive] = useState(false);
|
|
const { t } = useTranslation();
|
|
|
|
const toggleNav = () => {
|
|
setNavActive(!navActive);
|
|
};
|
|
|
|
const closeMenu = () => {
|
|
setNavActive(false);
|
|
};
|
|
|
|
useEffect(() => {
|
|
const handleResize = () => {
|
|
if (window.innerWidth <= 500) {
|
|
closeMenu;
|
|
}
|
|
};
|
|
|
|
window.addEventListener("resize", handleResize);
|
|
|
|
return () => {
|
|
window.removeEventListener("resize", handleResize);
|
|
};
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (window.innerWidth <= 1200) {
|
|
closeMenu;
|
|
}
|
|
}, []);
|
|
|
|
return (
|
|
<nav className={`navbar ${navActive ? "active" : ""}`}>
|
|
<Link
|
|
onClick={closeMenu}
|
|
activeClass="navbar--active-content"
|
|
spy={false}
|
|
smooth={true}
|
|
offset={-70}
|
|
duration={500}
|
|
to="heroSection"
|
|
className="navbar--logo"
|
|
style={{ cursor: 'pointer' }}
|
|
>
|
|
<img src="./img/logo.png" alt="Logo" />
|
|
</Link>
|
|
<a
|
|
className={`nav__hamburger ${navActive ? "active" : ""}`}
|
|
onClick={toggleNav}
|
|
>
|
|
<span className="nav__hamburger__line"></span>
|
|
<span className="nav__hamburger__line"></span>
|
|
<span className="nav__hamburger__line"></span>
|
|
</a>
|
|
<div className={`navbar--items ${navActive ? "active" : ""}`}>
|
|
<ul>
|
|
<li>
|
|
<Link
|
|
onClick={closeMenu}
|
|
activeClass="navbar--active-content"
|
|
spy={true}
|
|
smooth={true}
|
|
offset={-70}
|
|
duration={500}
|
|
to="heroSection"
|
|
className="navbar--content"
|
|
>
|
|
{t('navbar.home')}
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<Link
|
|
onClick={closeMenu}
|
|
activeClass="navbar--active-content"
|
|
spy={true}
|
|
smooth={true}
|
|
offset={-70}
|
|
duration={500}
|
|
to="MyPortfolio"
|
|
className="navbar--content"
|
|
>
|
|
{t('navbar.portfolio')}
|
|
</Link>
|
|
</li>
|
|
<li>
|
|
<Link
|
|
onClick={closeMenu}
|
|
activeClass="navbar--active-content"
|
|
spy={true}
|
|
smooth={true}
|
|
offset={-70}
|
|
duration={500}
|
|
to="AboutMe"
|
|
className="navbar--content"
|
|
>
|
|
{t('navbar.about')}
|
|
</Link>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<Link
|
|
onClick={closeMenu}
|
|
activeClass="navbar--active-content"
|
|
spy={true}
|
|
smooth={true}
|
|
offset={-70}
|
|
duration={500}
|
|
to="Contact"
|
|
className="btn btn-outline-primary"
|
|
>
|
|
{t('navbar.contact')}
|
|
</Link>
|
|
</nav>
|
|
);
|
|
}
|
|
|
|
export default Navbar; |