Files
kolaytercih/src/components/site-header.tsx
bilalgursen 17606902bd feat(header): Beta sürüm rozeti main'den alındı; v2 dalı 2.0.0
main'deki b2bab50 ile aynı içerik (surum.ts, surum-rozeti.tsx, header, AGENTS.md
sürümleme kuralı, DESIGN.md §2.2/§4.14); bu dal 2.0.0 geliştirme sürümü.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 23:04:59 +03:00

54 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Suspense } from "react";
import Link from "next/link";
import { AnimasyonluMark } from "@/components/animasyonlu-mark";
import { SurumRozeti } from "@/components/surum-rozeti";
import { KatalogArama } from "@/features/katalog/components/katalog-arama";
import { UserNav, UserNavFallback } from "@/features/kullanici/components/user-nav";
import { getRehberAramaKayitlari } from "@/lib/rehber";
export function SiteHeader() {
return (
<header className="sticky top-4 z-50 mt-4 sm:top-6 sm:mt-6 print:hidden">
{/* lg altında 2 satır: logo+UserNav / sıralama+ara. lg+: tek satır, ortada nav. */}
<div className="relative mx-auto flex max-w-6xl flex-wrap items-center justify-between gap-x-2 gap-y-2 px-3 sm:gap-x-3 sm:px-4 lg:h-16 lg:flex-nowrap">
{/* Sayfa başlığı yuvası (NavBaslik): bir sayfa <html>'e
data-nav-baslik koyunca yazı logosu yukarı kayıp söner, yuvaya
sayfanın başlığı (ör. üniversite logosu + adı) gelir. Yuva Link'in
dışında: içine gelen düğme bağlantı içinde bağlantı olmasın.
lg'de ortadaki nav hapına taşmasın diye genişliği sınırlı. */}
<div className="relative order-1 flex min-w-0 flex-1 items-center lg:flex-none">
<Link
href="/"
aria-label="KolayTercih"
className="group flex min-w-0 shrink items-center font-bricolage"
>
{/* Inline animasyonlu mark: Link'teki `group` sayesinde hover'da
kareler danışman panelindeki nabız animasyonuyla canlanır. */}
<AnimasyonluMark sadeceHover className="size-8 sm:size-11" />
<span className="truncate transition-[opacity,translate] duration-300 ease-out in-data-[nav-baslik]:pointer-events-none in-data-[nav-baslik]:-translate-y-2 in-data-[nav-baslik]:opacity-0 motion-reduce:transition-opacity">
<span className="text-lg font-light tracking-tighter sm:text-3xl">
Kolay
</span>
<span className="text-lg font-semibold tracking-tighter sm:text-3xl">
Tercih
</span>
</span>
{/* Beta rozeti + sürüm (surum-rozeti.tsx); yazı logosuyla aynı
fade'i taşır ki NavBaslik yuvası açılınca birlikte sönsün. */}
<SurumRozeti className="ml-2 transition-[opacity,translate] duration-300 ease-out in-data-[nav-baslik]:pointer-events-none in-data-[nav-baslik]:-translate-y-2 in-data-[nav-baslik]:opacity-0 motion-reduce:transition-opacity sm:ml-3" />
</Link>
<div
id="nav-baslik-yuvasi"
className="pointer-events-none absolute inset-y-0 right-0 left-9 flex min-w-0 items-center sm:left-12 lg:right-auto lg:w-52 xl:w-72"
/>
</div>
<KatalogArama rehberler={getRehberAramaKayitlari()} />
{/* UserNav session+DB bekler; Suspense dışına taşarsa tüm kabuk bloklanır */}
<Suspense fallback={<UserNavFallback />}>
<UserNav />
</Suspense>
</div>
</header>
);
}