import type { Metadata } from "next"; import Link from "next/link"; import { notFound } from "next/navigation"; import { Building2, ChevronRight, Landmark, MapPin } from "lucide-react"; import { getAllIller, getAllIlSlugs, getIlBySlug, type UniOzet, } from "../katalog-queries"; import { CtaSiraForm } from "@/features/sihirbaz/components/cta-sira-form"; import { PagePixelDivider } from "@/components/pixel-decor"; import { Skeleton } from "@/components/ui/skeleton"; import { JsonLd, breadcrumbJsonLd, sayfaMetadata, ustSegmentOgGorseli, } from "@/lib/seo"; import { BASLIK_YILI, SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari"; import { NavBaslik } from "./nav-baslik"; import { SehirCipleri, oneCikanIller } from "./sehir-cipleri"; import { SehirPikselHaritasi } from "./sehir-piksel-haritasi"; import { SehirYuzeyi } from "./sehir-yuzeyi"; import { UniSatirlari } from "./uni-satirlari"; const sayi = (n: number) => n.toLocaleString("tr-TR"); export function ilStaticSlugs(): string[] { return getAllIlSlugs(); } export function ilSayfaMetadata(slug: string): Metadata { const il = getIlBySlug(slug); if (!il) return {}; return sayfaMetadata({ title: `${il.ad} Üniversiteleri Taban Puanları ve Sıralamaları ${BASLIK_YILI}`, description: `${il.ad}'daki ${il.uniler.length} üniversitenin ${SON_YIL} YKS yerleştirme verileri: ${sayi(il.programSayisi)} programın taban puanları, başarı sıralamaları ve kontenjanları. ${TERCIH_YILI} tercih rehberi.`, path: `/universiteler/${slug}`, openGraph: { images: ustSegmentOgGorseli( "/universiteler", "Üniversitelerin taban puanları ve sıralamaları — KolayTercih", ), }, }); } function UniGrubu({ baslik, uniler, buIl, }: { baslik: string; uniler: UniOzet[]; buIl: string; }) { if (uniler.length === 0) return null; return (

{baslik} {sayi(uniler.length)}

); } /** * /universiteler/[il]: bir şehirdeki üniversiteler, devlet / vakıf / diğer * öbekleriyle. Düzen katalog detay sayfalarıyla aynı (DESIGN.md §5.2): * yol satırı, başlık, kimlik hapları ve özet lg altında ortalı; listeler * her zaman sola yaslı. */ export function IlIcerik({ slug }: { slug: string }) { const il = getIlBySlug(slug); if (!il) notFound(); const devlet: UniOzet[] = []; const vakif: UniOzet[] = []; const diger: UniOzet[] = []; for (const u of il.uniler) { if (u.unitur === "DEVLET") devlet.push(u); else if (u.unitur === "VAKIF" || u.unitur === "VAKIF MYO") vakif.push(u); else diger.push(u); } const ozetParcalar = [ devlet.length > 0 ? `${sayi(devlet.length)} devlet` : null, vakif.length > 0 ? `${sayi(vakif.length)} vakıf` : null, diger.length > 0 ? `${sayi(diger.length)} KKTC/yurt dışı` : null, ].filter(Boolean); const ctaBaslik = `Sıralaman ${il.ad} üniversitelerinin neresinde?`; const digerSehirler = oneCikanIller(getAllIller()); return (
{/* Başlık yüzeyi: beyaz kart, arka planı kaplayan dot-matrix şehir haritası (DESIGN.md §4.17). lg altında metin ortalı, harita altta. */} } metin={

{il.ad} Üniversiteleri Taban Puanları {BASLIK_YILI}

{/* Kimlik hapları (DESIGN.md §4.12): il + üniversite sayısı */}

{il.ad} {devlet.length >= vakif.length ? ( ) : ( )} {sayi(il.uniler.length)} üniversite

{il.ad}'da {SON_YIL} YKS yerleştirmesinde öğrenci alan{" "} {sayi(il.uniler.length)} üniversite {ozetParcalar.length > 1 ? ` (${ozetParcalar.join(", ")})` : ""}{" "} ve toplam {sayi(il.programSayisi)} program var. Üniversiteye tıklayınca programlarının taban puanlarını, başarı sıralamalarını ve kontenjanlarını fakülte fakülte görürsün. Veriler YÖK Atlas {SON_YIL} yerleştirme sonuçlarına dayanır;{" "} {TERCIH_YILI} tercihleri için rehber niteliğindedir.

} />

Diğer şehirler

); } export function IlIcerikSkeleton() { return (
{Array.from({ length: 6 }, (_, i) => ( ))}
); }