feat(ui): Arc bileşenleri, landing bölümleri ve bildirim yığını
Sonner/vaul yerine kendi bildirim yığını ve alt sayfa; çip grubu, kart destesi, kaydırma eylemi, yazı dönüşümü, bölme tutamacı; landing'e program duvarı, süzülen haplar ve veri akışı; yaylar tek dosyada (lib/hareket.ts). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,47 +1,14 @@
|
||||
import Link from "next/link";
|
||||
import type { ReactNode } from "react";
|
||||
import {
|
||||
ortaTabanYonu,
|
||||
YON_ETIKET,
|
||||
type TabanKumesi,
|
||||
type TabanDuzeyi,
|
||||
type TabanOzeti,
|
||||
} from "@/lib/taban-ozeti";
|
||||
import { kisaSayi } from "@/components/ozet-kart";
|
||||
|
||||
/**
|
||||
* Üniversite ve bölüm sayfasının özet kartlarının ortak metin ve link
|
||||
* yardımcıları (DESIGN.md §4.8). Yıl yıl ayrıntı çekmecesi ("Yıllara göre
|
||||
* taban") 6 Eki 2026'da Bilal'in isteğiyle şimdilik kaldırıldı; geri gelirse
|
||||
* git geçmişinde `taban-yillari.tsx` + `siranla-kapilar.tsx` olarak duruyor.
|
||||
* taban") ve orta taban kartı 6 Eki 2026'da Bilal'in isteğiyle kaldırıldı;
|
||||
* geri gelirse git geçmişinde `taban-yillari.tsx`, `siranla-kapilar.tsx` ve
|
||||
* `ortaTabanAciklamasi` olarak duruyor.
|
||||
*/
|
||||
|
||||
/** "2026'da" — yıl eki ünlü uyumuna göre (2023'te, 2026'da, 2027'de). */
|
||||
export function yilEki(yil: number): string {
|
||||
const son = yil % 10;
|
||||
if (son === 3 || son === 4 || son === 5) return `${yil}'te`;
|
||||
if (son === 0 || son === 6 || son === 9) return `${yil}'da`;
|
||||
return `${yil}'de`;
|
||||
}
|
||||
|
||||
/** Orta taban kümesinin adı: "Devlet" / "Lisans" / "Önlisans". */
|
||||
export function kumeAdi(kume: TabanKumesi, duzey: TabanDuzeyi): string {
|
||||
if (kume === "devlet") return "Devlet";
|
||||
return duzey === "lisans" ? "Lisans" : "Önlisans";
|
||||
}
|
||||
|
||||
/** Özet kartının açıklaması: "Devlet · 2021'de 105 bin · gevşedi". */
|
||||
export function ortaTabanAciklamasi(taban: TabanOzeti): string {
|
||||
const yon = ortaTabanYonu(taban.ortaTaban);
|
||||
const kume = kumeAdi(taban.kume, taban.duzey);
|
||||
if (!yon) {
|
||||
return taban.ortaTabanAdet > 0
|
||||
? `${kume} · ${taban.ortaTabanAdet.toLocaleString("tr-TR")} programın ortası`
|
||||
: "henüz taban oluşmadı";
|
||||
}
|
||||
return `${kume} · ${yilEki(yon.ilkYil)} ${kisaSayi(yon.ilk)} · ${YON_ETIKET[yon.yon]}`;
|
||||
}
|
||||
|
||||
/** Özet kartı açıklamasındaki ad linki (üniversite ↔ bölüm çapraz bağ). */
|
||||
export function KartBaglantisi({
|
||||
href,
|
||||
|
||||
Reference in New Issue
Block a user