🔗 Quick Links:
Kalkulator pembagian waris Islam yang lengkap dengan fitur konversi angka ke terbilang Indonesia. Dibuat mengikuti aturan fiqh madzhab Syafii dan mendukung semua skenario pembagian warisan yang umum terjadi.
Faraidh (الفرائض)
- Ilmu pembagian harta warisan menurut syariat Islam
- Berdasarkan Al-Quran, Hadits, dan Ijma ulama
- Sistem perhitungan yang sangat presisi dan adil
Tirkah (التركة)
- Harta peninggalan pewaris setelah meninggal dunia
- Termasuk semua aset, properti, dan kekayaan
- Harus dibersihkan dari utang dan wasiat terlebih dahulu
- Tajhiz wa Takfin - Biaya perawatan jenazah dan pemakaman
- Utang (الديون) - Semua kewajiban finansial pewaris
- Wasiat (الوصية) - Maksimal 1/3 dari sisa harta setelah utang
- Mirath (الميراث) - Pembagian warisan kepada ahli waris
Ashab al-Furud (أصحاب الفروض)
- Ahli waris yang mendapat bagian tetap (fard)
- Bagian mereka sudah ditentukan Al-Quran
- Contoh: istri 1/8, ibu 1/6, anak perempuan 1/2
Asabah (العصبة)
- Ahli waris yang mendapat sisa harta setelah ashab al-furud
- Prinsip: laki-laki mendapat 2x bagian perempuan
- Contoh: anak laki-laki, ayah (jika tidak ada anak), saudara laki-laki
Dhuwu al-Arham (ذوو الأرحام)
- Kerabat jauh yang baru mendapat warisan jika tidak ada asabah
- Contoh: paman dari pihak ibu, bibi, cucu perempuan dari anak perempuan
Asl Masalah (أصل المسألة)
- Penyebut utama dalam pembagian warisan
- KPK (Kelipatan Persekutuan Terkecil) dari semua penyebut bagian
- Contoh: jika ada 1/2, 1/3, 1/6 → asl masalah = 6
Siham (السهام)
- Unit pembagian, pembilang dari pecahan bagian
- Jumlah "saham" yang diterima setiap ahli waris
- Contoh: jika asl masalah 6, maka 1/2 = 3 siham
Awl (العول)
- "Penyusutan proporsional" ketika total siham melebihi asl masalah
- Semua bagian dikurangi secara proporsional
- Contoh: suami 1/2 + ibu 1/6 + 2 saudari 2/3 = 8/6 > 1 → awl
Radd (الرد)
- "Pengembalian" sisa harta kepada ahli waris yang berhak
- Terjadi ketika total bagian fard < 1 dan tidak ada asabah
- Distribusi proporsional berdasarkan bagian fard awal
- Biasanya suami/istri tidak dapat radd (tergantung madzhab)
- Hanya untuk ashab al-furud yang eligible (bukan pasangan)
Hajb (الحجب)
- Sistem "pemblokiran" atau penghalangan ahli waris
- Ada yang terhalang total (hajb hirman) atau berkurang (hajb nuqsan)
- Contoh: ayah menghalang kakek, anak menghalang cucu
Hajb bi al-Washf (حجب بالوصف)
- Terhalang karena sifat (budak, beda agama, pembunuh)
Hajb bi al-Shakhs (حجب بالشخص)
- Terhalang karena ada orang yang lebih dekat
- Contoh: kakek terhalang ayah, cucu terhalang anak
- 1/2 (النصف) - Suami tanpa anak, 1 anak perempuan, 1 saudari
- 1/4 (الربع) - Suami dengan anak, istri tanpa anak
- 1/8 (الثمن) - Istri dengan anak
- 2/3 (الثلثان) - 2+ anak perempuan, 2+ saudari
- 1/3 (الثلث) - Ibu tanpa anak & saudara, 2+ saudara seibu
- 1/6 (السدس) - Ibu dengan anak, ayah dengan anak, nenek, 1 saudara seibu
Radd (الرد) - Pengembalian Sisa Harta
- Kondisi: Total bagian fard < 100% DAN tidak ada asabah
- Yang berhak: Ashab al-furud eligible (bukan suami/istri dalam madzhab Syafii)
- Perhitungan: Sisa dibagi proporsional sesuai rasio bagian fard awal
- Contoh: Ibu (1/6) + 2 Anak Perempuan (2/3) = 5/6, sisa 1/6 di-radd
-
Rumus Radd:
Bagian_Akhir = Bagian_Fard + (Sisa_Harta × Bagian_Fard / Total_Fard_Eligible)
Gharrawain/Umariyatain (الغراوين)
- Kasus: suami + ayah + ibu
- Ibu mendapat 1/3 dari sisa (bukan 1/3 dari total)
- Dinamakan demikian karena terjadi pada masa Umar bin Khattab
Musytarakah/Himariyah (المشتركة)
- Saudara seibu dan saudara kandung berbagi bagian 1/3
- Bertentangan dengan prinsip bahwa saudara kandung menghalang saudara seibu
- Kasus kontroversial dalam fiqh
Muqasamah (المقاسمة)
- Kakek memilih antara 1/6 atau berbagi dengan saudara sebagai "saudara"
- Memilih opsi yang memberikan bagian terbesar
Presisi Tinggi
- Menggunakan BigInt untuk perhitungan exact
- Tidak ada kesalahan pembulatan
- Cocok untuk harta bernilai besar
Madzhab Syafii
- Implementasi default mengikuti madzhab Syafii
- Dapat diperluas untuk madzhab lain
- Aturan hajb sesuai pendapat Syafii
Validasi Komprehensif
- Cek konsistensi input (tidak boleh suami+istri bersamaan)
- Validasi wasiat maksimal 1/3
- Deteksi error dalam data ahli waris
Output Lengkap
- Pembagian per kategori (fard, asabah, radd)
- Info awl/radd jika terjadi
- Daftar ahli waris yang terhalang (hajb)
- Summary perhitungan dengan asl masalah
- Calculator ini untuk referensi dan edukasi
- Untuk keputusan resmi, konsultasi dengan ulama yang berkompeten
- Setiap kasus mungkin memiliki kekhususan yang perlu pertimbangan ahli
- Implementasi mengikuti pendapat mayoritas dalam madzhab Syafii
📚 Sumber Rujukan:
- Al-Quran Surah An-Nisa ayat 11, 12, 176
- Hadits-hadits tentang faraidh
- Kitab-kitab fiqh madzhab Syafii
- Ijma ulama tentang pembagian warisan
- Perhitungan fiqh yang benar - Sesuai kaidah pembagian warisan Islam
- Dukungan madzhab Syafii - Konfigurasi default, bisa diperluas ke madzhab lain
- Semua skenario warisan - Awl, Radd, Hajb (pemblokiran), Asabah, Dhuwu al-Arham
- Perhitungan presisi - Pakai BigInt biar gak ada error pembulatan
- Validasi menyeluruh - Input dicek dulu biar gak ada yang aneh
- Bahasa Indonesia - Konversi angka jadi kata-kata Indonesia
- Angka besar - Sampai 10^36 (desiliun) pun bisa
- Desimal juga bisa - Angka pecahan dengan presisi tinggi
- Format mata uang - Khusus buat Rupiah udah ada
- 118 test lengkap - Semua passed dengan coverage 100%
- Beberapa jenis test - Basic, advanced, sama performance
- Skenario nyata - Kasus-kasus warisan yang rumit udah divalidasi
npm install waris
# Atau dengan yarn
yarn add waris
# Atau dengan pnpm
pnpm add waris
# Atau dengan bun
bun add waris
📦 NPM Package: waris
<!-- UMD (Universal Module Definition) - Paling kompatibel -->
<script src="https://cdn.jsdelivr.net/npm/waris@latest/dist/waris.umd.js"></script>
<!-- ES Module (Modern browsers) -->
<script type="module">
import { calculateFaraidh, Terbilang } from 'https://cdn.jsdelivr.net/npm/waris@latest/dist/waris.es.mjs';
</script>
<!-- Minified version -->
<script src="https://cdn.jsdelivr.net/npm/waris@latest/dist/waris.umd.js"></script>
<script src="https://unpkg.com/waris@latest/dist/waris.umd.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>Waris CDN Demo</title>
</head>
<body>
<!-- Load library -->
<script src="https://cdn.jsdelivr.net/npm/waris@latest/dist/waris.umd.js"></script>
<script>
// ✅ Global Waris tersedia
console.log('Waris loaded:', !!window.Waris);
// 🕌 Hitung faraidh
const result = Waris.Waris.calculateFaraidh({
totalAssets: 1000000000n, // 1 miliar
utang: 0n,
wasiatFraction: { num: 0n, den: 1n },
heirs: {
istri: 1,
anakPerempuan: 2,
suami: 0, ayah: 0, ibu: 0, anakLaki: 0,
kakekAyah: 0, nenekAyah: 0, nenekIbu: 0,
cucuLakiDariAnakLaki: 0, cucuPerempuanDariAnakLaki: 0,
saudaraLakiKandung: 0, saudaraPerempuanKandung: 0,
saudaraLakiSeayah: 0, saudaraPerempuanSeayah: 0,
saudaraLakiSeibu: 0, saudaraPerempuanSeibu: 0,
keponakanLakiDariSaudaraLakiKandung: 0,
pamanKandung: 0, pamanSeayah: 0
}
});
console.log('💰 Total distribusi:', result.totalDistributed);
// 🔢 Konversi terbilang
const amount = 150000000n;
const terbilang = Waris.Terbilang.ConvertBigInt(amount);
console.log(`Rp ${amount.toLocaleString()} = "${terbilang} rupiah"`);
// 📊 Tampilkan hasil
result.fardResults?.forEach(heir => {
console.log(`${heir.type}: Rp ${heir.totalShare.toLocaleString()}`);
});
</script>
</body>
</html>
# Clone repositorynya
git clone <repository-url>
cd waris
# Install dependensi
bun install
# Jalanin test
bun test
import { calculateFaraidh, type HeirCounts } from 'waris';
// Tentuin ahli warisnya
const heirs: HeirCounts = {
istri: 1, // 1 istri
anakLaki: 2, // 2 anak laki-laki
anakPerempuan: 1, // 1 anak perempuan
ayah: 1, // 1 ayah
ibu: 1, // 1 ibu
// ... yang lain di-set 0
};
// Hitung warisannya
const result = calculateFaraidh({
totalAssets: 1000000000n, // 1 miliar Rupiah
utang: 100000000n, // 100 juta utang
wasiatFraction: { num: 1n, den: 10n }, // wasiat 10%
heirs
});
console.log('Total yang dibagi:', result.totalDistributed);
console.log('Bagian istri:', result.fardResults.find(r => r.type === 'istri')?.totalShare);
import { Terbilang, terbilangRupiah } from './src/utils/Terbilang';
// Konversi angka jadi kata Indonesia
console.log(Terbilang.Convert(123456789));
// "seratus dua puluh tiga juta empat ratus lima puluh enam ribu tujuh ratus delapan puluh sembilan"
// Konversi BigInt langsung (lebih cepat)
console.log(Terbilang.ConvertBigInt(1500000n));
// "satu juta lima ratus ribu"
// Konversi mata uang
console.log(terbilangRupiah(1500000n));
// "satu juta lima ratus ribu rupiah"
import { calculateFaraidh } from './src/faraidh';
import { Terbilang } from './src/utils/Terbilang';
// Pak Ahmad meninggal, harta Rp 600 juta
// Ahli waris: istri + 2 anak perempuan
const result = calculateFaraidh({
totalAssets: 600000000n, // 600 juta
utang: 0n, // tidak ada utang
wasiatFraction: { num: 0n, den: 1n }, // tidak ada wasiat
heirs: {
istri: 1,
anakPerempuan: 2,
// semua yang lain: 0
suami: 0, ayah: 0, ibu: 0, anakLaki: 0,
kakekAyah: 0, nenekAyah: 0, nenekIbu: 0,
cucuLakiDariAnakLaki: 0, cucuPerempuanDariAnakLaki: 0,
saudaraLakiKandung: 0, saudaraPerempuanKandung: 0,
saudaraLakiSeayah: 0, saudaraPerempuanSeayah: 0,
saudaraLakiSeibu: 0, saudaraPerempuanSeibu: 0,
keponakanLakiDariSaudaraLakiKandung: 0,
pamanKandung: 0, pamanSeayah: 0
}
});
// Tampilkan hasil
console.log('=== WARIS PAK AHMAD ===');
console.log(`Harta bersih: Rp ${result.netEstate.toLocaleString()}`);
result.fardResults.forEach(heir => {
console.log(`${heir.type}: Rp ${heir.totalShare.toLocaleString()} (${heir.portion.num}/${heir.portion.den})`);
console.log(`Terbilang: ${Terbilang.ConvertBigInt(heir.totalShare)} rupiah`);
});
// Output:
// Istri: Rp 75,000,000 (1/8) - karena ada anak
// Anak Perempuan: Rp 400,000,000 total (2/3) - dibagi 2 = Rp 200,000,000 per anak
// Sisa Rp 125,000,000 ke dhuwu al-arham
import { calculateFaraidh } from './src/faraidh';
// Bu Siti meninggal, harta Rp 800 juta, utang Rp 150 juta, wasiat 10%
const result = calculateFaraidh({
totalAssets: 800000000n, // 800 juta
utang: 150000000n, // 150 juta utang bank
wasiatFraction: { num: 1n, den: 10n }, // wasiat 10% untuk yayasan
heirs: {
suami: 1,
ayah: 1,
ibu: 1,
anakLaki: 1,
anakPerempuan: 1,
// yang lain: 0
istri: 0, kakekAyah: 0, nenekAyah: 0, nenekIbu: 0,
cucuLakiDariAnakLaki: 0, cucuPerempuanDariAnakLaki: 0,
saudaraLakiKandung: 0, saudaraPerempuanKandung: 0,
saudaraLakiSeayah: 0, saudaraPerempuanSeayah: 0,
saudaraLakiSeibu: 0, saudaraPerempuanSeibu: 0,
keponakanLakiDariSaudaraLakiKandung: 0,
pamanKandung: 0, pamanSeayah: 0
}
});
console.log('=== WARIS BU SITI ===');
console.log(`Harta awal: Rp ${800000000n.toLocaleString()}`);
console.log(`Utang: Rp ${150000000n.toLocaleString()}`);
console.log(`Wasiat (10%): Rp ${result.wasiatAmount?.toLocaleString()}`);
console.log(`Harta bersih: Rp ${result.netEstate.toLocaleString()}`);
// Tampilkan pembagian
result.fardResults.forEach(heir => {
console.log(`${heir.type}: Rp ${heir.totalShare.toLocaleString()}`);
});
result.asabahResults.forEach(heir => {
console.log(`${heir.type} (Asabah): Rp ${heir.totalShare.toLocaleString()}`);
});
import { calculateFaraidh } from './src/faraidh';
// Pak Budi meninggal tanpa anak, total bagian fard > 100%
// Istri 1/4 + Ibu 1/6 + 2 Saudari 2/3 = 13/12 > 1
const result = calculateFaraidh({
totalAssets: 240000000n, // 240 juta
utang: 0n,
wasiatFraction: { num: 0n, den: 1n },
heirs: {
istri: 1,
ibu: 1,
saudaraPerempuanKandung: 2,
// yang lain: 0
suami: 0, ayah: 0, anakLaki: 0, anakPerempuan: 0,
kakekAyah: 0, nenekAyah: 0, nenekIbu: 0,
cucuLakiDariAnakLaki: 0, cucuPerempuanDariAnakLaki: 0,
saudaraLakiKandung: 0, saudaraLakiSeayah: 0,
saudaraPerempuanSeayah: 0, saudaraLakiSeibu: 0,
saudaraPerempuanSeibu: 0,
keponakanLakiDariSaudaraLakiKandung: 0,
pamanKandung: 0, pamanSeayah: 0
}
});
console.log('=== KASUS AWL - PAK BUDI ===');
console.log(`Awl diterapkan: ${result.awlApplied ? 'YA' : 'TIDAK'}`);
console.log(`Asl masalah: ${result.aslMasalah}`);
console.log(`Total siham: ${result.totalSiham}`);
// Normal: Istri 1/4, Ibu 1/6, 2 Saudari 2/3
// Awl: semua dikurangi proporsional karena total > 100%
result.fardResults.forEach(heir => {
const percentage = Number(heir.totalShare * 100n / result.netEstate);
console.log(`${heir.type}: Rp ${heir.totalShare.toLocaleString()} (${percentage.toFixed(1)}%)`);
});
import { Terbilang } from './src/utils/Terbilang';
// Konversi nilai harta yang besar untuk dokumen resmi
const hartaValues = [
1500000000n, // 1.5 miliar
25750000000n, // 25.75 miliar
500000000000n, // 500 miliar
];
console.log('=== KONVERSI HARTA BESAR ===');
hartaValues.forEach(value => {
const numeric = `Rp ${value.toLocaleString('id-ID')}`;
const terbilang = Terbilang.ConvertBigInt(value);
console.log(`${numeric}`);
console.log(`"${terbilang} rupiah"`);
console.log('---');
});
// Output:
// Rp 1,500,000,000
// "satu miliar lima ratus juta rupiah"
// ---
// Rp 25,750,000,000
// "dua puluh lima miliar tujuh ratus lima puluh juta rupiah"
import { Terbilang } from './src/utils/Terbilang';
// Konversi hasil pembagian yang ada desimal
const pembagianWarisan = [
166666666.67, // hasil bagi 3
333333.33, // bagian kecil
1250000.50, // dengan sen
];
console.log('=== KONVERSI DESIMAL WARISAN ===');
pembagianWarisan.forEach((value, index) => {
const terbilang = Terbilang.Convert(value);
console.log(`Ahli waris ${index + 1}:`);
console.log(`Rp ${value.toLocaleString('id-ID')}`);
console.log(`"${terbilang} rupiah"`);
console.log('');
});
// Output:
// Ahli waris 1:
// Rp 166,666,666.67
// "seratus enam puluh enam juta enam ratus enam puluh enam ribu enam ratus enam puluh enam koma enam tujuh rupiah"
// Untuk dokumen notaris/pengadilan
function formatTerbilangRupiah(amount: number): string {
const terbilang = Terbilang.Convert(amount);
return `(${terbilang} rupiah)`.replace(/\b\w/g, l => l.toUpperCase());
}
console.log('Format notaris:');
console.log(`Rp 166,666,666.67 ${formatTerbilangRupiah(166666666.67)}`);
// "Rp 166,666,666.67 (Seratus Enam Puluh Enam Juta Enam Ratus Enam Puluh Enam Ribu Enam Ratus Enam Puluh Enam Koma Enam Tujuh Rupiah)"
// ===== IMPORTS =====
import { calculateFaraidh, HeirCounts } from './src/faraidh';
import { Terbilang, terbilangRupiah } from './src/utils/Terbilang';
// ===== FARAIDH FUNCTIONS =====
// Main calculation function
calculateFaraidh(input: {
totalAssets: bigint; // Harta total (BigInt)
utang: bigint; // Utang (BigInt)
wasiatFraction: Fraction; // Wasiat { num: bigint, den: bigint }
heirs: HeirCounts; // Object semua ahli waris
madzhab?: string; // Optional, default: 'syafii'
}) → CalculationResult
// Helper function untuk heirs kosong
const emptyHeirs: HeirCounts = {
suami: 0, istri: 0, ayah: 0, ibu: 0,
// ... semua property = 0
};
// ===== TERBILANG FUNCTIONS =====
Terbilang.Convert(input: number) → string // Angka biasa
Terbilang.ConvertBigInt(input: bigint) → string // BigInt (lebih cepat)
terbilangRupiah(amount: bigint) → string // Format "... rupiah"
// ===== COMMON PATTERNS =====
// 1. Basic faraidh calculation
const result = calculateFaraidh({
totalAssets: 1000000000n,
utang: 0n,
wasiatFraction: { num: 0n, den: 1n },
heirs: { istri: 1, anakPerempuan: 2, ...emptyHeirs }
});
// 2. Get specific heir result
const istriBagian = result.fardResults.find(h => h.type === 'istri');
const anakAsabah = result.asabahResults.find(h => h.type === 'anakLaki');
// 3. Format currency with terbilang
const amount = 150000000n;
console.log(`Rp ${amount.toLocaleString()} (${Terbilang.ConvertBigInt(amount)} rupiah)`);
// 4. Check special cases
if (result.awlApplied) console.log('Kasus Awl terjadi');
if (result.raddApplied) console.log('Kasus Radd terjadi');
if (result.ibtalApplied.length > 0) console.log('Ada yang terhijab:', result.ibtalApplied);
Fungsi utama buat hitung pembagian warisan Islam sesuai aturan fiqh.
Parameter Input:
-
totalAssets: bigint
- Total harta dalam Rupiah -
utang: bigint
- Utang yang harus dibayar dalam Rupiah -
wasiatFraction: Fraction
- Wasiat dalam bentuk pecahan (maksimal 1/3) -
heirs: HeirCounts
- Object berisi jumlah semua ahli waris -
madzhab?: string
- Madzhab fiqh (default: 'syafii')
Return: Hasil perhitungan lengkap dengan pembagian warisan
Pasangan:
-
suami
- Suami (0|1) -
istri
- Istri (0-4)
Orang Tua & Kakek Nenek:
-
ayah
- Ayah (0|1) -
ibu
- Ibu (0|1) -
kakekAyah
- Kakek dari pihak ayah (0|1) -
nenekAyah
- Nenek dari pihak ayah (0|1) -
nenekIbu
- Nenek dari pihak ibu (0|1)
Keturunan:
-
anakLaki
- Anak laki-laki (≥0) -
anakPerempuan
- Anak perempuan (≥0) -
cucuLakiDariAnakLaki
- Cucu laki-laki dari anak laki-laki (≥0) -
cucuPerempuanDariAnakLaki
- Cucu perempuan dari anak laki-laki (≥0)
Saudara:
-
saudaraLakiKandung
- Saudara laki-laki kandung (≥0) -
saudaraPerempuanKandung
- Saudara perempuan kandung (≥0) -
saudaraLakiSeayah
- Saudara laki-laki seayah (≥0) -
saudaraPerempuanSeayah
- Saudara perempuan seayah (≥0) -
saudaraLakiSeibu
- Saudara laki-laki seibu (≥0) -
saudaraPerempuanSeibu
- Saudara perempuan seibu (≥0)
Keluarga Jauh:
-
keponakanLakiDariSaudaraLakiKandung
- Keponakan laki-laki dari saudara laki-laki kandung (≥0) -
pamanKandung
- Paman kandung (≥0) -
pamanSeayah
- Paman seayah (≥0)
Konversi angka jadi kata-kata Indonesia.
Fitur:
- Bisa integer dan desimal
- Angka besar banget juga bisa (sampai 10^36)
- Kalau ada originalStr, trailing zero tetap dipertahankan
- Angka negatif juga didukung
Engine ini ngikutin urutan fiqh yang benar:
-
Bayar Utang -
utang
dipotong duluan -
Bayar Wasiat -
wasiat
(maksimal 1/3 dari sisa) - Tentuin Ahli Waris - Terapin aturan hajb (pemblokiran)
- Hitung Fard - Bagian tetap untuk ashab al-furud
- Cek Awl/Radd - Handle kalau bagian lebih/kurang dari 1
- Bagi Asabah - Sisa warisan (rasio 2:1 laki-laki:perempuan)
- Dhuwu al-Arham - Kerabat jauh (kalau perlu)
- Awl (العول) - Penyusutan proporsional kalau total bagian fard melebihi 1
- Radd (الرد) - Kembaliin sisa ke ahli waris fard yang berhak
- Hajb (الحجب) - Aturan pemblokiran (misalnya ayah blokir kakek)
- Rasio 2:1 - Rasio warisan laki-laki:perempuan untuk asabah
# Jalanin semua test
bun test
# Test spesifik
bun test:faraidh # Semua test faraidh
bun test:faraidh:basic # Test warisan dasar
bun test:faraidh:advanced # Kasus advanced (awl, radd)
bun test:terbilang # Test konversi angka
src/
├── faraidh/ # Engine warisan Islam
│ ├── types.ts # Definisi TypeScript
│ ├── index.ts # Export utama
│ ├── config/
│ │ └── default.ts # Konfigurasi madzhab Syafii
│ └── engine/
│ ├── calculate.ts # Logika perhitungan utama
│ ├── utils.ts # Utilitas matematika
│ └── terbilang.ts # Integrasi dengan Terbilang
├── utils/
│ └── Terbilang.ts # Konverter angka ke kata
test/
├── faraidh/ # Test faraidh
│ ├── faraidh.basic.test.ts # Skenario dasar (13 test)
│ └── faraidh.advanced.test.ts # Skenario advanced (16 test)
└── terbilang/ # Test terbilang
index.d.ts # Deklarasi TypeScript
Saat ini mendukung madzhab Syafii dengan konfigurasi yang bisa diperluas:
export const defaultConfig: FaraidhConfig = {
locale: 'id-ID',
madzhab: 'syafii',
currency: 'IDR',
raddForSpouse: false, // Pasangan gak dapat radd di Syafii
ibtalRules: {
// Aturan hajb (pemblokiran)
'ayah': ['kakekAyah', 'saudaraLakiKandung', /* ... */],
// ... aturan pemblokiran lainnya
}
};
- Fork repository ini
- Buat branch fitur:
git checkout -b fitur/fitur-baru
- Lakukan perubahan dan tambah test
- Pastikan semua test passed:
bun test
- Submit pull request
MIT License - lihat file LICENSE untuk detail.
- Berdasarkan prinsip fiqh Islam klasik
- Implementasi madzhab Syafii
- Dukungan bahasa Indonesia untuk aksesibilitas
Catatan Penting: Kalkulator ini dibuat untuk keperluan edukasi dan referensi. Untuk keputusan resmi terkait pembagian warisan, silakan konsultasi dengan ulama yang berkompeten.
Fard (Ashab al-Furud) - Ahli Waris dengan Bagian Tetap:
- ✅ Suami/Istri (hingga 4 istri)
- ✅ Ayah/Ibu, Kakek/Nenek
- ✅ Anak laki-laki/perempuan
- ✅ Cucu dari anak laki-laki
- ✅ Saudara kandung, seayah, seibu
Asabah - Ahli Waris Sisa:
- ✅ Keponakan laki-laki dari saudara kandung
- ✅ Paman kandung dan seayah
Dhuwu al-Arham (ذوو الأرحام) - Kerabat Jauh:
- ✅ Class 1: Cucu dari anak perempuan
- ✅ Class 2: Kakek/paman/bibi dari pihak ibu
- ✅ Class 3: Bibi kandung/seayah, keponakan perempuan
- ✅ Class 4: Sepupu, anak keponakan
Dhuwu al-Arham hanya mewarisi ketika tidak ada ahli waris fard maupun asabah. Mereka dibagi dalam 4 kelas berdasarkan prioritas:
cucuLakiDariAnakPerempuan: number; // Cucu laki dari anak perempuan
cucuPerempuanDariAnakPerempuan: number; // Cucu perempuan dari anak perempuan
kakekIbu: ZeroOne; // Kakek dari pihak ibu
pamanDariIbu: number; // Paman dari pihak ibu
bibiDariIbu: number; // Bibi dari pihak ibu
bibiKandung: number; // Bibi kandung (saudara perempuan ayah)
bibiSeayah: number; // Bibi seayah
keponakanPerempuanDariSaudaraKandung: number; // Keponakan perempuan
keponakanPerempuanDariSaudaraSeayah: number; // Keponakan perempuan seayah
sepupuLakiKandung: number; // Sepupu laki kandung
sepupuPerempuanKandung: number; // Sepupu perempuan kandung
sepupuLakiSeayah: number; // Sepupu laki seayah
sepupuPerempuanSeayah: number; // Sepupu perempuan seayah
anakKeponakanLakiKandung: number; // Anak keponakan laki kandung
anakKeponakanPerempuanKandung: number; // Anak keponakan perempuan kandung
Catatan: Kelas yang lebih tinggi memblokir kelas yang lebih rendah. Dalam satu kelas, pembagian menggunakan rasio 2:1 (laki-laki : perempuan).