Aksesibilitas
Sasaran WCAG, rasio kontras hasil ukur, fokus papan ketik, dan daftar periksa sebelum mengirim.
Sasaran
Kit ini menyasar WCAG 2.2 tingkat AA untuk seluruh area dalam aplikasi. Yang sudah terpenuhi di tingkat kit: struktur judul, fokus terlihat, kontras teks, nama peran ARIA, dan penghormatan pada prefers-reduced-motion.
Kontras — hasil ukur, bukan klaim
Angka di bawah dihitung langsung dari nilai token di tokens/tokens.css memakai rumus rasio kontras WCAG. Rasio 4,5:1 adalah batas AA untuk teks normal; 3:1 untuk teks besar dan komponen antarmuka.
| Pasangan | Dipakai untuk | Terang | Gelap |
|---|---|---|---|
--ck-foreground di --ck-background | Teks utama di latar halaman | 16.99:1 AAA | 17.44:1 AAA |
--ck-foreground di --ck-card | Teks utama di kartu | 17.69:1 AAA | 16.05:1 AAA |
--ck-muted-foreground di --ck-background | Teks sekunder di latar halaman | 4.53:1 AA | 8.09:1 AAA |
--ck-muted-foreground di --ck-card | Teks sekunder di kartu | 4.72:1 AA | 7.44:1 AAA |
--ck-primary-foreground di --ck-primary | Teks di tombol utama | 8.43:1 AAA | 4.88:1 AA |
--ck-foreground di --ck-secondary | Teks di permukaan sekunder | 16.11:1 AAA | 13.25:1 AAA |
--ck-primary di --ck-card | Teks aksen utama di kartu | 8.78:1 AAA | 4.49:1 AA teks besar |
--ck-destructive di --ck-card | Teks bahaya di kartu | 3.78:1 AA teks besar | 4.3:1 AA teks besar |
--ck-success di --ck-card | Teks sukses di kartu | 2.59:1 Gagal | 7.69:1 AAA |
--ck-warning di --ck-card | Teks peringatan di kartu | 2.14:1 Gagal | 9.16:1 AAA |
--ck-success(2,59:1) dan--ck-warning(2,14:1) di mode terang tidak lolos sebagai teks di atas kartu. Keduanya warna isian — pakai sebagai latar dengan teks gelap, atau pakai variansubtleuntuk teks.--ck-destructivesebagai teks hanya lolos untuk teks besar (3,78:1). Untuk teks galat berukuran normal, gunakan varian teks yang lebih gelap.--ck-muted-foregrounddi mode terang hanya 4,53:1 — pas di batas AA. Jangan dipakai untuk teks di bawah 14 px.
Fokus papan ketik
Semua yang bisa difokus punya cincin fokus yang sama: garis 2 px warna --ck-ring dengan jarak 2 px. Cincin ini tidak boleh dihapus. Kalau terlihat mengganggu, itu tanda tata letaknya perlu diperbaiki, bukan cincinnya.
:focus-visible {
outline: 2px solid hsl(var(--ck-ring));
outline-offset: 2px;
}
Struktur & navigasi
| Kewajiban | Bentuknya di kit |
|---|---|
| Melewati navigasi | ck-skip-link sebagai elemen pertama di <body> |
| Satu judul utama per halaman | Satu h1; urutan tingkat tidak melompat |
| Penanda wilayah | aside, header, main, nav dengan aria-label |
| Teks hanya untuk pembaca layar | ck-sr-only |
| Bahasa halaman | <html lang="id"> |
Papan ketik
| Tombol | Perilaku |
|---|---|
| Tab / Shift+Tab | Berpindah antar elemen; modal menjebak fokus di dalamnya |
| Esc | Menutup modal, laci, dropdown, dan membersihkan penyaring navigasi |
| ← → | Berpindah tab dan menggeser pilihan pada grup radio |
| ↑ ↓ | Menelusuri menu dropdown dan daftar pilihan |
| Enter / Space | Menjalankan aksi; pada tombol, keduanya harus bekerja |
| / | Melompat ke penyaring navigasi (halaman galeri) |
Gerak
Pengguna yang mengaktifkan prefers-reduced-motion mendapat durasi mendekati nol. Ini bukan opsional — animasi dapat memicu pusing dan mual.
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
Bentuk & warna
- Warna tidak pernah menjadi satu-satunya pembawa makna. Jawaban benar punya ikon dan teks, bukan hanya hijau.
- Target sentuh minimal 44 × 44 px di layar kecil; tombol
ck-btn--smdinaikkan ukurannya di bawah 768 px. - Pesan galat ditulis di dekat kolomnya dan dihubungkan lewat
aria-describedby, bukan hanya di bagian atas halaman. - Keadaan memuat diumumkan lewat
aria-busy, bukan hanya spinner.