introducing fdull screen nav

This commit is contained in:
Antoine M 2024-02-22 19:13:53 +01:00
parent 81ca1f93fc
commit e42f7b6113
2 changed files with 120 additions and 5 deletions

View File

@ -1,4 +1,55 @@
nav.main-menu { nav.main-menu {
@apply absolute top-0 py-3 w-full flex justify-end; @apply absolute top-0 py-3 pr-12 w-full flex gap-6 justify-end;
z-index: 2; z-index: 48;
}
.nav-menu-toggle {
@apply w-16 h-16 bg-transparent bg-no-repeat bg-center;
background-image: url("../../../img/shapes-background/menu-toggle-background.svg");
img {
@apply w-8 h-8;
box-sizing: border-box;
}
}
.menu {
@apply bg-lhoist w-full h-screen fixed bottom-0 left-0;
height: 100dvh;
// &[open] {
// @apply block;
// }
.cta--close {
@apply absolute top-8 right-8 p-8;
}
&__main-links {
@apply list-none flex flex-col gap-6 h-full justify-center w-fit pl-32;
li {
a {
@apply text-white text-9xl text-zuume font-bold block;
text-decoration: none;
&:hover {
@apply text-lhoistdark;
}
}
}
}
&__legal-mentions {
@apply absolute bottom-8 right-8 flex gap-6 list-none;
a {
@apply text-white text-xl font-semibold;
text-decoration: none;
&:hover {
@apply text-lhoistdark;
}
}
}
}
.page-container:has(.menu[open]) {
transform: none !important;
.main-menu .nav-menu-toggle {
pointer-events: none;
}
} }

View File

@ -1,13 +1,57 @@
import { NavLink } from "react-router-dom"; import { Link, NavLink } from "react-router-dom";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
import { useUser } from "../../hooks/useUser"; import { useUser } from "../../hooks/useUser";
import LanguageSelect from "./LanguageSelect"; import LanguageSelect from "./LanguageSelect";
import menuToggleIcon from "../../assets/img/icons/icon-bars-menu-toggle.svg";
import { useEffect, useState } from "react";
import { motion } from "framer-motion";
export default function Nav() { export default function Nav() {
let location = useLocation(); let location = useLocation();
const { language, changeLanguage } = useUser(); const { language, changeLanguage } = useUser();
const [isMenuOpen, setIsMenuOpen] = useState(false);
const handleMenuOpen = () => {
setIsMenuOpen(!isMenuOpen);
};
const handleEscape = (e) => {
if (e.key === "Escape") {
setIsMenuOpen(false);
}
};
useEffect(() => {
document.addEventListener("keydown", handleEscape);
return () => {
document.removeEventListener("keydown", handleEscape);
};
}, []);
const animationParameters = {
initial: { y: "-100%" },
animate: { y: "0" },
exit: { y: "-100%" },
};
return ( return (
<nav className='main-menu'> <nav className='main-menu'>
<LanguageSelect />
<button className='nav-menu-toggle cta cta--button cta--button-icon' onClick={handleMenuOpen}>
<img className='' src={menuToggleIcon} alt='' />
</button>
{isMenuOpen && (
<motion.div
key={location.pathname + "menu"}
className='menu'
open={isMenuOpen}
initial={animationParameters.initial}
animate={animationParameters.animate}
exit={animationParameters.exit}
transition={{ duration: 0.4, ease: "easeOut" }}>
<button
className='cta cta--construction cta--button-icon cta--close'
onClick={handleMenuOpen}></button>
{/* <ul className='navlist'> {/* <ul className='navlist'>
<NavLink to='/'>Welcome</NavLink> <NavLink to='/'>Welcome</NavLink>
<NavLink to='/Home'>Home</NavLink> <NavLink to='/Home'>Home</NavLink>
@ -16,8 +60,28 @@ export default function Nav() {
<NavLink to='/play'>Play</NavLink> <NavLink to='/play'>Play</NavLink>
<NavLink to='/results'>Results</NavLink> <NavLink to='/results'>Results</NavLink>
</ul> */} </ul> */}
<ul className='menu__main-links'>
<li>
<Link to='/thematiques'>Thématiques</Link>
</li>
<li>
<Link to='/about'>À propos</Link>
</li>
</ul>
<LanguageSelect /> <ul className='menu__legal-mentions'>
<li>
<Link to='/confidentiality'>Politique de confidentialité</Link>
</li>
<li>
<Link to='/conditions-of-use'> Conditions d'utilisation</Link>
</li>
<li>
<Link to='/Cookies'> Cookies</Link>
</li>
</ul>
</motion.div>
)}
</nav> </nav>
); );
} }