@jjlmoya/utils-finance 1.1.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 (133) hide show
  1. package/package.json +64 -0
  2. package/src/category/i18n/en.ts +159 -0
  3. package/src/category/i18n/es.ts +159 -0
  4. package/src/category/i18n/fr.ts +159 -0
  5. package/src/category/index.ts +24 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +11 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +32 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/locale_completeness.test.ts +39 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +48 -0
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +23 -0
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tests/tool_validation.test.ts +17 -0
  24. package/src/tool/compoundInterest/bibliography.astro +14 -0
  25. package/src/tool/compoundInterest/component.astro +697 -0
  26. package/src/tool/compoundInterest/i18n/en.ts +212 -0
  27. package/src/tool/compoundInterest/i18n/es.ts +212 -0
  28. package/src/tool/compoundInterest/i18n/fr.ts +212 -0
  29. package/src/tool/compoundInterest/index.ts +34 -0
  30. package/src/tool/compoundInterest/logic.ts +40 -0
  31. package/src/tool/compoundInterest/seo.astro +14 -0
  32. package/src/tool/compoundInterest/ui.ts +19 -0
  33. package/src/tool/courtFeeCalculator/bibliography.astro +14 -0
  34. package/src/tool/courtFeeCalculator/component.astro +427 -0
  35. package/src/tool/courtFeeCalculator/i18n/en.ts +268 -0
  36. package/src/tool/courtFeeCalculator/i18n/es.ts +268 -0
  37. package/src/tool/courtFeeCalculator/i18n/fr.ts +268 -0
  38. package/src/tool/courtFeeCalculator/index.ts +33 -0
  39. package/src/tool/courtFeeCalculator/logic.ts +86 -0
  40. package/src/tool/courtFeeCalculator/seo.astro +14 -0
  41. package/src/tool/courtFeeCalculator/ui.ts +31 -0
  42. package/src/tool/debtSnowball/bibliography.astro +14 -0
  43. package/src/tool/debtSnowball/component.astro +1052 -0
  44. package/src/tool/debtSnowball/i18n/en.ts +288 -0
  45. package/src/tool/debtSnowball/i18n/es.ts +288 -0
  46. package/src/tool/debtSnowball/i18n/fr.ts +288 -0
  47. package/src/tool/debtSnowball/index.ts +37 -0
  48. package/src/tool/debtSnowball/logic.ts +156 -0
  49. package/src/tool/debtSnowball/seo.astro +14 -0
  50. package/src/tool/debtSnowball/ui.ts +49 -0
  51. package/src/tool/fireCalculator/bibliography.astro +14 -0
  52. package/src/tool/fireCalculator/component.astro +689 -0
  53. package/src/tool/fireCalculator/i18n/en.ts +261 -0
  54. package/src/tool/fireCalculator/i18n/es.ts +261 -0
  55. package/src/tool/fireCalculator/i18n/fr.ts +261 -0
  56. package/src/tool/fireCalculator/index.ts +33 -0
  57. package/src/tool/fireCalculator/logic.ts +108 -0
  58. package/src/tool/fireCalculator/seo.astro +14 -0
  59. package/src/tool/fireCalculator/ui.ts +33 -0
  60. package/src/tool/ibanBicSwiftConverter/bibliography.astro +14 -0
  61. package/src/tool/ibanBicSwiftConverter/component.astro +581 -0
  62. package/src/tool/ibanBicSwiftConverter/i18n/en.ts +167 -0
  63. package/src/tool/ibanBicSwiftConverter/i18n/es.ts +216 -0
  64. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +167 -0
  65. package/src/tool/ibanBicSwiftConverter/index.ts +33 -0
  66. package/src/tool/ibanBicSwiftConverter/logic.ts +101 -0
  67. package/src/tool/ibanBicSwiftConverter/seo.astro +14 -0
  68. package/src/tool/ibanBicSwiftConverter/ui.ts +17 -0
  69. package/src/tool/inflation/bibliography.astro +14 -0
  70. package/src/tool/inflation/component.astro +400 -0
  71. package/src/tool/inflation/i18n/en.ts +301 -0
  72. package/src/tool/inflation/i18n/es.ts +301 -0
  73. package/src/tool/inflation/i18n/fr.ts +301 -0
  74. package/src/tool/inflation/index.ts +34 -0
  75. package/src/tool/inflation/logic.ts +92 -0
  76. package/src/tool/inflation/seo.astro +14 -0
  77. package/src/tool/inflation/ui.ts +17 -0
  78. package/src/tool/lateInterest/bibliography.astro +14 -0
  79. package/src/tool/lateInterest/component.astro +655 -0
  80. package/src/tool/lateInterest/i18n/en.ts +255 -0
  81. package/src/tool/lateInterest/i18n/es.ts +224 -0
  82. package/src/tool/lateInterest/i18n/fr.ts +224 -0
  83. package/src/tool/lateInterest/index.ts +34 -0
  84. package/src/tool/lateInterest/logic.ts +89 -0
  85. package/src/tool/lateInterest/seo.astro +14 -0
  86. package/src/tool/lateInterest/ui.ts +33 -0
  87. package/src/tool/legalInterestRate/bibliography.astro +14 -0
  88. package/src/tool/legalInterestRate/component.astro +650 -0
  89. package/src/tool/legalInterestRate/i18n/en.ts +159 -0
  90. package/src/tool/legalInterestRate/i18n/es.ts +159 -0
  91. package/src/tool/legalInterestRate/i18n/fr.ts +159 -0
  92. package/src/tool/legalInterestRate/index.ts +33 -0
  93. package/src/tool/legalInterestRate/logic.ts +29 -0
  94. package/src/tool/legalInterestRate/seo.astro +14 -0
  95. package/src/tool/legalInterestRate/ui.ts +23 -0
  96. package/src/tool/lotteryOptimizer/bibliography.astro +14 -0
  97. package/src/tool/lotteryOptimizer/component.astro +863 -0
  98. package/src/tool/lotteryOptimizer/i18n/en.ts +188 -0
  99. package/src/tool/lotteryOptimizer/i18n/es.ts +281 -0
  100. package/src/tool/lotteryOptimizer/i18n/fr.ts +188 -0
  101. package/src/tool/lotteryOptimizer/index.ts +33 -0
  102. package/src/tool/lotteryOptimizer/logic.ts +133 -0
  103. package/src/tool/lotteryOptimizer/seo.astro +14 -0
  104. package/src/tool/lotteryOptimizer/ui.ts +33 -0
  105. package/src/tool/mortgage/bibliography.astro +14 -0
  106. package/src/tool/mortgage/component.astro +1030 -0
  107. package/src/tool/mortgage/i18n/en.ts +227 -0
  108. package/src/tool/mortgage/i18n/es.ts +227 -0
  109. package/src/tool/mortgage/i18n/fr.ts +227 -0
  110. package/src/tool/mortgage/index.ts +34 -0
  111. package/src/tool/mortgage/logic.ts +118 -0
  112. package/src/tool/mortgage/seo.astro +14 -0
  113. package/src/tool/mortgage/ui.ts +35 -0
  114. package/src/tool/percentageCalculator/bibliography.astro +14 -0
  115. package/src/tool/percentageCalculator/component.astro +640 -0
  116. package/src/tool/percentageCalculator/i18n/en.ts +233 -0
  117. package/src/tool/percentageCalculator/i18n/es.ts +233 -0
  118. package/src/tool/percentageCalculator/i18n/fr.ts +233 -0
  119. package/src/tool/percentageCalculator/index.ts +34 -0
  120. package/src/tool/percentageCalculator/logic.ts +48 -0
  121. package/src/tool/percentageCalculator/seo.astro +14 -0
  122. package/src/tool/percentageCalculator/ui.ts +30 -0
  123. package/src/tool/rentIncreaseCalculator/bibliography.astro +14 -0
  124. package/src/tool/rentIncreaseCalculator/component.astro +587 -0
  125. package/src/tool/rentIncreaseCalculator/i18n/en.ts +159 -0
  126. package/src/tool/rentIncreaseCalculator/i18n/es.ts +220 -0
  127. package/src/tool/rentIncreaseCalculator/i18n/fr.ts +159 -0
  128. package/src/tool/rentIncreaseCalculator/index.ts +33 -0
  129. package/src/tool/rentIncreaseCalculator/logic.ts +43 -0
  130. package/src/tool/rentIncreaseCalculator/seo.astro +14 -0
  131. package/src/tool/rentIncreaseCalculator/ui.ts +19 -0
  132. package/src/tools.ts +16 -0
  133. package/src/types.ts +74 -0
@@ -0,0 +1,159 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LegalInterestRateUI } from '../ui';
4
+
5
+ const slug = 'legal-interest-on-money-spain';
6
+ const title = 'Spain Legal Interest Rate 2026';
7
+ const description = 'Calculate the legal interest rate applicable in Spain for 2026. Automatic calculator with 3.25% rate according to the budget law. Includes delay interest and mora calculations.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'What is the legal interest rate in Spain for 2026?',
12
+ answer: 'The legal interest rate on money is fixed at 3.25% for the 2026 fiscal year in Spain, established by the State Budget Law.',
13
+ },
14
+ {
15
+ question: 'How is the delay interest calculated?',
16
+ answer: 'Delay interest is calculated by multiplying the outstanding capital by 3.25% and the number of days of delay, divided by 36,500. A base of 365 days is used.',
17
+ },
18
+ {
19
+ question: 'What is the difference between legal interest and delay interest?',
20
+ answer: 'Legal interest is the basic reference rate. Delay interest is typically 4.06% for tax authorities (with a surcharge). Commercial operations use 10.15%, the highest rate.',
21
+ },
22
+ {
23
+ question: 'Does legal interest apply automatically?',
24
+ answer: 'Yes, legal interest applies automatically when there is a payment delay and no other rate has been agreed. If a contract exists, its terms prevail within the limits of usury laws.',
25
+ },
26
+ {
27
+ question: 'What is procedural interest?',
28
+ answer: 'Procedural interest is 5.25% (legal rate plus 2 points) applied from the judgment date condemning payment, to discourage delays and unnecessary protraction of cases.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: 'Enter the outstanding capital',
35
+ text: 'Write the amount for which you need to calculate interest. It can be a debt, unpaid invoice, or any outstanding amount.',
36
+ },
37
+ {
38
+ name: 'Specify the days of delay',
39
+ text: 'Indicate how many days the non-payment has lasted or will last. The calculation uses a base of 365 days according to Spanish regulations.',
40
+ },
41
+ {
42
+ name: 'View the result',
43
+ text: 'Automatically get the amount of interest generated and total to pay by applying the current 3.25% rate for 2026.',
44
+ },
45
+ {
46
+ name: 'Check other rates',
47
+ text: 'Observe other reference rates: tax delay interest (4.06%) and commercial operations (10.15%) for additional context.',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'State Budget Law 2026',
54
+ url: 'https://www.boe.es/buscar/act.php',
55
+ },
56
+ {
57
+ name: 'Spanish Civil Code - Articles 1108 and following',
58
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1889-4763',
59
+ },
60
+ {
61
+ name: 'Law 3/1991 on Unfair Competition',
62
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1991-8915',
63
+ },
64
+ {
65
+ name: 'Law 3/2004 on Late Payment Combat',
66
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2004-20236',
67
+ },
68
+ ];
69
+
70
+ const seoData = [
71
+ {
72
+ type: 'title',
73
+ text: 'Spain Legal Interest Rate 2026 - Calculator',
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: 'The <strong>legal interest rate in Spain for 2026</strong> is <strong>3.25%</strong>. It applies automatically when there is a payment delay and no other rate has been agreed. Use our calculator to determine the exact amount of interest based on days of delay.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'Complementary Reference Rates',
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'In addition to the base legal interest rate (3.25%), there are other rates: <strong>tax delay interest 4.06%</strong> (Tax Authority), <strong>procedural interest 5.25%</strong> (judgments) and <strong>commercial operations interest 10.15%</strong> (B2B).',
86
+ },
87
+ ];
88
+
89
+ const faqSchema: WithContext<FAQPage> = {
90
+ '@context': 'https://schema.org',
91
+ '@type': 'FAQPage',
92
+ mainEntity: faqData.map((item) => ({
93
+ '@type': 'Question',
94
+ name: item.question,
95
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
96
+ })),
97
+ };
98
+
99
+ const howToSchema: WithContext<HowTo> = {
100
+ '@context': 'https://schema.org',
101
+ '@type': 'HowTo',
102
+ name: title,
103
+ description,
104
+ step: howToData.map((step, i) => ({
105
+ '@type': 'HowToStep',
106
+ position: i + 1,
107
+ name: step.name,
108
+ text: step.text,
109
+ })),
110
+ };
111
+
112
+ const appSchema: WithContext<SoftwareApplication> = {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'SoftwareApplication',
115
+ name: title,
116
+ description,
117
+ applicationCategory: 'FinanceApplication',
118
+ offers: {
119
+ '@type': 'Offer',
120
+ price: '0',
121
+ priceCurrency: 'EUR',
122
+ },
123
+ };
124
+
125
+ export const content: ToolLocaleContent<LegalInterestRateUI> = {
126
+ slug,
127
+ title,
128
+ description,
129
+ faqTitle: 'Frequently Asked Questions',
130
+ bibliographyTitle: 'Legal Sources',
131
+ ui: {
132
+ labelTitle: 'Legal Interest Rate on Money',
133
+ labelDescription: 'Calculate the exact amount of legal interest according to Spain\'s Budget Law 2026. Automatic calculator with 3.25% rate.',
134
+ labelBadge: 'Spanish Official Gazette 2026',
135
+ labelSubtitle: 'The legal interest rate remains fixed at 3.25% for 2026, established by the State Budget Law.',
136
+ labelLegalInterest: 'Legal Interest',
137
+ labelDelayInterest: 'Delay Interest',
138
+ labelCommercialOperations: 'Commercial Operations',
139
+ labelActive: 'Active 2026',
140
+ labelTributary: 'Tax Authority',
141
+ labelFirstHalf: 'First Semester 2026',
142
+ labelQuickCalculator: 'Quick Interest Calculator (3.25%)',
143
+ labelCapital: 'Outstanding Capital',
144
+ labelDays: 'Days of Delay',
145
+ labelInterestGenerated: 'Interest Generated',
146
+ labelTotalToPay: 'Total to Pay',
147
+ labelFormula: 'This calculator applies the standard simple interest formula:',
148
+ labelBase: 'A base of 365 days is used for official calculations according to current Spanish regulations in 2026.',
149
+ labelOfficialRegulation: 'Official Regulation',
150
+ currencySymbol: '€',
151
+ currencyCode: 'EUR',
152
+ currencyLocale: 'en-US',
153
+ },
154
+ faq: faqData,
155
+ howTo: howToData,
156
+ bibliography: bibliographyData,
157
+ seo: seoData,
158
+ schemas: [faqSchema, howToSchema, appSchema],
159
+ };
@@ -0,0 +1,159 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LegalInterestRateUI } from '../ui';
4
+
5
+ const slug = 'interes-legal-dinero-2026';
6
+ const title = 'Interés Legal del Dinero';
7
+ const description = 'Calcula el interés legal aplicable en España para 2026. Simulador con tasa al 3,25% según Ley de Presupuestos. Incluye cálculos de demora e interés de mora.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '¿Cuál es el interés legal del dinero en 2026?',
12
+ answer: 'El interés legal del dinero se mantiene en el 3,25% para el ejercicio 2026, fijado por la Ley de Presupuestos Generales del Estado.',
13
+ },
14
+ {
15
+ question: '¿Cómo se calcula el interés de demora?',
16
+ answer: 'El interés de demora se calcula multiplicando el capital pendiente por el 3,25% y por el número de días de retraso, dividiendo entre 36.500. Se utiliza base de 365 días.',
17
+ },
18
+ {
19
+ question: '¿Cuál es la diferencia entre interés legal e interés de demora?',
20
+ answer: 'El interés legal es el tipo base de referencia. El interés de demora tributario es el aplicado por la Administración (4,06%), que incluye un recargo. El de operaciones comerciales (10,15%) es el más alto.',
21
+ },
22
+ {
23
+ question: '¿Se aplica automáticamente sin necesidad de cláusula contractual?',
24
+ answer: 'Sí, el interés legal se aplica por defecto cuando hay retraso en el pago y no se ha pactado otro interés. Si existe contrato, prevalecerá lo pactado dentro de los límites de la Ley de Usura.',
25
+ },
26
+ {
27
+ question: '¿Qué es el interés procesal?',
28
+ answer: 'El interés procesal es el 5,25% (interés legal más 2 puntos) que se aplica desde que se dicta una sentencia que condena al pago de dinero, para desincentivar dilaciones.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: 'Introduce el capital pendiente',
35
+ text: 'Escribe la cantidad de dinero sobre la que necesitas calcular los intereses. Puede ser una deuda, factura sin pagar o cantidad adeudada.',
36
+ },
37
+ {
38
+ name: 'Especifica los días de retraso',
39
+ text: 'Indica cuántos días ha durado o durará el impago. El cálculo utiliza base de 365 días según la normativa española.',
40
+ },
41
+ {
42
+ name: 'Visualiza el resultado',
43
+ text: 'Obtén automáticamente el importe de intereses generados y el total a pagar aplicando el 3,25% vigente en 2026.',
44
+ },
45
+ {
46
+ name: 'Consulta otras tasas',
47
+ text: 'Observa las otras tasas de referencia: demora tributaria (4,06%) y operaciones comerciales (10,15%) para contexto adicional.',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'Ley de Presupuestos Generales del Estado 2026',
54
+ url: 'https://www.boe.es/buscar/act.php',
55
+ },
56
+ {
57
+ name: 'Código Civil Español - Artículos 1108 y siguientes',
58
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1889-4763',
59
+ },
60
+ {
61
+ name: 'Ley 3/1991 de Competencia Desleal',
62
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1991-8915',
63
+ },
64
+ {
65
+ name: 'Ley 3/2004 de Lucha contra la Morosidad',
66
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2004-20236',
67
+ },
68
+ ];
69
+
70
+ const seoData = [
71
+ {
72
+ type: 'title',
73
+ text: 'Interés Legal del Dinero 2026 España - Calculadora',
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: 'El <strong>interés legal del dinero en 2026</strong> es del <strong>3,25%</strong> en España. Se aplica automáticamente cuando hay retraso en el pago y no se ha pactado otro interés. Utiliza nuestra calculadora para determinar el importe exacto de intereses según días de demora.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'Tasas de Referencia Complementarias',
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'Además del interés legal básico (3,25%), existen otras tasas: <strong>demora tributaria 4,06%</strong> (Hacienda), <strong>interés procesal 5,25%</strong> (sentencias) e <strong>interés de operaciones comerciales 10,15%</strong> (B2B).',
86
+ },
87
+ ];
88
+
89
+ const faqSchema: WithContext<FAQPage> = {
90
+ '@context': 'https://schema.org',
91
+ '@type': 'FAQPage',
92
+ mainEntity: faqData.map((item) => ({
93
+ '@type': 'Question',
94
+ name: item.question,
95
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
96
+ })),
97
+ };
98
+
99
+ const howToSchema: WithContext<HowTo> = {
100
+ '@context': 'https://schema.org',
101
+ '@type': 'HowTo',
102
+ name: title,
103
+ description,
104
+ step: howToData.map((step, i) => ({
105
+ '@type': 'HowToStep',
106
+ position: i + 1,
107
+ name: step.name,
108
+ text: step.text,
109
+ })),
110
+ };
111
+
112
+ const appSchema: WithContext<SoftwareApplication> = {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'SoftwareApplication',
115
+ name: title,
116
+ description,
117
+ applicationCategory: 'FinanceApplication',
118
+ offers: {
119
+ '@type': 'Offer',
120
+ price: '0',
121
+ priceCurrency: 'EUR',
122
+ },
123
+ };
124
+
125
+ export const content: ToolLocaleContent<LegalInterestRateUI> = {
126
+ slug,
127
+ title,
128
+ description,
129
+ faqTitle: 'Preguntas Frecuentes',
130
+ bibliographyTitle: 'Fuentes Legales',
131
+ ui: {
132
+ labelTitle: 'Tipo de Interés Legal del Dinero',
133
+ labelDescription: 'Calcula el importe exacto de intereses legales según la Ley de Presupuestos 2026. Simulador con tasa al 3,25% para España.',
134
+ labelBadge: 'Boletín Oficial del Estado 2026',
135
+ labelSubtitle: 'El tipo de interés legal del dinero se mantiene en el 3,25% para el ejercicio 2026, fijado por la Ley de Presupuestos Generales del Estado.',
136
+ labelLegalInterest: 'Interés Legal',
137
+ labelDelayInterest: 'Interés de Demora',
138
+ labelCommercialOperations: 'Operaciones Comerciales',
139
+ labelActive: 'Vigente en 2026',
140
+ labelTributary: 'Tributario (Hacienda)',
141
+ labelFirstHalf: 'Primer Semestre 2026',
142
+ labelQuickCalculator: 'Calculadora Rápida de Interés (3,25%)',
143
+ labelCapital: 'Capital Pendiente',
144
+ labelDays: 'Días de Demora',
145
+ labelInterestGenerated: 'Intereses Generados',
146
+ labelTotalToPay: 'Total a Pagar',
147
+ labelFormula: 'Esta calculadora aplica la fórmula estándar de interés simple:',
148
+ labelBase: 'Se utiliza una base de 365 días para el cálculo oficial según la normativa española vigente en 2026.',
149
+ labelOfficialRegulation: 'Regulación Oficial',
150
+ currencySymbol: '€',
151
+ currencyCode: 'EUR',
152
+ currencyLocale: 'es-ES',
153
+ },
154
+ faq: faqData,
155
+ howTo: howToData,
156
+ bibliography: bibliographyData,
157
+ seo: seoData,
158
+ schemas: [faqSchema, howToSchema, appSchema],
159
+ };
@@ -0,0 +1,159 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LegalInterestRateUI } from '../ui';
4
+
5
+ const slug = 'interet-legal-argent-espagne';
6
+ const title = 'Taux d\'Intérêt Légal Espagne 2026';
7
+ const description = 'Calculez le taux d\'intérêt légal applicable en Espagne pour 2026. Calculatrice automatique avec taux de 3,25% selon la loi budgétaire. Inclut calculs de retard et intérêts de mora.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Quel est le taux d\'intérêt légal en Espagne pour 2026?',
12
+ answer: 'Le taux d\'intérêt légal reste fixé à 3,25% pour l\'exercice 2026, établi par la Loi de Budgets Généraux de l\'État espagnol.',
13
+ },
14
+ {
15
+ question: 'Comment est calculé l\'intérêt de retard?',
16
+ answer: 'L\'intérêt de retard est calculé en multipliant le capital dû par 3,25% et le nombre de jours de retard, divisé par 36 500. Une base de 365 jours est utilisée.',
17
+ },
18
+ {
19
+ question: 'Quelle est la différence entre intérêt légal et intérêt de retard?',
20
+ answer: 'L\'intérêt légal est le taux de référence de base. L\'intérêt de retard fiscal est de 4,06%, appliqué par l\'administration fiscale avec surcharge. Les opérations commerciales: 10,15%, taux le plus élevé.',
21
+ },
22
+ {
23
+ question: 'L\'intérêt légal s\'applique-t-il automatiquement?',
24
+ answer: 'Oui, l\'intérêt légal s\'applique automatiquement en cas de retard de paiement et si aucun autre taux n\'a été convenu. Si un contrat existe, les dispositions contractuelles prévalent dans les limites de la Loi sur l\'usure.',
25
+ },
26
+ {
27
+ question: 'Qu\'est-ce que l\'intérêt de procédure?',
28
+ answer: 'L\'intérêt de procédure est de 5,25% (intérêt légal plus 2 points) appliqué à partir de la date du jugement condamnant au paiement, pour dissuader les retards.',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: 'Entrez le capital dû',
35
+ text: 'Écrivez le montant pour lequel vous devez calculer les intérêts. Il peut s\'agir d\'une dette, d\'une facture impayée ou d\'un montant dû.',
36
+ },
37
+ {
38
+ name: 'Spécifiez le nombre de jours de retard',
39
+ text: 'Indiquez combien de jours le non-paiement a duré ou durera. Le calcul utilise une base de 365 jours selon la réglementation espagnole.',
40
+ },
41
+ {
42
+ name: 'Visualisez le résultat',
43
+ text: 'Obtenez automatiquement le montant des intérêts générés et le total à payer en appliquant le taux de 3,25% en vigueur en 2026.',
44
+ },
45
+ {
46
+ name: 'Consultez les autres taux',
47
+ text: 'Observez les autres taux de référence: intérêt de retard fiscal (4,06%) et opérations commerciales (10,15%) pour un contexte supplémentaire.',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'Loi de Budgets Généraux de l\'État 2026',
54
+ url: 'https://www.boe.es/buscar/act.php',
55
+ },
56
+ {
57
+ name: 'Code civil espagnol - Articles 1108 et suivants',
58
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1889-4763',
59
+ },
60
+ {
61
+ name: 'Loi 3/1991 sur la concurrence déloyale',
62
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-1991-8915',
63
+ },
64
+ {
65
+ name: 'Loi 3/2004 contre les retards de paiement',
66
+ url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2004-20236',
67
+ },
68
+ ];
69
+
70
+ const seoData = [
71
+ {
72
+ type: 'title',
73
+ text: 'Taux d\'Intérêt Légal Espagne 2026 - Calculatrice',
74
+ },
75
+ {
76
+ type: 'paragraph',
77
+ html: 'Le <strong>taux d\'intérêt légal en Espagne pour 2026</strong> est de <strong>3,25%</strong>. Il s\'applique automatiquement en cas de retard de paiement et si aucun autre taux n\'a été convenu. Utilisez notre calculatrice pour déterminer le montant exact des intérêts selon les jours de retard.',
78
+ },
79
+ {
80
+ type: 'title',
81
+ text: 'Taux de référence complémentaires',
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'En plus du taux d\'intérêt légal de base (3,25%), il existe d\'autres taux: <strong>intérêt de retard fiscal 4,06%</strong> (Administration fiscale), <strong>intérêt de procédure 5,25%</strong> (jugements) et <strong>intérêt opérations commerciales 10,15%</strong> (B2B).',
86
+ },
87
+ ];
88
+
89
+ const faqSchema: WithContext<FAQPage> = {
90
+ '@context': 'https://schema.org',
91
+ '@type': 'FAQPage',
92
+ mainEntity: faqData.map((item) => ({
93
+ '@type': 'Question',
94
+ name: item.question,
95
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
96
+ })),
97
+ };
98
+
99
+ const howToSchema: WithContext<HowTo> = {
100
+ '@context': 'https://schema.org',
101
+ '@type': 'HowTo',
102
+ name: title,
103
+ description,
104
+ step: howToData.map((step, i) => ({
105
+ '@type': 'HowToStep',
106
+ position: i + 1,
107
+ name: step.name,
108
+ text: step.text,
109
+ })),
110
+ };
111
+
112
+ const appSchema: WithContext<SoftwareApplication> = {
113
+ '@context': 'https://schema.org',
114
+ '@type': 'SoftwareApplication',
115
+ name: title,
116
+ description,
117
+ applicationCategory: 'FinanceApplication',
118
+ offers: {
119
+ '@type': 'Offer',
120
+ price: '0',
121
+ priceCurrency: 'EUR',
122
+ },
123
+ };
124
+
125
+ export const content: ToolLocaleContent<LegalInterestRateUI> = {
126
+ slug,
127
+ title,
128
+ description,
129
+ faqTitle: 'Questions Fréquemment Posées',
130
+ bibliographyTitle: 'Sources Légales',
131
+ ui: {
132
+ labelTitle: 'Taux d\'Intérêt Légal de l\'Argent',
133
+ labelDescription: 'Calculez le montant exact des intérêts légaux selon la Loi budgétaire 2026 de l\'Espagne. Calculatrice automatique avec taux de 3,25%.',
134
+ labelBadge: 'Journal Officiel Espagnol 2026',
135
+ labelSubtitle: 'Le taux d\'intérêt légal reste fixé à 3,25% pour 2026, établi par la Loi de Budgets Généraux de l\'État.',
136
+ labelLegalInterest: 'Intérêt Légal',
137
+ labelDelayInterest: 'Intérêt de Retard',
138
+ labelCommercialOperations: 'Opérations Commerciales',
139
+ labelActive: 'En vigueur 2026',
140
+ labelTributary: 'Fiscal (Fisc)',
141
+ labelFirstHalf: 'Premier Semestre 2026',
142
+ labelQuickCalculator: 'Calculatrice Rapide d\'Intérêt (3,25%)',
143
+ labelCapital: 'Capital Dû',
144
+ labelDays: 'Jours de Retard',
145
+ labelInterestGenerated: 'Intérêt Généré',
146
+ labelTotalToPay: 'Total à Payer',
147
+ labelFormula: 'Cette calculatrice applique la formule standard d\'intérêt simple:',
148
+ labelBase: 'Une base de 365 jours est utilisée pour les calculs officiels selon les réglementations espagnoles actuelles en 2026.',
149
+ labelOfficialRegulation: 'Règlement Officiel',
150
+ currencySymbol: '€',
151
+ currencyCode: 'EUR',
152
+ currencyLocale: 'fr-FR',
153
+ },
154
+ faq: faqData,
155
+ howTo: howToData,
156
+ bibliography: bibliographyData,
157
+ seo: seoData,
158
+ schemas: [faqSchema, howToSchema, appSchema],
159
+ };
@@ -0,0 +1,33 @@
1
+ import type { FinanceToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
+ import LegalInterestRateComponent from './component.astro';
3
+ import LegalInterestRateSEO from './seo.astro';
4
+ import LegalInterestRateBibliography from './bibliography.astro';
5
+ import type { LegalInterestRateUI } from './ui';
6
+
7
+ export type LegalInterestRateLocaleContent = ToolLocaleContent<LegalInterestRateUI>;
8
+
9
+ import { content as es } from './i18n/es';
10
+ import { content as en } from './i18n/en';
11
+ import { content as fr } from './i18n/fr';
12
+
13
+ export const legalInterestRate: FinanceToolEntry<LegalInterestRateUI> = {
14
+ id: 'interes-legal-dinero-2026',
15
+ icons: {
16
+ bg: 'mdi:scale-balance',
17
+ fg: 'mdi:percent',
18
+ },
19
+ i18n: {
20
+ es: async () => es,
21
+ en: async () => en,
22
+ fr: async () => fr,
23
+ },
24
+ };
25
+
26
+ export { LegalInterestRateComponent, LegalInterestRateSEO, LegalInterestRateBibliography };
27
+
28
+ export const LEGAL_INTEREST_RATE_TOOL: ToolDefinition = {
29
+ entry: legalInterestRate,
30
+ Component: LegalInterestRateComponent,
31
+ SEOComponent: LegalInterestRateSEO,
32
+ BibliographyComponent: LegalInterestRateBibliography,
33
+ };
@@ -0,0 +1,29 @@
1
+ export interface LegalInterestResult {
2
+ capital: number;
3
+ days: number;
4
+ rate: number;
5
+ interest: number;
6
+ total: number;
7
+ }
8
+
9
+ export class LegalInterestLogic {
10
+ private static readonly RATE = 3.25;
11
+ private static readonly DAYS_PER_YEAR = 365;
12
+
13
+ static calculateInterest(capital: number, days: number): LegalInterestResult {
14
+ const interest = (capital * this.RATE * days) / (this.DAYS_PER_YEAR * 100);
15
+ const total = capital + interest;
16
+
17
+ return {
18
+ capital,
19
+ days,
20
+ rate: this.RATE,
21
+ interest,
22
+ total,
23
+ };
24
+ }
25
+
26
+ static getRate(): number {
27
+ return this.RATE;
28
+ }
29
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { legalInterestRate } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await legalInterestRate.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+ <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
@@ -0,0 +1,23 @@
1
+ export interface LegalInterestRateUI {
2
+ labelTitle: string;
3
+ labelDescription: string;
4
+ labelBadge: string;
5
+ labelSubtitle: string;
6
+ labelLegalInterest: string;
7
+ labelDelayInterest: string;
8
+ labelCommercialOperations: string;
9
+ labelActive: string;
10
+ labelTributary: string;
11
+ labelFirstHalf: string;
12
+ labelQuickCalculator: string;
13
+ labelCapital: string;
14
+ labelDays: string;
15
+ labelInterestGenerated: string;
16
+ labelTotalToPay: string;
17
+ labelFormula: string;
18
+ labelBase: string;
19
+ labelOfficialRegulation: string;
20
+ currencySymbol: string;
21
+ currencyCode: string;
22
+ currencyLocale: string;
23
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
+ import { lotteryOptimizer } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await lotteryOptimizer.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <SharedBibliography links={content.bibliography} />}