@jjlmoya/utils-finance 1.14.0 → 1.16.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.
Files changed (225) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +29 -13
  3. package/src/tests/locale_completeness.test.ts +6 -16
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/compoundInterest/bibliography.ts +20 -0
  7. package/src/tool/compoundInterest/compound-interest-calculator.css +315 -69
  8. package/src/tool/compoundInterest/entry.ts +2 -0
  9. package/src/tool/compoundInterest/i18n/de.ts +3 -16
  10. package/src/tool/compoundInterest/i18n/en.ts +3 -20
  11. package/src/tool/compoundInterest/i18n/es.ts +2 -20
  12. package/src/tool/compoundInterest/i18n/fr.ts +3 -20
  13. package/src/tool/compoundInterest/i18n/id.ts +3 -16
  14. package/src/tool/compoundInterest/i18n/it.ts +3 -16
  15. package/src/tool/compoundInterest/i18n/ja.ts +3 -16
  16. package/src/tool/compoundInterest/i18n/ko.ts +3 -16
  17. package/src/tool/compoundInterest/i18n/nl.ts +3 -16
  18. package/src/tool/compoundInterest/i18n/pl.ts +2 -16
  19. package/src/tool/compoundInterest/i18n/pt.ts +3 -16
  20. package/src/tool/compoundInterest/i18n/ru.ts +3 -16
  21. package/src/tool/compoundInterest/i18n/sv.ts +3 -16
  22. package/src/tool/compoundInterest/i18n/tr.ts +3 -16
  23. package/src/tool/compoundInterest/i18n/zh.ts +3 -16
  24. package/src/tool/compoundInterest/seo.astro +2 -1
  25. package/src/tool/courtFeeCalculator/bibliography.ts +16 -0
  26. package/src/tool/courtFeeCalculator/entry.ts +2 -0
  27. package/src/tool/courtFeeCalculator/i18n/de.ts +2 -18
  28. package/src/tool/courtFeeCalculator/i18n/en.ts +2 -22
  29. package/src/tool/courtFeeCalculator/i18n/es.ts +2 -22
  30. package/src/tool/courtFeeCalculator/i18n/fr.ts +2 -22
  31. package/src/tool/courtFeeCalculator/i18n/id.ts +2 -18
  32. package/src/tool/courtFeeCalculator/i18n/it.ts +2 -18
  33. package/src/tool/courtFeeCalculator/i18n/ja.ts +2 -18
  34. package/src/tool/courtFeeCalculator/i18n/ko.ts +2 -18
  35. package/src/tool/courtFeeCalculator/i18n/nl.ts +2 -18
  36. package/src/tool/courtFeeCalculator/i18n/pl.ts +2 -18
  37. package/src/tool/courtFeeCalculator/i18n/pt.ts +2 -18
  38. package/src/tool/courtFeeCalculator/i18n/ru.ts +2 -18
  39. package/src/tool/courtFeeCalculator/i18n/sv.ts +2 -18
  40. package/src/tool/courtFeeCalculator/i18n/tr.ts +2 -18
  41. package/src/tool/courtFeeCalculator/i18n/zh.ts +2 -18
  42. package/src/tool/courtFeeCalculator/seo.astro +2 -1
  43. package/src/tool/debtSnowball/bibliography.ts +12 -0
  44. package/src/tool/debtSnowball/entry.ts +2 -0
  45. package/src/tool/debtSnowball/i18n/de.ts +2 -14
  46. package/src/tool/debtSnowball/i18n/en.ts +2 -14
  47. package/src/tool/debtSnowball/i18n/es.ts +2 -14
  48. package/src/tool/debtSnowball/i18n/fr.ts +2 -14
  49. package/src/tool/debtSnowball/i18n/id.ts +2 -14
  50. package/src/tool/debtSnowball/i18n/it.ts +2 -14
  51. package/src/tool/debtSnowball/i18n/ja.ts +2 -14
  52. package/src/tool/debtSnowball/i18n/ko.ts +2 -14
  53. package/src/tool/debtSnowball/i18n/nl.ts +2 -14
  54. package/src/tool/debtSnowball/i18n/pl.ts +2 -14
  55. package/src/tool/debtSnowball/i18n/pt.ts +2 -14
  56. package/src/tool/debtSnowball/i18n/ru.ts +2 -14
  57. package/src/tool/debtSnowball/i18n/sv.ts +2 -14
  58. package/src/tool/debtSnowball/i18n/tr.ts +2 -14
  59. package/src/tool/debtSnowball/i18n/zh.ts +2 -14
  60. package/src/tool/debtSnowball/seo.astro +2 -1
  61. package/src/tool/fireCalculator/bibliography.ts +20 -0
  62. package/src/tool/fireCalculator/entry.ts +2 -0
  63. package/src/tool/fireCalculator/i18n/de.ts +2 -22
  64. package/src/tool/fireCalculator/i18n/en.ts +2 -22
  65. package/src/tool/fireCalculator/i18n/es.ts +2 -22
  66. package/src/tool/fireCalculator/i18n/fr.ts +2 -22
  67. package/src/tool/fireCalculator/i18n/id.ts +2 -22
  68. package/src/tool/fireCalculator/i18n/it.ts +2 -22
  69. package/src/tool/fireCalculator/i18n/ja.ts +2 -22
  70. package/src/tool/fireCalculator/i18n/ko.ts +2 -22
  71. package/src/tool/fireCalculator/i18n/nl.ts +2 -22
  72. package/src/tool/fireCalculator/i18n/pl.ts +2 -22
  73. package/src/tool/fireCalculator/i18n/pt.ts +2 -22
  74. package/src/tool/fireCalculator/i18n/ru.ts +2 -22
  75. package/src/tool/fireCalculator/i18n/sv.ts +2 -22
  76. package/src/tool/fireCalculator/i18n/tr.ts +2 -22
  77. package/src/tool/fireCalculator/i18n/zh.ts +2 -22
  78. package/src/tool/fireCalculator/seo.astro +2 -1
  79. package/src/tool/ibanBicSwiftConverter/bibliography.ts +12 -0
  80. package/src/tool/ibanBicSwiftConverter/entry.ts +2 -0
  81. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +2 -14
  82. package/src/tool/ibanBicSwiftConverter/i18n/en.ts +2 -18
  83. package/src/tool/ibanBicSwiftConverter/i18n/es.ts +2 -18
  84. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +2 -18
  85. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +2 -14
  86. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +2 -14
  87. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +2 -14
  88. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +2 -14
  89. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +2 -14
  90. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +2 -14
  91. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +2 -14
  92. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +2 -14
  93. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +2 -14
  94. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +2 -14
  95. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +2 -14
  96. package/src/tool/ibanBicSwiftConverter/seo.astro +2 -1
  97. package/src/tool/inflation/bibliography.ts +20 -0
  98. package/src/tool/inflation/entry.ts +2 -0
  99. package/src/tool/inflation/i18n/de.ts +3 -16
  100. package/src/tool/inflation/i18n/en.ts +3 -20
  101. package/src/tool/inflation/i18n/es.ts +3 -20
  102. package/src/tool/inflation/i18n/fr.ts +3 -20
  103. package/src/tool/inflation/i18n/id.ts +3 -16
  104. package/src/tool/inflation/i18n/it.ts +3 -16
  105. package/src/tool/inflation/i18n/ja.ts +3 -16
  106. package/src/tool/inflation/i18n/ko.ts +3 -16
  107. package/src/tool/inflation/i18n/nl.ts +3 -16
  108. package/src/tool/inflation/i18n/pl.ts +3 -16
  109. package/src/tool/inflation/i18n/pt.ts +3 -16
  110. package/src/tool/inflation/i18n/ru.ts +3 -16
  111. package/src/tool/inflation/i18n/sv.ts +3 -16
  112. package/src/tool/inflation/i18n/tr.ts +3 -16
  113. package/src/tool/inflation/i18n/zh.ts +3 -16
  114. package/src/tool/inflation/seo.astro +2 -1
  115. package/src/tool/lateInterest/bibliography.ts +16 -0
  116. package/src/tool/lateInterest/entry.ts +2 -0
  117. package/src/tool/lateInterest/i18n/de.ts +3 -16
  118. package/src/tool/lateInterest/i18n/en.ts +3 -16
  119. package/src/tool/lateInterest/i18n/es.ts +3 -16
  120. package/src/tool/lateInterest/i18n/fr.ts +3 -16
  121. package/src/tool/lateInterest/i18n/id.ts +3 -16
  122. package/src/tool/lateInterest/i18n/it.ts +3 -16
  123. package/src/tool/lateInterest/i18n/ja.ts +3 -16
  124. package/src/tool/lateInterest/i18n/ko.ts +3 -16
  125. package/src/tool/lateInterest/i18n/nl.ts +3 -16
  126. package/src/tool/lateInterest/i18n/pl.ts +3 -16
  127. package/src/tool/lateInterest/i18n/pt.ts +3 -16
  128. package/src/tool/lateInterest/i18n/ru.ts +3 -16
  129. package/src/tool/lateInterest/i18n/sv.ts +3 -16
  130. package/src/tool/lateInterest/i18n/tr.ts +3 -16
  131. package/src/tool/lateInterest/i18n/zh.ts +3 -16
  132. package/src/tool/lateInterest/seo.astro +2 -1
  133. package/src/tool/legalInterestRate/bibliography.ts +16 -0
  134. package/src/tool/legalInterestRate/entry.ts +2 -0
  135. package/src/tool/legalInterestRate/i18n/de.ts +2 -18
  136. package/src/tool/legalInterestRate/i18n/en.ts +2 -22
  137. package/src/tool/legalInterestRate/i18n/es.ts +2 -22
  138. package/src/tool/legalInterestRate/i18n/fr.ts +2 -22
  139. package/src/tool/legalInterestRate/i18n/id.ts +2 -18
  140. package/src/tool/legalInterestRate/i18n/it.ts +2 -18
  141. package/src/tool/legalInterestRate/i18n/ja.ts +2 -18
  142. package/src/tool/legalInterestRate/i18n/ko.ts +2 -18
  143. package/src/tool/legalInterestRate/i18n/nl.ts +2 -18
  144. package/src/tool/legalInterestRate/i18n/pl.ts +2 -18
  145. package/src/tool/legalInterestRate/i18n/pt.ts +2 -18
  146. package/src/tool/legalInterestRate/i18n/ru.ts +2 -18
  147. package/src/tool/legalInterestRate/i18n/sv.ts +2 -18
  148. package/src/tool/legalInterestRate/i18n/tr.ts +2 -18
  149. package/src/tool/legalInterestRate/i18n/zh.ts +2 -18
  150. package/src/tool/legalInterestRate/seo.astro +2 -1
  151. package/src/tool/lotteryOptimizer/bibliography.ts +16 -0
  152. package/src/tool/lotteryOptimizer/entry.ts +2 -0
  153. package/src/tool/lotteryOptimizer/i18n/de.ts +2 -18
  154. package/src/tool/lotteryOptimizer/i18n/en.ts +2 -18
  155. package/src/tool/lotteryOptimizer/i18n/es.ts +2 -18
  156. package/src/tool/lotteryOptimizer/i18n/fr.ts +2 -18
  157. package/src/tool/lotteryOptimizer/i18n/id.ts +2 -18
  158. package/src/tool/lotteryOptimizer/i18n/it.ts +2 -18
  159. package/src/tool/lotteryOptimizer/i18n/ja.ts +2 -18
  160. package/src/tool/lotteryOptimizer/i18n/ko.ts +2 -18
  161. package/src/tool/lotteryOptimizer/i18n/nl.ts +2 -18
  162. package/src/tool/lotteryOptimizer/i18n/pl.ts +2 -18
  163. package/src/tool/lotteryOptimizer/i18n/pt.ts +2 -18
  164. package/src/tool/lotteryOptimizer/i18n/ru.ts +2 -18
  165. package/src/tool/lotteryOptimizer/i18n/sv.ts +2 -18
  166. package/src/tool/lotteryOptimizer/i18n/tr.ts +2 -18
  167. package/src/tool/lotteryOptimizer/i18n/zh.ts +2 -18
  168. package/src/tool/lotteryOptimizer/seo.astro +2 -1
  169. package/src/tool/lotteryOptimizer/spain-lottery-optimizer.css +524 -7
  170. package/src/tool/mortgage/bibliography.ts +20 -0
  171. package/src/tool/mortgage/entry.ts +2 -0
  172. package/src/tool/mortgage/i18n/de.ts +3 -16
  173. package/src/tool/mortgage/i18n/en.ts +3 -20
  174. package/src/tool/mortgage/i18n/es.ts +3 -20
  175. package/src/tool/mortgage/i18n/fr.ts +3 -20
  176. package/src/tool/mortgage/i18n/id.ts +3 -12
  177. package/src/tool/mortgage/i18n/it.ts +3 -16
  178. package/src/tool/mortgage/i18n/ja.ts +3 -12
  179. package/src/tool/mortgage/i18n/ko.ts +3 -12
  180. package/src/tool/mortgage/i18n/nl.ts +3 -12
  181. package/src/tool/mortgage/i18n/pl.ts +3 -12
  182. package/src/tool/mortgage/i18n/pt.ts +3 -12
  183. package/src/tool/mortgage/i18n/ru.ts +3 -12
  184. package/src/tool/mortgage/i18n/sv.ts +3 -12
  185. package/src/tool/mortgage/i18n/tr.ts +3 -12
  186. package/src/tool/mortgage/i18n/zh.ts +3 -12
  187. package/src/tool/mortgage/seo.astro +2 -1
  188. package/src/tool/percentageCalculator/bibliography.ts +16 -0
  189. package/src/tool/percentageCalculator/entry.ts +2 -0
  190. package/src/tool/percentageCalculator/i18n/de.ts +3 -12
  191. package/src/tool/percentageCalculator/i18n/en.ts +3 -16
  192. package/src/tool/percentageCalculator/i18n/es.ts +3 -16
  193. package/src/tool/percentageCalculator/i18n/fr.ts +3 -16
  194. package/src/tool/percentageCalculator/i18n/id.ts +3 -12
  195. package/src/tool/percentageCalculator/i18n/it.ts +3 -12
  196. package/src/tool/percentageCalculator/i18n/ja.ts +3 -12
  197. package/src/tool/percentageCalculator/i18n/ko.ts +3 -12
  198. package/src/tool/percentageCalculator/i18n/nl.ts +3 -12
  199. package/src/tool/percentageCalculator/i18n/pl.ts +3 -12
  200. package/src/tool/percentageCalculator/i18n/pt.ts +3 -12
  201. package/src/tool/percentageCalculator/i18n/ru.ts +3 -12
  202. package/src/tool/percentageCalculator/i18n/sv.ts +3 -12
  203. package/src/tool/percentageCalculator/i18n/tr.ts +3 -12
  204. package/src/tool/percentageCalculator/i18n/zh.ts +3 -12
  205. package/src/tool/percentageCalculator/percentage-calculator.css +20 -0
  206. package/src/tool/percentageCalculator/seo.astro +2 -1
  207. package/src/tool/rentIncreaseCalculator/bibliography.ts +16 -0
  208. package/src/tool/rentIncreaseCalculator/entry.ts +2 -0
  209. package/src/tool/rentIncreaseCalculator/i18n/de.ts +2 -18
  210. package/src/tool/rentIncreaseCalculator/i18n/en.ts +2 -18
  211. package/src/tool/rentIncreaseCalculator/i18n/es.ts +2 -18
  212. package/src/tool/rentIncreaseCalculator/i18n/fr.ts +2 -18
  213. package/src/tool/rentIncreaseCalculator/i18n/id.ts +2 -18
  214. package/src/tool/rentIncreaseCalculator/i18n/it.ts +2 -18
  215. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +2 -18
  216. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +2 -18
  217. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +2 -18
  218. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +2 -18
  219. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +2 -18
  220. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +2 -18
  221. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +2 -18
  222. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +2 -18
  223. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +2 -18
  224. package/src/tool/rentIncreaseCalculator/seo.astro +2 -1
  225. package/src/types.ts +0 -2
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Pertanyaan Umum',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Referensi dan Sumber',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Domande Frequenti',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Riferimenti e Fonti',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -88,10 +78,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
88
78
  slug,
89
79
  title,
90
80
  description,
91
- faqTitle: 'よくある質問',
92
81
  faq: faqData,
93
- bibliographyTitle: '参考文献と出典',
94
- bibliography: bibliographyData,
82
+ bibliography,
95
83
  howTo: howToData,
96
84
  schemas: [faqSchema, howToSchema, appSchema],
97
85
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: '자주 묻는 질문',
95
84
  faq: faqData,
96
- bibliographyTitle: '참고 자료 및 출처',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Veelgestelde Vragen',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Referenties en Bronnen',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Często zadawane pytania',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Referencje i źródła',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Perguntas Frequentes',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Referências e Fontes',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Часто задаваемые вопросы',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Ссылки и источники',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Vanliga frågor',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Referenser och källor',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: 'Sıkça Sorulan Sorular',
95
84
  faq: faqData,
96
- bibliographyTitle: 'Kaynaklar ve Referanslar',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { DebtSnowballUI } from '../ui';
@@ -44,17 +45,6 @@ const howToData = [
44
45
  },
45
46
  ];
46
47
 
47
- const bibliographyData = [
48
- {
49
- name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
- url: 'https://www.investopedia.com/',
51
- },
52
- {
53
- name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
- url: 'https://hbr.org/',
55
- },
56
- ];
57
-
58
48
  const faqSchema: WithContext<FAQPage> = {
59
49
  '@context': 'https://schema.org',
60
50
  '@type': 'FAQPage',
@@ -91,10 +81,8 @@ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
81
  slug,
92
82
  title,
93
83
  description,
94
- faqTitle: '常见问题',
95
84
  faq: faqData,
96
- bibliographyTitle: '来源与参考资料',
97
- bibliography: bibliographyData,
85
+ bibliography,
98
86
  howTo: howToData,
99
87
  schemas: [faqSchema, howToSchema, appSchema],
100
88
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await debtSnowball.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,20 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'The Trinity Study: Portfolio Survivability',
6
+ url: 'https://en.wikipedia.org/wiki/Trinity_study',
7
+ },
8
+ {
9
+ name: 'Early Retirement Forum - 4% Rule Discussion',
10
+ url: 'https://www.bogleheads.org/forum/',
11
+ },
12
+ {
13
+ name: 'Shiller CAPE Index - Market Valuations',
14
+ url: 'https://www.multpl.com/shiller-pe',
15
+ },
16
+ {
17
+ name: 'Bogleheads - Anlageleitfaden',
18
+ url: 'https://bogleheads.es/',
19
+ },
20
+ ];
@@ -27,3 +27,5 @@ export const fireCalculator: FinanceToolEntry<FIRECalculatorUI> = {
27
27
  zh: () => import('./i18n/zh').then((m) => m.content),
28
28
  },
29
29
  };
30
+
31
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Anlageleitfaden',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Häufig gestellte Fragen zu FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Quellen und Referenzen',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Investopedia - FIRE Guide',
66
- url: 'https://www.investopedia.com/terms/f/financial-independence-retire-early-fire.asp',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Frequently Asked Questions',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Sources and References',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Guía de Inversión',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Preguntas Frecuentes sobre FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Fuentes y Referencias',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'L\'Étude Trinity: Survivabilité du Portefeuille',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Forum de Retraite Anticipée',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Indice CAPE de Shiller',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Investopedia - FIRE Guide',
66
- url: 'https://www.investopedia.com/terms/f/financial-independence-retire-early-fire.asp',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Questions Fréquemment Posées',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Sources et Références',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Panduan Investasi',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Pertanyaan Umum tentang FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Sumber dan Referensi',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { FIRECalculatorUI } from '../ui';
@@ -48,25 +49,6 @@ const howToData = [
48
49
  },
49
50
  ];
50
51
 
51
- const bibliographyData = [
52
- {
53
- name: 'The Trinity Study: Portfolio Survivability',
54
- url: 'https://en.wikipedia.org/wiki/Trinity_study',
55
- },
56
- {
57
- name: 'Early Retirement Forum - 4% Rule Discussion',
58
- url: 'https://www.bogleheads.org/forum/',
59
- },
60
- {
61
- name: 'Shiller CAPE Index - Market Valuations',
62
- url: 'https://www.multpl.com/shiller-pe',
63
- },
64
- {
65
- name: 'Bogleheads - Guida all’Investimento',
66
- url: 'https://bogleheads.es/',
67
- },
68
- ];
69
-
70
52
  const faqSchema: WithContext<FAQPage> = {
71
53
  '@context': 'https://schema.org',
72
54
  '@type': 'FAQPage',
@@ -105,10 +87,8 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
105
87
  slug,
106
88
  title,
107
89
  description,
108
- faqTitle: 'Domande Frequenti su FIRE',
109
90
  faq: faqData,
110
- bibliographyTitle: 'Fonti e Riferimenti',
111
- bibliography: bibliographyData,
91
+ bibliography,
112
92
  howTo: howToData,
113
93
  schemas: [faqSchema, howToSchema, appSchema],
114
94
  seo: [