Skip to content

Commit 8cbcd9f

Browse files
committed
add Header
1 parent b9db022 commit 8cbcd9f

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

frontend/src/components/Header.jsx

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import React, { useState } from 'react';
2+
import { Search, ShoppingCart, Heart, User, Menu, X } from 'lucide-react';
3+
4+
const Header = ({ onOpenOverlay, onNavigate }) => {
5+
const [isSearchFocused, setIsSearchFocused] = useState(false);
6+
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
7+
8+
return (
9+
<header className="sticky-header glass">
10+
<nav className="container-broad">
11+
<div className="header-wrapper">
12+
<div className="logo-section">
13+
<button
14+
className="mobile-toggle"
15+
onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}
16+
>
17+
{isMobileMenuOpen ? <X size={24} /> : <Menu size={24} />}
18+
</button>
19+
<div className="brand-logo" onClick={() => onNavigate('home')} style={{ cursor: 'pointer' }}>
20+
<span className="logo-accent">Z</span>appify
21+
</div>
22+
</div>
23+
24+
<ul className={`nav-links ${isMobileMenuOpen ? 'mobile-open' : ''}`}>
25+
<li>
26+
<button
27+
className="nav-item active"
28+
onClick={() => { onNavigate('MEN'); setIsMobileMenuOpen(false); }}
29+
>
30+
MEN
31+
</button>
32+
</li>
33+
<li>
34+
<button
35+
className="nav-item"
36+
onClick={() => { onNavigate('SNEAKERS'); setIsMobileMenuOpen(false); }}
37+
>
38+
SNEAKERS
39+
</button>
40+
</li>
41+
</ul>
42+
43+
<div className={`search-container ${isSearchFocused ? 'focused' : ''}`}>
44+
<Search className="search-icon" size={18} />
45+
<input
46+
type="text"
47+
placeholder="What are you looking for?"
48+
onFocus={() => setIsSearchFocused(true)}
49+
onBlur={() => setIsSearchFocused(false)}
50+
/>
51+
</div>
52+
53+
<div className="user-actions">
54+
<button className="action-btn" title="Profile" onClick={() => onOpenOverlay('login')}>
55+
<User size={22} />
56+
</button>
57+
<button className="action-btn" title="Wishlist" onClick={() => onOpenOverlay('wishlist')}>
58+
<Heart size={22} />
59+
<span className="badge">0</span>
60+
</button>
61+
<button className="action-btn cart-btn" title="Cart" onClick={() => onOpenOverlay('cart')}>
62+
<ShoppingCart size={22} />
63+
</button>
64+
</div>
65+
</div>
66+
</nav>
67+
68+
</header>
69+
);
70+
};
71+
72+
export default Header;

0 commit comments

Comments
 (0)