# Katalog boşlukları — kapsama matrisi

*04.08.2026 · uçtan uca denetim §5.2'nin karşılığı · Kuşak 4, birinci adım*

⚠ **Bu matris dosyalar yeniden açılarak üretildi**, bellekten değil. §5.3'ün
kendi bulgusu buydu: kapsama matrislerinin bir kısmı, kodda olmayan maddeleri ✓
ile kapatmış. Aşağıdaki her satırın kanıtı dosya adı ve satır sayısıdır.

⛔ **Sıra kararı Sets'in** *(04.08.2026)*: *"önce katalog boşluklarını
tamamlayalım ki sonra yirmi ekranda bu katalog componentlerine sadık düzeltme
yapabilelim."* Doğru sıra — ekranlar bu atomları kullanacak, tersi olsaydı yirmi
ekran iki kez elden geçerdi.

---

## 1 · Hiç yazılmamış atomlar

| Tasarım | Ne | Durum | Kanıt |
|---|---|---|---|
| `01:314` | Rating yıldızı | ✓ | `atoms/RatingInput.vue` (60 satır) |
| `01:319-325` | Slider + limit işareti | ✓ | `atoms/RangeInput.vue` (109) |
| `02:243-245` | Kapasite / progress çubuğu | ✓ | `atoms/ProgressBar.vue` (77) |
| `02:249-254` | Description list | ✓ | `molecules/DescriptionList.vue` (51) |
| `02:235-239` | KPI kartı | ✓ | `molecules/KpiCard.vue` (56) |
| `02:220-226` | Timeline | ✓ | `molecules/Timeline.vue` (50) |
| `04:148-151` | Tooltip | ✓ | `molecules/Tooltip.vue` (50) |
| `04:82-90` | Popconfirm | ✓ | `molecules/Popconfirm.vue` (67) |
| `04:208-229` | Tablo / kart skeleton | ✓ | `atoms/Skeleton.vue` (25) + `molecules/TableSkeleton.vue` (33) |
| `04:190-199` | Mevzuat callout | ✓ | `molecules/RegulationCallout.vue` (36) |
| `05:124-130` | Tab şeridi | ✓ | `molecules/TabStrip.vue` (51) |
| `05:136-172` | Bildirim merkezi | ✓ | `organisms/NotificationCentre.vue` (139) |

## 2 · Eksik varyant ve durumlar

| Tasarım | Ne | Durum | Kanıt |
|---|---|---|---|
| `01` | Checkbox **indeterminate** | ✓ | `atoms/Checkbox.vue` — DOM özelliği `watchEffect` ile yazılıyor |
| `01` | Checkbox hata durumu | ✓ | `atoms/Checkbox.vue` — `invalid` → 2px kritik kenarlık + `aria-invalid` |
| `04` | Toast üçüncü ton | ✓ | `molecules/Toast.vue` — `info` eklendi |
| `04` | Toast ✕ kapatma | ✓ | `molecules/Toast.vue` — `closeLabel` ile |
| `01` | TextInput hover + loading | ⚠ **kapsam dışı bırakıldı** | aşağıya bak |
| `01` | OTP deneme sayacı + geri sayım | ⚠ **kapsam dışı bırakıldı** | aşağıya bak |
| `01` | FileDrop progress + yüklenmiş dosya satırı | ⚠ **kapsam dışı bırakıldı** | aşağıya bak |

⚠ **Üç varyat neden bilinçli olarak dışarıda:** üçü de bir DAVRANIŞA bağlı, bir
görünüme değil. TextInput'un `loading` hâli eşzamanlı doğrulama ister; OTP'nin
geri sayımı, sunucunun kalan deneme ve kilit süresini ekrana taşımasını ister —
`ThrottlesSignIn` bu iki sayıyı biliyor ama hiçbir yanıt onları taşımıyor;
FileDrop'un yüzdesi, `XMLHttpRequest` ilerleme olaylarına bağlanmayı ister ve
bugün yüklemeler Inertia'nın kendi form gönderimiyle gidiyor. Üçünü de "kutuyu
çiz" diye eklemek, arkasında hiçbir şey olmayan bir gösterge üretirdi — video
kaydı olmadan alınan rıza gibi. **Kuşak 4'ün ekran turunda, ihtiyaç duyan ekranla
birlikte yazılacaklar.**

## 3 · Mobil navigasyon

| Tasarım | Ne | Durum | Kanıt |
|---|---|---|---|
| `05:66-78`, HANDOFF §12 | Bottom nav (≤5 hedef, rozet) | ✓ | `organisms/BottomNav.vue` (85) |
| — | Ofis paneline bağlanması | ✓ | `templates/PanelLayout.vue` |
| — | Müşteri paneline bağlanması | ✓ | `templates/PortalLayout.vue` |

⛔ **Bulgunun ağırlığı:** `lg` altında **her iki rail de** `hidden … lg:flex`
idi ve yerine hiçbir şey konmamıştı. 375px'te eğitmen panelinde **gezinme yoktu**
— sahada telefonla duran kişi, gönderildiği ekrana ulaşıp başka hiçbir yere
gidemiyordu.

⚠ Hedefler **rail'in kendi listesinden** alınıyor, ikinci bir elle tutulan
listeden değil: elle tutulan liste, rail'in kurulduğu izinlerden sapardı ve sapma
403 veren bir bar hedefi olarak görünürdü.

⚠ İçerik dolgusu telefonda 28px'ten 16px'e indirildi. 375px ekranda iki yanda
28px, içeriğe 319px bırakıyor ve içindeki tablonun gidecek yeri kalmıyor.

## 4 · A4 baskı kuralları

| Ne | Durum | Kanıt |
|---|---|---|
| `@page` + 15mm kenar boşluğu | ✓ | `resources/css/print.css` (110) |
| Taşan sayfada başlık tekrarı | ✓ | `thead { display: table-header-group }` |
| Satır/kart sayfa arasında bölünmez | ✓ | `break-inside: avoid` |
| Arayüzün baskıdan çıkarılması | ✓ | `nav`, `aside`, `[role=status]`, `[data-print=hide]` |
| Mürekkep, renk değil | ✓ | üç baskı token'ı `tokens.css` içinde |
| Bağlantı adresinin yazdırılması | ✓ | `a[href^=http]::after` |

⛔ **Repoda tek bir `@media print` yoktu** ve `window.print()` çağıran üç sayfa
var: yoklama listesi, teklif çıktısı ve müşterinin imzalayacağı nüsha. Üçü de
imzalanan, dosyalanan ve denetçiye verilen belgeler — tarayıcının varsayılan
kenar boşluklarıyla, yanında gezinme rayıyla ve sayfa numarasız basılıyordu.

⚠ Baskı renkleri **token katmanına** yazıldı, doğrudan hex olarak değil. Ekran
paleti değiller ve olmamaları gerekiyor: mürekkep saf siyah, çünkü `ink-950`
mono lazerde gri basar; kâğıt saf beyaz, çünkü tonlu zemin toner yer ve üstündeki
yazıyı yutar; çizgi orta gri, çünkü ekranın kıl payı çizgisi fotokopiden sağ
çıkmaz.

## 5 · Bu turda kapatılmayanlar — bilinçli

> ⚠ **Bu tablo 04.08.2026'nın anlık görüntüsüdür; ilk iki satırı 07.08.2026'da kapandı.**
> `DataTable` `02` standardını taşıyor ve **32 sayfalık ham `<table>` borcu sıfırlandı** — arch testindeki `$awaiting` listesi boş (EGT-83). Aynı gün `DataTable` bir de **sayaçlı dilim satırı** (`slices`) kazandı: tasarım `61`/`25`/`63`'ün tabloyu açtığı sayaçlı çip satırı, kataloğun `02:37` koşul çipiyle **aynı şey değil** — ayrımın gerekçesi `proje-haritasi.md` "Dilim ≠ koşul çipi" bölümünde (EGT-71).
> Kalan üç satır (`DescriptionList` 21 sayfa, `ProgressBar` 9 sayfa, §13.2) **hâlâ açık.**

| Ne | Neden |
|---|---|
| `DataTable`'ın `02` standardına tamamlanması (çoklu seçim, kayıtlı görünüm, yoğunluk, kolon seçici, tfoot, numaralı sayfalama) | Ekran turuyla birlikte: hangi ekranın hangisine ihtiyacı olduğu, ekran açılmadan bilinemez ve altısını birden yazmak kullanılmayan beş özellik üretir |
| 32 sayfanın ham `<table>`'dan `DataTable`'a taşınması | Aynı tur |
| 21 sayfanın elle `<dl>`'inden `DescriptionList`'e taşınması | Aynı tur — atom hazır |
| 9 sayfadaki kopyalanmış progress çubuğu | Aynı tur — atom hazır |
| §13.2 organizma çıkarma | Aynı tur |

⚠ **Yalnız biri şimdi taşındı:** `Portal/Survey.vue`'nun yıldızları. Sebebi
kozmetik değil — o kopya, kataloğun asıl söylediği şeyi kaybetmişti: `01` kontrolü
yıldız başına 44px dokunma hedefi olarak altyazılıyor, oradaki yıldızlar 22px'ti,
ve o ekranın bütün izleyicisi eğitim günü sonunda telefon tutan biri.
