From 724c17e21933b1fb622b81a1769637d883eeecab Mon Sep 17 00:00:00 2001 From: whiteghost0001 Date: Mon, 29 Jun 2026 18:16:55 +0100 Subject: [PATCH] feat(#406): implement responsive mobile menu drawer - Replace Header's inline mobile menu with MobileMenu component - MobileMenu renders a slide-in drawer from the right - Overlay backdrop closes menu on click - Escape key and close button dismiss the drawer - Focus trap and body scroll lock for accessibility - MobileMenuButton shows hamburger icon, hidden on lg+ screens --- nevo_frontend/components/Header.tsx | 113 ++++++---------------------- 1 file changed, 24 insertions(+), 89 deletions(-) diff --git a/nevo_frontend/components/Header.tsx b/nevo_frontend/components/Header.tsx index 79783a1e..754ccd54 100644 --- a/nevo_frontend/components/Header.tsx +++ b/nevo_frontend/components/Header.tsx @@ -1,26 +1,17 @@ 'use client'; -import React, { useState } from 'react'; import Link from 'next/link'; +import { useState } from 'react'; import { Button } from './Button'; +import { MobileMenu, MobileMenuButton, NAV_LINKS } from './MobileMenu'; export const Header = () => { - const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false); - - const navLinks = [ - { name: 'Home', href: '/' }, - { name: 'Browse Pools', href: '/pools' }, - { name: 'Create Pool', href: '/create-pool' }, - { name: 'Dashboard', href: '/dashboard' }, - { name: 'Stories', href: '/stories' }, - { name: 'Contact', href: '/contact' }, - { name: 'Donations', href: '/donations' }, - ]; + const [menuOpen, setMenuOpen] = useState(false); return ( -
-
-
+ <> +
+
{ Nevo -
- - {/* Desktop Navigation */} - - -
- -
- - {/* Mobile menu button */} -
- -
-
- {/* Mobile menu */} - {isMobileMenuOpen && ( -
+ + + setMenuOpen(false)} /> + ); };