Chrome, view-transition pseudo elemanında dosyadan url() ile yüklenen ikinci maske katmanını (boyu 0'dan büyükken) tümden şeffaf çiziyor; iki SVG de data URI olarak globals.css'e gömüldü. Koreografi (önceki oturum): işaret ekranın altından ortaya süzülür, merkezden büyür, kareler arası boşluklar dolu çizimle merkezden dışa kapanır; motion sürer. Geçici console tanıları kaldırıldı, iptal edilen geçişin ready reddi yakalanıyor. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
56 lines
3.2 KiB
TypeScript
56 lines
3.2 KiB
TypeScript
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>
|
||
</Link>
|
||
{/* Beta rozeti + sürüm (surum-rozeti.tsx): /surum-notlari'na giden
|
||
ayrı bir Link — logo Link'inin içinde bağlantı içinde bağlantı
|
||
olmasın. 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" />
|
||
<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>
|
||
);
|
||
}
|