@@ -44,6 +44,30 @@ const base = import.meta.env.BASE_URL.replace(/\/?$/, '/');
4444 <svg class =" w-4 h-4" fill =" currentColor" viewBox =" 0 0 24 24" ><path d =" M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z" /></svg >
4545 GitHub
4646 </a >
47+ <button id =" mobile-menu-btn" class =" md:hidden flex flex-col gap-1.5 p-2 cursor-pointer" aria-label =" Menu" >
48+ <span class =" block w-6 h-0.5 bg-white transition-all duration-300" id =" bar1" ></span >
49+ <span class =" block w-6 h-0.5 bg-white transition-all duration-300" id =" bar2" ></span >
50+ <span class =" block w-6 h-0.5 bg-white transition-all duration-300" id =" bar3" ></span >
51+ </button >
52+ </div >
53+ </div >
54+
55+ <!-- Mobile menu -->
56+ <div id =" mobile-menu" class =" md:hidden hidden glass-strong border-t border-white/5" >
57+ <div class =" max-w-7xl mx-auto px-6 py-4 flex flex-col gap-3 text-sm" >
58+ <a href =" #features" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" fr" data-mobile-link >Fonctionnalités</a >
59+ <a href =" #features" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" en" data-mobile-link >Features</a >
60+ <a href =" #security" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" fr" data-mobile-link >Sécurité</a >
61+ <a href =" #security" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" en" data-mobile-link >Security</a >
62+ <a href =" #crypto" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" fr" data-mobile-link >Cryptographie</a >
63+ <a href =" #crypto" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-lang =" en" data-mobile-link >Cryptography</a >
64+ <a href ={ ` ${base }how-it-works ` } class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" >How it Works</a >
65+ <a href ={ ` ${base }changelog ` } class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" >Changelog</a >
66+ <a href =" #faq" class =" py-2 text-text-secondary hover:text-phantom-light transition-colors" data-mobile-link >FAQ</a >
67+ <a href =" https://github.com/DevBot667/SecureChat" target =" _blank" rel =" noopener noreferrer" class =" py-2 text-phantom-light hover:text-phantom transition-colors flex items-center gap-2" >
68+ <svg class =" w-4 h-4" fill =" currentColor" viewBox =" 0 0 24 24" ><path d =" M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z" /></svg >
69+ GitHub
70+ </a >
4771 </div >
4872 </div >
4973 </nav >
@@ -525,6 +549,24 @@ const base = import.meta.env.BASE_URL.replace(/\/?$/, '/');
525549
526550 <!-- ===== SCRIPTS ===== -->
527551 <script >
552+ // ---- Mobile Menu Toggle ----
553+ const mobileMenuBtn = document.getElementById('mobile-menu-btn');
554+ const mobileMenu = document.getElementById('mobile-menu');
555+ mobileMenuBtn?.addEventListener('click', () => {
556+ const nav = mobileMenuBtn.closest('nav');
557+ nav?.classList.toggle('menu-open');
558+ mobileMenu?.classList.toggle('hidden');
559+ mobileMenu?.classList.toggle('open');
560+ });
561+ document.querySelectorAll('[data-mobile-link]').forEach(link => {
562+ link.addEventListener('click', () => {
563+ const nav = mobileMenuBtn?.closest('nav');
564+ nav?.classList.remove('menu-open');
565+ mobileMenu?.classList.add('hidden');
566+ mobileMenu?.classList.remove('open');
567+ });
568+ });
569+
528570 // ---- Language Switcher ----
529571 const langToggle = document.getElementById('lang-toggle');
530572 let currentLang = 'fr';
0 commit comments