fix(ui): program ayrıntı çekmecesi — önbellekli açılışta sahne atlanır, sahne ≈1,2 s, istihdam cümlesi büyük harfle

Tasarımcı B1/B3/B5 (7 Eki). Çekmece ikinci kez açılınca AcilisSahnesi
hazir=true ile monte oluyor, logo kareleri sayfa ekrana kaymadan oynuyor,
gövde ~1 s boş kalıyordu: `hazir` verilmiş bileşende sahne yalnız
false → true geçişinde oynar; montajda true ise (önbellek) 0,25 s solma.
Verilmezse (akademik göstergeler, sunucudan hazır) her açılışta oynar.
Kartsız sahne süresi ≈2 s'den ≈1,2 s'ye: kare ve blok aralığı 0,05 s,
netleşme 0,35 s, logo belir/dur/sön 0,28/0,16/0,3 s. "Mezun istihdamı"
paragrafının ilk harfi büyük (tr-TR). DESIGN.md §4.19 gerçek sürelerle.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-10-08 23:59:16 +03:00
parent fce7ab8c2e
commit 2ec9ecdc17
3 changed files with 62 additions and 26 deletions

View File

@@ -7,8 +7,9 @@
// türleri, son yerleşenin netleri, yerleşme koşulları, TÜİK mezun istihdamı,
// üniversite özeti. API'nin `gecmis` (yıllara göre sıra/puan/kontenjan)
// alanı burada gösterilmez (Bilal, 7 Eki 2026: yıl tablosu kaldırıldı;
// backlog). Açılış: veri gelince logo kareleri belirir, söner, içerik
// bloklar hâlinde netleşir (AcilisSahnesi kartsız modu).
// backlog). Açılış: veri ilk gelince logo kareleri belirir, söner, içerik
// bloklar hâlinde netleşir (AcilisSahnesi kartsız modu); veri önbellekteyken
// (çekmece yeniden açıldı) sahne yok, içerik 0,25 s solmayla gelir.
// Kadın-erkek dağılımı program düzeyinde bilinçli olarak yok: YÖK Atlas 2026
// SPA'sına geçerken cinsiyet panelini yayından kaldırdı (bkz. scripts/detay.ts).
// Çekmece içerik ağırlıklı olduğu için liste çekmecesi gibi kaydırılır (§4.10
@@ -226,7 +227,7 @@ function AyrintiIcerik({ durum, veri }: { durum: Durum; veri: ProgramAyrintisi |
);
}
// Sıra = AcilisSahnesi'nin `data-sonra` sırası: logo söner, bloklar
// yukarıdan aşağıya 0,08 s arayla netleşir.
// yukarıdan aşağıya 0,05 s arayla netleşir.
return (
<>
{/* Logo kareleri: sahne sırasında görünür, sönünce kap sıfır boya iner. */}
@@ -473,12 +474,15 @@ function Istihdam({ veri }: { veri: ProgramAyrintisi }) {
v.kazanc ? `kazanç grubu ${v.kazanc.toLocaleLowerCase("tr-TR")}` : null,
].filter(Boolean);
if (parcalar.length === 0) return null;
// Cümle başı büyük (§10.4); hangi parçanın başa geldiği veriye bağlı.
const birlesik = parcalar.join(", ");
const cumle = birlesik.charAt(0).toLocaleUpperCase("tr-TR") + birlesik.slice(1);
const ort = v.ortalama.istihdam != null ? ` Türkiye ortalaması %${ondalik(v.ortalama.istihdam)}.` : "";
return (
<div data-sonra>
<h3 className={BOLUM_BASLIK}>Mezun istihdamı</h3>
<p className={NOT}>
{parcalar.join(", ")} (TÜİK {v.yil}, ülke geneli, {v.duzey === "lisans" ? "lisans" : "ön lisans"}{" "}
{cumle} (TÜİK {v.yil}, ülke geneli, {v.duzey === "lisans" ? "lisans" : "ön lisans"}{" "}
mezunları; üniversiteye göre değişir, kırılım yok).{ort}
</p>
</div>