olmaz).
+ * `gizliIl`: bulunulan şehir sayfasında aynı il yazılmaz.
+ */
+export function UniSatirlari({
+ uniler,
+ gizliIl,
+}: {
+ uniler: UniOzet[];
+ gizliIl?: string | null;
+}) {
+ return (
+
+ {uniler.map((u) => {
+ const il = u.il && u.il !== gizliIl ? u.il : null;
+ return (
+ -
+
+
+
+
+
+
+ {u.ad}
+
+
+
+ {il ? (
+
+ {trBaslikDuzeni(il)}
+
+ ) : null}
+ {sayi(u.programSayisi)} program
+
+
+
+
+ );
+ })}
+
+ );
+}
diff --git a/src/features/katalog/components/universite-icerik.tsx b/src/features/katalog/components/universite-icerik.tsx
index 86b3f1e..6b6d3e6 100644
--- a/src/features/katalog/components/universite-icerik.tsx
+++ b/src/features/katalog/components/universite-icerik.tsx
@@ -19,7 +19,7 @@ import {
bolumSlugFromIsim,
} from "../katalog-queries";
import { ilSayfaHref, trBaslikDuzeni } from "@/lib/slug";
-import { UNITUR_ETIKET, uniturDevletMi } from "@/lib/unitur";
+import { UNITUR_ETIKET, turSayfaHref, uniturDevletMi } from "@/lib/unitur";
import {
JsonLd,
breadcrumbJsonLd,
@@ -569,14 +569,31 @@ export function UniversiteIcerik({
{turEtiketi || uni.il ? (
{turEtiketi ? (
-
- {uniturDevletMi(uni.unitur) ? (
+ // Devlet/vakıf hapı tür sayfasına gider (DESIGN.md §4.12); KKTC
+ // ve yurt dışında tür sayfası yok, hap düz kalır.
+ (() => {
+ const href = turSayfaHref(uni.unitur);
+ const ikon = uniturDevletMi(uni.unitur) ? (
) : (
- )}
- {turEtiketi.cip}
-
+ );
+ return href ? (
+
+ {ikon}
+ {turEtiketi.cip}
+
+ ) : (
+
+ {ikon}
+ {turEtiketi.cip}
+
+ );
+ })()
) : null}
{uni.il ? (
// İl hapı şehir sayfasına gider (Bilal, 24 Eyl 2026: "şehirlerin
diff --git a/src/features/katalog/components/universite-listesi.tsx b/src/features/katalog/components/universite-listesi.tsx
index 8faa447..a9c22e8 100644
--- a/src/features/katalog/components/universite-listesi.tsx
+++ b/src/features/katalog/components/universite-listesi.tsx
@@ -107,7 +107,12 @@ export function UniversiteKatalogu() {
- Devlet Üniversiteleri
+
+ Devlet Üniversiteleri
+
{sayi(devlet.length)}
@@ -117,7 +122,12 @@ export function UniversiteKatalogu() {
- Vakıf Üniversiteleri
+
+ Vakıf Üniversiteleri
+
{sayi(vakif.length)}
diff --git a/src/features/liste/components/program-tablosu.tsx b/src/features/liste/components/program-tablosu.tsx
index 9398c4e..f3ebbe5 100644
--- a/src/features/liste/components/program-tablosu.tsx
+++ b/src/features/liste/components/program-tablosu.tsx
@@ -22,6 +22,7 @@ import type {
} from "@/types/yokatlas";
import { DILIM_ETIKET, riskHesapla } from "@/lib/risk";
import { bolumSayfaSlug, ilSayfaHref, trBaslikDuzeni, uniSayfaSlug } from "@/lib/slug";
+import { TurCipi } from "@/components/tur-cipi";
import { cn } from "@/lib/utils";
import { VERI_YIL_SAYISI } from "@/lib/veri-yillari";
import {
@@ -52,7 +53,6 @@ import {
SATIR_BUTON_BASLIK,
SATIR_BUTON_HUCRE,
SATIR_BUTON_KABI,
- SATIR_CIP,
SATIR_ALT_GRUP,
SATIR_IKINCIL_LINK,
SATIR_META,
@@ -334,7 +334,6 @@ function ProgramSatiri({
}) {
const taban = programEtkinSira(p);
const risk = riskHesapla(taban, adaySira);
- const devlet = p.unitur === "DEVLET";
const tabanMetni = taban != null ? `~${taban.toLocaleString("tr-TR")}.` : "—";
const bosKaldi =
p.kontenjanSon != null &&
@@ -373,7 +372,10 @@ function ProgramSatiri({
- {devlet ? "Devlet" : "Vakıf"}
+ e.stopPropagation()}
+ />
{p.il ? (
@@ -263,9 +262,10 @@ export function RaporListesi({
) : null}
- {p?.unitur ? (
- {devlet ? "Devlet" : "Vakıf"}
- ) : null}
+ e.stopPropagation()}
+ />
{p?.il ? (
- {p.unitur ? (
- {devlet ? "Devlet" : "Vakıf"}
- ) : null}
+
{p.il ? (
{siraFormu}
{profil ? (
-
-
-
- {kompaktBaslik}
-
-
-
-