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

@@ -237,14 +237,23 @@ function PikselSvg({
const TUM_IL_HUCRELERI = Object.values(IL_HUCRELERI).flat();
/** Türkiye; `il` (DB biçimi, ör. "İZMİR") turuncu karelerle yanar. */
/**
* Türkiye; `il` (DB biçimi, ör. "İZMİR") turuncu karelerle yanar. `iller`
* verilirse hepsi yanar (tür sayfası: devlet üniversitesi olan her il) ve
* yakınlaşma yapılmaz — ülkenin tamamı görünür.
*/
export function TurkiyePikselHaritasi({
il,
iller,
...props
}: HaritaProps & { il: string }) {
const harita = markup(`tr:${il}`, () =>
markupUret(TUM_IL_HUCRELERI, IL_HUCRELERI[il] ?? [], null),
);
}: HaritaProps & { il?: string; iller?: readonly string[] }) {
const liste = iller ?? (il ? [il] : []);
const anahtar = `tr:${liste.join("|")}`;
const harita = markup(anahtar, () => {
const vurgu = liste.flatMap((ad) => IL_HUCRELERI[ad] ?? []);
const h = markupUret(TUM_IL_HUCRELERI, vurgu, null);
return iller ? { ...h, sinir: null } : h;
});
return <PikselSvg harita={harita} {...props} />;
}