Elemen Dasar

Button (Tombol)

Tombol interaktif untuk memicu aksi utama, navigasi alur, pengiriman formulir, dan konfirmasi permohonan layanan.

Tombol (.mjl-btn) adalah elemen interaktif utama yang digunakan warga dan petugas untuk mengeksekusi tindakan — seperti mengirim permohonan, mengunduh bukti tanda terima, atau membuka modal konfirmasi.

Semua tombol di Majalengka Design System memenuhi standar WCAG 2.1 Level AA dengan ukuran sentuh minimum 44×44px pada perangkat seluler.


Pratinjau Langsung (Live Demo)

Coba seluruh variasi, ukuran, status interaktif, dan efek loading secara langsung di bawah ini:

1. Variasi Gaya (Variants)

Lima varian tombol resmi yang disesuaikan dengan hierarki aksi antarmuka.

2. Ukuran Tombol (Sizes)

Target sentuh minimum 44px (WCAG 2.1 AA) pada ukuran standar.

3. Status Interaktif (Interactive States)

Klik tombol "Klik untuk Simulasi Loading" untuk melihat efek spinner.

4. Tombol dengan Ikon

Kombinasi ikon tajam untuk mempercepat identifikasi visual.


1. Variasi Gaya (Variants)

Tersedia 5 variasi tombol sesuai dengan hierarki aksi antarmuka:

Pratinjau Variasi Tombol
VariasiKelas CSSRekomendasi Penggunaan
Primary.mjl-btn--primaryHanya satu per tampilan utama: Kirim formulir, Lanjut tahap berikutnya.
Secondary.mjl-btn--secondaryAksi pendukung: Simpan draf, Cetak pratinjau, Filter tabel.
Outline.mjl-btn--outlineAksi alternatif dengan penekanan visual sedang: Kembali, Batal.
Ghost.mjl-btn--ghostAksi rendah penekanan di dalam tabel atau header kartu: Sunting, Salin.
Danger.mjl-btn--dangerTindakan destruktif tidak dapat diulang: Hapus akun, Batalkan izin.

2. Ukuran Tombol & Standar Sentuh

Perbandingan Ukuran Tombol

!IMPORTANT Jangan gunakan ukuran .mjl-btn--sm untuk alur utama pada perangkat seluler. Standar aksesibilitas kependudukan mewajibkan target sentuh fisik minimum 44px agar mudah ditekan oleh jempol warga lansia.


3. Status Interaktif (Interactive States)

Tombol merespons status visual pengguna: Normal, Hover, Fokus Keyboard, Loading, dan Disabled.

Status Tombol

4. Tombol dengan Ikon

Ikon memperjelas maksud tombol secara visual sebelum membaca teks:

Tombol dengan Ikon

5. Integrasi Vue 3 (@majalengka/vue)

Jika menggunakan tumpukan Vue 3 atau Nuxt, impor komponen <MjlButton>:

<script setup lang="ts">
import { MjlButton } from '@majalengka/vue';
import { ref } from 'vue';

const isSubmitting = ref(false);

async function handleSubmit() {
  isSubmitting.value = true;
  await submitRegistration();
  isSubmitting.value = false;
}
</script>

<template>
  <div class="flex gap-3">
    <MjlButton
      variant="primary"
      size="md"
      :loading="isSubmitting"
      @click="handleSubmit"
    >
      Kirim Permohonan
    </MjlButton>

    <MjlButton variant="outline" to="/layanan">
      Batal
    </MjlButton>
  </div>
</template>

Properti Komponen (Props API)

PropertiTipeNilai BawaanDeskripsi
variant'primary' | 'secondary' | 'outline' | 'ghost' | 'danger''primary'Variasi gaya visual
size'sm' | 'md' | 'lg''md'Ukuran tombol fisik
loadingbooleanfalseMenampilkan spinner dan menonaktifkan klik
disabledbooleanfalseMenonaktifkan interaksi tombol
type'button' | 'submit' | 'reset''button'Atribut tipe HTML
tostringundefinedJika diisi, tombol dirender sebagai tautan semantic (<a>)

Penggunaan di Berbagai Teknologi

Salin contoh sesuai teknologi proyek Anda. Semua versi memakai class dari @majalengka/css. Komponen siap pakai tersedia di @majalengka/vue; untuk React, Angular, Laravel, dan PHP, contoh di bawah sudah berupa pembungkus kecil yang bisa langsung disalin ke proyek.

<button type="button" class="mjl-btn mjl-btn--primary mjl-btn--md">Kirim Permohonan</button>
<button type="button" class="mjl-btn mjl-btn--outline mjl-btn--md">Simpan Draf</button>
<a href="/layanan" class="mjl-btn mjl-btn--ghost mjl-btn--md">Lihat Layanan</a>

6. Kaidah Aksesibilitas (WCAG 2.1 AA)

  • Target Sentuh Minimum: Tombol md memiliki tinggi fisik 44px, mencukupi Success Criterion 2.5.5.
  • Rasio Kontras: Teks putih pada Biru Majalengka 700 (#0014A8) menghasilkan kontras 10.5:1 (jauh melampaui ambang batas 4.5:1).
  • Indikator Fokus: Menggunakan cincin fokus ganda (outline: 3px solid var(--mjl-color-primary-300)) yang terlihat jelas saat navigasi menggunakan tombol Tab.
  • Screen Reader: Jika tombol hanya berisi ikon tanpa teks, wajib mencantumkan atribut aria-label="Nama Aksi" agar pembaca layar dapat membacakannya.
Copyright © 2026