navbar.html
151 lignes · 7737 octets
<!-- Navbar Component for Feature 007 --> <!-- Uses DaisyUI navbar classes --> <nav class="navbar bg-base-200 border-b border-base-300 shadow-sm"> <div class="container mx-auto px-4"> <div class="navbar-start"> <!-- Logo --> <a href="/home" class="btn btn-ghost normal-case text-xl"> <img src="/static/images/logo.svg" alt="{{ app_name }}" class="h-8 w-8 mr-2"> <span class="text-primary font-bold">{{ app_name }}</span> </a> </div> <!-- Desktop Navigation (centered) --> <div class="navbar-center hidden md:flex"> {% include "components/navigation.html" %} </div> <!-- User Menu (right) --> <div class="navbar-end"> <!-- Language Selector (Feature 014) --> <div class="hidden md:block mr-2"> <div class="dropdown dropdown-end"> <label tabindex="0" class="btn btn-ghost btn-sm gap-2"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129" /> </svg> <span id="navbar-lang-display">FR</span> <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /> </svg> </label> <ul tabindex="0" class="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow"> <li> <a href="#" onclick="return window.changeLanguage('fr');" id="lang-fr"> 🇫🇷 Français </a> </li> <li> <a href="#" onclick="return window.changeLanguage('en');" id="lang-en"> 🇬🇧 English </a> </li> <li> <a href="#" onclick="return window.changeLanguage('de');" id="lang-de"> 🇩🇪 Deutsch </a> </li> <li> <a href="#" onclick="return window.changeLanguage('es');" id="lang-es"> 🇪🇸 Español </a> </li> </ul> </div> </div> <!-- Desktop User Menu --> <div class="hidden md:block"> {% include "components/user_menu.html" %} </div> <!-- Mobile Menu Button --> <div class="md:hidden" x-data="{ mobileMenuOpen: false }"> <button @click="mobileMenuOpen = !mobileMenuOpen" class="btn btn-ghost btn-circle"> <svg class="h-6 w-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path x-show="!mobileMenuOpen" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/> <path x-show="mobileMenuOpen" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> </svg> </button> <!-- Mobile Menu Dropdown --> <div x-show="mobileMenuOpen" @click.away="mobileMenuOpen = false" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" class="absolute top-16 right-4 mt-2 w-64 bg-base-100 rounded-lg shadow-lg border border-base-300 py-2 z-50"> <!-- Mobile Navigation --> <div class="px-4 py-2"> {% include "components/navigation.html" %} </div> <!-- Mobile Language Selector --> <div class="border-t border-base-300 mt-2 pt-2 px-4"> <div class="dropdown dropdown-top"> <label tabindex="0" class="btn btn-ghost btn-sm w-full justify-between"> <span class="flex items-center gap-2"> <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129" /> </svg> <span id="navbar-lang-display-mobile">FR</span> </span> <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" /> </svg> </label> <ul tabindex="0" class="dropdown-content menu bg-base-100 rounded-box z-[1] w-full p-2 shadow"> <li> <a href="#" onclick="return window.changeLanguage('fr');" id="lang-fr-mobile"> 🇫🇷 Français </a> </li> <li> <a href="#" onclick="return window.changeLanguage('en');" id="lang-en-mobile"> 🇬🇧 English </a> </li> <li> <a href="#" onclick="return window.changeLanguage('de');" id="lang-de-mobile"> 🇩🇪 Deutsch </a> </li> <li> <a href="#" onclick="return window.changeLanguage('es');" id="lang-es-mobile"> 🇪🇸 Español </a> </li> </ul> </div> </div> <!-- Mobile User Info --> <div class="border-t border-base-300 mt-2 pt-2"> <ul class="menu menu-vertical w-full"> {% include "fragments/user_menu_dropdown.html" %} </ul> </div> </div> </div> </div> </div> </nav>
GitRust