Forms /
stableButton
Trigger aksi utama, sekunder, atau destruktif. 7 tones × 5 variants × 3 sizes = ekspresif tapi konsisten.
Overview
Kapan pakai Button?
Button untuk aksi yang user trigger (submit, save, cancel, navigate-as-action). Untuk navigasi semantic (pindah halaman), pakai Link via Text variant="link".
Ekosistem Naraya: dipakai di NaraEdu (Submit jawaban, Lanjutkan), NaraAI (Run prompt), NaraBiz (Checkout, Tambah produk).
Examples
Default
Tones
7 semantic tones. Pakai sesuai makna aksi, bukan warna.
Variants
Solid (default), soft, outline, ghost, glass.
Sizes
With icon
Loading & Disabled
Full width
Props
Tokens Used
--color-{tone}Background solid + ring color
--color-{tone}-contentText on-color
--color-{tone}-hoverHover state (auto-derived untuk primary)
--radius-mdBorder radius default
--duration-fastTransition timing 120ms
--easing-snappyEasing curve untuk feedback langsung
Accessibility
- Render sebagai native <button>, default type='button' untuk hindari accidental form submit.
- Focus ring visible dengan keyboard navigation (focus-visible).
- aria-busy=true otomatis saat isLoading.
- disabled state respect aria-disabled + pointer-events: none.
- Icon-only button perlu aria-label eksplisit (gunakan IconButton component jika tersedia).