"use client"; import { useState } from "react"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; import { ArrowRight, ChartNoAxesCombined, Database, ListChecks, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { TypingAnimation } from "@/components/ui/typing-animation"; import { SIHIRBAZ_AC_EVENT, sonucHref } from "@/lib/sihirbaz"; import { profilToplamaAc, useTercihProfili, } from "@/components/manuel-liste/profil-kapisi-store"; const FUNNEL_METINLERI = [ "Sıralamana en uygun listeyi birlikte kuralım.", "Geleceğin 24 satırlık bir plana sığar.", "Gerçek YÖK Atlas verisiyle güvenle seç.", "Her tercihinin bir nedeni olsun.", "Riskleri biz hesaplayalım, kararı sen ver.", "Sana uygun bölümler bir adım uzağında.", "Dengeli bir liste, rahat bir tercih dönemi.", "Tercihlerini şansa bırakma.", "Doğru strateji, doğru yerleşme.", "Hayalindeki bölüm için doğru plan.", "Verilerle konuşan bir tercih listesi.", "Üç adımda sana özel 24 tercih.", "Tercih dönemini stressiz geçir.", "Geçen yılın verisi, senin avantajın.", "Güvenli ve iddialı tercihleri dengele.", "Sıralaman ne söylüyor? Birlikte bakalım.", "Her satırı senin için hesaplıyoruz.", "Akıllı tercih, içi rahat bir bekleyiş.", "Yerleşme ihtimalini görerek seç.", "Sana özel liste birkaç dakikada hazır.", "İlgi alanların ve şehrin, tek listede.", "Boş kalan tercih, kaçan fırsattır.", "Uzman işi bir liste, senin onayınla.", "Kararını veriye dayandır.", "Doğru tercih, doğru bilgiyle başlar.", "Listeni bugün kur, için rahat olsun.", "Yerleşme riskin renklerle önünde.", "En önemli 24 kararını birlikte verelim.", "Senin sıralaman, sana özel plan.", "İyi bir liste, iyi bir başlangıçtır.", ]; /** Fisher-Yates ile kopya üzerinde karıştırır; her açılışta farklı sıra. */ function karistir(dizi: readonly T[]): T[] { const kopya = [...dizi]; for (let i = kopya.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [kopya[i], kopya[j]] = [kopya[j], kopya[i]]; } return kopya; } const KANITLAR = [ { ikon: ListChecks, etiket: "24 tercih" }, { ikon: ChartNoAxesCombined, etiket: "Risk analizi" }, { ikon: Database, etiket: "YÖK Atlas verisi" }, ]; /** * Arama modalının açılış ekranında yaşayan satın alım funnel kartı. * Rastgele sırayla yazılıp silinen funnel metinleriyle adayı sihirbaza * iter: /sonuc üzerindeyse oradaki orkestratörü olayla açar, başka * sayfadaysa profile göre /sonuc'a (sihirbaz açık) yönlendirir ya da * sıralama kapısını açar. Modal yalnızca açıkken mount olduğundan * karıştırma her açılışta yenilenir ve hydration sorunu yaratmaz. */ export function AramaFunnelKarti({ onSec }: { onSec: () => void }) { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const profil = useTercihProfili(); const [metinler] = useState(() => karistir(FUNNEL_METINLERI)); function sihirbazaGit() { onSec(); // Orkestratör (SihirbazBolumu) yalnızca /sonuc?sira= geçerliyken monte; // sırasız /sonuc'ta (SiraGerekli görünümü) olay boşa gider — kapıya düş. if (pathname === "/sonuc" && searchParams.get("sira")) { window.dispatchEvent(new Event(SIHIRBAZ_AC_EVENT)); return; } if (profil) { router.push(sonucHref(profil, { sihirbaz: "1" })); return; } // Yapay Zeka niyetli CTA: kapı tamamlanınca /sonuc'ta üretim akışı devam // etmeli ("sonuc" hedefi ücretsiz tabloda bırakıyor, liste hiç kurulmuyordu). profilToplamaAc("sihirbaz"); } return (
{KANITLAR.map(({ ikon: Ikon, etiket }) => ( {etiket} ))}
); }