@jjlmoya/utils-finance 1.41.0 → 1.42.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 (35) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/tests/locale_completeness.test.ts +2 -2
  4. package/src/tests/tool_validation.test.ts +2 -2
  5. package/src/tool/rentalDepositReturn/bibliography.astro +11 -0
  6. package/src/tool/rentalDepositReturn/bibliography.ts +6 -0
  7. package/src/tool/rentalDepositReturn/component.astro +53 -0
  8. package/src/tool/rentalDepositReturn/controller.ts +156 -0
  9. package/src/tool/rentalDepositReturn/currency.ts +67 -0
  10. package/src/tool/rentalDepositReturn/dom-views.ts +31 -0
  11. package/src/tool/rentalDepositReturn/entry.ts +28 -0
  12. package/src/tool/rentalDepositReturn/i18n/content-factory.ts +36 -0
  13. package/src/tool/rentalDepositReturn/i18n/de.ts +3 -0
  14. package/src/tool/rentalDepositReturn/i18n/en.ts +116 -0
  15. package/src/tool/rentalDepositReturn/i18n/es.ts +3 -0
  16. package/src/tool/rentalDepositReturn/i18n/fr.ts +3 -0
  17. package/src/tool/rentalDepositReturn/i18n/id.ts +3 -0
  18. package/src/tool/rentalDepositReturn/i18n/it.ts +3 -0
  19. package/src/tool/rentalDepositReturn/i18n/ja.ts +3 -0
  20. package/src/tool/rentalDepositReturn/i18n/ko.ts +3 -0
  21. package/src/tool/rentalDepositReturn/i18n/nl.ts +3 -0
  22. package/src/tool/rentalDepositReturn/i18n/pl.ts +3 -0
  23. package/src/tool/rentalDepositReturn/i18n/pt.ts +3 -0
  24. package/src/tool/rentalDepositReturn/i18n/ru.ts +3 -0
  25. package/src/tool/rentalDepositReturn/i18n/sv.ts +3 -0
  26. package/src/tool/rentalDepositReturn/i18n/tr.ts +3 -0
  27. package/src/tool/rentalDepositReturn/i18n/translations.ts +34 -0
  28. package/src/tool/rentalDepositReturn/i18n/zh.ts +3 -0
  29. package/src/tool/rentalDepositReturn/index.ts +11 -0
  30. package/src/tool/rentalDepositReturn/logic.test.ts +53 -0
  31. package/src/tool/rentalDepositReturn/logic.ts +108 -0
  32. package/src/tool/rentalDepositReturn/rental-deposit-return-calculator.css +591 -0
  33. package/src/tool/rentalDepositReturn/seo.astro +11 -0
  34. package/src/tool/rentalDepositReturn/ui.ts +53 -0
  35. package/src/tools.ts +2 -1
@@ -0,0 +1,591 @@
1
+ :root {
2
+ --rdr-ink: #25251f;
3
+ --rdr-muted: #716c60;
4
+ --rdr-paper: #fbf8ef;
5
+ --rdr-surface: #f0eadb;
6
+ --rdr-edge: #d6c9aa;
7
+ --rdr-accent: #b5533b;
8
+ --rdr-accent-soft: #efd8c8;
9
+ --rdr-cool: #36747b;
10
+ --rdr-gold: #bf8a37;
11
+ --rdr-on-accent: #fffaf1;
12
+ --rdr-shadow: #51463122;
13
+ }
14
+
15
+ .theme-dark {
16
+ --rdr-ink: #f3eee3;
17
+ --rdr-muted: #bbb3a4;
18
+ --rdr-paper: #24251f;
19
+ --rdr-surface: #2d3028;
20
+ --rdr-edge: #565446;
21
+ --rdr-accent: #df8663;
22
+ --rdr-accent-soft: #5b352b;
23
+ --rdr-cool: #84c3c3;
24
+ --rdr-gold: #e1b45d;
25
+ --rdr-on-accent: #281d18;
26
+ --rdr-shadow: #0006;
27
+ }
28
+
29
+ .rdr-tool {
30
+ background: var(--rdr-paper);
31
+ border: 1px solid var(--rdr-edge);
32
+ border-radius: 1.35rem;
33
+ box-shadow: 0 1rem 2.5rem var(--rdr-shadow);
34
+ color: var(--rdr-ink);
35
+ margin: 0 auto;
36
+ max-width: 74rem;
37
+ overflow: hidden;
38
+ width: min(100%, calc(100vw - 2rem));
39
+ }
40
+
41
+ .rdr-controls {
42
+ background: var(--rdr-surface);
43
+ border-bottom: 1px solid var(--rdr-edge);
44
+ padding: 1.35rem;
45
+ }
46
+ .rdr-top-controls {
47
+ display: grid;
48
+ gap: 1rem;
49
+ grid-template-columns: minmax(15rem, 1fr) minmax(12rem, 0.65fr);
50
+ }
51
+ .rdr-top-controls label,
52
+ .rdr-row label {
53
+ display: grid;
54
+ gap: 0.35rem;
55
+ }
56
+ .rdr-top-controls label > span,
57
+ .rdr-top-controls .rdr-field-label,
58
+ .rdr-row label > span {
59
+ font-size: 0.8rem;
60
+ font-weight: 800;
61
+ }
62
+ .rdr-top-controls small,
63
+ .rdr-list-heading p,
64
+ .rdr-row label em {
65
+ color: var(--rdr-muted);
66
+ font-size: 0.74rem;
67
+ line-height: 1.4;
68
+ }
69
+ .rdr-top-controls input,
70
+ .rdr-row input,
71
+ .rdr-row select {
72
+ background: var(--rdr-paper);
73
+ border: 1px solid var(--rdr-edge);
74
+ border-radius: 0.6rem;
75
+ box-sizing: border-box;
76
+ color: var(--rdr-ink);
77
+ font: inherit;
78
+ min-height: 2.8rem;
79
+ padding: 0.6rem 0.7rem;
80
+ width: 100%;
81
+ }
82
+ .rdr-top-controls input:focus-visible,
83
+ .rdr-row input:focus-visible,
84
+ .rdr-row select:focus-visible,
85
+ .rdr-currency-trigger:focus-visible,
86
+ .rdr-currency-option:focus-visible,
87
+ .rdr-actions button:focus-visible,
88
+ .rdr-secondary-button:focus-visible,
89
+ .rdr-remove:focus-visible,
90
+ .rdr-method summary:focus-visible {
91
+ outline: 3px solid var(--rdr-accent);
92
+ outline-offset: 2px;
93
+ }
94
+ .rdr-currency-select {
95
+ position: relative;
96
+ }
97
+ .rdr-currency-trigger {
98
+ align-items: center;
99
+ background: var(--rdr-paper);
100
+ border: 1px solid var(--rdr-edge);
101
+ border-radius: 0.6rem;
102
+ box-sizing: border-box;
103
+ color: var(--rdr-ink);
104
+ cursor: pointer;
105
+ display: flex;
106
+ font: inherit;
107
+ justify-content: space-between;
108
+ min-height: 2.8rem;
109
+ padding: 0.6rem 0.7rem;
110
+ position: relative;
111
+ text-align: left;
112
+ width: 100%;
113
+ }
114
+ .rdr-currency-trigger-symbol {
115
+ font-size: 1.12rem;
116
+ font-weight: 850;
117
+ line-height: 1;
118
+ }
119
+ .rdr-currency-trigger-arrow,
120
+ .rdr-select-arrow {
121
+ border-bottom: 2px solid var(--rdr-accent);
122
+ border-right: 2px solid var(--rdr-accent);
123
+ height: 0.48rem;
124
+ pointer-events: none;
125
+ position: absolute;
126
+ right: 0.95rem;
127
+ top: calc(50% - 0.3rem);
128
+ transform: rotate(45deg);
129
+ transition: transform 160ms ease;
130
+ width: 0.48rem;
131
+ }
132
+ .rdr-currency-trigger[aria-expanded="true"] .rdr-currency-trigger-arrow {
133
+ top: calc(50% - 0.15rem);
134
+ transform: rotate(225deg);
135
+ }
136
+ .rdr-currency-menu {
137
+ background: var(--rdr-paper);
138
+ border: 1px solid var(--rdr-edge);
139
+ border-radius: 0.75rem;
140
+ box-shadow: 0 1rem 2rem var(--rdr-shadow);
141
+ display: grid;
142
+ gap: 0.35rem;
143
+ grid-template-columns: repeat(5, minmax(0, 1fr));
144
+ left: 0;
145
+ padding: 0.5rem;
146
+ position: absolute;
147
+ right: 0;
148
+ top: calc(100% + 0.4rem);
149
+ z-index: 20;
150
+ }
151
+ .rdr-currency-menu[hidden] {
152
+ display: none;
153
+ }
154
+ .rdr-currency-option {
155
+ align-items: center;
156
+ aspect-ratio: 1;
157
+ background: transparent;
158
+ border: 1px solid transparent;
159
+ border-radius: 0.55rem;
160
+ color: var(--rdr-ink);
161
+ cursor: pointer;
162
+ display: flex;
163
+ font: inherit;
164
+ font-size: 1.1rem;
165
+ font-weight: 850;
166
+ justify-content: center;
167
+ min-width: 0;
168
+ padding: 0.35rem;
169
+ }
170
+ .rdr-currency-option:hover,
171
+ .rdr-currency-option.is-active {
172
+ background: var(--rdr-accent-soft);
173
+ border-color: var(--rdr-accent);
174
+ color: var(--rdr-accent);
175
+ }
176
+ .rdr-select-wrap {
177
+ display: block;
178
+ position: relative;
179
+ }
180
+ .rdr-select-wrap select {
181
+ appearance: none;
182
+ padding-right: 2.4rem;
183
+ }
184
+ .rdr-select-wrap .rdr-select-arrow {
185
+ right: 0.85rem;
186
+ }
187
+ .rdr-list-heading {
188
+ align-items: end;
189
+ display: flex;
190
+ gap: 1rem;
191
+ justify-content: space-between;
192
+ margin: 1.65rem 0 0.75rem;
193
+ }
194
+ .rdr-list-heading h2 {
195
+ font-size: 1rem;
196
+ margin: 0 0 0.25rem;
197
+ }
198
+ .rdr-list-heading p {
199
+ margin: 0;
200
+ max-width: 48rem;
201
+ }
202
+ .rdr-list {
203
+ display: grid;
204
+ gap: 0.7rem;
205
+ }
206
+ .rdr-row {
207
+ align-items: end;
208
+ background: var(--rdr-paper);
209
+ border: 1px solid var(--rdr-edge);
210
+ border-radius: 0.8rem;
211
+ display: grid;
212
+ gap: 0.7rem;
213
+ grid-template-columns: minmax(13rem, 1.6fr) minmax(7rem, 0.65fr) minmax(
214
+ 10rem,
215
+ 0.85fr
216
+ ) auto;
217
+ padding: 0.78rem;
218
+ }
219
+ .rdr-remove {
220
+ align-items: center;
221
+ background: transparent;
222
+ border: 0;
223
+ border-radius: 50%;
224
+ color: var(--rdr-accent);
225
+ cursor: pointer;
226
+ display: inline-flex;
227
+ font-size: 1.6rem;
228
+ height: 2.4rem;
229
+ justify-content: center;
230
+ width: 2.4rem;
231
+ }
232
+ .rdr-actions {
233
+ display: flex;
234
+ flex-wrap: wrap;
235
+ gap: 0.7rem;
236
+ margin-top: 0.9rem;
237
+ }
238
+ .rdr-actions button,
239
+ .rdr-secondary-button {
240
+ border: 1px solid var(--rdr-accent);
241
+ border-radius: 99rem;
242
+ cursor: pointer;
243
+ font: inherit;
244
+ font-weight: 800;
245
+ min-height: 2.75rem;
246
+ padding: 0.55rem 1rem;
247
+ }
248
+ .rdr-primary-button,
249
+ .rdr-copy-button {
250
+ background: var(--rdr-accent);
251
+ color: var(--rdr-on-accent);
252
+ }
253
+ .rdr-secondary-button,
254
+ .rdr-copy-button {
255
+ background: transparent;
256
+ color: var(--rdr-accent);
257
+ }
258
+ .rdr-copy-button {
259
+ margin-left: auto;
260
+ }
261
+ .rdr-output {
262
+ display: grid;
263
+ grid-template-columns: 1.05fr 0.95fr;
264
+ }
265
+ .rdr-scene-wrap {
266
+ border-right: 1px solid var(--rdr-edge);
267
+ min-width: 0;
268
+ padding: 1.35rem;
269
+ }
270
+ .rdr-scene {
271
+ background:
272
+ linear-gradient(
273
+ 145deg,
274
+ color-mix(in srgb, var(--rdr-accent-soft) 72%, transparent),
275
+ transparent 60%
276
+ ),
277
+ var(--rdr-paper);
278
+ border: 1px solid var(--rdr-edge);
279
+ border-radius: 1rem;
280
+ min-height: 100%;
281
+ overflow: hidden;
282
+ padding: 1.2rem;
283
+ }
284
+ .rdr-scene-heading {
285
+ align-items: flex-start;
286
+ display: flex;
287
+ gap: 0.8rem;
288
+ }
289
+ .rdr-scene-heading strong {
290
+ font-size: 1rem;
291
+ }
292
+ .rdr-scene-heading p {
293
+ color: var(--rdr-muted);
294
+ font-size: 0.76rem;
295
+ line-height: 1.45;
296
+ margin: 0.3rem 0 0;
297
+ }
298
+ .rdr-key-mark {
299
+ align-items: center;
300
+ background: var(--rdr-gold);
301
+ border: 2px solid var(--rdr-ink);
302
+ border-radius: 50%;
303
+ color: var(--rdr-ink);
304
+ display: inline-flex;
305
+ font-size: 1.3rem;
306
+ height: 2.3rem;
307
+ justify-content: center;
308
+ transform: rotate(-18deg);
309
+ width: 2.3rem;
310
+ }
311
+ .rdr-flow {
312
+ align-items: center;
313
+ display: grid;
314
+ gap: 0.65rem;
315
+ grid-template-columns: 1fr auto 1fr;
316
+ margin: 2.1rem 0 1.2rem;
317
+ }
318
+ .rdr-flow-node {
319
+ background: var(--rdr-paper);
320
+ border: 2px solid var(--rdr-ink);
321
+ border-radius: 0.75rem;
322
+ display: grid;
323
+ gap: 0.25rem;
324
+ min-height: 6.3rem;
325
+ padding: 0.75rem;
326
+ position: relative;
327
+ }
328
+ .rdr-flow-node span {
329
+ color: var(--rdr-gold);
330
+ font-size: 1.5rem;
331
+ }
332
+ .rdr-flow-node strong {
333
+ font-size: clamp(1rem, 2vw, 1.35rem);
334
+ font-variant-numeric: tabular-nums;
335
+ }
336
+ .rdr-flow-node small {
337
+ color: var(--rdr-muted);
338
+ font-size: 0.68rem;
339
+ }
340
+ .rdr-flow-deposit {
341
+ transform: rotate(-2deg);
342
+ }
343
+ .rdr-flow-return {
344
+ border-color: var(--rdr-cool);
345
+ transform: rotate(2deg);
346
+ }
347
+ .rdr-flow-arrow {
348
+ color: var(--rdr-accent);
349
+ font-size: 1.8rem;
350
+ font-weight: 900;
351
+ }
352
+ .rdr-meter {
353
+ background: var(--rdr-surface);
354
+ border: 1px solid var(--rdr-edge);
355
+ border-radius: 99rem;
356
+ height: 0.95rem;
357
+ overflow: hidden;
358
+ }
359
+ .rdr-meter span {
360
+ background: var(--rdr-accent);
361
+ display: block;
362
+ height: 100%;
363
+ }
364
+ .rdr-meter-labels {
365
+ color: var(--rdr-muted);
366
+ display: flex;
367
+ font-size: 0.68rem;
368
+ justify-content: space-between;
369
+ margin-top: 0.45rem;
370
+ }
371
+ .rdr-ledger {
372
+ margin-top: 2rem;
373
+ }
374
+ .rdr-ledger-title {
375
+ color: var(--rdr-muted);
376
+ display: flex;
377
+ font-size: 0.7rem;
378
+ justify-content: space-between;
379
+ margin-bottom: 0.55rem;
380
+ }
381
+ .rdr-ledger-row {
382
+ align-items: center;
383
+ display: grid;
384
+ gap: 0.5rem;
385
+ grid-template-columns: minmax(5rem, 1fr) 1.15fr auto;
386
+ padding: 0.5rem 0;
387
+ }
388
+ .rdr-ledger-row span,
389
+ .rdr-ledger-row strong {
390
+ font-size: 0.76rem;
391
+ overflow: hidden;
392
+ text-overflow: ellipsis;
393
+ white-space: nowrap;
394
+ }
395
+ .rdr-ledger-row strong {
396
+ font-variant-numeric: tabular-nums;
397
+ }
398
+ .rdr-ledger-line {
399
+ background: var(--rdr-surface);
400
+ border-radius: 99rem;
401
+ height: 0.55rem;
402
+ overflow: hidden;
403
+ }
404
+ .rdr-ledger-line b {
405
+ background: var(--rdr-gold);
406
+ border-radius: inherit;
407
+ display: block;
408
+ height: 100%;
409
+ }
410
+ .rdr-ledger-row.disputed .rdr-ledger-line b {
411
+ background: var(--rdr-accent);
412
+ }
413
+ .rdr-scene-empty {
414
+ color: var(--rdr-muted);
415
+ font-size: 0.8rem;
416
+ }
417
+ .rdr-results-wrap {
418
+ min-width: 0;
419
+ padding: 1.35rem;
420
+ }
421
+ .rdr-metrics {
422
+ display: grid;
423
+ gap: 0.65rem;
424
+ grid-template-columns: 1.25fr 1fr 1fr;
425
+ }
426
+ .rdr-metric {
427
+ background: var(--rdr-surface);
428
+ border: 1px solid var(--rdr-edge);
429
+ border-radius: 0.75rem;
430
+ display: grid;
431
+ gap: 0.35rem;
432
+ padding: 0.85rem;
433
+ }
434
+ .rdr-metric span {
435
+ color: var(--rdr-muted);
436
+ font-size: 0.7rem;
437
+ }
438
+ .rdr-metric strong {
439
+ font-size: clamp(1.05rem, 2.5vw, 1.5rem);
440
+ font-variant-numeric: tabular-nums;
441
+ }
442
+ .rdr-metric.rdr-accent {
443
+ background: var(--rdr-accent);
444
+ border-color: var(--rdr-accent);
445
+ color: var(--rdr-on-accent);
446
+ }
447
+ .rdr-metric.rdr-accent span {
448
+ color: inherit;
449
+ opacity: 0.82;
450
+ }
451
+ .rdr-warning {
452
+ background: var(--rdr-accent-soft);
453
+ border-left: 0.25rem solid var(--rdr-accent);
454
+ margin-top: 1.2rem;
455
+ padding: 0.75rem 0.9rem;
456
+ }
457
+ .rdr-warning strong {
458
+ font-size: 0.82rem;
459
+ }
460
+ .rdr-warning p,
461
+ .rdr-panel p,
462
+ .rdr-privacy,
463
+ .rdr-method p,
464
+ .rdr-muted {
465
+ color: var(--rdr-muted);
466
+ font-size: 0.78rem;
467
+ line-height: 1.5;
468
+ }
469
+ .rdr-warning p {
470
+ margin: 0.3rem 0 0;
471
+ }
472
+ .rdr-panel {
473
+ margin-top: 1.45rem;
474
+ }
475
+ .rdr-panel h3 {
476
+ font-size: 1rem;
477
+ margin: 0 0 0.35rem;
478
+ }
479
+ .rdr-panel p {
480
+ margin: 0 0 0.8rem;
481
+ }
482
+ .rdr-table-wrap {
483
+ overflow-x: auto;
484
+ }
485
+ .rdr-panel table {
486
+ border-collapse: collapse;
487
+ font-size: 0.77rem;
488
+ width: 100%;
489
+ }
490
+ .rdr-panel th,
491
+ .rdr-panel td {
492
+ border-bottom: 1px solid var(--rdr-edge);
493
+ padding: 0.58rem 0.25rem;
494
+ text-align: right;
495
+ }
496
+ .rdr-panel th:first-child,
497
+ .rdr-panel td:first-child {
498
+ text-align: left;
499
+ }
500
+ .rdr-summary dl {
501
+ display: grid;
502
+ gap: 0.45rem;
503
+ margin: 0;
504
+ }
505
+ .rdr-summary dl div {
506
+ border-bottom: 1px solid var(--rdr-edge);
507
+ display: flex;
508
+ justify-content: space-between;
509
+ padding: 0.4rem 0;
510
+ }
511
+ .rdr-summary dt,
512
+ .rdr-summary dd {
513
+ font-size: 0.78rem;
514
+ margin: 0;
515
+ }
516
+ .rdr-summary dd {
517
+ font-variant-numeric: tabular-nums;
518
+ font-weight: 800;
519
+ }
520
+ .rdr-privacy {
521
+ margin: 0;
522
+ padding: 0.85rem 1.35rem;
523
+ }
524
+ .rdr-method {
525
+ border-top: 1px solid var(--rdr-edge);
526
+ padding: 1rem 1.35rem 1.2rem;
527
+ }
528
+ .rdr-method summary {
529
+ cursor: pointer;
530
+ font-size: 0.82rem;
531
+ font-weight: 800;
532
+ }
533
+ .rdr-error {
534
+ background: var(--rdr-accent-soft);
535
+ color: var(--rdr-ink);
536
+ margin: 0;
537
+ padding: 1.5rem;
538
+ }
539
+
540
+ @media (max-width: 980px) {
541
+ .rdr-output {
542
+ grid-template-columns: 1fr;
543
+ }
544
+ .rdr-scene-wrap {
545
+ border-bottom: 1px solid var(--rdr-edge);
546
+ border-right: 0;
547
+ }
548
+ }
549
+
550
+ @media (max-width: 850px) {
551
+ .rdr-row {
552
+ grid-template-columns: 1fr 1fr;
553
+ }
554
+ .rdr-row label:first-child {
555
+ grid-column: span 2;
556
+ }
557
+ .rdr-remove {
558
+ justify-self: end;
559
+ }
560
+ }
561
+
562
+ @media (max-width: 700px) {
563
+ .rdr-top-controls {
564
+ grid-template-columns: 1fr;
565
+ }
566
+ .rdr-metrics {
567
+ grid-template-columns: 1fr;
568
+ }
569
+ .rdr-list-heading {
570
+ align-items: start;
571
+ flex-direction: column;
572
+ }
573
+ .rdr-copy-button {
574
+ margin-left: 0;
575
+ }
576
+ }
577
+
578
+ @media (max-width: 520px) {
579
+ .rdr-row {
580
+ grid-template-columns: 1fr;
581
+ }
582
+ .rdr-row label:first-child {
583
+ grid-column: auto;
584
+ }
585
+ .rdr-meter-labels {
586
+ gap: 0.5rem;
587
+ }
588
+ .rdr-meter-labels span {
589
+ max-width: 50%;
590
+ }
591
+ }
@@ -0,0 +1,11 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { rentalDepositReturn } from './entry';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props { locale?: KnownLocale; }
7
+ const { locale = 'en' } = Astro.props;
8
+ const content = await rentalDepositReturn.i18n[locale]?.() ?? await rentalDepositReturn.i18n.en?.();
9
+ ---
10
+
11
+ {content?.seo && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,53 @@
1
+ export interface RentalDepositReturnUI extends Record<string, string> {
2
+ depositLabel: string;
3
+ depositHelp: string;
4
+ deductionsTitle: string;
5
+ deductionsHelp: string;
6
+ descriptionLabel: string;
7
+ descriptionPlaceholder: string;
8
+ amountLabel: string;
9
+ statusLabel: string;
10
+ confirmedOption: string;
11
+ disputedOption: string;
12
+ addButton: string;
13
+ resetButton: string;
14
+ newDeductionLabel: string;
15
+ removeButton: string;
16
+ currencyLabel: string;
17
+ currencyHelp: string;
18
+ summaryTitle: string;
19
+ estimatedReturnLabel: string;
20
+ undisputedReturnLabel: string;
21
+ totalDeductionsLabel: string;
22
+ deductionBreakdownTitle: string;
23
+ confirmedLabel: string;
24
+ disputedLabel: string;
25
+ returnFlowTitle: string;
26
+ returnFlowText: string;
27
+ depositNode: string;
28
+ deductionNode: string;
29
+ returnNode: string;
30
+ overDeductedTitle: string;
31
+ overDeductedText: string;
32
+ scenariosTitle: string;
33
+ scenariosText: string;
34
+ scenarioColumn: string;
35
+ scenarioReturnColumn: string;
36
+ scenarioIncreaseColumn: string;
37
+ noDisputed: string;
38
+ emptyMessage: string;
39
+ copyButton: string;
40
+ copiedButton: string;
41
+ privacyNote: string;
42
+ methodTitle: string;
43
+ methodText: string;
44
+ limitationText: string;
45
+ reportTitle: string;
46
+ reportDeposit: string;
47
+ reportDeductions: string;
48
+ reportConfirmed: string;
49
+ reportDisputed: string;
50
+ reportEstimatedReturn: string;
51
+ reportPotentialReturn: string;
52
+ reportNote: string;
53
+ }
package/src/tools.ts CHANGED
@@ -23,5 +23,6 @@ import { MORTGAGE_EXTRA_PAYMENT_PLANNER_TOOL } from './tool/mortgageExtraPayment
23
23
  import { INFLATION_PURCHASING_POWER_TOOL } from './tool/inflationPurchasingPower';
24
24
  import { SUBSCRIPTION_COST_ANNUALIZER_TOOL } from './tool/subscriptionCostAnnualizer';
25
25
  import { LOAN_TO_INCOME_RATIO_TOOL } from './tool/loanToIncomeRatio';
26
+ import { RENTAL_DEPOSIT_RETURN_TOOL } from './tool/rentalDepositReturn';
26
27
 
27
- export const ALL_TOOLS: ToolDefinition[] = [COMPOUND_INTEREST_TOOL, FINANCIAL_FREEDOM_TOOL, SAVINGS_RATE_TOOL, PROFITABILITY_TOOL, MORTGAGE_TOOL, INFLATION_TOOL, PERCENTAGE_CALCULATOR_TOOL, LATE_INTEREST_TOOL, IBAN_BIC_SWIFT_TOOL, RENT_INCREASE_TOOL, LOTTERY_OPTIMIZER_TOOL, COURT_FEE_CALCULATOR_TOOL, LEGAL_INTEREST_RATE_TOOL, FIRE_CALCULATOR_TOOL, DEBT_SNOWBALL_TOOL, REVOLVING_CARD_CALCULATOR_TOOL, PESETA_VALUE_TOOL, SALARY_EMPLOYER_COST_TOOL, DIVIDEND_YIELD_TOOL, MORTGAGE_EXTRA_PAYMENT_PLANNER_TOOL, INFLATION_PURCHASING_POWER_TOOL, SUBSCRIPTION_COST_ANNUALIZER_TOOL, LOAN_TO_INCOME_RATIO_TOOL];
28
+ export const ALL_TOOLS: ToolDefinition[] = [COMPOUND_INTEREST_TOOL, FINANCIAL_FREEDOM_TOOL, SAVINGS_RATE_TOOL, PROFITABILITY_TOOL, MORTGAGE_TOOL, INFLATION_TOOL, PERCENTAGE_CALCULATOR_TOOL, LATE_INTEREST_TOOL, IBAN_BIC_SWIFT_TOOL, RENT_INCREASE_TOOL, LOTTERY_OPTIMIZER_TOOL, COURT_FEE_CALCULATOR_TOOL, LEGAL_INTEREST_RATE_TOOL, FIRE_CALCULATOR_TOOL, DEBT_SNOWBALL_TOOL, REVOLVING_CARD_CALCULATOR_TOOL, PESETA_VALUE_TOOL, SALARY_EMPLOYER_COST_TOOL, DIVIDEND_YIELD_TOOL, MORTGAGE_EXTRA_PAYMENT_PLANNER_TOOL, INFLATION_PURCHASING_POWER_TOOL, SUBSCRIPTION_COST_ANNUALIZER_TOOL, LOAN_TO_INCOME_RATIO_TOOL, RENTAL_DEPOSIT_RETURN_TOOL];