Skip to content

Commit 111c2de

Browse files
committed
chore refactor some issues with the navigation
Signed-off-by: Daniel Ntege <danientege785@gmail.com>
1 parent a220519 commit 111c2de

File tree

1 file changed

+25
-10
lines changed

1 file changed

+25
-10
lines changed

nextjs/components/Menu.tsx

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,28 @@ const menuItems: MenuItem[] = [
2929
export default function Menu() {
3030
const pathname = usePathname();
3131
const [isOpen, setIsOpen] = useState(false);
32+
const [isDesktop, setIsDesktop] = useState(false);
3233

3334
useEffect(() => {
34-
document.body.style.overflow = isOpen ? "hidden" : "";
35+
const handleResize = () => {
36+
const desktop = window.innerWidth >= 640;
37+
setIsDesktop(desktop);
38+
39+
if (desktop) {
40+
setIsOpen(false);
41+
}
42+
};
43+
44+
handleResize();
45+
window.addEventListener("resize", handleResize);
46+
47+
document.body.style.overflow = !isDesktop && isOpen ? "hidden" : "";
48+
3549
return () => {
50+
window.removeEventListener("resize", handleResize);
3651
document.body.style.overflow = "";
3752
};
38-
}, [isOpen]);
53+
}, [isDesktop, isOpen]);
3954

4055
const isActive = (href: string): boolean => {
4156
if (href.startsWith("http")) return false;
@@ -58,10 +73,10 @@ export default function Menu() {
5873

5974
<nav
6075
id="navigation"
61-
className={`${isOpen ? "active-navigation" : "hidden"} fixed inset-0 z-50 flex-col items-center justify-start overflow-y-auto bg-black px-6 pt-24 pb-10 text-white sm:relative sm:inset-auto sm:z-auto sm:h-auto sm:w-9/12 sm:max-w-xl sm:flex sm:flex-row sm:items-center sm:justify-end sm:overflow-visible sm:bg-transparent sm:px-0 sm:pt-0 sm:pb-0 sm:text-inherit`}
62-
aria-hidden={!isOpen && pathname !== undefined}
76+
className={`${isOpen ? "active-navigation" : "hidden"} absolute items-center justify-center w-full h-screen bg-black top-0 left-0 text-white sm:relative sm:h-auto sm:top-auto sm:bg-transparent sm:left-auto sm:w-9/12 sm:max-w-xl sm:block`}
77+
aria-hidden={isDesktop ? false : !isOpen}
6378
>
64-
<div className="absolute top-[27px] left-6 sm:hidden">
79+
<div className="absolute top-[27px] sm:hidden">
6580
<Image
6681
src="/images/Hiero-Icon-wLogo-white-text.svg"
6782
alt="Hiero logo"
@@ -80,7 +95,7 @@ export default function Menu() {
8095
<Image src="/images/Hiero-Icon-ModalClose.svg" alt="Close menu" className="w-5 h-5" width={20} height={20} />
8196
</button>
8297

83-
<ul id="menu" className="flex w-full flex-col items-stretch gap-2 pt-10 sm:w-auto sm:flex-row sm:items-center sm:justify-between sm:gap-8 sm:pt-0">
98+
<ul id="menu" className="flex flex-col sm:flex-row justify-between">
8499
{menuItems.map((item) => (
85100
<li
86101
key={item.name}
@@ -92,14 +107,14 @@ export default function Menu() {
92107
target="_blank"
93108
rel="noopener noreferrer"
94109
onClick={() => setIsOpen(false)}
95-
className="block rounded-md px-3 py-2 sm:inline sm:rounded-none sm:px-0 sm:py-0"
96110
>
97111
{item.name}
98112
</a>
99113
) : (
100114
<Link
101115
href={item.href}
102-
className={`${isActive(item.href) ? "active" : ""} block rounded-md px-3 py-2 sm:inline sm:rounded-none sm:px-0 sm:py-0`.trim()}
116+
className={isActive(item.href) ? "active" : ""}
117+
aria-current={isActive(item.href) ? "page" : undefined}
103118
onClick={() => setIsOpen(false)}
104119
>
105120
{item.name}
@@ -108,12 +123,12 @@ export default function Menu() {
108123
</li>
109124
))}
110125

111-
<li className="mt-4 self-center sm:mt-0">
126+
<li className="self-center">
112127
<a
113128
href="https://github.com/hiero-ledger/"
114129
target="_blank"
115130
rel="noopener noreferrer"
116-
className="flex justify-center rounded-md px-3 py-2 sm:px-0 sm:py-0"
131+
className="flex"
117132
>
118133
<Image
119134
src="/images/Hiero-Icon-Github.svg"

0 commit comments

Comments
 (0)