refactor: kullanici feature'ı — giriş kartları feature bileşenlerine çıktı (Faz 4)

- giris-form, giris-baslik, user-nav, sign-out-button
  features/kullanici/components/ altına taşındı
- /giris'in session+redirect+callback temizliği GirisKarti'ya (async),
  /giris/dogrula'nın inline doğrulama formu + guvenliYol kalkanı
  DogrulaKarti'ya çıkarıldı; skeleton'lar aynı dosyada
- İki sayfa senkron: searchParams.then() + sayfada Suspense;
  app/giris/loading.tsx silindi (geometrisi GirisKartiSkeleton'da yaşıyor)
- site-header'ın UserNav importu güncellendi; mevcut Suspense sınırı yerinde
- Davranış değişikliği yok

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-08-08 01:22:31 +03:00
parent e3cf141f55
commit 8b5aa8c8a6
10 changed files with 254 additions and 195 deletions

View File

@@ -0,0 +1,40 @@
"use client";
import { TypingAnimation } from "@/components/ui/typing-animation";
// Hepsi aynı şablon: "Giriş yap, çünkü …"
const FUNNEL_MESAJLARI = [
", çünkü listen seni bekliyor",
", çünkü tercihine 1 adım kaldı",
", çünkü seçimlerin hazır",
", çünkü 5 kredin yanında",
", çünkü kaçırmak istemezsin",
", çünkü listen hemen üretilsin",
];
/**
* Giriş sayfası başlığı. Kullanıcı sihirbazdan (callback /sonuc'a dönüyorsa)
* geldiyse sabit "Giriş yap" + typewriter hook'ları; diğer girişlerde
* yalnız sabit başlık.
*/
export function GirisBaslik({ funnel }: { funnel: boolean }) {
if (!funnel) {
return <h1 className="font-heading text-xl font-bold">Giriş yap</h1>;
}
return (
<h1 className="flex flex-wrap items-baseline font-heading text-xl font-bold leading-tight">
<span className="shrink-0">Giriş yap</span>
<TypingAnimation
as="span"
words={FUNNEL_MESAJLARI}
loop
startOnView={false}
typeSpeed={42}
deleteSpeed={22}
pauseDelay={2400}
className="min-h-[1.25em] font-heading text-xl font-bold leading-tight tracking-[-0.02em] text-primary"
/>
</h1>
);
}