fix(erisilebilirlik): risk göstergesinin adı satırda yazılı dursun

/sonuc program tablosunda risk yalnız renkli bir noktaydı (aria-hidden,
görünür metin yok); /listem'de etiket vardı ama sm altında sr-only idi.
Trafiğin büyük kısmı mobil olduğu için gerçek kullanıcı yalnız rengi
görüyordu. AGENTS.md: "kırmızı/sarı/yeşil her zaman metin etiketiyle
birlikte, renk tek başına anlam taşımaz."

- program-tablosu: nokta + RISK_ETIKET[risk] kalıbı rapor-listesi'nden
  birebir kopyalandı; boş kalan ilk sütun başlığı "Risk" oldu.
- rapor-listesi: risk etiketindeki sr-only sm:not-sr-only kaldırıldı.

Yeni bileşen/sabit/olay yok; etiket metninin tek kaynağı src/lib/risk.ts
içindeki RISK_ETIKET ve o dosyaya dokunulmadı.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-23 00:16:06 +03:00
parent 9bd448bd16
commit 2dbc8b5039
3 changed files with 89 additions and 12 deletions

View File

@@ -20,7 +20,12 @@ import type {
PuanTuruKey,
RankResultsListe,
} from "@/types/yokatlas";
import { DILIM_ETIKET, riskHesapla, type RiskSeviyesi } from "@/lib/risk";
import {
DILIM_ETIKET,
RISK_ETIKET,
riskHesapla,
type RiskSeviyesi,
} from "@/lib/risk";
import { bolumSayfaSlug, uniSayfaSlug } from "@/lib/slug";
import { VERI_YIL_SAYISI } from "@/lib/veri-yillari";
import {
@@ -73,6 +78,9 @@ const DILIMLER: {
},
];
// Risk renk dili: yeşil = güvenli, sarı = az riskli, kırmızı = riskli. Nokta
// hiçbir yerde tek başına durmaz; yanında RISK_ETIKET'ten gelen ad her ekran
// genişliğinde yazılı durur (renk tek başına anlam taşımaz).
const RISK_NOKTA: Record<RiskSeviyesi, string> = {
guvenli: "bg-emerald-500",
"az-riskli": "bg-amber-500",
@@ -237,7 +245,7 @@ export function ProgramTablosu({
<Table>
<TableHeader>
<TableRow>
<TableHead className="w-8" />
<TableHead className="w-8 pl-4 pr-0">Risk</TableHead>
<TableHead>Program</TableHead>
<TableHead className="hidden text-right md:table-cell">
Son {VERI_YIL_SAYISI} yıl
@@ -304,12 +312,15 @@ function ProgramSatiri({
return (
<TableRow className="kt-cv-satir">
<TableCell className="pl-4 pr-0">
<TableCell className="pl-4 pr-0 text-xs font-medium">
{risk ? (
<span
className={`block size-2.5 rounded-full ${RISK_NOKTA[risk]}`}
aria-hidden
/>
<span className="inline-flex items-center gap-1.5">
<span
className={`size-2.5 shrink-0 rounded-full ${RISK_NOKTA[risk]}`}
aria-hidden
/>
{RISK_ETIKET[risk]}
</span>
) : null}
</TableCell>
<TableCell className="max-w-0 w-full">

View File

@@ -40,8 +40,8 @@ import {
import type { Dilim } from "@/lib/rapor-havuzu";
// Risk renk dili: yeşil = güvenli, sarı = az riskli, kırmızı = riskli.
// Nokta hiçbir yerde tek başına durmaz; yanındaki etiket dar ekranda sr-only
// olarak kalır (renk tek başına anlam taşımaz).
// Nokta hiçbir yerde tek başına durmaz; yanındaki etiket her ekran
// genişliğinde yazılı durur (renk tek başına anlam taşımaz).
const RISK_STIL: Record<RiskSeviyesi, { nokta: string; icon: typeof Rocket }> = {
riskli: { nokta: "bg-red-500", icon: Rocket },
"az-riskli": { nokta: "bg-amber-500", icon: Scale },
@@ -264,9 +264,7 @@ export function RaporListesi({
className={`size-2.5 shrink-0 rounded-full ${stil.nokta}`}
aria-hidden
/>
<span className="sr-only sm:not-sr-only">
{RISK_ETIKET[risk]}
</span>
<span>{RISK_ETIKET[risk]}</span>
</span>
)}
</TableCell>