Skip to content

Commit 4cde522

Browse files
fix(navbar): restore floating island layout and mobile hamburger menu
1 parent 428fad4 commit 4cde522

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

web-app/index.html

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -800,8 +800,8 @@
800800
🚀 Skip to main content
801801
</a>
802802
<!-- Navigation -->
803-
<nav aria-label="Primary" class="navbar">
804-
<div class="container nav-wrapper">
803+
<nav aria-label="Primary" class="navbar" id="mainNavbar">
804+
<div class="nav-island">
805805
<!-- LEFT -->
806806
<div class="navbar-brand">
807807
<a class="logo-wrap" href="#">
@@ -824,8 +824,12 @@
824824
<i class="fas fa-search"></i>
825825
<input aria-label="Search projects" id="searchInput" placeholder="Search projects or games..." type="text"/>
826826
</div>
827+
<!-- HAMBURGER TOGGLE (mobile) -->
828+
<button type="button" class="mobile-menu-toggle" id="mobileMenuToggle" aria-label="Toggle navigation menu" aria-expanded="false">
829+
<i class="fas fa-bars"></i>
830+
</button>
827831
<!-- RIGHT -->
828-
<div class="nav-controls">
832+
<div class="nav-controls" id="navControls">
829833
<button aria-label="Mute sounds" class="sound-toggle" id="soundToggle" type="button">
830834
<i class="fas fa-volume-up"></i>
831835
</button>
@@ -1426,6 +1430,34 @@ <h3>Stay Updated</h3>
14261430
}
14271431
});
14281432
});
1433+
1434+
// Handle Scroll Transitions to resize the floating layout dynamically
1435+
const mainNavbar = document.getElementById("mainNavbar");
1436+
window.addEventListener("scroll", () => {
1437+
if (window.scrollY > 40) {
1438+
mainNavbar.classList.add("scrolled");
1439+
} else {
1440+
mainNavbar.classList.remove("scrolled");
1441+
}
1442+
});
1443+
1444+
// Mobile Navigation Controls Open/Close interface handlers
1445+
const mobileMenuToggle = document.getElementById("mobileMenuToggle");
1446+
const navControls = document.getElementById("navControls");
1447+
1448+
mobileMenuToggle.addEventListener("click", () => {
1449+
const isActive = navControls.classList.toggle("mobile-active");
1450+
mobileMenuToggle.setAttribute("aria-expanded", isActive);
1451+
mobileMenuToggle.querySelector("i").className = isActive ? "fas fa-times" : "fas fa-bars";
1452+
});
1453+
1454+
document.addEventListener("click", (e) => {
1455+
if (!navControls.contains(e.target) && !mobileMenuToggle.contains(e.target) && navControls.classList.contains("mobile-active")) {
1456+
navControls.classList.remove("mobile-active");
1457+
mobileMenuToggle.setAttribute("aria-expanded", "false");
1458+
mobileMenuToggle.querySelector("i").className = "fas fa-bars";
1459+
}
1460+
});
14291461
</script>
14301462
</body>
14311463
</html>

0 commit comments

Comments
 (0)