Skip to content

Panduan Konfigurasi Lengkap

Visua11y Agent menyediakan opsi konfigurasi yang sangat fleksibel dan lengkap untuk framework JavaScript modern (Vue, React, Next.js, Nuxt, Svelte, Angular) maupun implementasi langsung melalui script-tag CDN.


🚀 Quick Start

javascript
import { createVisua11yAgent } from 'visua11y-agent';
// Atau versi lightweight: import { createVisua11yAgent } from 'visua11y-agent/slim';

const agent = createVisua11yAgent({
  lang: 'id',
  languages: ['id', 'en', 'es'],
  position: 'bottom-right',
  offset: [24, 24],
  size: 'medium',
  buttonSize: 56,
});
html
<script
  src="https://cdn.jsdelivr.net/npm/visua11y-agent/dist/visua11y-agent.umd.js"
  data-visua11y-agent-lang="id"
  data-visua11y-agent-languages="id,en,es"
  data-visua11y-agent-position="bottom-right"
  data-visua11y-agent-offset="24,24"
  defer
></script>

📋 Tabel Referensi Opsi Lengkap

Saat menginisialisasi visua11y-agent, Anda dapat memberikan opsi konfigurasi baik melalui createVisua11yAgent(options) maupun visua11yAgent(options):

OpsiTipe DataNilai DefaultDeskripsi
langstring'en'Bahasa UI awal. Mendukung 53 bahasa dunia. Dinormalisasi secara otomatis (misal: 'id-ID''id').
languagesstring[] | stringundefined (Semua 53)Whitelist Bahasa: Array atau teks dipisah koma untuk membatasi bahasa yang ditampilkan (misal: ['id', 'en'] atau 'id,en'). Jika hanya 1 bahasa, tombol pemilih bahasa di header otomatis disembunyikan.
positionstring'bottom-left'Posisi jangkar layar untuk floating trigger button. Mendukung 8 posisi: 'bottom-right', 'bottom-left', 'top-right', 'top-left', 'center-right', 'center-left', 'bottom-center', 'top-center'.
offsetnumber[] | string[20, 20]Jarak margin [X, Y] (dalam pixel) dari tepi layar. Dapat berupa array [24, 24] atau teks '24,24'.
sizestring | number'default'Preset ukuran widget: 'small', 'medium', 'default' / 'large', atau nilai pixel numerik lebar panel drawer.
buttonSizenumber58Diameter khusus tombol trigger launcher dalam pixel (misal: 48, 56, 64).
iconstringSVG defaultKustom markup SVG HTML, URL gambar, atau selector elemen template (misal: '#custom-icon-template').

🎯 Penjelasan Detail Setiap Opsi

1. position (Posisi Tombol Trigger)

Tempatkan tombol aksesibilitas melayang pada salah satu dari 8 titik sudut/sisi layar:

text
┌────────────────────────────────────────────────────────┐
│ [top-left]            [top-center]         [top-right] │
│                                                        │
│ [center-left]                                  [center-right]
│                                                        │
│ [bottom-left]        [bottom-center]    [bottom-right] │
└────────────────────────────────────────────────────────┘
javascript
createVisua11yAgent({
  position: 'bottom-right', // Direkomendasikan untuk visibilitas terbaik
});

2. offset (Jarak Margin dari Tepi Layar)

Mengatur jarak horizontal (X) dan vertikal (Y) dari batas viewport dalam pixel:

javascript
createVisua11yAgent({
  position: 'bottom-right',
  offset: [30, 30], // 30px dari kanan, 30px dari bawah
});

3. languages (Whitelist Bahasa & Sembunyikan Otomatis)

Batasi daftar bahasa yang tersedia agar sesuai dengan bahasa yang didukung oleh website Anda:

javascript
// Whitelist beberapa bahasa pilihan
createVisua11yAgent({
  languages: ['id', 'en', 'es'],
  lang: 'id', // Bahasa default aktif
});

// Mode Bahasa Tunggal:
// Jika hanya ditentukan tepat 1 bahasa, tombol pemilih bahasa
// pada header modal akan otomatis disembunyikan agar tampilan tetap rapi!
createVisua11yAgent({
  languages: ['id'],
});

4. size & buttonSize (Ukuran Widget & Tombol)

Menyesuaikan ukuran tombol pemicu dan panel menu drawer:

javascript
createVisua11yAgent({
  size: 'medium',    // Preset ukuran panel ('small', 'medium', 'default')
  buttonSize: 52,    // Diameter tombol khusus dalam pixel
});

5. icon (Kustom Ikon Launcher)

Kustomisasi ikon tombol pemicu menggunakan inline SVG, URL file gambar, atau elemen template HTML:

javascript
createVisua11yAgent({
  icon: `<svg viewBox="0 0 24 24" fill="currentColor">
    <path d="M12 2a10 10 0 1 0 10 10A10 10 0 0 0 12 2zm1 15h-2v-6h2zm0-8h-2V7h2z"/>
  </svg>`
});
javascript
createVisua11yAgent({
  icon: 'https://example.com/assets/accessibility-icon.webp'
});
html
<!-- HTML -->
<template id="my-a11y-icon">
  <span class="custom-badge">♿</span>
</template>

<!-- JS -->
<script>
createVisua11yAgent({
  icon: '#my-a11y-icon'
});
</script>

🌐 Bahasa Kustom & Modifikasi Istilah Kamus

Visua11y Agent dilengkapi dengan engine internasionalisasi runtime yang memungkinkan Anda menambahkan bahasa baru, dialek lokal, atau istilah branding korporat.

Mendaftarkan Bahasa Baru / Dialek Daerah

javascript
import { createVisua11yAgent } from 'visua11y-agent';

const agent = createVisua11yAgent();

// Daftarkan Basa Jawa (jv)
agent.registerLanguage({
  code: 'jv',
  label: 'Basa Jawa (Javanese)',
  dictionary: {
    'Accessibility Menu': 'Menu Aksesibilitas',
    'Reset settings': 'Wangsulaken Sedaya Setelan',
    'Content Adjustments': 'Pangaturan Konten',
    'Color Adjustments': 'Pangaturan Werna',
    'Screen Reader': 'Pamaos Layar',
    'Voice Navigation': 'Navigasi Swara',
    'Custom Color': 'Werna Kustom',
    'Widget Position': 'Papan Widget',
    'Language': 'Basa',
    'Search languages': 'Padosi basa...',
    'Open Accessibility Menu': 'Bukak Menu Aksesibilitas',
    'Close Accessibility Menu': 'Tutup Menu Aksesibilitas',
  }
});

// Aktifkan bahasa yang baru didaftarkan
agent.changeLanguage('jv');

Meng-override Istilah Kamus Tertentu (merge: true)

Gunakan merge: true untuk menimpa kata kunci tertentu tanpa perlu menulis ulang seluruh kamus:

javascript
agent.registerLanguage({
  code: 'id',
  label: 'Bahasa Indonesia (Kustom)',
  merge: true,
  dictionary: {
    'Accessibility Menu': 'Pusat Inklusi Perusahaan',
    'Reset settings': 'Kembalikan Pengaturan Awal',
    'Screen Reader': 'Asisten Audio Cerdas',
  }
});

♿ Profil Preset Aksesibilitas (WCAG 2.1 / ADA)

Visua11y Agent menyediakan 8 profil kurasi yang langsung menerapkan kombinasi alat aksesibilitas secara bersamaan:

ID ProfilNama ProfilPenyesuaian yang Diterapkan
motor-impairedMotor ImpairedKursor penunjuk besar, navigasi suara, nonaktifkan animasi, ukuran font +10%.
blindBlindMode kontras tinggi, pembaca layar TTS, navigasi suara, ukuran font +15%.
color-blindColor BlindFilter optik matriks SVG Protanopia, font OpenDyslexic, penyorotan tautan.
dyslexiaDyslexiaTipografi OpenDyslexic, spasi huruf ekstra, tinggi baris bertambah, judul tebal.
low-visionLow VisionSkala font 130%, tema kontras gelap, font keterbacaan tinggi, kursor besar.
cognitive-learningCognitive & LearningSorot judul & tautan, panduan fokus membaca, navigasi suara.
seizure-epilepticSeizure & EpilepticBekukan seluruh animasi CSS/GIF, saturasi rendah, desaturasi media.
adhdADHDGaris fokus panduan membaca, sorot judul/tautan, kontras menenangkan.
javascript
// Mengaktifkan profil secara programatis
agent.setProfile('color-blind');

🛠️ Metode API Programatis

Instance yang dikembalikan oleh createVisua11yAgent() (atau window.Visua11yAgentPlugin) menyediakan kendali runtime penuh:

typescript
interface Visua11yAgentPlugin {
  // Kontrol Menu
  openMenu: () => void;
  closeMenu: () => void;
  toggleMenu: () => void;

  // Bahasa & i18n
  changeLanguage: (code: string) => void;
  registerLanguage: (options: IRegisterLanguageOptions) => string;

  // Tampilan & Posisi
  setPosition: (position: string) => void;
  setOffset: (offset: number[] | string) => void;
  setWidgetSize: (size: string) => void;
  setIcon: (html?: string) => void;
  hideFooter: (hide: boolean) => void;
  setFooterSize: (size: 'small' | 'medium' | 'large') => void;

  // Alat Bantu & Profil
  toggleTool: (key: string, enable?: boolean) => void;
  setProfile: (profileId: string) => void;
  resetAll: () => void;
  getSettings: () => ISettings;
}

📡 Custom DOM Events

Anda dapat mendengarkan perubahan status widget di aplikasi Anda:

javascript
// Dipicu saat bahasa aktif berubah
document.addEventListener('visua11y-agent:language:changed', (event) => {
  console.log('Bahasa diubah ke:', event.detail.code);
});

// Dipicu saat bahasa baru didaftarkan secara dinamis
document.addEventListener('visua11y-agent:languages:updated', (event) => {
  console.log('Daftar bahasa diperbarui dengan:', event.detail.code);
});

💾 Penyimpanan & State Persistence

Preferensi pengguna dan status alat bantu yang sedang aktif tersimpan secara otomatis di localStorage dengan kunci visua11y-agent-settings. Saat pengguna berpindah halaman atau me-refresh browser, seluruh pengaturan akan dipulihkan secara otomatis.

Untuk mengembalikan pengaturan pengguna kembali ke default pabrik secara programatis:

javascript
agent.resetAll();