import Link from "next/link"; import { ClipboardList, Coins } from "lucide-react"; import { getCurrentUser } from "@/lib/session"; import { ListemButonu } from "@/features/liste/components/listem-butonu"; import { ListeSenkron } from "@/features/liste/components/liste-senkron"; import { RybbitIdentify } from "@/components/rybbit-identify"; import { GirisLinki } from "./giris-linki"; import { SignOutButton } from "./sign-out-button"; /** * Suspense fallback'i: girişsiz görünümle aynı yükseklik/genişlikte sessiz * bir pill — session sorgusu akarken header zıplamasın (CLS yok). */ export function UserNavFallback() { return (
); } export async function UserNav() { const u = await getCurrentUser(); // Manuel liste localStorage'ta yaşadığı için Listem girişsiz de çalışır if (!u) { return (
); } return (
{/* Yapay Zeka raporunun kalıcı kapısı: girişli kullanıcı /listem'i navbar'dan bulamıyordu (çekmece butonu manuel liste boşken hiç görünmüyor). Rapor var mı diye DB'ye sorulmuyor — navbar'ın TTFB'si bozulmasın; liste boşsa sayfadaki ListemBosCta karşılıyor. Sınıf seti kredi pill'iyle birebir aynı (tek kaynak). */} {/* Etiket her genişlikte gizli; anlamı yukarıdaki aria-label + title taşıyor. Konteyner `max-w-6xl` = 1152 px'te kilitli olduğu için `xl` (1280 px) yeni yer AÇMIYOR, ama eski görünürlük deseni tam orada iki etiketi birden geri getiriyordu (+229 px) ve ortadaki `absolute` nav ile çakışma üretiyordu. Sağ kümenin bütçesi ~304 px = dört ikon-pill; bir etiket bile fazla. ListemButonu:38 ile aynı desen (tek kaynak). */} Yapay Zeka Listem {u.creditBalance} {/* Etiket yalnızca md–lg arası: daha darda logo kesiliyor, lg üstünde ortadaki nav ile yer dar (konteyner 1152'de sabit). İkon+sayı ve title her genişlikte anlamı taşıyor. */} kredi
); }