feat(katalog+tasarim): devlet/vakıf tür sayfaları, tür çipleri link; kayıtlı-sıra satırı şişko ve sade
All checks were successful
Deploy / deploy (push) Successful in 5m1s

- /universiteler/devlet ve /universiteler/vakif: şehir sayfası iskeleti,
  haritada bu türden üniversitesi olan her il turuncu (yakınlaşma yok), üç
  özet kartı, şehir çipleri (sayfa içi çapa), şehir şehir §4.15 satırları,
  öteki türe geçiş hapı; metadata + sitemap.
- TurCipi tek kaynak: devlet/vakıf çipi tür sayfasına link (sonuç, listem,
  tadımlık, bölüm, şehir/tür satırları); üniversite sayfası tür hapı ve
  /universiteler başlıkları da link. UniSatirlari ortak dosyada: ad, tür ve
  il ayrı linkler.
- Kompakt profilli satır (DESIGN.md §10.9): iri kupa kutusu + text-3xl/4xl
  sıra, text-xl/2xl başlık, 48 px buton; telefonda alt alta, lg'de tek satır.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-24 15:53:54 +03:00
parent a0e94bc024
commit a43c045828
17 changed files with 606 additions and 109 deletions

View File

@@ -0,0 +1,41 @@
import Link from "next/link";
import { SATIR_CIP } from "@/components/liste-satiri";
import { UNITUR_ETIKET, turSayfaHref } from "@/lib/unitur";
import { cn } from "@/lib/utils";
/**
* Liste satırlarındaki tür çipi (DESIGN.md §4.15) — tek kaynak. Devlet ve
* vakıf tür sayfasına link (Bilal, 24 Eyl 2026: "vakıf ve devlet de
* tıklanabilir olmalı"); KKTC/yurt dışı gibi tür sayfası olmayanlar düz çip.
* Hover §2.1 tek turuncu. Satırın tamamı link olan yerde kullanılmaz
* (iç içe <a>).
*/
export function TurCipi({
unitur,
className,
onClick,
}: {
unitur: string | null | undefined;
className?: string;
/** Tıklanabilir satırın içinde olayın satıra yayılmasını kesmek için */
onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
}) {
if (!unitur) return null;
const etiket = UNITUR_ETIKET[unitur]?.cip ?? unitur;
const href = turSayfaHref(unitur);
if (!href) return <span className={cn(SATIR_CIP, className)}>{etiket}</span>;
return (
<Link
href={href}
title={`Tüm ${etiket.toLocaleLowerCase("tr-TR")} üniversiteleri`}
onClick={onClick}
className={cn(
SATIR_CIP,
"transition-colors hover:bg-orange-50/60 hover:text-orange-500",
className,
)}
>
{etiket}
</Link>
);
}