@jjlmoya/utils-finance 1.30.0 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/es.ts +4 -4
- package/src/category/i18n/fr.ts +159 -159
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/ru.ts +158 -158
- package/src/category/index.ts +39 -38
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/entries.ts +4 -1
- package/src/env.d.ts +1 -1
- package/src/index.ts +1 -0
- package/src/layouts/PreviewLayout.astro +113 -113
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +76 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/script_density.test.ts +94 -94
- package/src/tests/seo_length.test.ts +23 -23
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +17 -17
- package/src/tool/compoundInterest/compound-interest-calculator.css +236 -236
- package/src/tool/compoundInterest/entry.ts +32 -32
- package/src/tool/compoundInterest/i18n/de.ts +195 -195
- package/src/tool/compoundInterest/i18n/fr.ts +195 -195
- package/src/tool/compoundInterest/i18n/it.ts +195 -195
- package/src/tool/compoundInterest/i18n/pl.ts +194 -194
- package/src/tool/compoundInterest/i18n/ru.ts +195 -195
- package/src/tool/compoundInterest/i18n/tr.ts +195 -195
- package/src/tool/compoundInterest/i18n/zh.ts +189 -189
- package/src/tool/compoundInterest/seo.astro +15 -15
- package/src/tool/courtFeeCalculator/i18n/it.ts +158 -158
- package/src/tool/courtFeeCalculator/i18n/ru.ts +158 -158
- package/src/tool/courtFeeCalculator/i18n/tr.ts +158 -158
- package/src/tool/courtFeeCalculator/seo.astro +15 -15
- package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +197 -197
- package/src/tool/debtSnowball/bibliography.ts +12 -12
- package/src/tool/debtSnowball/i18n/de.ts +16 -16
- package/src/tool/debtSnowball/i18n/id.ts +16 -16
- package/src/tool/debtSnowball/i18n/it.ts +168 -168
- package/src/tool/debtSnowball/i18n/nl.ts +16 -16
- package/src/tool/debtSnowball/i18n/pl.ts +168 -168
- package/src/tool/debtSnowball/i18n/pt.ts +1 -1
- package/src/tool/debtSnowball/i18n/ru.ts +1 -1
- package/src/tool/debtSnowball/i18n/sv.ts +22 -29
- package/src/tool/debtSnowball/i18n/tr.ts +168 -168
- package/src/tool/debtSnowball/i18n/zh.ts +168 -168
- package/src/tool/debtSnowball/seo.astro +15 -15
- package/src/tool/dividendYield/bibliography.astro +14 -0
- package/src/tool/dividendYield/bibliography.ts +12 -0
- package/src/tool/dividendYield/component.astro +83 -0
- package/src/tool/dividendYield/controller.ts +85 -0
- package/src/tool/dividendYield/dividend-yield-calculator.css +352 -0
- package/src/tool/dividendYield/dom-views.ts +58 -0
- package/src/tool/dividendYield/entry.ts +29 -0
- package/src/tool/dividendYield/evaluator.ts +16 -0
- package/src/tool/dividendYield/i18n/de.ts +53 -0
- package/src/tool/dividendYield/i18n/en.ts +138 -0
- package/src/tool/dividendYield/i18n/es.ts +49 -0
- package/src/tool/dividendYield/i18n/fr.ts +49 -0
- package/src/tool/dividendYield/i18n/id.ts +49 -0
- package/src/tool/dividendYield/i18n/it.ts +49 -0
- package/src/tool/dividendYield/i18n/ja.ts +49 -0
- package/src/tool/dividendYield/i18n/ko.ts +25 -0
- package/src/tool/dividendYield/i18n/nl.ts +25 -0
- package/src/tool/dividendYield/i18n/pl.ts +25 -0
- package/src/tool/dividendYield/i18n/pt.ts +25 -0
- package/src/tool/dividendYield/i18n/ru.ts +25 -0
- package/src/tool/dividendYield/i18n/sv.ts +25 -0
- package/src/tool/dividendYield/i18n/tr.ts +25 -0
- package/src/tool/dividendYield/i18n/zh.ts +25 -0
- package/src/tool/dividendYield/index.ts +11 -0
- package/src/tool/dividendYield/logic.test.ts +73 -0
- package/src/tool/dividendYield/logic.ts +55 -0
- package/src/tool/dividendYield/seo.astro +14 -0
- package/src/tool/dividendYield/storage.ts +24 -0
- package/src/tool/dividendYield/ui.ts +33 -0
- package/src/tool/financialFreedom/financial-freedom-calculator.css +311 -311
- package/src/tool/financialFreedom/i18n/en.ts +182 -182
- package/src/tool/financialFreedom/i18n/fr.ts +128 -128
- package/src/tool/financialFreedom/i18n/id.ts +24 -7
- package/src/tool/financialFreedom/i18n/it.ts +24 -7
- package/src/tool/financialFreedom/i18n/ja.ts +1 -1
- package/src/tool/financialFreedom/i18n/nl.ts +24 -7
- package/src/tool/financialFreedom/i18n/pl.ts +24 -7
- package/src/tool/financialFreedom/i18n/pt.ts +24 -7
- package/src/tool/financialFreedom/i18n/ru.ts +128 -128
- package/src/tool/financialFreedom/i18n/sv.ts +1 -1
- package/src/tool/financialFreedom/i18n/tr.ts +2 -2
- package/src/tool/financialFreedom/i18n/zh.ts +128 -128
- package/src/tool/fireCalculator/i18n/it.ts +241 -241
- package/src/tool/fireCalculator/i18n/ru.ts +241 -241
- package/src/tool/fireCalculator/i18n/tr.ts +241 -241
- package/src/tool/fireCalculator/i18n/zh.ts +241 -241
- package/src/tool/fireCalculator/seo.astro +15 -15
- package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +151 -151
- package/src/tool/ibanBicSwiftConverter/i18n/it.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +366 -366
- package/src/tool/ibanBicSwiftConverter/seo.astro +15 -15
- package/src/tool/inflation/bibliography.ts +20 -20
- package/src/tool/inflation/entry.ts +32 -32
- package/src/tool/inflation/i18n/de.ts +284 -284
- package/src/tool/inflation/i18n/fr.ts +284 -284
- package/src/tool/inflation/i18n/it.ts +284 -284
- package/src/tool/inflation/i18n/nl.ts +284 -284
- package/src/tool/inflation/i18n/pl.ts +284 -284
- package/src/tool/inflation/i18n/pt.ts +284 -284
- package/src/tool/inflation/i18n/ru.ts +284 -284
- package/src/tool/inflation/i18n/sv.ts +284 -284
- package/src/tool/inflation/i18n/tr.ts +284 -284
- package/src/tool/inflation/i18n/zh.ts +284 -284
- package/src/tool/inflation/seo.astro +15 -15
- package/src/tool/lateInterest/bibliography.ts +16 -16
- package/src/tool/lateInterest/entry.ts +32 -32
- package/src/tool/lateInterest/i18n/de.ts +213 -213
- package/src/tool/lateInterest/i18n/es.ts +213 -213
- package/src/tool/lateInterest/i18n/it.ts +213 -213
- package/src/tool/lateInterest/i18n/nl.ts +213 -213
- package/src/tool/lateInterest/i18n/pl.ts +213 -213
- package/src/tool/lateInterest/i18n/pt.ts +213 -213
- package/src/tool/lateInterest/i18n/ru.ts +213 -213
- package/src/tool/lateInterest/i18n/sv.ts +213 -213
- package/src/tool/lateInterest/i18n/tr.ts +213 -213
- package/src/tool/lateInterest/i18n/zh.ts +213 -213
- package/src/tool/lateInterest/seo.astro +15 -15
- package/src/tool/legalInterestRate/i18n/it.ts +129 -129
- package/src/tool/legalInterestRate/i18n/ru.ts +129 -129
- package/src/tool/legalInterestRate/i18n/tr.ts +128 -121
- package/src/tool/legalInterestRate/i18n/zh.ts +11 -4
- package/src/tool/legalInterestRate/seo.astro +15 -15
- package/src/tool/lotteryOptimizer/i18n/it.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/pl.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/ru.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/tr.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/zh.ts +162 -155
- package/src/tool/lotteryOptimizer/seo.astro +15 -15
- package/src/tool/mortgage/bibliography.ts +20 -20
- package/src/tool/mortgage/entry.ts +32 -32
- package/src/tool/mortgage/i18n/de.ts +210 -210
- package/src/tool/mortgage/i18n/es.ts +210 -210
- package/src/tool/mortgage/i18n/fr.ts +210 -210
- package/src/tool/mortgage/i18n/id.ts +210 -210
- package/src/tool/mortgage/i18n/it.ts +210 -210
- package/src/tool/mortgage/i18n/nl.ts +210 -210
- package/src/tool/mortgage/i18n/pl.ts +210 -210
- package/src/tool/mortgage/i18n/ru.ts +210 -210
- package/src/tool/mortgage/i18n/tr.ts +210 -210
- package/src/tool/mortgage/i18n/zh.ts +210 -210
- package/src/tool/mortgage/mortgage-calculator.css +595 -595
- package/src/tool/mortgage/seo.astro +15 -15
- package/src/tool/percentageCalculator/bibliography.ts +16 -16
- package/src/tool/percentageCalculator/entry.ts +32 -32
- package/src/tool/percentageCalculator/i18n/de.ts +220 -220
- package/src/tool/percentageCalculator/i18n/en.ts +220 -220
- package/src/tool/percentageCalculator/i18n/es.ts +220 -220
- package/src/tool/percentageCalculator/i18n/fr.ts +220 -220
- package/src/tool/percentageCalculator/i18n/it.ts +220 -220
- package/src/tool/percentageCalculator/i18n/pl.ts +220 -220
- package/src/tool/percentageCalculator/i18n/ru.ts +220 -220
- package/src/tool/percentageCalculator/i18n/tr.ts +220 -220
- package/src/tool/percentageCalculator/i18n/zh.ts +220 -220
- package/src/tool/percentageCalculator/seo.astro +15 -15
- package/src/tool/profitability/i18n/de.ts +24 -7
- package/src/tool/profitability/i18n/fr.ts +121 -104
- package/src/tool/profitability/i18n/id.ts +2 -2
- package/src/tool/profitability/i18n/it.ts +24 -7
- package/src/tool/profitability/i18n/ja.ts +1 -1
- package/src/tool/profitability/i18n/nl.ts +24 -7
- package/src/tool/profitability/i18n/pl.ts +1 -1
- package/src/tool/profitability/i18n/pt.ts +24 -7
- package/src/tool/profitability/i18n/ru.ts +118 -118
- package/src/tool/profitability/i18n/sv.ts +1 -1
- package/src/tool/profitability/i18n/tr.ts +1 -1
- package/src/tool/profitability/i18n/zh.ts +118 -118
- package/src/tool/profitability/profitability-calculator.css +229 -229
- package/src/tool/rentIncreaseCalculator/i18n/it.ts +125 -125
- package/src/tool/rentIncreaseCalculator/i18n/tr.ts +125 -125
- package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +326 -326
- package/src/tool/rentIncreaseCalculator/seo.astro +15 -15
- package/src/tool/revolvingCardCalculator/i18n/de.ts +38 -20
- package/src/tool/revolvingCardCalculator/i18n/es.ts +19 -18
- package/src/tool/revolvingCardCalculator/i18n/fr.ts +32 -28
- package/src/tool/revolvingCardCalculator/i18n/id.ts +18 -18
- package/src/tool/revolvingCardCalculator/i18n/it.ts +18 -18
- package/src/tool/revolvingCardCalculator/i18n/ja.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/ko.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/nl.ts +22 -19
- package/src/tool/revolvingCardCalculator/i18n/pl.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/pt.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/ru.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/sv.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/tr.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/zh.ts +6 -6
- package/src/tool/salaryEmployerCost/i18n/de.ts +10 -10
- package/src/tool/salaryEmployerCost/i18n/fr.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/id.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/it.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/ja.ts +1 -1
- package/src/tool/salaryEmployerCost/i18n/ko.ts +1 -1
- package/src/tool/salaryEmployerCost/i18n/nl.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/pl.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/pt.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/ru.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/sv.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/tr.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/zh.ts +2 -2
- package/src/tools.ts +2 -1
|
@@ -1,210 +1,210 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography'
|
|
2
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
-
import type { MortgageUI } from '../ui';
|
|
5
|
-
|
|
6
|
-
const slug = 'kalkulator-hipotek';
|
|
7
|
-
const title = 'Simulator Hipotek dan Tabel Amortisasi Prancis';
|
|
8
|
-
const description =
|
|
9
|
-
'Hitung angsuran hipotek bulanan Anda, cari tahu berapa besar bunga yang akan Anda bayar, dan visualisasikan jadwal amortisasi lengkap Anda secara instan.';
|
|
10
|
-
|
|
11
|
-
const faqData = [
|
|
12
|
-
{
|
|
13
|
-
question: 'Apa itu sistem amortisasi Prancis?',
|
|
14
|
-
answer:
|
|
15
|
-
'Ini adalah sistem yang paling banyak digunakan. Angsuran bulanan selalu sama, tetapi pada awalnya Anda membayar hampir seluruhnya untuk bunga dan sangat sedikit pokok. Pada akhirnya, yang terjadi adalah sebaliknya. Itulah mengapa melakukan pelunasan dipercepat lebih menguntungkan di tahun-tahun awal.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
question: 'Bunga tetap atau mengambang di tahun 2026?',
|
|
19
|
-
answer:
|
|
20
|
-
'Bunga tetap: Anda membayar lebih banyak sekarang tetapi tidur nyenyak selama 30 tahun. Bunga mengambang: bisa lebih murah hari ini, tetapi jika suku bunga naik, angsuran Anda dapat melonjak drastis. Ini tergantung pada toleransi risiko Anda.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Berapa banyak yang saya hemat jika saya melunasi 10 juta rupiah dipercepat?',
|
|
24
|
-
answer:
|
|
25
|
-
'Tergantung pada waktunya. Jika dilakukan pada tahun ke-1 dari hipotek 200 juta rupiah dengan bunga 3%, Anda bisa menghemat lebih dari 15 juta rupiah bunga. Jika dilakukan pada tahun ke-20, penghematannya hanya sekitar 2 juta rupiah. Pengaturan waktu sangat penting.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
question: 'Berapa persentase gaji saya yang harus dialokasikan untuk hipotek?',
|
|
29
|
-
answer:
|
|
30
|
-
'Rekomendasi umumnya adalah tidak melebihi 30-35% dari pendapatan bersih bulanan Anda (termasuk hutang lainnya). Melampaui ambang batas ini secara signifikan meningkatkan risiko gagal bayar jika terjadi hal yang tidak terduga.',
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
const howToData = [
|
|
35
|
-
{
|
|
36
|
-
name: 'Masukkan jumlah pinjaman',
|
|
37
|
-
text: 'Tuliskan jumlah total yang perlu Anda ajukan ke bank (setelah dikurangi uang muka Anda).',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Sesuaikan suku bunga',
|
|
41
|
-
text: 'Masukkan bunga tahunan yang ditawarkan oleh bank. Anda dapat membandingkan antara bunga tetap atau mengambang.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'Pilih jangka waktu amortisasi',
|
|
45
|
-
text: 'Tentukan berapa tahun Anda ingin melunasi pinjaman. Semakin lama jangka waktunya, angsuran semakin rendah tetapi Anda akan membayar total bunga yang lebih besar.',
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: 'Analisis tabel amortisasi',
|
|
49
|
-
text: 'Tinjau bulan demi bulan bagaimana perkembangan utang Anda dan bagian mana dari angsuran Anda yang digunakan untuk bunga vs pokok.',
|
|
50
|
-
},
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
-
'@context': 'https://schema.org',
|
|
55
|
-
'@type': 'FAQPage',
|
|
56
|
-
mainEntity: faqData.map((item) => ({
|
|
57
|
-
'@type': 'Question',
|
|
58
|
-
name: item.question,
|
|
59
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
-
})),
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const howToSchema: WithContext<HowTo> = {
|
|
64
|
-
'@context': 'https://schema.org',
|
|
65
|
-
'@type': 'HowTo',
|
|
66
|
-
name: title,
|
|
67
|
-
description,
|
|
68
|
-
step: howToData.map((step, i) => ({
|
|
69
|
-
'@type': 'HowToStep',
|
|
70
|
-
position: i + 1,
|
|
71
|
-
name: step.name,
|
|
72
|
-
text: step.text,
|
|
73
|
-
})),
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
77
|
-
'@context': 'https://schema.org',
|
|
78
|
-
'@type': 'SoftwareApplication',
|
|
79
|
-
name: title,
|
|
80
|
-
description,
|
|
81
|
-
applicationCategory: 'FinanceApplication',
|
|
82
|
-
operatingSystem: 'All',
|
|
83
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'IDR' },
|
|
84
|
-
inLanguage: 'id',
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export const content: ToolLocaleContent<MortgageUI> = {
|
|
88
|
-
slug,
|
|
89
|
-
title,
|
|
90
|
-
description,
|
|
91
|
-
faq: faqData,
|
|
92
|
-
bibliography,
|
|
93
|
-
|
|
94
|
-
howTo: howToData,
|
|
95
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
-
seo: [
|
|
97
|
-
{
|
|
98
|
-
type: 'title',
|
|
99
|
-
text: 'Panduan Lengkap Hipotek: Sistem Prancis dan Amortisasi',
|
|
100
|
-
level: 2,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
type: 'paragraph',
|
|
104
|
-
html: 'Hipotek kemungkinan besar merupakan utang terbesar yang akan Anda ambil dalam hidup Anda. Memahami cara kerja sistem amortisasi Prancis sangat penting untuk mengambil keputusan cerdas yang dapat menghemat puluhan juta rupiah bagi Anda.',
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
type: 'title',
|
|
108
|
-
text: '"Jebakan" Sistem Prancis: Memahami Komposisi Angsuran Anda',
|
|
109
|
-
level: 3,
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
type: 'paragraph',
|
|
113
|
-
html: 'Sebagian besar hipotek menggunakan <strong>Sistem Amortisasi Prancis</strong>. Ciri utamanya adalah angsuran bulanan selalu sama (jika bunga tetap), tetapi komposisinya berubah drastis seiring waktu.',
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
type: 'tip',
|
|
117
|
-
title: 'Bagaimana Angsuran Anda Berkembang',
|
|
118
|
-
html: '<p><strong>Pada awal (Tahun 1-10):</strong> Anda membayar hampir semuanya UNTUK BUNGA dan sangat sedikit mengembalikan uang yang dipinjam. Pada hipotek 250 juta rupiah dengan bunga 3%, pembayaran pertama Anda bisa terdiri dari 80% bunga.</p><p><strong>Di tengah (Tahun 11-25):</strong> Proporsinya berangsur-angsur seimbang.</p><p><strong>Di akhir (Tahun 26-30):</strong> Anda membayar hampir seluruhnya UNTUK POKOK dan sangat sedikit bunga.</p>',
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
type: 'paragraph',
|
|
122
|
-
html: 'Oleh karena itu, jika Anda akan melakukan <strong>amortisasi hipotek</strong> (pembayaran dipercepat), jauh lebih menguntungkan untuk melakukannya di tahun-tahun awal pinjaman. Melunasi 10 juta rupiah di tahun ke-1 dapat menghemat lebih dari 15 juta rupiah bunga. Pembayaran dipercepat yang sama di tahun ke-20 hampir tidak menghemat Anda 2 juta rupiah.',
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
type: 'title',
|
|
126
|
-
text: 'Berapa Banyak Uang yang Harus Saya Alokasikan untuk Hipotek?',
|
|
127
|
-
level: 3,
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
type: 'paragraph',
|
|
131
|
-
html: 'Rekomendasi umum adalah agar hipotek Anda <strong>tidak melebihi 30-35% dari pendapatan bersih bulanan Anda</strong>. Jika Anda melampaui ambang batas ini, Anda secara signifikan meningkatkan risiko gagal bayar jika terjadi hal yang tidak terduga (kehilangan pekerjaan, sakit, dll.).',
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
type: 'title',
|
|
135
|
-
text: 'Konteks 2026: Bunga Tetap vs Mengambang',
|
|
136
|
-
level: 3,
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
type: 'paragraph',
|
|
140
|
-
html: 'Dengan suku bunga yang fluktuatif, memilih antara <strong>Bunga Tetap</strong> atau <strong>Bunga Mengambang</strong> adalah keputusan strategis yang dapat menghabiskan jutaan rupiah per tahun.',
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
type: 'comparative',
|
|
144
|
-
columns: 2,
|
|
145
|
-
items: [
|
|
146
|
-
{
|
|
147
|
-
title: 'Bunga Tetap',
|
|
148
|
-
description: 'Anda membayar sedikit lebih banyak sekarang, tetapi tidur tenang mengetahui angsuran Anda tidak akan pernah naik.',
|
|
149
|
-
points: [
|
|
150
|
-
'Angsuran terprediksi selama 30 tahun',
|
|
151
|
-
'Perlindungan terhadap kenaikan suku bunga',
|
|
152
|
-
'Ketenangan pikiran dalam ekonomi yang tidak pasti',
|
|
153
|
-
'Ideal untuk anggaran ketat',
|
|
154
|
-
],
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
title: 'Bunga Mengambang',
|
|
158
|
-
description: 'Bisa lebih murah hari ini, tetapi mengekspos ekonomi Anda pada volatilitas.',
|
|
159
|
-
highlight: true,
|
|
160
|
-
points: [
|
|
161
|
-
'Angsuran awal lebih rendah',
|
|
162
|
-
'Risiko kenaikan suku bunga pasar',
|
|
163
|
-
'Potensi dampak serius pada anggaran',
|
|
164
|
-
'Hanya untuk mereka yang mentoleransi risiko tinggi',
|
|
165
|
-
],
|
|
166
|
-
},
|
|
167
|
-
],
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
type: 'tip',
|
|
171
|
-
title: 'Keputusan Tetap vs Mengambang Tergantung pada Profil Anda',
|
|
172
|
-
html: '<p><strong>Pilih Bunga Tetap jika:</strong> Anggaran Anda ketat, Anda mencari kepastian, dan tidak mentoleransi kejutan bulanan yang tidak menyenangkan.</p><p><strong>Pilih Bunga Mengambang jika:</strong> Anda memiliki penyangga finansial, Anda yakin suku bunga akan turun, atau hipotek Anda berjumlah kecil atau jangka pendek.</p>',
|
|
173
|
-
},
|
|
174
|
-
],
|
|
175
|
-
ui: {
|
|
176
|
-
labelTitle: 'Kalkulator Hipotek',
|
|
177
|
-
labelLoanAmount: 'Jumlah Pinjaman',
|
|
178
|
-
labelInterestRate: 'Bunga Tahunan',
|
|
179
|
-
labelYears: 'Jangka Waktu (Tahun)',
|
|
180
|
-
labelMonthlyExtra: 'Tambah Tabungan Bulanan',
|
|
181
|
-
labelMonthlyPayment: 'Angsuran Bulanan',
|
|
182
|
-
labelMonthCount: 'bulan',
|
|
183
|
-
labelSavingsCard: 'Potensi Penghematan Anda',
|
|
184
|
-
labelSavingsInterest: 'Bunga',
|
|
185
|
-
labelSavingsTime: 'Waktu',
|
|
186
|
-
labelTimelineComparison: 'Perbandingan Waktu',
|
|
187
|
-
labelTimelineOriginal: 'Durasi Asli',
|
|
188
|
-
labelTimelineOptimized: 'Durasi dengan Amortisasi',
|
|
189
|
-
labelCostBreakdown: 'Rincian Biaya Total',
|
|
190
|
-
labelBorrowed: 'Dipinjam',
|
|
191
|
-
labelTotalBorrowed: 'Total Pinjaman',
|
|
192
|
-
labelTotalInterest: 'Total Bunga',
|
|
193
|
-
labelAmortizationTable: 'Tabel Amortisasi',
|
|
194
|
-
labelTableHeader: 'Lihat tabel lengkap',
|
|
195
|
-
labelViewAll: 'Lihat semua',
|
|
196
|
-
labelPaid: 'Hipotek Lunas',
|
|
197
|
-
labelTableMonth: 'Bulan',
|
|
198
|
-
labelTableInterest: 'Bunga',
|
|
199
|
-
labelTablePrincipal: 'Pokok',
|
|
200
|
-
labelTableExtra: 'Ekstra',
|
|
201
|
-
labelTableBalance: 'Sisa Utang',
|
|
202
|
-
labelMoreMonths: 'bulan lagi',
|
|
203
|
-
labelMonth: 'Bulan',
|
|
204
|
-
currencySymbol: 'Rp',
|
|
205
|
-
currencyCode: 'IDR',
|
|
206
|
-
currencyLocale: 'id-ID',
|
|
207
|
-
monthPlural: 'bulan',
|
|
208
|
-
yearPlural: 'tahun',
|
|
209
|
-
},
|
|
210
|
-
};
|
|
1
|
+
import { bibliography } from '../bibliography'
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
+
import type { MortgageUI } from '../ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'kalkulator-hipotek';
|
|
7
|
+
const title = 'Simulator Hipotek dan Tabel Amortisasi Prancis';
|
|
8
|
+
const description =
|
|
9
|
+
'Hitung angsuran hipotek bulanan Anda, cari tahu berapa besar bunga yang akan Anda bayar, dan visualisasikan jadwal amortisasi lengkap Anda secara instan.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Apa itu sistem amortisasi Prancis?',
|
|
14
|
+
answer:
|
|
15
|
+
'Ini adalah sistem yang paling banyak digunakan. Angsuran bulanan selalu sama, tetapi pada awalnya Anda membayar hampir seluruhnya untuk bunga dan sangat sedikit pokok. Pada akhirnya, yang terjadi adalah sebaliknya. Itulah mengapa melakukan pelunasan dipercepat lebih menguntungkan di tahun-tahun awal.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Bunga tetap atau mengambang di tahun 2026?',
|
|
19
|
+
answer:
|
|
20
|
+
'Bunga tetap: Anda membayar lebih banyak sekarang tetapi tidur nyenyak selama 30 tahun. Bunga mengambang: bisa lebih murah hari ini, tetapi jika suku bunga naik, angsuran Anda dapat melonjak drastis. Ini tergantung pada toleransi risiko Anda.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Berapa banyak yang saya hemat jika saya melunasi 10 juta rupiah dipercepat?',
|
|
24
|
+
answer:
|
|
25
|
+
'Tergantung pada waktunya. Jika dilakukan pada tahun ke-1 dari hipotek 200 juta rupiah dengan bunga 3%, Anda bisa menghemat lebih dari 15 juta rupiah bunga. Jika dilakukan pada tahun ke-20, penghematannya hanya sekitar 2 juta rupiah. Pengaturan waktu sangat penting.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Berapa persentase gaji saya yang harus dialokasikan untuk hipotek?',
|
|
29
|
+
answer:
|
|
30
|
+
'Rekomendasi umumnya adalah tidak melebihi 30-35% dari pendapatan bersih bulanan Anda (termasuk hutang lainnya). Melampaui ambang batas ini secara signifikan meningkatkan risiko gagal bayar jika terjadi hal yang tidak terduga.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Masukkan jumlah pinjaman',
|
|
37
|
+
text: 'Tuliskan jumlah total yang perlu Anda ajukan ke bank (setelah dikurangi uang muka Anda).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Sesuaikan suku bunga',
|
|
41
|
+
text: 'Masukkan bunga tahunan yang ditawarkan oleh bank. Anda dapat membandingkan antara bunga tetap atau mengambang.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Pilih jangka waktu amortisasi',
|
|
45
|
+
text: 'Tentukan berapa tahun Anda ingin melunasi pinjaman. Semakin lama jangka waktunya, angsuran semakin rendah tetapi Anda akan membayar total bunga yang lebih besar.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Analisis tabel amortisasi',
|
|
49
|
+
text: 'Tinjau bulan demi bulan bagaimana perkembangan utang Anda dan bagian mana dari angsuran Anda yang digunakan untuk bunga vs pokok.',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'FAQPage',
|
|
56
|
+
mainEntity: faqData.map((item) => ({
|
|
57
|
+
'@type': 'Question',
|
|
58
|
+
name: item.question,
|
|
59
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const howToSchema: WithContext<HowTo> = {
|
|
64
|
+
'@context': 'https://schema.org',
|
|
65
|
+
'@type': 'HowTo',
|
|
66
|
+
name: title,
|
|
67
|
+
description,
|
|
68
|
+
step: howToData.map((step, i) => ({
|
|
69
|
+
'@type': 'HowToStep',
|
|
70
|
+
position: i + 1,
|
|
71
|
+
name: step.name,
|
|
72
|
+
text: step.text,
|
|
73
|
+
})),
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
77
|
+
'@context': 'https://schema.org',
|
|
78
|
+
'@type': 'SoftwareApplication',
|
|
79
|
+
name: title,
|
|
80
|
+
description,
|
|
81
|
+
applicationCategory: 'FinanceApplication',
|
|
82
|
+
operatingSystem: 'All',
|
|
83
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'IDR' },
|
|
84
|
+
inLanguage: 'id',
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export const content: ToolLocaleContent<MortgageUI> = {
|
|
88
|
+
slug,
|
|
89
|
+
title,
|
|
90
|
+
description,
|
|
91
|
+
faq: faqData,
|
|
92
|
+
bibliography,
|
|
93
|
+
|
|
94
|
+
howTo: howToData,
|
|
95
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
96
|
+
seo: [
|
|
97
|
+
{
|
|
98
|
+
type: 'title',
|
|
99
|
+
text: 'Panduan Lengkap Hipotek: Sistem Prancis dan Amortisasi',
|
|
100
|
+
level: 2,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'paragraph',
|
|
104
|
+
html: 'Hipotek kemungkinan besar merupakan utang terbesar yang akan Anda ambil dalam hidup Anda. Memahami cara kerja sistem amortisasi Prancis sangat penting untuk mengambil keputusan cerdas yang dapat menghemat puluhan juta rupiah bagi Anda.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
text: '"Jebakan" Sistem Prancis: Memahami Komposisi Angsuran Anda',
|
|
109
|
+
level: 3,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'Sebagian besar hipotek menggunakan <strong>Sistem Amortisasi Prancis</strong>. Ciri utamanya adalah angsuran bulanan selalu sama (jika bunga tetap), tetapi komposisinya berubah drastis seiring waktu.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'tip',
|
|
117
|
+
title: 'Bagaimana Angsuran Anda Berkembang',
|
|
118
|
+
html: '<p><strong>Pada awal (Tahun 1-10):</strong> Anda membayar hampir semuanya UNTUK BUNGA dan sangat sedikit mengembalikan uang yang dipinjam. Pada hipotek 250 juta rupiah dengan bunga 3%, pembayaran pertama Anda bisa terdiri dari 80% bunga.</p><p><strong>Di tengah (Tahun 11-25):</strong> Proporsinya berangsur-angsur seimbang.</p><p><strong>Di akhir (Tahun 26-30):</strong> Anda membayar hampir seluruhnya UNTUK POKOK dan sangat sedikit bunga.</p>',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'paragraph',
|
|
122
|
+
html: 'Oleh karena itu, jika Anda akan melakukan <strong>amortisasi hipotek</strong> (pembayaran dipercepat), jauh lebih menguntungkan untuk melakukannya di tahun-tahun awal pinjaman. Melunasi 10 juta rupiah di tahun ke-1 dapat menghemat lebih dari 15 juta rupiah bunga. Pembayaran dipercepat yang sama di tahun ke-20 hampir tidak menghemat Anda 2 juta rupiah.',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'title',
|
|
126
|
+
text: 'Berapa Banyak Uang yang Harus Saya Alokasikan untuk Hipotek?',
|
|
127
|
+
level: 3,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Rekomendasi umum adalah agar hipotek Anda <strong>tidak melebihi 30-35% dari pendapatan bersih bulanan Anda</strong>. Jika Anda melampaui ambang batas ini, Anda secara signifikan meningkatkan risiko gagal bayar jika terjadi hal yang tidak terduga (kehilangan pekerjaan, sakit, dll.).',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'title',
|
|
135
|
+
text: 'Konteks 2026: Bunga Tetap vs Mengambang',
|
|
136
|
+
level: 3,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Dengan suku bunga yang fluktuatif, memilih antara <strong>Bunga Tetap</strong> atau <strong>Bunga Mengambang</strong> adalah keputusan strategis yang dapat menghabiskan jutaan rupiah per tahun.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'comparative',
|
|
144
|
+
columns: 2,
|
|
145
|
+
items: [
|
|
146
|
+
{
|
|
147
|
+
title: 'Bunga Tetap',
|
|
148
|
+
description: 'Anda membayar sedikit lebih banyak sekarang, tetapi tidur tenang mengetahui angsuran Anda tidak akan pernah naik.',
|
|
149
|
+
points: [
|
|
150
|
+
'Angsuran terprediksi selama 30 tahun',
|
|
151
|
+
'Perlindungan terhadap kenaikan suku bunga',
|
|
152
|
+
'Ketenangan pikiran dalam ekonomi yang tidak pasti',
|
|
153
|
+
'Ideal untuk anggaran ketat',
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
title: 'Bunga Mengambang',
|
|
158
|
+
description: 'Bisa lebih murah hari ini, tetapi mengekspos ekonomi Anda pada volatilitas.',
|
|
159
|
+
highlight: true,
|
|
160
|
+
points: [
|
|
161
|
+
'Angsuran awal lebih rendah',
|
|
162
|
+
'Risiko kenaikan suku bunga pasar',
|
|
163
|
+
'Potensi dampak serius pada anggaran',
|
|
164
|
+
'Hanya untuk mereka yang mentoleransi risiko tinggi',
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'tip',
|
|
171
|
+
title: 'Keputusan Tetap vs Mengambang Tergantung pada Profil Anda',
|
|
172
|
+
html: '<p><strong>Pilih Bunga Tetap jika:</strong> Anggaran Anda ketat, Anda mencari kepastian, dan tidak mentoleransi kejutan bulanan yang tidak menyenangkan.</p><p><strong>Pilih Bunga Mengambang jika:</strong> Anda memiliki penyangga finansial, Anda yakin suku bunga akan turun, atau hipotek Anda berjumlah kecil atau jangka pendek.</p>',
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
ui: {
|
|
176
|
+
labelTitle: 'Kalkulator Hipotek',
|
|
177
|
+
labelLoanAmount: 'Jumlah Pinjaman',
|
|
178
|
+
labelInterestRate: 'Bunga Tahunan',
|
|
179
|
+
labelYears: 'Jangka Waktu (Tahun)',
|
|
180
|
+
labelMonthlyExtra: 'Tambah Tabungan Bulanan',
|
|
181
|
+
labelMonthlyPayment: 'Angsuran Bulanan',
|
|
182
|
+
labelMonthCount: 'bulan',
|
|
183
|
+
labelSavingsCard: 'Potensi Penghematan Anda',
|
|
184
|
+
labelSavingsInterest: 'Bunga',
|
|
185
|
+
labelSavingsTime: 'Waktu',
|
|
186
|
+
labelTimelineComparison: 'Perbandingan Waktu',
|
|
187
|
+
labelTimelineOriginal: 'Durasi Asli',
|
|
188
|
+
labelTimelineOptimized: 'Durasi dengan Amortisasi',
|
|
189
|
+
labelCostBreakdown: 'Rincian Biaya Total',
|
|
190
|
+
labelBorrowed: 'Dipinjam',
|
|
191
|
+
labelTotalBorrowed: 'Total Pinjaman',
|
|
192
|
+
labelTotalInterest: 'Total Bunga',
|
|
193
|
+
labelAmortizationTable: 'Tabel Amortisasi',
|
|
194
|
+
labelTableHeader: 'Lihat tabel lengkap',
|
|
195
|
+
labelViewAll: 'Lihat semua',
|
|
196
|
+
labelPaid: 'Hipotek Lunas',
|
|
197
|
+
labelTableMonth: 'Bulan',
|
|
198
|
+
labelTableInterest: 'Bunga',
|
|
199
|
+
labelTablePrincipal: 'Pokok',
|
|
200
|
+
labelTableExtra: 'Ekstra',
|
|
201
|
+
labelTableBalance: 'Sisa Utang',
|
|
202
|
+
labelMoreMonths: 'bulan lagi',
|
|
203
|
+
labelMonth: 'Bulan',
|
|
204
|
+
currencySymbol: 'Rp',
|
|
205
|
+
currencyCode: 'IDR',
|
|
206
|
+
currencyLocale: 'id-ID',
|
|
207
|
+
monthPlural: 'bulan',
|
|
208
|
+
yearPlural: 'tahun',
|
|
209
|
+
},
|
|
210
|
+
};
|