|
|
# Accessibility |
|
|
## Yang Sudah Ada |
|
|
- `aria-label` pada sidebar, bottom nav, tombol icon |
|
|
- `aria-current="page"` pada link nav aktif |
|
|
- `aria-expanded` pada grup menu collapsible |
|
|
- `aria-modal="true"` pada sheet & dialog |
|
|
- `aria-labelledby` / `aria-describedby` pada dialog |
|
|
- `aria-pressed` pada tombol theme |
|
|
- `aria-hidden` pada elemen dekoratif & overlay tersembunyi |
|
|
- `role="status"`, `role="alertdialog"`, `role="dialog"`, `role="group"` |
|
|
- Label eksplisit pada input login (`for` + `id`) |
|
|
- Focus ring cyan pada input (`focus:ring-2`) |
|
|
- `color-scheme` CSS mengikuti tema |
|
|
- Keyboard: dialog OK button auto-focus |
|
|
|
|
|
## Gap vs Enterprise (`16-uiux-enterprise.mdc`) |
|
|
| Aspek | Status | |
|
|
|-------|--------| |
|
|
| Responsive | ✅ Kuat | |
|
|
| Dark Mode | ✅ + Light + System | |
|
|
| Accessibility | ⚠️ Partial | |
|
|
| Enterprise Dashboard | ✅ | |
|
|
|
|
|
## Gap Spesifik |
|
|
- Tidak ada skip-to-content link |
|
|
- Focus trap belum eksplisit di sheet/dialog (hanya backdrop click) |
|
|
- Tidak ada `prefers-reduced-motion` override |
|
|
- Kontras beberapa teks `slate-500` di dark perlu verifikasi WCAG |
|
|
- Tabel mobile: aksi via tap baris tanpa `aria-describedby` untuk screen reader |
|
|
- Bahasa `lang="en"` padahal konten campuran ID/EN |
|
|
- Swagger UI: aksesibilitas bergantung pihak ketiga |
|
|
|
|
|
## Rekomendasi Singkat |
|
|
- Tambah skip link ke `#app-content` |
|
|
- Trap focus + Escape close untuk sheet/dialog |
|
|
- `lang="id"` atau locale switcher |
|
|
- Audit kontras dengan axe/Lighthouse
|
|
|
|