"use client"; // Sihirbazın 3 adımlık seçim gövdesi. Hem ana sayfadaki hero modalında hem de // /sonuc'taki sihirbaz modalında kullanılır; seçim state'ini kendi tutar, // tamamlanınca onTamamla(secimler) çağırır. import { useState } from "react"; import { ArrowLeft, ArrowRight, Sparkles, X } from "lucide-react"; import { toast } from "sonner"; import { cities } from "turkey-map-react/lib/data"; import { Button } from "@/components/ui/button"; import { IlSecimHaritasi } from "@/components/il-secim-haritasi"; import { normalizeIlAdi } from "@/lib/harita"; import type { SihirbazFacetleri } from "@/lib/db"; import { ONCELIKLER, UNIVERSITE_TIPI_ETIKET, type SihirbazSecimleri, type UniversiteTipi, } from "@/lib/sihirbaz"; export function Cip({ secili, onClick, children, }: { secili: boolean; onClick: () => void; children: React.ReactNode; }) { return ( ); } // Haritada karşılığı olan iller (KKTC/yurtdışı kampüsler çip olarak kalır) const HARITA_ILLERI = new Set(cities.map((c) => normalizeIlAdi(c.name))); export function SihirbazAdimlar({ facetler, baslangicSecimler, sonButonEtiketi, onTamamla, }: { facetler: SihirbazFacetleri; baslangicSecimler?: SihirbazSecimleri | null; sonButonEtiketi: string; onTamamla: (secimler: SihirbazSecimleri) => void; }) { const [adim, setAdim] = useState(0); const [kategoriler, setKategoriler] = useState( baslangicSecimler?.kategoriler ?? [], ); const [iller, setIller] = useState(baslangicSecimler?.iller ?? []); const [universiteTipi, setUniversiteTipi] = useState( baslangicSecimler?.universiteTipi ?? "farketmez", ); const [oncelikler, setOncelikler] = useState( baslangicSecimler?.oncelikler ?? [], ); function listeDegistir( liste: string[], setListe: (v: string[]) => void, deger: string, maks?: number, ) { if (liste.includes(deger)) { setListe(liste.filter((x) => x !== deger)); } else { if (maks && liste.length >= maks) { toast.info(`En fazla ${maks} seçebilirsin.`); return; } setListe([...liste, deger]); } } const adimGecerli = adim === 0 ? kategoriler.length > 0 : true; return (
{[0, 1, 2].map((i) => ( ))} Adım {adim + 1}/3
{adim === 0 ? (

Hangi alanlara ilgi duyuyorsun?

Sıralamanla ulaşabileceğin alanlar. En az bir tane seç.

{facetler.kategoriler.map((k) => ( listeDegistir(kategoriler, setKategoriler, k.ad)} > {k.ad} {k.adet} ))}
) : adim === 1 ? (

Nerede okumak istersin?

Haritadan dokunarak seç (en fazla 5 il). İstersen boş bırak, fark etmez.

HARITA_ILLERI.has(i.il))} secili={iller} onToggle={(il) => listeDegistir(iller, setIller, il, 5)} />
{iller.length > 0 ? (
Seçtiklerin: {iller.map((il) => ( ))}
) : null} {facetler.iller.some((i) => !HARITA_ILLERI.has(i.il)) ? (

Harita dışı (KKTC vb.)

{facetler.iller .filter((i) => !HARITA_ILLERI.has(i.il)) .map((i) => ( listeDegistir(iller, setIller, i.il, 5)} > {i.il.toLocaleLowerCase("tr-TR")} {i.adet} ))}
) : null}
) : (

Üniversite tipi & öncelikler

Bunlar listenin dengesini belirler.

Üniversite tipi

{facetler.uniturler.map((u) => ( setUniversiteTipi( universiteTipi === u.grup ? "farketmez" : u.grup, ) } > {UNIVERSITE_TIPI_ETIKET[u.grup]} {u.adet} ))} setUniversiteTipi("farketmez")} > Fark etmez

Senin için önemli olan

{ONCELIKLER.map((o) => ( listeDegistir(oncelikler, setOncelikler, o)} > {o} ))}
)}
{adim < 2 ? ( ) : ( )}
); }