@jjlmoya/utils-finance 1.16.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +3 -1
- package/src/entries.ts +7 -1
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/financialFreedom/bibliography.astro +14 -0
- package/src/tool/financialFreedom/bibliography.ts +12 -0
- package/src/tool/financialFreedom/component.astro +253 -0
- package/src/tool/financialFreedom/entry.ts +27 -0
- package/src/tool/financialFreedom/financial-freedom-calculator.css +346 -0
- package/src/tool/financialFreedom/i18n/de.ts +123 -0
- package/src/tool/financialFreedom/i18n/en.ts +182 -0
- package/src/tool/financialFreedom/i18n/es.ts +182 -0
- package/src/tool/financialFreedom/i18n/fr.ts +123 -0
- package/src/tool/financialFreedom/i18n/id.ts +123 -0
- package/src/tool/financialFreedom/i18n/it.ts +123 -0
- package/src/tool/financialFreedom/i18n/ja.ts +123 -0
- package/src/tool/financialFreedom/i18n/ko.ts +123 -0
- package/src/tool/financialFreedom/i18n/nl.ts +123 -0
- package/src/tool/financialFreedom/i18n/pl.ts +123 -0
- package/src/tool/financialFreedom/i18n/pt.ts +123 -0
- package/src/tool/financialFreedom/i18n/ru.ts +123 -0
- package/src/tool/financialFreedom/i18n/sv.ts +123 -0
- package/src/tool/financialFreedom/i18n/tr.ts +123 -0
- package/src/tool/financialFreedom/i18n/zh.ts +123 -0
- package/src/tool/financialFreedom/index.ts +10 -0
- package/src/tool/financialFreedom/logic.ts +68 -0
- package/src/tool/financialFreedom/seo.astro +13 -0
- package/src/tool/financialFreedom/ui.ts +26 -0
- package/src/tool/profitability/bibliography.astro +14 -0
- package/src/tool/profitability/bibliography.ts +12 -0
- package/src/tool/profitability/component.astro +249 -0
- package/src/tool/profitability/entry.ts +27 -0
- package/src/tool/profitability/i18n/de.ts +116 -0
- package/src/tool/profitability/i18n/en.ts +165 -0
- package/src/tool/profitability/i18n/es.ts +152 -0
- package/src/tool/profitability/i18n/fr.ts +112 -0
- package/src/tool/profitability/i18n/id.ts +112 -0
- package/src/tool/profitability/i18n/it.ts +112 -0
- package/src/tool/profitability/i18n/ja.ts +112 -0
- package/src/tool/profitability/i18n/ko.ts +112 -0
- package/src/tool/profitability/i18n/nl.ts +112 -0
- package/src/tool/profitability/i18n/pl.ts +112 -0
- package/src/tool/profitability/i18n/pt.ts +112 -0
- package/src/tool/profitability/i18n/ru.ts +112 -0
- package/src/tool/profitability/i18n/sv.ts +112 -0
- package/src/tool/profitability/i18n/tr.ts +112 -0
- package/src/tool/profitability/i18n/zh.ts +112 -0
- package/src/tool/profitability/index.ts +10 -0
- package/src/tool/profitability/logic.ts +43 -0
- package/src/tool/profitability/profitability-calculator.css +263 -0
- package/src/tool/profitability/seo.astro +15 -0
- package/src/tool/profitability/ui.ts +20 -0
- package/src/tools.ts +3 -1
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
.ff-root {
|
|
2
|
+
--ff-brand: #6366f1;
|
|
3
|
+
--ff-brand-light: #818cf8;
|
|
4
|
+
--ff-brand-dark: #4f46e5;
|
|
5
|
+
--ff-success: #10b981;
|
|
6
|
+
--ff-warning: #f59e0b;
|
|
7
|
+
--ff-danger: #ef4444;
|
|
8
|
+
--ff-bg: var(--surface-1);
|
|
9
|
+
--ff-card-bg: var(--surface-2);
|
|
10
|
+
--ff-input-bg: var(--surface-3);
|
|
11
|
+
--ff-text: var(--text-1);
|
|
12
|
+
--ff-text-muted: var(--text-2);
|
|
13
|
+
--ff-border: var(--border-color);
|
|
14
|
+
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
gap: 2rem;
|
|
18
|
+
width: 100%;
|
|
19
|
+
max-width: 1000px;
|
|
20
|
+
margin: 0 auto;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.theme-dark .ff-root {
|
|
24
|
+
--ff-input-bg: #1e293b;
|
|
25
|
+
--ff-card-bg: #0f172a;
|
|
26
|
+
--ff-border: #334155;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.ff-card {
|
|
30
|
+
background: var(--ff-card-bg);
|
|
31
|
+
backdrop-filter: blur(10px);
|
|
32
|
+
border: 1px solid var(--ff-border);
|
|
33
|
+
border-radius: 2rem;
|
|
34
|
+
padding: 3rem;
|
|
35
|
+
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
|
|
36
|
+
position: relative;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.ff-card::before {
|
|
41
|
+
content: '';
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: 0;
|
|
44
|
+
left: 0;
|
|
45
|
+
right: 0;
|
|
46
|
+
height: 4px;
|
|
47
|
+
background: linear-gradient(90deg, var(--ff-brand), var(--ff-brand-light));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.ff-calculator-grid {
|
|
51
|
+
display: grid;
|
|
52
|
+
grid-template-columns: 1fr 1.2fr;
|
|
53
|
+
gap: 4rem;
|
|
54
|
+
align-items: start;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@media (max-width: 900px) {
|
|
58
|
+
.ff-calculator-grid {
|
|
59
|
+
grid-template-columns: 1fr;
|
|
60
|
+
gap: 3rem;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.ff-input-group {
|
|
65
|
+
margin-bottom: 2.5rem;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ff-input-label {
|
|
69
|
+
display: flex;
|
|
70
|
+
justify-content: space-between;
|
|
71
|
+
align-items: center;
|
|
72
|
+
margin-bottom: 1rem;
|
|
73
|
+
font-size: 1rem;
|
|
74
|
+
font-weight: 700;
|
|
75
|
+
color: var(--ff-text);
|
|
76
|
+
letter-spacing: -0.01em;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.ff-input-field {
|
|
80
|
+
width: 100%;
|
|
81
|
+
background: var(--ff-input-bg);
|
|
82
|
+
border: 2px solid var(--ff-border);
|
|
83
|
+
border-radius: 1rem;
|
|
84
|
+
padding: 1rem 1.25rem;
|
|
85
|
+
font-size: 1.5rem;
|
|
86
|
+
font-weight: 800;
|
|
87
|
+
color: var(--ff-text);
|
|
88
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
89
|
+
margin-top: 0.5rem;
|
|
90
|
+
box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.ff-input-field:hover {
|
|
94
|
+
border-color: var(--ff-brand-light);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.ff-input-field:focus {
|
|
98
|
+
border-color: var(--ff-brand);
|
|
99
|
+
background: var(--ff-card-bg);
|
|
100
|
+
box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.15);
|
|
101
|
+
outline: none;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.ff-slider {
|
|
105
|
+
-webkit-appearance: none;
|
|
106
|
+
width: 100%;
|
|
107
|
+
height: 12px;
|
|
108
|
+
border-radius: 6px;
|
|
109
|
+
background: var(--ff-input-bg);
|
|
110
|
+
border: 1px solid var(--ff-border);
|
|
111
|
+
outline: none;
|
|
112
|
+
margin: 1.5rem 0;
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.ff-slider::-webkit-slider-thumb {
|
|
117
|
+
-webkit-appearance: none;
|
|
118
|
+
appearance: none;
|
|
119
|
+
width: 28px;
|
|
120
|
+
height: 28px;
|
|
121
|
+
border-radius: 50%;
|
|
122
|
+
background: var(--ff-brand);
|
|
123
|
+
cursor: pointer;
|
|
124
|
+
border: 4px solid #fff;
|
|
125
|
+
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
|
|
126
|
+
transition: all 0.2s ease;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.theme-dark .ff-slider::-webkit-slider-thumb {
|
|
130
|
+
border-color: #0f172a;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.ff-slider::-webkit-slider-thumb:hover {
|
|
134
|
+
transform: scale(1.15);
|
|
135
|
+
background: var(--ff-brand-light);
|
|
136
|
+
box-shadow: 0 6px 15px rgba(99, 102, 241, 0.4);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.ff-switch {
|
|
140
|
+
display: inline-flex;
|
|
141
|
+
background: var(--ff-input-bg);
|
|
142
|
+
padding: 0.4rem;
|
|
143
|
+
border-radius: 0.75rem;
|
|
144
|
+
gap: 0.25rem;
|
|
145
|
+
border: 1px solid var(--ff-border);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.ff-switch-btn {
|
|
149
|
+
padding: 0.5rem 1rem;
|
|
150
|
+
border-radius: 0.5rem;
|
|
151
|
+
border: none;
|
|
152
|
+
background: transparent;
|
|
153
|
+
color: var(--ff-text-muted);
|
|
154
|
+
font-size: 0.85rem;
|
|
155
|
+
font-weight: 700;
|
|
156
|
+
cursor: pointer;
|
|
157
|
+
transition: all 0.2s;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.ff-switch-btn.active {
|
|
161
|
+
background: var(--ff-brand);
|
|
162
|
+
color: white;
|
|
163
|
+
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.ff-results-main {
|
|
167
|
+
display: flex;
|
|
168
|
+
flex-direction: column;
|
|
169
|
+
gap: 2rem;
|
|
170
|
+
background: var(--ff-input-bg);
|
|
171
|
+
padding: 2.5rem;
|
|
172
|
+
border-radius: 2rem;
|
|
173
|
+
border: 1px solid var(--ff-border);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.ff-time-hero {
|
|
177
|
+
text-align: center;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.ff-time-label {
|
|
181
|
+
font-size: 0.85rem;
|
|
182
|
+
font-weight: 800;
|
|
183
|
+
text-transform: uppercase;
|
|
184
|
+
letter-spacing: 0.1em;
|
|
185
|
+
color: var(--ff-text-muted);
|
|
186
|
+
margin-bottom: 0.5rem;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.ff-time-display {
|
|
190
|
+
font-size: 4.5rem;
|
|
191
|
+
font-weight: 900;
|
|
192
|
+
letter-spacing: -0.04em;
|
|
193
|
+
line-height: 1;
|
|
194
|
+
background: linear-gradient(135deg, var(--ff-brand), var(--ff-brand-light));
|
|
195
|
+
-webkit-background-clip: text;
|
|
196
|
+
-webkit-text-fill-color: transparent;
|
|
197
|
+
margin: 1rem 0;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.ff-time-units {
|
|
201
|
+
display: grid;
|
|
202
|
+
grid-template-columns: repeat(3, 1fr);
|
|
203
|
+
gap: 1rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.ff-unit-card {
|
|
207
|
+
background: var(--ff-card-bg);
|
|
208
|
+
padding: 1.25rem;
|
|
209
|
+
border-radius: 1.25rem;
|
|
210
|
+
text-align: center;
|
|
211
|
+
border: 1px solid var(--ff-border);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.ff-unit-val {
|
|
215
|
+
display: block;
|
|
216
|
+
font-size: 2rem;
|
|
217
|
+
font-weight: 800;
|
|
218
|
+
color: var(--ff-text);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.ff-unit-name {
|
|
222
|
+
font-size: 0.75rem;
|
|
223
|
+
font-weight: 700;
|
|
224
|
+
color: var(--ff-text-muted);
|
|
225
|
+
text-transform: uppercase;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.ff-status-indicator {
|
|
229
|
+
padding: 1.5rem;
|
|
230
|
+
border-radius: 1.5rem;
|
|
231
|
+
font-weight: 800;
|
|
232
|
+
font-size: 1.2rem;
|
|
233
|
+
text-align: center;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.status-red {
|
|
237
|
+
background: rgba(239, 68, 68, 0.1);
|
|
238
|
+
color: #ef4444;
|
|
239
|
+
border: 1px solid rgba(239, 68, 68, 0.2);
|
|
240
|
+
}
|
|
241
|
+
.status-yellow {
|
|
242
|
+
background: rgba(245, 158, 11, 0.1);
|
|
243
|
+
color: #f59e0b;
|
|
244
|
+
border: 1px solid rgba(245, 158, 11, 0.2);
|
|
245
|
+
}
|
|
246
|
+
.status-green {
|
|
247
|
+
background: rgba(16, 185, 129, 0.1);
|
|
248
|
+
color: #10b981;
|
|
249
|
+
border: 1px solid rgba(16, 185, 129, 0.2);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.ff-burn-grid {
|
|
253
|
+
display: grid;
|
|
254
|
+
grid-template-columns: 1fr 1fr;
|
|
255
|
+
gap: 1.5rem;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.ff-burn-card {
|
|
259
|
+
padding: 1.5rem;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.ff-burn-val {
|
|
263
|
+
font-size: 1.75rem;
|
|
264
|
+
font-weight: 800;
|
|
265
|
+
color: var(--ff-brand);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.ff-what-if-card {
|
|
269
|
+
margin-top: 1.5rem;
|
|
270
|
+
padding: 2.5rem;
|
|
271
|
+
background: linear-gradient(135deg, var(--ff-brand), var(--ff-brand-dark));
|
|
272
|
+
border-radius: 2rem;
|
|
273
|
+
color: white;
|
|
274
|
+
position: relative;
|
|
275
|
+
overflow: hidden;
|
|
276
|
+
box-shadow: 0 15px 30px rgba(99, 102, 241, 0.3);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.ff-what-if-title {
|
|
280
|
+
font-size: 1.5rem;
|
|
281
|
+
font-weight: 900;
|
|
282
|
+
margin-bottom: 0.5rem;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.ff-what-if-desc {
|
|
286
|
+
font-size: 1rem;
|
|
287
|
+
opacity: 0.9;
|
|
288
|
+
margin-bottom: 1.5rem;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.ff-gain-display {
|
|
292
|
+
font-size: 1.5rem;
|
|
293
|
+
font-weight: 800;
|
|
294
|
+
background: rgba(255, 255, 255, 0.2);
|
|
295
|
+
padding: 1rem 1.5rem;
|
|
296
|
+
border-radius: 1.25rem;
|
|
297
|
+
display: inline-block;
|
|
298
|
+
backdrop-filter: blur(5px);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.ff-currency-select {
|
|
302
|
+
appearance: none;
|
|
303
|
+
background-color: var(--ff-input-bg);
|
|
304
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%236366f1' stroke-width='3' %3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
|
|
305
|
+
background-repeat: no-repeat;
|
|
306
|
+
background-position: right 1rem center;
|
|
307
|
+
background-size: 1.25rem;
|
|
308
|
+
border: 2px solid var(--ff-border);
|
|
309
|
+
border-radius: 1rem;
|
|
310
|
+
color: var(--ff-text);
|
|
311
|
+
cursor: pointer;
|
|
312
|
+
font-size: 1rem;
|
|
313
|
+
font-weight: 800;
|
|
314
|
+
padding: 0.8rem 3rem 0.8rem 1.25rem;
|
|
315
|
+
transition: all 0.2s;
|
|
316
|
+
width: auto;
|
|
317
|
+
min-width: 120px;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.ff-currency-select:hover {
|
|
321
|
+
border-color: var(--ff-brand);
|
|
322
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.ff-currency-select:focus {
|
|
326
|
+
outline: none;
|
|
327
|
+
border-color: var(--ff-brand);
|
|
328
|
+
box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.2);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.ff-currency-select option {
|
|
332
|
+
background-color: var(--ff-card-bg);
|
|
333
|
+
color: var(--ff-text);
|
|
334
|
+
padding: 1rem;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
:global(.theme-dark) .ff-currency-select {
|
|
338
|
+
background-color: #1e293b;
|
|
339
|
+
color: #f8fafc;
|
|
340
|
+
border-color: #334155;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
:global(.theme-dark) .ff-currency-select option {
|
|
344
|
+
background-color: #1e293b;
|
|
345
|
+
color: #f8fafc;
|
|
346
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { FinancialFreedomUI } from '../ui';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
export const ui: FinancialFreedomUI = {
|
|
5
|
+
labelSavings: 'Gesamte Ersparnisse',
|
|
6
|
+
labelExpenses: 'Aktuelle Ausgaben',
|
|
7
|
+
labelMonthly: 'Monatlich',
|
|
8
|
+
labelYearly: 'Jährlich',
|
|
9
|
+
labelTimeRemaining: 'Ihre Überlebensdauer',
|
|
10
|
+
labelYears: 'Jahre',
|
|
11
|
+
labelMonths: 'Monate',
|
|
12
|
+
labelDays: 'Tage',
|
|
13
|
+
labelYearsShort: 'j',
|
|
14
|
+
labelMonthsShort: 'm',
|
|
15
|
+
labelDaysShort: 't',
|
|
16
|
+
labelStatus: 'Finanzieller Sicherheitsstatus',
|
|
17
|
+
labelRedZone: 'Rote Zone: Hohes Risiko',
|
|
18
|
+
labelYellowZone: 'Gelbe Zone: Stabil',
|
|
19
|
+
labelGreenZone: 'Grüne Zone: Finanzielle Freiheit',
|
|
20
|
+
labelBurnRateDaily: 'Tägliche Ausgabenrate',
|
|
21
|
+
labelBurnRateMonthly: 'Monatliche Ausgabenrate',
|
|
22
|
+
labelWhatIf: 'Die 10%-Strategie',
|
|
23
|
+
labelWhatIfDescription: 'Durch die Reduzierung Ihrer Ausgaben um nur 10% könnten Sie Ihre Überlebensdauer erheblich verlängern.',
|
|
24
|
+
labelGainTime: 'Zusätzliche Überlebenszeit',
|
|
25
|
+
labelCopyResult: 'Zusammenfassung kopieren',
|
|
26
|
+
labelCopied: 'Kopiert!',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const slug = 'finanzielle-freiheit-rechner-uberlebensdauer';
|
|
30
|
+
const title = 'Rechner für Finanzielle Freiheit & Überlebensdauer';
|
|
31
|
+
const description = 'Berechnen Sie genau, wie lange Ihre Ersparnisse reichen werden. Unser Tool hilft Ihnen, Ihre finanzielle Unabhängigkeit zu visualisieren.';
|
|
32
|
+
|
|
33
|
+
const faq = [
|
|
34
|
+
{
|
|
35
|
+
question: 'Was ist eine gute Überlebensdauer?',
|
|
36
|
+
answer: 'Experten empfehlen mindestens 3 bis 6 Monate. Für echte Freiheit sind 2 Jahre oder mehr ideal.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Beinhaltet dieser Rechner die Inflation?',
|
|
40
|
+
answer: 'Dieses Tool ist für die sofortige Berechnung der aktuellen liquiden Mittel gegenüber den aktuellen Ausgaben konzipiert.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'Was ist die "Burn Rate" in den persönlichen Finanzen?',
|
|
44
|
+
answer: 'Die Burn Rate ist die Rate, mit der Sie Ihre Ersparnisse verbrauchen, um Ihre Lebenshaltungskosten zu decken.',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const howTo = [
|
|
49
|
+
{
|
|
50
|
+
name: 'Ersparnisse eingeben',
|
|
51
|
+
text: 'Geben Sie Ihr gesamtes verfügbares Bargeld ein.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Ausgaben festlegen',
|
|
55
|
+
text: 'Geben Sie an, wie viel Sie pro Monat oder Jahr ausgeben.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Sicherheitszone analysieren',
|
|
59
|
+
text: 'Prüfen Sie, ob Sie sich in der roten, gelben oder grünen Zone befinden.',
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
export const content: ToolLocaleContent<FinancialFreedomUI> = {
|
|
64
|
+
slug,
|
|
65
|
+
title,
|
|
66
|
+
description,
|
|
67
|
+
ui,
|
|
68
|
+
seo: [
|
|
69
|
+
{
|
|
70
|
+
type: 'title',
|
|
71
|
+
text: 'Was ist die finanzielle Überlebensdauer?',
|
|
72
|
+
level: 2,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'Die <strong>Überlebensdauer</strong> (Runway) ist die Zeitspanne, in der Sie ohne neues Einkommen leben können. Es ist die ultimative Kennzahl für finanzielle Freiheit. Im Gegensatz zum Kontostand zeigt sie Ihnen, wie viel "menschliche Zeit" Sie gekauft haben.',
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
faq,
|
|
80
|
+
bibliography: [
|
|
81
|
+
{
|
|
82
|
+
name: 'FIRE-Bewegung Prinzipien',
|
|
83
|
+
url: 'https://de.wikipedia.org/wiki/FIRE-Bewegung',
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
howTo,
|
|
87
|
+
schemas: [
|
|
88
|
+
{
|
|
89
|
+
'@context': 'https://schema.org',
|
|
90
|
+
'@type': 'FinancialProduct',
|
|
91
|
+
name: title,
|
|
92
|
+
description,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
'@context': 'https://schema.org',
|
|
96
|
+
'@type': 'FAQPage',
|
|
97
|
+
mainEntity: faq.map((f) => ({
|
|
98
|
+
'@type': 'Question',
|
|
99
|
+
name: f.question,
|
|
100
|
+
acceptedAnswer: { '@type': 'Answer', text: f.answer },
|
|
101
|
+
})),
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
'@context': 'https://schema.org',
|
|
105
|
+
'@type': 'HowTo',
|
|
106
|
+
name: title,
|
|
107
|
+
step: howTo.map((h, i) => ({
|
|
108
|
+
'@type': 'HowToStep',
|
|
109
|
+
position: i + 1,
|
|
110
|
+
name: h.name,
|
|
111
|
+
text: h.text,
|
|
112
|
+
})),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
'@context': 'https://schema.org',
|
|
116
|
+
'@type': 'SoftwareApplication',
|
|
117
|
+
name: title,
|
|
118
|
+
applicationCategory: 'FinanceApplication',
|
|
119
|
+
operatingSystem: 'All',
|
|
120
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { FinancialFreedomUI } from '../ui';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
|
|
4
|
+
export const ui: FinancialFreedomUI = {
|
|
5
|
+
labelSavings: 'Total Savings',
|
|
6
|
+
labelExpenses: 'Current Expenses',
|
|
7
|
+
labelMonthly: 'Monthly',
|
|
8
|
+
labelYearly: 'Yearly',
|
|
9
|
+
labelTimeRemaining: 'Your Survival Runway',
|
|
10
|
+
labelYears: 'Years',
|
|
11
|
+
labelMonths: 'Months',
|
|
12
|
+
labelDays: 'Days',
|
|
13
|
+
labelYearsShort: 'y',
|
|
14
|
+
labelMonthsShort: 'm',
|
|
15
|
+
labelDaysShort: 'd',
|
|
16
|
+
labelStatus: 'Financial Security Status',
|
|
17
|
+
labelRedZone: 'Red Zone: High Risk',
|
|
18
|
+
labelYellowZone: 'Yellow Zone: Stable',
|
|
19
|
+
labelGreenZone: 'Green Zone: Financial Freedom',
|
|
20
|
+
labelBurnRateDaily: 'Daily Burn Rate',
|
|
21
|
+
labelBurnRateMonthly: 'Monthly Burn Rate',
|
|
22
|
+
labelWhatIf: 'The 10% Power Move',
|
|
23
|
+
labelWhatIfDescription: 'By reducing your expenses by just 10%, you could extend your runway significantly.',
|
|
24
|
+
labelGainTime: 'Extra Survival Time',
|
|
25
|
+
labelCopyResult: 'Copy Summary',
|
|
26
|
+
labelCopied: 'Copied!',
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const slug = 'financial-freedom-calculator';
|
|
30
|
+
const title = 'Financial Freedom & Survival Runway Calculator';
|
|
31
|
+
const description = 'Calculate exactly how long your savings will last. Our survival runway tool helps you visualize your financial independence and plan your exit strategy or emergency fund.';
|
|
32
|
+
|
|
33
|
+
const faq = [
|
|
34
|
+
{
|
|
35
|
+
question: 'What is a good survival runway?',
|
|
36
|
+
answer: 'Financial experts generally recommend a minimum of 3 to 6 months of expenses in an emergency fund. However, for true financial independence, a runway of 2 years or more is considered the "Freedom Zone".',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
question: 'Does this calculator include inflation?',
|
|
40
|
+
answer: 'This tool is designed for immediate "physics" calculation of current liquid assets against current spending. For multi-decade retirement planning, you should also consult a compound interest calculator.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
question: 'What is "Burn Rate" in personal finance?',
|
|
44
|
+
answer: 'Burn rate is the rate at which you spend your savings to cover life expenses. Knowing your daily burn rate helps you internalize the cost of your lifestyle choices.',
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const howTo = [
|
|
49
|
+
{
|
|
50
|
+
name: 'Enter your total liquid savings',
|
|
51
|
+
text: 'Input the total amount of cash or easily accessible assets you have available.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'Set your recurring expenses',
|
|
55
|
+
text: 'Enter how much you spend per month or per year to cover your lifestyle.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'Analyze your security zone',
|
|
59
|
+
text: 'Check if you are in the Red, Yellow, or Green zone and see your daily burn rate.',
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
export const content: ToolLocaleContent<FinancialFreedomUI> = {
|
|
64
|
+
slug,
|
|
65
|
+
title,
|
|
66
|
+
description,
|
|
67
|
+
ui,
|
|
68
|
+
seo: [
|
|
69
|
+
{
|
|
70
|
+
type: 'title',
|
|
71
|
+
text: 'What is a Financial Freedom Runway?',
|
|
72
|
+
level: 2,
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
type: 'paragraph',
|
|
76
|
+
html: 'The <strong>survival runway</strong> is the amount of time you can live without any new income. It is the ultimate metric of financial freedom. Unlike a simple bank balance, the runway tells you how much "human time" you have purchased with your savings. Knowing your runway allows you to make bold career moves, start businesses, or simply sleep better at night knowing your safety net.',
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: 'title',
|
|
80
|
+
text: 'How to Calculate Your Survival Time',
|
|
81
|
+
level: 3,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'paragraph',
|
|
85
|
+
html: 'To find your runway, we divide your total liquid savings by your periodic expenses. Our calculator goes further by breaking this down into years, months, and days, giving you a tangible sense of your financial weight. We also calculate your <strong>Burn Rate</strong>—the precise amount of money that leaves your pocket every single day.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'comparative',
|
|
89
|
+
columns: 3,
|
|
90
|
+
items: [
|
|
91
|
+
{
|
|
92
|
+
title: 'Red Zone',
|
|
93
|
+
description: '0-6 months of runway.',
|
|
94
|
+
points: [
|
|
95
|
+
'High financial fragility',
|
|
96
|
+
'Focus on saving',
|
|
97
|
+
'Avoid new debt',
|
|
98
|
+
'Emergency mode',
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
title: 'Yellow Zone',
|
|
103
|
+
description: '6-24 months of runway.',
|
|
104
|
+
points: [
|
|
105
|
+
'Peace of mind',
|
|
106
|
+
'Weather most storms',
|
|
107
|
+
'Plan next moves',
|
|
108
|
+
'Stable safety net',
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
title: 'Green Zone',
|
|
113
|
+
description: '24+ months of runway.',
|
|
114
|
+
highlight: true,
|
|
115
|
+
points: [
|
|
116
|
+
'Financial independence',
|
|
117
|
+
'Total leverage',
|
|
118
|
+
'Negotiate your life',
|
|
119
|
+
'The Freedom Zone',
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: 'title',
|
|
126
|
+
text: 'Extending Your Runway: The 10% Rule',
|
|
127
|
+
level: 3,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'Small changes in spending have an exponential impact on your runway. A 10% reduction in expenses doesn\'t just save 10% of your money; it reduces your daily burn rate, making every dollar you already have last longer. This double-win effect is the secret to reaching financial independence years ahead of schedule.',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
faq,
|
|
135
|
+
bibliography: [
|
|
136
|
+
{
|
|
137
|
+
name: 'FIRE Movement Principles',
|
|
138
|
+
url: 'https://en.wikipedia.org/wiki/FIRE_movement',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'The Emergency Fund Guide',
|
|
142
|
+
url: 'https://www.investopedia.com/terms/e/emergency_fund.asp',
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
howTo,
|
|
146
|
+
schemas: [
|
|
147
|
+
{
|
|
148
|
+
'@context': 'https://schema.org',
|
|
149
|
+
'@type': 'FinancialProduct',
|
|
150
|
+
name: title,
|
|
151
|
+
description,
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
'@context': 'https://schema.org',
|
|
155
|
+
'@type': 'FAQPage',
|
|
156
|
+
mainEntity: faq.map((f) => ({
|
|
157
|
+
'@type': 'Question',
|
|
158
|
+
name: f.question,
|
|
159
|
+
acceptedAnswer: { '@type': 'Answer', text: f.answer },
|
|
160
|
+
})),
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'HowTo',
|
|
165
|
+
name: title,
|
|
166
|
+
step: howTo.map((h, i) => ({
|
|
167
|
+
'@type': 'HowToStep',
|
|
168
|
+
position: i + 1,
|
|
169
|
+
name: h.name,
|
|
170
|
+
text: h.text,
|
|
171
|
+
})),
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
'@context': 'https://schema.org',
|
|
175
|
+
'@type': 'SoftwareApplication',
|
|
176
|
+
name: title,
|
|
177
|
+
applicationCategory: 'FinanceApplication',
|
|
178
|
+
operatingSystem: 'All',
|
|
179
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
};
|