import Link from "next/link"; import type { Metadata } from "next"; import { ArrowLeft, MapPin, Minus, Rocket, Scale, ShieldCheck, Sparkles, TrendingDown, TrendingUp, X, } from "lucide-react"; import { PUAN_TURLERI, searchByRank, type Program, type PuanTuruKey, } from "@/lib/db"; import { BolgeHaritasi, type IlOzeti } from "@/components/bolge-haritasi"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; export const metadata: Metadata = { title: "Sıralamana Uygun Programlar — TercihAI", }; const TUR_LABELS: Record = { say: "Sayısal", ea: "Eşit Ağırlık", soz: "Sözel", dil: "Dil", tyt: "TYT (Önlisans)", }; function TrendIcon({ p }: { p: Program }) { if (p.sira2025 == null || p.sira2024 == null) { return ; } const degisim = (p.sira2024 - p.sira2025) / p.sira2024; // taban sıralaması küçülüyorsa bölüm zorlaşıyor demektir if (degisim > 0.05) { return ( zorlaşıyor ); } if (degisim < -0.05) { return ( rahatlıyor ); } return ( stabil ); } function fmt(n: number | null): string { return n == null ? "—" : n.toLocaleString("tr-TR"); } function ProgramTable({ programs }: { programs: Program[] }) { if (programs.length === 0) { return (

Bu dilimde uygun program bulunamadı.

); } return (
Program Üniversite 2025 taban sırası 2024 Trend Kontenjan {programs.map((p) => ( {p.isim} {p.fakulte ? ( {p.fakulte} ) : null} {p.universite} {p.il} {p.unitur ? ` · ${p.unitur.toLocaleLowerCase("tr-TR")}` : ""} {fmt(p.sira2025)} {fmt(p.sira2024)} {fmt(p.kontenjan2025)} ))}
); } export default async function SonucPage({ searchParams, }: { searchParams: Promise<{ sira?: string; tur?: string; il?: string }>; }) { const params = await searchParams; const sira = Number.parseInt(params.sira ?? "", 10); const turKey: PuanTuruKey = params.tur && params.tur in PUAN_TURLERI ? (params.tur as PuanTuruKey) : "say"; const seciliIl = params.il?.trim() || null; if (!Number.isFinite(sira) || sira < 1 || sira > 4_000_000) { return (

Geçerli bir sıralama gerekli

Sonuçları görebilmek için ana sayfadan YKS başarı sıralamanı gir.

); } const results = searchByRank(sira, turKey, { il: seciliIl ?? undefined, }); // Harita her zaman filtresiz dağılımı gösterir ki il değiştirilebilsin const haritaSonuclari = seciliIl ? searchByRank(sira, turKey) : results; // Harita için il bazında özet (81 il haritada; KKTC/yurtdışı ayrıca listelenir) const iller: Record = {}; const dilimler = [ ["hayal", haritaSonuclari.hayal], ["dengeli", haritaSonuclari.dengeli], ["garanti", haritaSonuclari.garanti], ] as const; for (const [dilim, programs] of dilimler) { for (const p of programs) { if (!p.il) continue; iller[p.il] ??= { hayal: 0, dengeli: 0, garanti: 0 }; iller[p.il][dilim]++; } } const sections = [ { key: "hayal", icon: Rocket, title: "Hayal", tone: "text-orange-600", description: "Geçen yıl tabanı senin sıralamanın üzerinde kapanan programlar. Şansın düşük ama listenin başında birkaç tane bulunmalı.", programs: results.hayal, }, { key: "dengeli", icon: Scale, title: "Dengeli", tone: "text-primary", description: "Tabanı sıralamanın hemen civarında. Listenin bel kemiği bu dilimden kurulur.", programs: results.dengeli, }, { key: "garanti", icon: ShieldCheck, title: "Garanti", tone: "text-emerald-600", description: "Tabanı sıralamanın belirgin altında. Boşta kalmamak için listenin sonunda mutlaka yer almalı.", programs: results.garanti, }, ] as const; return (
TercihAI
Ücretsiz ön izleme

{sira.toLocaleString("tr-TR")}. sıradaki bir aday için görünüm

2025 YÖK Atlas taban sıralamalarına göre üç dilime ayrılmış öneriler. Taban sıralamaları her yıl değişir; bu liste garanti değil, başlangıç noktasıdır.

{/* Puan türü seçimi */} {seciliIl ? (

Yalnızca {seciliIl}{" "} programları gösteriliyor

) : null} {/* Bölge haritası */}

Nerede okuyacaksın?

Aşağıdaki önerilerin illere dağılımı. Koyu renk, o ilde daha fazla öneri olduğunu gösterir. Bir ile tıklayarak listeyi o ile daraltabilir, tekrar tıklayarak filtreyi kaldırabilirsin.

{sections.map((s) => (

{s.title} {s.programs.length} program

{s.description}

))}
{/* Ücretli katman CTA */}

Bu listeyi 24 tercihlik plana çevirelim mi?

Yapay zekâ danışman; şehir, bölüm ve kariyer hedeflerine göre bu dilimlerden gerekçeli, dengeli bir tercih listesi kurar. Çok yakında.

Veriler resmî YÖK Atlas kaynağından derlenmiştir. TercihAI bir karar destek aracıdır; yerleşme garantisi vermez, tercih sorumluluğu adaya aittir.

); }