feat: add hamburger menu for mobile navigation#28
Conversation
- Create MobileMenuButton with animated hamburger-to-X transition - Create MobileMenu full-screen overlay with stagger animation - Extract shared navLinks configuration for consistency - Update Navbar to show hamburger on mobile, full nav on desktop - Keep "Let's Talk" CTA visible outside menu on mobile - Add E2E tests for mobile navigation flows - Update existing tests for new responsive behavior
There was a problem hiding this comment.
Pull request overview
This PR implements a hamburger menu for mobile navigation to address cramped mobile experiences. The implementation includes an animated hamburger-to-X button, a full-screen mobile menu overlay, and shared navigation configuration for consistency between desktop and mobile views.
Key changes:
- Creates a responsive navigation system with hamburger menu for viewports < 768px
- Implements animated menu button and staggered link animations for enhanced UX
- Extracts shared
navLinksconfiguration to ensure consistency across navigation contexts
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/components/navigation/navLinks.ts | Shared navigation configuration with link data and CTA definition |
| src/components/navigation/index.ts | Exports new navigation utilities for external consumption |
| src/components/navigation/Navbar.tsx | Refactored to support responsive navigation with mobile menu state management |
| src/components/navigation/MobileMenuButton.tsx | Animated hamburger button component with accessibility features |
| src/components/navigation/MobileMenuButton.test.tsx | Unit tests for hamburger button behavior and interactions |
| src/components/navigation/MobileMenu.tsx | Full-screen mobile menu overlay with keyboard and scroll handling |
| src/components/navigation/MobileMenu.test.tsx | Unit tests for mobile menu functionality |
| e2e/products.spec.ts | Updated to set desktop viewport for navbar link visibility |
| e2e/mobile-navigation.spec.ts | Comprehensive E2E tests for mobile and desktop navigation flows |
| docs/plans/10-mobile-navigation/implementation.md | Implementation plan with tasks and verification checklist |
| docs/plans/10-mobile-navigation/design.md | Design documentation covering decisions and specifications |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| 'font-heading text-2xl font-medium uppercase tracking-wide text-muted-foreground transition-colors hover:text-foreground', | ||
| 'animate-in fade-in slide-in-from-top-4 duration-200', | ||
| )} | ||
| style={{ animationDelay: `${index * 50}ms`, animationFillMode: 'backwards' }} |
There was a problem hiding this comment.
The magic number 50 for animation delay is hardcoded. Consider extracting this as a named constant (e.g., STAGGER_DELAY_MS = 50) at the top of the file to improve maintainability and make it easier to adjust the animation timing.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
vibes-website | de5ddb2 | Commit Preview URL Branch Preview URL |
Dec 27 2025, 10:11 PM |
Summary
navLinksconfiguration for desktop and mobile consistencyTest Plan
pnpm test)pnpm e2e)just check)