File size: 8,193 Bytes
ade45cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
class AppHeader extends HTMLElement {
    connectedCallback() {
        this.attachShadow({ mode: 'open' });
        this.shadowRoot.innerHTML = `
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Cairo:wght@300;400;600;700&family=Inter:wght@300;400;600;700&display=swap');
                
                :host {
                    display: block;
                    font-family: 'Inter', sans-serif;
                }
                
                header {
                    position: fixed;
                    top: 0;
                    left: 0;
                    right: 0;
                    z-index: 50;
                    background: rgba(255, 255, 255, 0.95);
                    backdrop-filter: blur(10px);
                    border-bottom: 1px solid rgba(0, 0, 0, 0.05);
                    transition: all 0.3s ease;
                }
                
                .scrolled {
                    background: white;
                    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
                }
                
                nav {
                    max-width: 1280px;
                    margin: 0 auto;
                    padding: 1rem 1.5rem;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                }
                
                .logo {
                    display: flex;
                    align-items: center;
                    gap: 0.75rem;
                    font-size: 1.5rem;
                    font-weight: 700;
                    color: #9C27B0;
                    text-decoration: none;
                    transition: transform 0.2s ease;
                }
                
                .logo:hover {
                    transform: scale(1.05);
                }
                
                .logo-icon {
                    width: 40px;
                    height: 40px;
                    background: linear-gradient(135deg, #9C27B0, #7B1FA2);
                    border-radius: 12px;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    color: white;
                }
                
                .nav-links {
                    display: flex;
                    gap: 2rem;
                    align-items: center;
                    list-style: none;
                    margin: 0;
                    padding: 0;
                }
                
                .nav-link {
                    color: #424242;
                    text-decoration: none;
                    font-weight: 500;
                    transition: color 0.2s ease;
                    position: relative;
                }
                
                .nav-link::after {
                    content: '';
                    position: absolute;
                    bottom: -4px;
                    left: 0;
                    width: 0;
                    height: 2px;
                    background: #9C27B0;
                    transition: width 0.3s ease;
                }
                
                .nav-link:hover::after {
                    width: 100%;
                }
                
                .nav-link:hover {
                    color: #9C27B0;
                }
                
                .nav-cta {
                    background: linear-gradient(135deg, #9C27B0, #7B1FA2);
                    color: white;
                    padding: 0.75rem 1.5rem;
                    border-radius: 2rem;
                    text-decoration: none;
                    font-weight: 600;
                    transition: all 0.3s ease;
                    box-shadow: 0 4px 6px -1px rgba(156, 39, 176, 0.3);
                }
                
                .nav-cta:hover {
                    transform: translateY(-2px);
                    box-shadow: 0 10px 15px -3px rgba(156, 39, 176, 0.3);
                }
                
                .mobile-menu-toggle {
                    display: none;
                    background: none;
                    border: none;
                    cursor: pointer;
                    padding: 0.5rem;
                }
                
                @media (max-width: 768px) {
                    .nav-links {
                        position: fixed;
                        top: 0;
                        right: -100%;
                        width: 80%;
                        max-width: 300px;
                        height: 100vh;
                        background: white;
                        flex-direction: column;
                        padding: 5rem 2rem 2rem;
                        gap: 1.5rem;
                        box-shadow: -4px 0 6px -1px rgba(0, 0, 0, 0.1);
                        transition: right 0.3s ease;
                    }
                    
                    .nav-links.active {
                        right: 0;
                    }
                    
                    .mobile-menu-toggle {
                        display: block;
                    }
                    
                    .nav-cta {
                        width: 100%;
                        text-align: center;
                    }
                }
            </style>
            
            <header id="header">
                <nav>
                    <a href="#" class="logo">
                        <div class="logo-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                                <rect x="1" y="4" width="22" height="16" rx="2" ry="2"></rect>
                                <line x1="1" y1="10" x2="23" y2="10"></line>
                            </svg>
                        </div>
                        LibyaPay
                    </a>
                    
                    <ul class="nav-links" id="navLinks">
                        <li><a href="#features" class="nav-link">Features</a></li>
                        <li><a href="#payments" class="nav-link">Payments</a></li>
                        <li><a href="#security" class="nav-link">Security</a></li>
                        <li><a href="#about" class="nav-link">About</a></li>
                        <li><a href="#contact" class="nav-link">Contact</a></li>
                        <li><a href="#" class="nav-cta">Get Started</a></li>
                    </ul>
                    
                    <button class="mobile-menu-toggle" id="mobileMenuToggle">
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                            <line x1="3" y1="12" x2="21" y2="12"></line>
                            <line x1="3" y1="6" x2="21" y2="6"></line>
                            <line x1="3" y1="18" x2="21" y2="18"></line>
                        </svg>
                    </button>
                </nav>
            </header>
        `;
        
        // Add scroll effect
        window.addEventListener('scroll', () => {
            const header = this.shadowRoot.getElementById('header');
            if (window.scrollY > 50) {
                header.classList.add('scrolled');
            } else {
                header.classList.remove('scrolled');
            }
        });
        
        // Mobile menu toggle
        const mobileMenuToggle = this.shadowRoot.getElementById('mobileMenuToggle');
        const navLinks = this.shadowRoot.getElementById('navLinks');
        
        mobileMenuToggle.addEventListener('click', () => {
            navLinks.classList.toggle('active');
        });
        
        // Close mobile menu when clicking a link
        const links = navLinks.querySelectorAll('.nav-link');
        links.forEach(link => {
            link.addEventListener('click', () => {
                navLinks.classList.remove('active');
            });
        });
    }
}

customElements.define('app-header', AppHeader);