improve menu behavior
All checks were successful
Build Images and Deploy / Update-PROD-Stack (push) Successful in 34s

This commit is contained in:
2026-01-30 16:35:05 -05:00
parent 9c0fd35804
commit 45c98f9fc7
5 changed files with 39 additions and 7 deletions

View File

@@ -166,6 +166,10 @@ body {
transition: all 0.3s ease;
}
.nav-backdrop {
display: none;
}
.nav-menu {
display: flex;
align-items: center;
@@ -258,6 +262,27 @@ body {
display: flex;
}
.nav-backdrop {
display: block;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background: rgba(0, 0, 0, 0.5);
z-index: 999;
animation: fadeIn 0.3s ease;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.hamburger.active span:nth-child(1) {
transform: rotate(45deg) translate(5px, 5px);
}

View File

@@ -44,7 +44,7 @@ function Header() {
<div className="nav-brand">
<h2>WTP</h2>
<button
className="hamburger"
className={`hamburger ${mobileMenuOpen ? 'active' : ''}`}
onClick={() => setMobileMenuOpen(!mobileMenuOpen)}
aria-label="Toggle menu"
>
@@ -53,6 +53,13 @@ function Header() {
<span></span>
</button>
</div>
{mobileMenuOpen && (
<div
className="nav-backdrop"
onClick={closeMobileMenu}
aria-hidden="true"
/>
)}
<div className={`nav-menu ${mobileMenuOpen ? 'active' : ''}`}>
<ul className="nav-links">
<li><Link to="/challenges" onClick={closeMobileMenu}>Challenges</Link></li>

View File

@@ -175,7 +175,7 @@ export default function ChallengeDetail() {
return;
}
// Debounce search by 1 second
// Debounce search by 0.5 second
const timeout = setTimeout(async () => {
try {
const data = await api.searchUsers(query);
@@ -183,7 +183,7 @@ export default function ChallengeDetail() {
} catch (err) {
console.error('Search failed:', err);
}
}, 1000);
}, 500);
setSearchTimeout(timeout);
};

View File

@@ -80,7 +80,7 @@ export default function ChallengeList() {
return;
}
// Debounce search by 1.5 seconds
// Debounce search by 0.75 seconds
const timeout = setTimeout(async () => {
try {
const data = await api.searchShows(query);
@@ -88,7 +88,7 @@ export default function ChallengeList() {
} catch (err) {
console.error('Search failed:', err);
}
}, 1500);
}, 750);
setSearchTimeout(timeout);
};

View File

@@ -79,7 +79,7 @@ export default function Friends() {
return;
}
// Debounce search by 1 second
// Debounce search by 0.5 second
const timeout = setTimeout(async () => {
try {
const data = await api.searchUsers(query);
@@ -87,7 +87,7 @@ export default function Friends() {
} catch (err) {
console.error('Search failed:', err);
}
}, 1000);
}, 500);
setSearchTimeout(timeout);
};