com
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user