feat(katalog+tasarim): şehir adları her yerde link; piksel yüzeylere beyaz ton

- ilSayfaHref: üniversite sayfası il hapı, /universiteler listesi, bölüm /
  sonuç / listem / tadımlık satırlarındaki il metası şehir sayfasına gider.
- Şehir kümeleri tüm (üniversite, il) çiftlerinden: DB'deki her il değerinin
  sayfası var (ODTÜ Ankara + KKTC); dev'de eski globalThis önbelleğine dayanıklı.
- PikselZemin ton="acik", CtaBandi/CtaSiraForm ton="beyaz": /universiteler
  altı ve /meraklisina kapanışı beyaz, diğer bantlar mavi (dönüşümlü).
- ilUlkeHaritasi: il değerinden ülke haritası + şehir konumu.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-24 14:56:11 +03:00
parent c27f24e6a6
commit 259534fa9c
13 changed files with 193 additions and 49 deletions

View File

@@ -11,6 +11,11 @@ import { cn } from "@/lib/utils";
*
* - `buyuk` (varsayılan): sayfa kapanışı / panel — ortalı, iri boşluk.
* - `kompakt`: çekmece altı gibi dar yerler — sola yaslı, alçak.
* - `ton="beyaz"`: aynı bant beyaz zeminde — slate kenarlık, koyu yazı,
* slate pikseller. Aynı sayfada üst üste iki mavi bant olmasın diye
* (Bilal, 24 Eyl 2026: "her kısımda mavi arka kullanmışsın, çeşitlendir").
* Çağıran paragraf renklerini tona göre verir (`text-white/90` ↔
* `text-slate-600`).
*
* İçerik (başlık, paragraf, buton) çağıranındır; yalnız kabuk burada durur.
* Bilal'in kararı (24 Eyl 2026): koyu slate-950 yüzey yerine bu band.
@@ -20,6 +25,7 @@ export function CtaBandi({
className,
seed = 8,
boyut = "buyuk",
ton = "mavi",
etiket = "section",
ref,
...props
@@ -27,6 +33,7 @@ export function CtaBandi({
/** Piksel dokusunun deseni; aynı sayfadaki iki band farklı olsun */
seed?: number;
boyut?: "buyuk" | "kompakt";
ton?: "mavi" | "beyaz";
/** Çekmece altı gibi başlıksız yerlerde `div` */
etiket?: "section" | "div";
ref?: Ref<HTMLElement>;
@@ -38,13 +45,20 @@ export function CtaBandi({
<Etiket
ref={ref as Ref<HTMLDivElement>}
className={cn(
"relative isolate overflow-hidden rounded-2xl bg-primary text-white",
"relative isolate overflow-hidden rounded-2xl",
ton === "beyaz"
? "border border-slate-200 bg-white text-slate-900"
: "bg-primary text-white",
buyuk ? "px-5 py-8 text-center sm:p-12" : "px-5 py-4 text-left sm:py-5",
className,
)}
{...props}
>
<PikselZemin seed={seed} className={buyuk ? "-inset-y-10" : undefined} />
<PikselZemin
seed={seed}
ton={ton === "beyaz" ? "acik" : "koyu"}
className={buyuk ? "-inset-y-10" : undefined}
/>
{children}
</Etiket>
);