Files
Montech_Landing/apps/landing/components/SiteNavbar.vue
T
MahdiandCursor e9eafdaabc Fix landing 500 from invalid Asia/Esfahan timezone.
Normalize Iran city aliases to Asia/Tehran, harden the clock, and make settings timezone a safe select.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-30 21:25:45 +03:30

40 lines
1.5 KiB
Vue

<template>
<header class="fixed inset-x-0 top-0 z-50 border-b border-white/[0.06] bg-ink/70 backdrop-blur-md">
<div class="mx-auto flex max-w-[1500px] items-center justify-between px-6 py-4 md:px-10">
<NuxtLink to="/" class="font-display text-lg font-extrabold tracking-tight">
{{ brand }}<span class="align-super text-[0.55em] text-volt">®</span>
</NuxtLink>
<nav class="hidden items-center gap-6 text-sm text-ash md:flex">
<a href="#services" class="hover:text-volt">خدمات</a>
<a href="#work" class="hover:text-volt">نمونه کارها</a>
<a href="#team" class="hover:text-volt">تیم</a>
<NuxtLink to="/blog" class="hover:text-volt">بلاگ</NuxtLink>
<NuxtLink to="/gallery" class="hover:text-volt">گالری</NuxtLink>
<a href="#contact" class="text-bone hover:text-volt">تماس</a>
</nav>
<span class="text-xs text-ash tabular-nums" dir="ltr">{{ time }}</span>
</div>
</header>
</template>
<script setup lang="ts">
import { formatClock } from "~/utils/timezone";
const props = defineProps<{ brand?: string; timezone?: string }>();
const brand = computed(() => props.brand || "منتک");
const time = ref("");
onMounted(() => {
const tick = () => {
try {
time.value = formatClock(new Date(), props.timezone);
} catch {
time.value = "";
}
};
tick();
const id = setInterval(tick, 1000);
onUnmounted(() => clearInterval(id));
});
</script>