This commit is contained in:
2025-11-19 00:49:53 +01:00
parent 553fefbeaa
commit 0834e1f733
12 changed files with 725 additions and 524 deletions

View File

@@ -1,75 +1,62 @@
<?php
// public/partials/header.php
// Fallback, falls $currentLang nicht gesetzt ist
if (!isset($currentLang)) {
$currentLang = 'en';
}
$supportedLangs = [
'de' => 'Deutsch',
'en' => 'English',
'it' => 'Italiano',
'fr' => 'Français',
];
/**
* Baut eine URL und hängt immer ?lang=<code> dran.
* $path sollte mit / beginnen, z.B. "/", "/fakecheck/", "/impressum".
*/
function usbcheck_url_with_lang(string $path, string $lang): string
{
$path = $path ?: '/';
$separator = str_contains($path, '?') ? '&' : '?';
return $path . $separator . 'lang=' . urlencode($lang);
}
?>
<header class="site-header">
<div class="container header-inner">
<a href="<?php echo htmlspecialchars(usbcheck_url_with_lang('/', $currentLang)); ?>" class="logo-wrap">
<img src="/img/logo.png" alt="usbcheck.it Logo" class="logo-img">
</a>
<header class="sticky top-0 z-40 border-b border-brand-border/70 backdrop-blur bg-brand-bg/85">
<div class="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8 flex items-center justify-between h-16">
<!-- Logo -->
<div class="flex items-center gap-3">
<a href="/?lang=<?= htmlspecialchars($lang) ?>" class="flex items-center gap-3">
<img src="/assets/img/logo_slogan.png" alt="usbcheck.it Logo" class="h-9 w-auto">
<nav class="main-nav">
<a href="<?php echo htmlspecialchars(usbcheck_url_with_lang('/', $currentLang)); ?>#how-it-works"
class="nav-link"
data-i18n="nav_how_it_works"></a>
<div class="hidden sm:flex flex-col leading-tight">
<span class="font-heading font-bold text-sm uppercase tracking-[0.18em] text-brand-muted">
usbcheck.it
</span>
<span class="text-xs text-brand-muted" data-i18n="header_slogan">
Test USB drives
</span>
</div>
</a>
</div>
<a href="<?php echo htmlspecialchars(usbcheck_url_with_lang('/', $currentLang)); ?>#features"
class="nav-link"
data-i18n="nav_features"></a>
<!-- Navigation -->
<div class="flex items-center gap-6">
<a href="<?php echo htmlspecialchars(usbcheck_url_with_lang('/', $currentLang)); ?>#pricing"
class="nav-link"
data-i18n="nav_pricing"></a>
<nav class="hidden md:flex items-center gap-6 text-xs font-medium text-brand-muted uppercase tracking-[0.18em]">
<a href="#how" class="hover:text-brand-primary transition-colors" data-i18n="nav_how"></a>
<a href="#problem" class="hover:text-brand-primary transition-colors" data-i18n="nav_problem"></a>
<a href="#features" class="hover:text-brand-primary transition-colors" data-i18n="nav_features"></a>
<a href="#security" class="hover:text-brand-primary transition-colors" data-i18n="nav_security"></a>
<a href="#faq" class="hover:text-brand-primary transition-colors" data-i18n="nav_faq"></a>
</nav>
<a href="<?php echo htmlspecialchars(usbcheck_url_with_lang('/', $currentLang)); ?>#faq"
class="nav-link"
data-i18n="nav_faq"></a>
</nav>
<div class="header-actions">
<div class="lang-switch" data-current-lang="<?php echo htmlspecialchars($currentLang); ?>">
<button id="lang-current" class="lang-current">
<?php echo strtoupper(htmlspecialchars($currentLang)); ?>
<!-- Language Switch -->
<div class="relative">
<button id="langCurrent"
class="text-xs uppercase tracking-[0.18em] text-brand-muted hover:text-brand-primary transition">
<?= strtoupper($lang) ?>
</button>
<div id="lang-menu" class="lang-menu hidden">
<?php foreach ($supportedLangs as $code => $label): ?>
<button data-lang="<?php echo htmlspecialchars($code); ?>">
<?php echo htmlspecialchars($label); ?>
</button>
<?php endforeach; ?>
<div id="langMenu"
class="hidden absolute right-0 mt-2 w-28 rounded-md bg-brand-surface border border-brand-border shadow-lg p-2 text-xs">
<a href="?lang=de" class="block py-1 hover:text-brand-primary">Deutsch</a>
<a href="?lang=en" class="block py-1 hover:text-brand-primary">English</a>
<a href="?lang=it" class="block py-1 hover:text-brand-primary">Italiano</a>
<a href="?lang=fr" class="block py-1 hover:text-brand-primary">Français</a>
</div>
</div>
<button id="login-button"
class="btn btn-outline"
data-i18n="btn_login"></button>
<!-- Login Button / Avatar -->
<button id="loginButton"
class="relative inline-flex items-center justify-center rounded-full bg-brand-primary px-4 py-1.5 text-xs font-semibold uppercase tracking-[0.18em] text-brand-bg shadow-soft hover:bg-cyan-400 transition-colors"
data-i18n="btn_login">
</button>
<div id="user-avatar" class="user-avatar hidden" title="Account">
<!-- Standard: Initialen, später durch Bild ersetzbar -->
<span id="user-avatar-initials">U</span>
</div>
<button id="userAvatar"
class="hidden h-9 w-9 rounded-full border border-brand-border bg-brand-surface flex items-center justify-center text-xs font-semibold text-brand-text shadow-soft hover:border-brand-primary transition"
aria-label="Mein Konto">
<span><?= strtoupper(substr($userInitials ?? 'U', 0, 2)) ?></span>
</button>
</div>
</div>
</header>