@jjlmoya/utils-finance 1.18.0 → 1.20.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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +9 -9
  3. package/src/category/i18n/ru.ts +4 -4
  4. package/src/layouts/PreviewLayout.astro +1 -0
  5. package/src/tests/diacritics_density.test.ts +140 -0
  6. package/src/tests/inverted_punctuation.test.ts +95 -0
  7. package/src/tests/no_en_dash.test.ts +70 -0
  8. package/src/tests/script_density.test.ts +94 -0
  9. package/src/tool/compoundInterest/i18n/de.ts +4 -4
  10. package/src/tool/compoundInterest/i18n/fr.ts +9 -9
  11. package/src/tool/compoundInterest/i18n/it.ts +18 -18
  12. package/src/tool/compoundInterest/i18n/pl.ts +2 -2
  13. package/src/tool/compoundInterest/i18n/ru.ts +7 -7
  14. package/src/tool/compoundInterest/i18n/tr.ts +7 -7
  15. package/src/tool/compoundInterest/i18n/zh.ts +4 -4
  16. package/src/tool/courtFeeCalculator/i18n/it.ts +10 -10
  17. package/src/tool/courtFeeCalculator/i18n/ru.ts +2 -2
  18. package/src/tool/courtFeeCalculator/i18n/tr.ts +6 -6
  19. package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +47 -2
  20. package/src/tool/debtSnowball/bibliography.ts +2 -2
  21. package/src/tool/debtSnowball/i18n/it.ts +2 -2
  22. package/src/tool/debtSnowball/i18n/pl.ts +1 -1
  23. package/src/tool/debtSnowball/i18n/tr.ts +1 -1
  24. package/src/tool/debtSnowball/i18n/zh.ts +1 -1
  25. package/src/tool/financialFreedom/financial-freedom-calculator.css +89 -0
  26. package/src/tool/financialFreedom/i18n/en.ts +1 -1
  27. package/src/tool/financialFreedom/i18n/fr.ts +3 -3
  28. package/src/tool/financialFreedom/i18n/ru.ts +2 -2
  29. package/src/tool/financialFreedom/i18n/zh.ts +1 -1
  30. package/src/tool/financialFreedom/seo.astro +7 -5
  31. package/src/tool/fireCalculator/i18n/it.ts +14 -14
  32. package/src/tool/fireCalculator/i18n/ru.ts +6 -6
  33. package/src/tool/fireCalculator/i18n/tr.ts +6 -6
  34. package/src/tool/fireCalculator/i18n/zh.ts +3 -3
  35. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +1 -1
  36. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +7 -7
  37. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +1 -1
  38. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +5 -5
  39. package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +61 -3
  40. package/src/tool/inflation/i18n/de.ts +2 -2
  41. package/src/tool/inflation/i18n/fr.ts +1 -1
  42. package/src/tool/inflation/i18n/it.ts +32 -32
  43. package/src/tool/inflation/i18n/nl.ts +7 -7
  44. package/src/tool/inflation/i18n/pl.ts +2 -2
  45. package/src/tool/inflation/i18n/pt.ts +2 -2
  46. package/src/tool/inflation/i18n/ru.ts +6 -6
  47. package/src/tool/inflation/i18n/sv.ts +3 -3
  48. package/src/tool/inflation/i18n/tr.ts +14 -14
  49. package/src/tool/inflation/i18n/zh.ts +2 -2
  50. package/src/tool/lateInterest/i18n/de.ts +2 -2
  51. package/src/tool/lateInterest/i18n/es.ts +5 -5
  52. package/src/tool/lateInterest/i18n/it.ts +14 -14
  53. package/src/tool/lateInterest/i18n/nl.ts +1 -1
  54. package/src/tool/lateInterest/i18n/pl.ts +1 -1
  55. package/src/tool/lateInterest/i18n/pt.ts +1 -1
  56. package/src/tool/lateInterest/i18n/ru.ts +4 -4
  57. package/src/tool/lateInterest/i18n/sv.ts +3 -3
  58. package/src/tool/lateInterest/i18n/tr.ts +7 -7
  59. package/src/tool/lateInterest/i18n/zh.ts +1 -1
  60. package/src/tool/legalInterestRate/i18n/it.ts +15 -15
  61. package/src/tool/legalInterestRate/i18n/ru.ts +1 -1
  62. package/src/tool/legalInterestRate/i18n/tr.ts +8 -8
  63. package/src/tool/lotteryOptimizer/i18n/it.ts +7 -7
  64. package/src/tool/lotteryOptimizer/i18n/pl.ts +1 -1
  65. package/src/tool/lotteryOptimizer/i18n/ru.ts +4 -4
  66. package/src/tool/lotteryOptimizer/i18n/tr.ts +4 -4
  67. package/src/tool/lotteryOptimizer/i18n/zh.ts +3 -3
  68. package/src/tool/mortgage/i18n/de.ts +1 -1
  69. package/src/tool/mortgage/i18n/fr.ts +4 -4
  70. package/src/tool/mortgage/i18n/id.ts +1 -1
  71. package/src/tool/mortgage/i18n/it.ts +12 -12
  72. package/src/tool/mortgage/i18n/nl.ts +2 -2
  73. package/src/tool/mortgage/i18n/pl.ts +1 -1
  74. package/src/tool/mortgage/i18n/ru.ts +5 -5
  75. package/src/tool/mortgage/i18n/tr.ts +6 -6
  76. package/src/tool/mortgage/i18n/zh.ts +1 -1
  77. package/src/tool/mortgage/mortgage-calculator.css +58 -1
  78. package/src/tool/percentageCalculator/i18n/de.ts +4 -4
  79. package/src/tool/percentageCalculator/i18n/en.ts +1 -1
  80. package/src/tool/percentageCalculator/i18n/es.ts +2 -2
  81. package/src/tool/percentageCalculator/i18n/fr.ts +2 -2
  82. package/src/tool/percentageCalculator/i18n/it.ts +22 -22
  83. package/src/tool/percentageCalculator/i18n/pl.ts +4 -4
  84. package/src/tool/percentageCalculator/i18n/ru.ts +9 -9
  85. package/src/tool/percentageCalculator/i18n/tr.ts +18 -18
  86. package/src/tool/percentageCalculator/i18n/zh.ts +6 -6
  87. package/src/tool/profitability/i18n/fr.ts +2 -2
  88. package/src/tool/profitability/i18n/ru.ts +1 -1
  89. package/src/tool/profitability/i18n/zh.ts +2 -2
  90. package/src/tool/profitability/profitability-calculator.css +101 -0
  91. package/src/tool/rentIncreaseCalculator/i18n/it.ts +13 -13
  92. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +5 -5
  93. package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +44 -2
@@ -16,6 +16,13 @@
16
16
  width: 100%;
17
17
  max-width: 1000px;
18
18
  margin: 0 auto;
19
+ min-width: 0;
20
+ }
21
+
22
+ .prof-root *,
23
+ .prof-root *::before,
24
+ .prof-root *::after {
25
+ box-sizing: border-box;
19
26
  }
20
27
 
21
28
  .theme-dark .prof-root {
@@ -32,6 +39,8 @@
32
39
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.2);
33
40
  transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
34
41
  position: relative;
42
+ min-width: 0;
43
+ overflow: hidden;
35
44
  }
36
45
 
37
46
  .prof-card.positive {
@@ -49,6 +58,7 @@
49
58
  grid-template-columns: 1fr 1fr;
50
59
  gap: 5rem;
51
60
  align-items: center;
61
+ min-width: 0;
52
62
  }
53
63
 
54
64
  @media (max-width: 900px) {
@@ -67,6 +77,8 @@
67
77
  justify-content: space-between;
68
78
  align-items: center;
69
79
  margin-bottom: 0.75rem;
80
+ gap: 0.75rem;
81
+ min-width: 0;
70
82
  }
71
83
 
72
84
  .prof-currency-select {
@@ -112,6 +124,7 @@
112
124
  color: var(--prof-text);
113
125
  transition: all 0.3s;
114
126
  box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);
127
+ min-width: 0;
115
128
  }
116
129
 
117
130
  .prof-input-field:hover {
@@ -171,6 +184,7 @@
171
184
  display: flex;
172
185
  flex-direction: column;
173
186
  gap: 2rem;
187
+ min-width: 0;
174
188
  }
175
189
 
176
190
  .prof-status-badge {
@@ -204,6 +218,7 @@
204
218
  letter-spacing: -0.06em;
205
219
  margin: 0.5rem 0;
206
220
  filter: drop-shadow(0 4px 8px rgba(0,0,0,0.1));
221
+ overflow-wrap: anywhere;
207
222
  }
208
223
 
209
224
  .positive .prof-metric-val { color: var(--prof-brand); }
@@ -229,6 +244,7 @@
229
244
  font-weight: 900;
230
245
  color: var(--prof-text);
231
246
  margin-top: 0.5rem;
247
+ overflow-wrap: anywhere;
232
248
  }
233
249
 
234
250
  .prof-copy-btn {
@@ -260,4 +276,89 @@
260
276
  padding-top: 3.5rem;
261
277
  border-top: 2px solid var(--prof-border);
262
278
  height: 400px;
279
+ min-width: 0;
280
+ }
281
+
282
+ .prof-chart-wrap canvas {
283
+ max-width: 100%;
284
+ }
285
+
286
+ @media (max-width: 768px) {
287
+ .prof-root {
288
+ gap: 1.25rem;
289
+ }
290
+
291
+ .prof-card {
292
+ border-radius: 1.25rem;
293
+ padding: 1.25rem;
294
+ }
295
+
296
+ .prof-grid {
297
+ gap: 1.5rem;
298
+ }
299
+
300
+ .prof-input-group {
301
+ margin-bottom: 1.25rem;
302
+ }
303
+
304
+ .prof-label-row {
305
+ align-items: flex-start;
306
+ flex-direction: column;
307
+ }
308
+
309
+ .prof-input-field {
310
+ border-radius: 1rem;
311
+ font-size: 1.125rem;
312
+ padding: 0.875rem 1rem;
313
+ }
314
+
315
+ .prof-time-row {
316
+ flex-direction: column;
317
+ }
318
+
319
+ .prof-unit-select {
320
+ min-height: 3rem;
321
+ padding: 0.75rem 3rem 0.75rem 1rem;
322
+ }
323
+
324
+ .prof-results {
325
+ gap: 1.25rem;
326
+ }
327
+
328
+ .prof-status-badge {
329
+ border-radius: 1rem;
330
+ font-size: 0.875rem;
331
+ margin-bottom: 1rem;
332
+ max-width: 100%;
333
+ overflow-wrap: anywhere;
334
+ }
335
+
336
+ .prof-metric-val {
337
+ font-size: 3rem;
338
+ }
339
+
340
+ .prof-submetrics {
341
+ grid-template-columns: 1fr;
342
+ }
343
+
344
+ .prof-submetric-card {
345
+ padding: 1rem;
346
+ border-radius: 1rem;
347
+ }
348
+
349
+ .prof-submetric-val {
350
+ font-size: 1.5rem;
351
+ }
352
+
353
+ .prof-copy-btn {
354
+ border-radius: 1rem;
355
+ font-size: 1rem;
356
+ padding: 1rem;
357
+ }
358
+
359
+ .prof-chart-wrap {
360
+ height: 300px;
361
+ margin-top: 2rem;
362
+ padding-top: 2rem;
363
+ }
263
364
  }
@@ -5,30 +5,30 @@ import type { RentIncreaseUI } from '../ui';
5
5
 
6
6
  const slug = 'calcolatore-aumento-affitto-spagna-ipc';
7
7
  const title = 'Calcolatore Aumento Affitto Spagna IPC: Limite 3%';
8
- const description = 'Calcola l’aggiornamento del tuo affitto con l’IPC o il limite legale del 3% secondo la Legge spagnola sulla Casa.';
8
+ const description = 'Calcola l\'aggiornamento del tuo affitto con l\'IPC o il limite legale del 3% secondo la Legge spagnola sulla Casa.';
9
9
 
10
10
  const faqData = [
11
11
  {
12
- question: 'Qual è l’aumento massimo dell’affitto consentito nel 2024 e 2025?',
13
- answer: 'Secondo la Legge 12/2023 per il Diritto alla Casa, per gli anni 2024 e 2025, l’incremento massimo annuale del canone negli affitti abitativi è limitato per legge al 3%.',
12
+ question: 'Qual è l\'aumento massimo dell\'affitto consentito nel 2024 e 2025?',
13
+ answer: 'Secondo la Legge 12/2023 per il Diritto alla Casa, per gli anni 2024 e 2025, l\'incremento massimo annuale del canone negli affitti abitativi è limitato per legge al 3%.',
14
14
  },
15
15
  {
16
- question: 'È obbligatorio aumentare l’affitto ogni anno con l’IPC?',
17
- answer: 'Non è obbligatorio per legge. Perché l’affitto aumenti, il contratto deve includere una clausola esplicita che menzioni l’aggiornamento annuale.',
16
+ question: 'È obbligatorio aumentare l\'affitto ogni anno con l\'IPC?',
17
+ answer: 'Non è obbligatorio per legge. Perché l\'affitto aumenti, il contratto deve includere una clausola esplicita che menzioni l\'aggiornamento annuale.',
18
18
  },
19
19
  {
20
- question: 'Con quanto anticipo deve notificare il proprietario l’aumento?',
21
- answer: 'Il proprietario deve comunicare l’aumento per iscritto all’inquilino con almeno un mese di anticipo (30 giorni).',
20
+ question: 'Con quanto anticipo deve notificare il proprietario l\'aumento?',
21
+ answer: 'Il proprietario deve comunicare l\'aumento per iscritto all\'inquilino con almeno un mese di anticipo (30 giorni).',
22
22
  },
23
23
  {
24
- question: 'Cosa succede se l’IPC è superiore al limite legale del 3%?',
25
- answer: 'Anche se l’IPC reale è superiore, il proprietario di un’abitazione principale non può richiedere legalmente un aumento superiore al 3% durante il 2024 e il 2025.',
24
+ question: 'Cosa succede se l\'IPC è superiore al limite legale del 3%?',
25
+ answer: 'Anche se l\'IPC reale è superiore, il proprietario di un\'abitazione principale non può richiedere legalmente un aumento superiore al 3% durante il 2024 e il 2025.',
26
26
  },
27
27
  ];
28
28
 
29
29
  const howToData = [
30
30
  {
31
- name: 'Inserisci l’affitto attuale',
31
+ name: 'Inserisci l\'affitto attuale',
32
32
  text: 'Scrivi il canone mensile che paghi attualmente.',
33
33
  },
34
34
  {
@@ -37,7 +37,7 @@ const howToData = [
37
37
  },
38
38
  {
39
39
  name: 'Consulta i risultati',
40
- text: 'Otterrai il nuovo affitto stimato, l’incremento mensile e il costo extra annuale.',
40
+ text: 'Otterrai il nuovo affitto stimato, l\'incremento mensile e il costo extra annuale.',
41
41
  },
42
42
  {
43
43
  name: 'Copia il riepilogo',
@@ -53,7 +53,7 @@ const seoData = [
53
53
  },
54
54
  {
55
55
  type: 'paragraph',
56
- html: 'In Spagna, l’<strong>Indice dei Prezzi al Consumo (IPC)</strong> è tradizionalmente lo strumento utilizzato per adeguare il prezzo dell’affitto. Tuttavia, la nuova Legge sulla Casa ha introdotto limiti importanti.',
56
+ html: 'In Spagna, l\'<strong>Indice dei Prezzi al Consumo (IPC)</strong> è tradizionalmente lo strumento utilizzato per adeguare il prezzo dell\'affitto. Tuttavia, la nuova Legge sulla Casa ha introdotto limiti importanti.',
57
57
  },
58
58
  ];
59
59
 
@@ -95,7 +95,7 @@ export const content: ToolLocaleContent<RentIncreaseUI> = {
95
95
  description,
96
96
  ui: {
97
97
  labelTitle: 'Calcolatore Aumento Affitto',
98
- labelDescription: 'Aggiorna il tuo canone in base all’IPC o applica il limite legale del 3% in modo sicuro.',
98
+ labelDescription: 'Aggiorna il tuo canone in base all\'IPC o applica il limite legale del 3% in modo sicuro.',
99
99
  labelCurrentRent: 'Affitto Attuale',
100
100
  labelCurrentRentPlaceholder: 'Es. 800',
101
101
  labelIncrementType: 'Modalità Aggiornamento',
@@ -5,7 +5,7 @@ import type { RentIncreaseUI } from '../ui';
5
5
 
6
6
  const slug = 'kira-artisi-hesaplama-ispanya-ipc';
7
7
  const title = 'İspanya Kira Artış Hesaplama IPC 3% Sınır';
8
- const description = 'Kiranızı IPC’ye veya İspanya Konut Yasası’na göre %3’lük yasal sınıra göre güncellemeyi ücretsiz hesaplayın.';
8
+ const description = 'Kiranızı IPC\'ye veya İspanya Konut Yasası\'na göre %3\'lük yasal sınıra göre güncellemeyi ücretsiz hesaplayın.';
9
9
 
10
10
  const faqData = [
11
11
  {
@@ -21,8 +21,8 @@ const faqData = [
21
21
  answer: 'Ev sahibi, yeni kiranın uygulanacağı tarihten en az bir ay (30 gün) önce kiracıya artışı yazılı olarak bildirmelidir.',
22
22
  },
23
23
  {
24
- question: 'IPC yasal sınır olan %3’ten yüksekse ne olur?',
25
- answer: 'Gerçek IPC daha yüksek olsa bile, bir daimi konutun sahibi 2024 ve 2025 yılları boyunca yasal olarak %3’ten fazla bir artış talep edemez.',
24
+ question: 'IPC yasal sınır olan %3\'ten yüksekse ne olur?',
25
+ answer: 'Gerçek IPC daha yüksek olsa bile, bir daimi konutun sahibi 2024 ve 2025 yılları boyunca yasal olarak %3\'ten fazla bir artış talep edemez.',
26
26
  },
27
27
  ];
28
28
 
@@ -53,7 +53,7 @@ const seoData = [
53
53
  },
54
54
  {
55
55
  type: 'paragraph',
56
- html: 'İspanya’da <strong>Tüketici Fiyat Endeksi (IPC)</strong> geleneksel olarak kira fiyatlarını ayarlamak için kullanılan bir ölçüttür. Ancak yeni Konut Yasası ile önemli sınırlamalar getirilmiştir.',
56
+ html: 'İspanya\'da <strong>Tüketici Fiyat Endeksi (IPC)</strong> geleneksel olarak kira fiyatlarını ayarlamak için kullanılan bir ölçüttür. Ancak yeni Konut Yasası ile önemli sınırlamalar getirilmiştir.',
57
57
  },
58
58
  ];
59
59
 
@@ -95,7 +95,7 @@ export const content: ToolLocaleContent<RentIncreaseUI> = {
95
95
  description,
96
96
  ui: {
97
97
  labelTitle: 'Kira Artışı Hesaplayıcı',
98
- labelDescription: 'Kiranızı IPC’ye göre ayarlayın veya %3’lük yasal sınırı güvenle uygulayın.',
98
+ labelDescription: 'Kiranızı IPC\'ye göre ayarlayın veya %3\'lük yasal sınırı güvenle uygulayın.',
99
99
  labelCurrentRent: 'Mevcut Kira',
100
100
  labelCurrentRentPlaceholder: 'Örn. 800',
101
101
  labelIncrementType: 'Güncelleme Modu',
@@ -93,6 +93,14 @@
93
93
  margin: 0 auto;
94
94
  perspective: 1000px;
95
95
  padding: 2rem 1rem;
96
+ min-width: 0;
97
+ box-sizing: border-box;
98
+ }
99
+
100
+ .ric-container *,
101
+ .ric-container *::before,
102
+ .ric-container *::after {
103
+ box-sizing: border-box;
96
104
  }
97
105
 
98
106
  .ric-card {
@@ -104,6 +112,7 @@
104
112
  position: relative;
105
113
  overflow: hidden;
106
114
  color-scheme: light;
115
+ min-width: 0;
107
116
  }
108
117
 
109
118
  .theme-dark .ric-card,
@@ -146,6 +155,7 @@
146
155
  grid-template-columns: 1fr 1fr;
147
156
  gap: 2rem;
148
157
  margin-bottom: 2rem;
158
+ min-width: 0;
149
159
  }
150
160
 
151
161
  .ric-inputs-section {
@@ -185,6 +195,7 @@
185
195
  color: var(--ric-text-input);
186
196
  font-size: 1rem;
187
197
  transition: all 0.2s;
198
+ min-width: 0;
188
199
  }
189
200
 
190
201
  .ric-input-wrapper input:focus,
@@ -207,6 +218,7 @@
207
218
  display: flex;
208
219
  flex-direction: column;
209
220
  gap: 1.5rem;
221
+ min-width: 0;
210
222
  }
211
223
 
212
224
  .ric-result-header {
@@ -228,7 +240,7 @@
228
240
  font-weight: 900;
229
241
  color: var(--ric-text-result-value);
230
242
  letter-spacing: -0.02em;
231
- overflow-wrap: break-word;
243
+ overflow-wrap: anywhere;
232
244
  }
233
245
 
234
246
  .ric-comparison-bar {
@@ -257,6 +269,7 @@
257
269
  font-size: 0.875rem;
258
270
  font-weight: 600;
259
271
  color: var(--ric-text-bar);
272
+ gap: 0.75rem;
260
273
  }
261
274
 
262
275
  .ric-summary-details {
@@ -286,6 +299,7 @@
286
299
  font-size: 1.25rem;
287
300
  font-weight: 800;
288
301
  color: var(--ric-text-result-value);
302
+ overflow-wrap: anywhere;
289
303
  }
290
304
 
291
305
  .ric-highlight {
@@ -342,8 +356,18 @@
342
356
  }
343
357
 
344
358
  @media (max-width: 768px) {
359
+ .ric-container {
360
+ padding: 1rem 0;
361
+ }
362
+
363
+ .ric-card {
364
+ border-radius: 20px;
365
+ padding: 1.25rem;
366
+ }
367
+
345
368
  .ric-layout {
346
369
  grid-template-columns: 1fr;
370
+ gap: 1.5rem;
347
371
  }
348
372
 
349
373
  .ric-header h3 {
@@ -356,6 +380,7 @@
356
380
 
357
381
  .ric-info-footer {
358
382
  flex-direction: column;
383
+ align-items: stretch;
359
384
  }
360
385
 
361
386
  .ric-action-btn {
@@ -366,5 +391,22 @@
366
391
  .ric-legal-badge {
367
392
  width: 100%;
368
393
  justify-content: center;
394
+ text-align: center;
395
+ }
396
+
397
+ .ric-header {
398
+ margin-bottom: 1.5rem;
369
399
  }
370
- }
400
+
401
+ .ric-header p {
402
+ font-size: 1rem;
403
+ }
404
+
405
+ .ric-summary-details {
406
+ grid-template-columns: 1fr;
407
+ }
408
+
409
+ .ric-bar-labels {
410
+ flex-direction: column;
411
+ }
412
+ }