|
---
|
|
import { MARKETPLACE_ENABLED } from "astro:env/client";
|
|
import { Icon } from "astro-icon/components";
|
|
import { getLangFromUrl, useTranslations } from "../i18n/utils";
|
|
import { isMobileNavOpen } from "../store.js";
|
|
import HeaderButton from "./HeaderButton.astro";
|
|
import Logo from "./Logo.astro";
|
|
const lang = getLangFromUrl(Astro.url);
|
|
const t = useTranslations(lang);
|
|
---
|
|
|
|
<div
|
|
id="navbar"
|
|
class="flex h-16 flex-row items-center justify-end border-b-2 border-border-color bg-navbar-color px-4 z-30 relative"
|
|
>
|
|
<div class="w-1/8">
|
|
{}
|
|
<div class="relative flex-row hidden lg:flex">
|
|
<HeaderButton text={t("header.home")} route={`/${lang}/`}>
|
|
<Icon
|
|
name="ph:house-bold"
|
|
class="h-6 w-6 text-text-color transition duration-500 group-hover:text-text-hover-color md:h-6 md:w-6"
|
|
/>
|
|
</HeaderButton>
|
|
<HeaderButton text={t("header.games")} route={`/${lang}/games/`}>
|
|
<Icon
|
|
name="ph:cube"
|
|
class="h-6 w-6 text-text-color transition duration-500 group-hover:text-text-hover-color md:h-6 md:w-6"
|
|
/>
|
|
{
|
|
|
|
}
|
|
</HeaderButton>
|
|
<HeaderButton
|
|
text={t("header.settings")}
|
|
route={`/${lang}/settings/appearance`}
|
|
>
|
|
<Icon
|
|
name="ph:wrench-fill"
|
|
class="h-6 w-6 text-text-color transition duration-500 group-hover:text-text-hover-color md:h-6 md:w-6"
|
|
/>
|
|
</HeaderButton>
|
|
{MARKETPLACE_ENABLED &&
|
|
<HeaderButton text={t("header.catalog")} route={`/${lang}/catalog/1`}>
|
|
<Icon
|
|
name="ph:shopping-bag-open-fill"
|
|
class="h-6 w-6 text-text-color transition duration-500 group-hover:text-text-hover-color md:h-6 md:w-6"
|
|
/>
|
|
</HeaderButton>
|
|
}
|
|
<HeaderButton text={t("header.morelinks")}>
|
|
<Icon
|
|
name="ph:link-bold"
|
|
class="h-6 w-6 text-text-color transition duration-500 group-hover:text-text-hover-color md:h-6 md:w-6"
|
|
/>
|
|
</HeaderButton>
|
|
</div>
|
|
{}
|
|
<div class="flex lg:hidden" id="mobileNavTrigger" transition:persist>
|
|
<Icon
|
|
name="ph:text-align-justify-bold"
|
|
class="h-9 w-9 text-text-color"
|
|
id="hamburger_menu"
|
|
/>
|
|
<Icon
|
|
name="ph:caret-right-bold"
|
|
class="h-9 w-9 text-text-color hidden"
|
|
id="right_caret"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
import { isMobileNavOpen } from "../store.js";
|
|
let isMobileNavOpenLocal = true;
|
|
const right_caret = document.getElementById("right_caret");
|
|
const hamburger_menu = document.getElementById("hamburger_menu");
|
|
const mobileNavTrigger = document.getElementById("mobileNavTrigger");
|
|
|
|
|
|
|
|
function openDialog() {
|
|
if (isMobileNavOpenLocal == false) {
|
|
isMobileNavOpen.set(true);
|
|
if (hamburger_menu && right_caret) {
|
|
hamburger_menu.style.display = "none";
|
|
right_caret.style.display = "block";
|
|
}
|
|
} else {
|
|
isMobileNavOpen.set(false);
|
|
if (hamburger_menu && right_caret) {
|
|
hamburger_menu.style.display = "block";
|
|
right_caret.style.display = "none";
|
|
}
|
|
}
|
|
}
|
|
|
|
isMobileNavOpen.subscribe((open) => {
|
|
if (open) {
|
|
isMobileNavOpenLocal = true;
|
|
if (hamburger_menu && right_caret) {
|
|
hamburger_menu.style.display = "none";
|
|
right_caret.style.display = "block";
|
|
}
|
|
} else {
|
|
isMobileNavOpenLocal = false;
|
|
if (hamburger_menu && right_caret) {
|
|
hamburger_menu.style.display = "block";
|
|
right_caret.style.display = "none";
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
|
|
if (mobileNavTrigger) {
|
|
mobileNavTrigger.addEventListener("click", openDialog);
|
|
}
|
|
</script>
|
|
|