From fcd002d9af117fab51b84091ba1dde337b083c16 Mon Sep 17 00:00:00 2001 From: tuyenio Date: Tue, 23 Jun 2026 11:08:17 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20port=20SiteHeader=20v=E1=BB=9Bi=20brand?= =?UTF-8?q?ing=20Nh=C6=B0=20Qu=E1=BB=B3nh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/components/landing/SiteHeader.tsx | 109 ++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/app/components/landing/SiteHeader.tsx diff --git a/src/app/components/landing/SiteHeader.tsx b/src/app/components/landing/SiteHeader.tsx new file mode 100644 index 0000000..5b7ae06 --- /dev/null +++ b/src/app/components/landing/SiteHeader.tsx @@ -0,0 +1,109 @@ +"use client"; + +import Link from "next/link"; +import { Landmark, Menu, PlayCircle, X } from "lucide-react"; +import { usePathname } from "next/navigation"; +import { useState } from "react"; +import { activeTour, navigation } from "@/app/content"; + +export function SiteHeader() { + const pathname = usePathname(); + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + + return ( +
+ + +
+
+ {navigation.map((item) => { + const isActive = item.href === "/" ? pathname === item.href : pathname.startsWith(item.href); + return ( + setMobileMenuOpen(false)} + className={`rounded-[8px] border px-4 py-3 text-sm font-medium transition-colors ${ + isActive + ? "border-[var(--primary)]/35 bg-[var(--surface-glass-strong)] text-[var(--primary)]" + : "border-[var(--surface-border)] bg-[var(--surface-glass)] text-[var(--tour-ink)] hover:bg-[var(--surface-glass-strong)]" + }`} + > + {item.label} + + ); + })} + setMobileMenuOpen(false)} + className="inline-flex items-center justify-center gap-2 rounded-full border border-[rgb(214_180_104_/_0.42)] bg-[rgb(16_57_43_/_0.94)] px-4 py-3 text-sm font-bold text-[var(--primary-foreground)]" + > + + Khám phá VR360 + +
+
+
+ ); +}