@jjlmoya/utils-pets 1.4.0 → 1.6.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 +59 -58
- package/src/category/i18n/de.ts +52 -0
- package/src/category/i18n/id.ts +52 -0
- package/src/category/i18n/it.ts +52 -0
- package/src/category/i18n/ja.ts +52 -0
- package/src/category/i18n/ko.ts +52 -0
- package/src/category/i18n/nl.ts +52 -0
- package/src/category/i18n/pl.ts +52 -0
- package/src/category/i18n/pt.ts +52 -0
- package/src/category/i18n/ru.ts +52 -0
- package/src/category/i18n/sv.ts +52 -0
- package/src/category/i18n/tr.ts +52 -0
- package/src/category/i18n/zh.ts +52 -0
- package/src/category/index.ts +13 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tool/petAge/component.astro +653 -1
- package/src/tool/petAge/i18n/de.ts +189 -0
- package/src/tool/petAge/i18n/en.ts +73 -44
- package/src/tool/petAge/i18n/es.ts +74 -45
- package/src/tool/petAge/i18n/fr.ts +73 -44
- package/src/tool/petAge/i18n/id.ts +189 -0
- package/src/tool/petAge/i18n/it.ts +189 -0
- package/src/tool/petAge/i18n/ja.ts +189 -0
- package/src/tool/petAge/i18n/ko.ts +189 -0
- package/src/tool/petAge/i18n/nl.ts +189 -0
- package/src/tool/petAge/i18n/pl.ts +189 -0
- package/src/tool/petAge/i18n/pt.ts +189 -0
- package/src/tool/petAge/i18n/ru.ts +189 -0
- package/src/tool/petAge/i18n/sv.ts +189 -0
- package/src/tool/petAge/i18n/tr.ts +195 -0
- package/src/tool/petAge/i18n/zh.ts +189 -0
- package/src/tool/petAge/index.ts +13 -1
- package/src/tool/petRation/component.astro +430 -1
- package/src/tool/petRation/i18n/de.ts +186 -0
- package/src/tool/petRation/i18n/en.ts +57 -32
- package/src/tool/petRation/i18n/es.ts +70 -45
- package/src/tool/petRation/i18n/fr.ts +75 -50
- package/src/tool/petRation/i18n/id.ts +186 -0
- package/src/tool/petRation/i18n/it.ts +186 -0
- package/src/tool/petRation/i18n/ja.ts +186 -0
- package/src/tool/petRation/i18n/ko.ts +186 -0
- package/src/tool/petRation/i18n/nl.ts +186 -0
- package/src/tool/petRation/i18n/pl.ts +186 -0
- package/src/tool/petRation/i18n/pt.ts +186 -0
- package/src/tool/petRation/i18n/ru.ts +186 -0
- package/src/tool/petRation/i18n/sv.ts +186 -0
- package/src/tool/petRation/i18n/tr.ts +186 -0
- package/src/tool/petRation/i18n/zh.ts +186 -0
- package/src/tool/petRation/index.ts +13 -1
- package/src/tool/petAge/style.css +0 -649
- package/src/tool/petRation/style.css +0 -427
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { Icon } from 'astro-icon/components';
|
|
3
3
|
import type { PetRationUI } from './index';
|
|
4
|
-
import './style.css';
|
|
5
4
|
|
|
6
5
|
interface Props {
|
|
7
6
|
ui: PetRationUI;
|
|
@@ -179,3 +178,433 @@ const { ui } = Astro.props;
|
|
|
179
178
|
}
|
|
180
179
|
document.addEventListener("astro:page-load", initPetRation);
|
|
181
180
|
</script>
|
|
181
|
+
|
|
182
|
+
<style>
|
|
183
|
+
.pet-ration-calculator-final {
|
|
184
|
+
position: relative;
|
|
185
|
+
max-width: 650px;
|
|
186
|
+
margin: 2rem auto;
|
|
187
|
+
background: var(--color-surface, #fff);
|
|
188
|
+
border-radius: 2rem;
|
|
189
|
+
padding: 2.5rem;
|
|
190
|
+
box-shadow: 0 20px 50px -15px rgba(0, 0, 0, 0.08);
|
|
191
|
+
color: var(--color-text, #334155);
|
|
192
|
+
border: 1px solid var(--color-border, #f1f5f9);
|
|
193
|
+
min-height: 400px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.calc-loader {
|
|
197
|
+
position: absolute;
|
|
198
|
+
top: 0;
|
|
199
|
+
left: 0;
|
|
200
|
+
width: 100%;
|
|
201
|
+
height: 100%;
|
|
202
|
+
background: var(--color-surface, #fff);
|
|
203
|
+
display: flex;
|
|
204
|
+
align-items: center;
|
|
205
|
+
justify-content: center;
|
|
206
|
+
border-radius: 2rem;
|
|
207
|
+
z-index: 50;
|
|
208
|
+
transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.4s;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
:global(.theme-dark) .pet-ration-calculator-final {
|
|
212
|
+
background: var(--color-surface-dark, #1e293b);
|
|
213
|
+
color: var(--color-text-dark, #e2e8f0);
|
|
214
|
+
border-color: var(--color-border-dark, #334155);
|
|
215
|
+
box-shadow: 0 20px 50px -15px rgba(0, 0, 0, 0.3);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
:global(.theme-dark) .calc-loader {
|
|
219
|
+
background: var(--color-surface-dark, #1e293b);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.calc-loader.hidden {
|
|
223
|
+
opacity: 0;
|
|
224
|
+
visibility: hidden;
|
|
225
|
+
pointer-events: none;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.loader-spinner {
|
|
229
|
+
width: 3rem;
|
|
230
|
+
height: 3rem;
|
|
231
|
+
color: var(--color-accent, #f59e0b);
|
|
232
|
+
animation: spin-pulse 2s infinite linear;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@keyframes spin-pulse {
|
|
236
|
+
from { transform: rotate(0deg); }
|
|
237
|
+
to { transform: rotate(360deg); }
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.calc-container {
|
|
241
|
+
display: flex;
|
|
242
|
+
flex-direction: column;
|
|
243
|
+
gap: 3rem;
|
|
244
|
+
animation: fade-in-up 0.6s cubic-bezier(0.4, 0, 0.2, 1);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@keyframes fade-in-up {
|
|
248
|
+
from {
|
|
249
|
+
opacity: 0;
|
|
250
|
+
transform: translateY(10px);
|
|
251
|
+
}
|
|
252
|
+
to {
|
|
253
|
+
opacity: 1;
|
|
254
|
+
transform: translateY(0);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.section-title {
|
|
259
|
+
font-size: 1.1rem;
|
|
260
|
+
font-weight: 950;
|
|
261
|
+
color: var(--color-heading, #0f172a);
|
|
262
|
+
margin-bottom: 2rem;
|
|
263
|
+
display: flex;
|
|
264
|
+
align-items: center;
|
|
265
|
+
gap: 0.75rem;
|
|
266
|
+
text-transform: uppercase;
|
|
267
|
+
letter-spacing: 0.05em;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
:global(.theme-dark) .section-title {
|
|
271
|
+
color: var(--color-heading-dark, #f8fafc);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.calc-section {
|
|
275
|
+
border-bottom: 1px dashed var(--color-border-dashed, #e2e8f0);
|
|
276
|
+
padding-bottom: 2rem;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.calc-section:last-of-type {
|
|
280
|
+
border-bottom: none;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
:global(.theme-dark) .calc-section {
|
|
284
|
+
border-bottom-color: var(--color-border-dark, #334155);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.input-item {
|
|
288
|
+
margin-bottom: 2rem;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.item-label {
|
|
292
|
+
display: block;
|
|
293
|
+
font-size: 0.75rem;
|
|
294
|
+
font-weight: 800;
|
|
295
|
+
text-transform: uppercase;
|
|
296
|
+
color: var(--color-label, #94a3b8);
|
|
297
|
+
margin-bottom: 1rem;
|
|
298
|
+
letter-spacing: 0.1em;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.species-selector-v2 {
|
|
302
|
+
display: flex;
|
|
303
|
+
gap: 1rem;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.species-selector-v2 input {
|
|
307
|
+
display: none;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.btn-species {
|
|
311
|
+
flex: 1;
|
|
312
|
+
display: flex;
|
|
313
|
+
align-items: center;
|
|
314
|
+
justify-content: center;
|
|
315
|
+
gap: 0.5rem;
|
|
316
|
+
padding: 1.25rem 0.75rem;
|
|
317
|
+
background: var(--color-btn-bg, #f8fafc);
|
|
318
|
+
border: 2px solid var(--color-btn-border, #e2e8f0);
|
|
319
|
+
border-radius: 1rem;
|
|
320
|
+
cursor: pointer;
|
|
321
|
+
font-weight: 800;
|
|
322
|
+
font-size: 1rem;
|
|
323
|
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
:global(.theme-dark) .btn-species {
|
|
327
|
+
background: var(--color-btn-bg-dark, #0f172a);
|
|
328
|
+
border-color: var(--color-btn-border-dark, #334155);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.icon-v2 {
|
|
332
|
+
width: 1.5rem;
|
|
333
|
+
height: 1.5rem;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.species-selector-v2 input:checked + .btn-species {
|
|
337
|
+
background: var(--color-surface, #fff);
|
|
338
|
+
border-color: var(--color-accent, #f59e0b);
|
|
339
|
+
color: var(--color-accent, #f59e0b);
|
|
340
|
+
box-shadow: 0 4px 15px rgba(245, 158, 11, 0.15);
|
|
341
|
+
transform: translateY(-2px);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
:global(.theme-dark) .species-selector-v2 input:checked + .btn-species {
|
|
345
|
+
background: var(--color-surface-elevated-dark, #1e293b);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.segmented-v2 {
|
|
349
|
+
display: flex;
|
|
350
|
+
background: var(--color-btn-bg, #f8fafc);
|
|
351
|
+
padding: 6px;
|
|
352
|
+
border-radius: 1rem;
|
|
353
|
+
border: 1px solid var(--color-btn-border, #e2e8f0);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
:global(.theme-dark) .segmented-v2 {
|
|
357
|
+
background: var(--color-btn-bg-dark, #0f172a);
|
|
358
|
+
border-color: var(--color-btn-border-dark, #334155);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
.segmented-v2 input {
|
|
362
|
+
display: none;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.segmented-v2 label {
|
|
366
|
+
flex: 1;
|
|
367
|
+
text-align: center;
|
|
368
|
+
padding: 0.85rem;
|
|
369
|
+
border-radius: 0.75rem;
|
|
370
|
+
cursor: pointer;
|
|
371
|
+
font-weight: 700;
|
|
372
|
+
font-size: 0.85rem;
|
|
373
|
+
transition: all 0.2s;
|
|
374
|
+
color: var(--color-muted, #64748b);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.segmented-v2 input:checked + label {
|
|
378
|
+
background: var(--color-accent, #f59e0b);
|
|
379
|
+
color: var(--color-on-accent, #fff);
|
|
380
|
+
box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.val-badge {
|
|
384
|
+
font-weight: 950;
|
|
385
|
+
color: var(--color-accent, #f59e0b);
|
|
386
|
+
font-size: 1.25rem;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
.label-row-v2 {
|
|
390
|
+
display: flex;
|
|
391
|
+
justify-content: space-between;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.range-v2 {
|
|
395
|
+
-webkit-appearance: none;
|
|
396
|
+
appearance: none;
|
|
397
|
+
width: 100%;
|
|
398
|
+
height: 8px;
|
|
399
|
+
background: var(--color-range-track, #e2e8f0);
|
|
400
|
+
border-radius: 10px;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
:global(.theme-dark) .range-v2 {
|
|
404
|
+
background: var(--color-range-track-dark, #334155);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.range-v2::-webkit-slider-thumb {
|
|
408
|
+
-webkit-appearance: none;
|
|
409
|
+
appearance: none;
|
|
410
|
+
width: 26px;
|
|
411
|
+
height: 26px;
|
|
412
|
+
background: var(--color-surface, #fff);
|
|
413
|
+
border: 6px solid var(--color-accent, #f59e0b);
|
|
414
|
+
border-radius: 50%;
|
|
415
|
+
cursor: pointer;
|
|
416
|
+
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.ratio-presets {
|
|
420
|
+
display: grid;
|
|
421
|
+
grid-template-columns: repeat(2, 1fr);
|
|
422
|
+
gap: 0.75rem;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
.ratio-presets input {
|
|
426
|
+
display: none;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.ratio-presets label {
|
|
430
|
+
padding: 0.85rem;
|
|
431
|
+
text-align: center;
|
|
432
|
+
background: var(--color-btn-bg, #f8fafc);
|
|
433
|
+
border: 1px solid var(--color-btn-border, #e2e8f0);
|
|
434
|
+
border-radius: 0.75rem;
|
|
435
|
+
cursor: pointer;
|
|
436
|
+
font-weight: 700;
|
|
437
|
+
font-size: 0.85rem;
|
|
438
|
+
transition: all 0.2s;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
:global(.theme-dark) .ratio-presets label {
|
|
442
|
+
background: var(--color-btn-bg-dark, #0f172a);
|
|
443
|
+
border-color: var(--color-btn-border-dark, #334155);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.ratio-presets input:checked + label {
|
|
447
|
+
background: var(--color-surface, #fff);
|
|
448
|
+
border-color: var(--color-accent, #f59e0b);
|
|
449
|
+
color: var(--color-accent, #f59e0b);
|
|
450
|
+
box-shadow: 0 4px 10px rgba(245, 158, 11, 0.1);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
:global(.theme-dark) .ratio-presets input:checked + label {
|
|
454
|
+
background: var(--color-surface-elevated-dark, #1e293b);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.custom-ratio-link {
|
|
458
|
+
display: block;
|
|
459
|
+
text-align: right;
|
|
460
|
+
font-size: 0.75rem;
|
|
461
|
+
color: var(--color-label, #94a3b8);
|
|
462
|
+
margin-top: 1rem;
|
|
463
|
+
cursor: pointer;
|
|
464
|
+
text-decoration: underline;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.manual-slider-box {
|
|
468
|
+
margin-top: 2rem;
|
|
469
|
+
padding: 1.5rem;
|
|
470
|
+
background: var(--color-btn-bg, #f8fafc);
|
|
471
|
+
border-radius: 1rem;
|
|
472
|
+
border: 1px solid var(--color-btn-border, #e2e8f0);
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
:global(.theme-dark) .manual-slider-box {
|
|
476
|
+
background: var(--color-btn-bg-dark, #0f172a);
|
|
477
|
+
border-color: var(--color-btn-border-dark, #334155);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.ratio-labels {
|
|
481
|
+
display: flex;
|
|
482
|
+
justify-content: space-between;
|
|
483
|
+
font-size: 0.8rem;
|
|
484
|
+
margin-top: 1rem;
|
|
485
|
+
font-weight: 700;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
.results-v2 {
|
|
489
|
+
background: var(--color-results-bg, #0f172a);
|
|
490
|
+
border-radius: 2rem;
|
|
491
|
+
padding: 2.5rem;
|
|
492
|
+
color: var(--color-results-text, #fff);
|
|
493
|
+
box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.3);
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
:global(.theme-dark) .results-v2 {
|
|
497
|
+
background: var(--color-accent, #f59e0b);
|
|
498
|
+
color: var(--color-results-text-dark, #0f172a);
|
|
499
|
+
box-shadow: 0 20px 40px -10px rgba(245, 158, 11, 0.2);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.res-cards-v2 {
|
|
503
|
+
display: flex;
|
|
504
|
+
gap: 1.5rem;
|
|
505
|
+
margin-bottom: 2rem;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
.res-card-v2 {
|
|
509
|
+
flex: 1;
|
|
510
|
+
display: flex;
|
|
511
|
+
flex-direction: column;
|
|
512
|
+
align-items: center;
|
|
513
|
+
border-left: 4px solid var(--color-accent, #f59e0b);
|
|
514
|
+
padding: 0.5rem 1.5rem;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
:global(.theme-dark) .res-card-v2 {
|
|
518
|
+
border-left-color: var(--color-results-bg, #0f172a);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
.res-tag {
|
|
522
|
+
font-size: 0.8rem;
|
|
523
|
+
font-weight: 900;
|
|
524
|
+
text-transform: uppercase;
|
|
525
|
+
color: var(--color-accent, #f59e0b);
|
|
526
|
+
margin-bottom: 0.25rem;
|
|
527
|
+
align-self: flex-start;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
:global(.theme-dark) .res-tag {
|
|
531
|
+
color: var(--color-results-bg, #0f172a);
|
|
532
|
+
opacity: 0.7;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.res-num {
|
|
536
|
+
font-size: 4rem;
|
|
537
|
+
font-weight: 950;
|
|
538
|
+
line-height: 1;
|
|
539
|
+
align-self: flex-start;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.res-num small {
|
|
543
|
+
font-size: 1.25rem;
|
|
544
|
+
margin-left: 4px;
|
|
545
|
+
opacity: 0.6;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.res-footer-v2 {
|
|
549
|
+
display: flex;
|
|
550
|
+
justify-content: space-between;
|
|
551
|
+
align-items: center;
|
|
552
|
+
padding-top: 1.5rem;
|
|
553
|
+
border-top: 1px solid rgba(255, 255, 255, 0.1);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
:global(.theme-dark) .res-footer-v2 {
|
|
557
|
+
border-top-color: rgba(0, 0, 0, 0.1);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.total-info {
|
|
561
|
+
font-weight: 800;
|
|
562
|
+
display: flex;
|
|
563
|
+
align-items: center;
|
|
564
|
+
gap: 0.5rem;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
.total-info strong {
|
|
568
|
+
font-size: 1.4rem;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
.footer-icon {
|
|
572
|
+
width: 1.5rem;
|
|
573
|
+
height: 1.5rem;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
.status-box-v2 {
|
|
577
|
+
background: var(--color-accent, #f59e0b);
|
|
578
|
+
color: var(--color-on-accent, #fff);
|
|
579
|
+
padding: 0.4rem 1.25rem;
|
|
580
|
+
border-radius: 2rem;
|
|
581
|
+
font-size: 0.85rem;
|
|
582
|
+
font-weight: 900;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
:global(.theme-dark) .status-box-v2 {
|
|
586
|
+
background: var(--color-results-bg, #0f172a);
|
|
587
|
+
color: var(--color-results-text, #fff);
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
@media (max-width: 600px) {
|
|
591
|
+
.pet-ration-calculator-final {
|
|
592
|
+
padding: 1.5rem;
|
|
593
|
+
margin: 1rem;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
.species-selector-v2 {
|
|
597
|
+
flex-direction: column;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.res-cards-v2 {
|
|
601
|
+
flex-direction: column;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.res-footer-v2 {
|
|
605
|
+
flex-direction: column;
|
|
606
|
+
gap: 1.5rem;
|
|
607
|
+
text-align: center;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
</style>
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { PetRationUI, PetRationLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'haustier-tagesration-rechner';
|
|
5
|
+
const title = 'Haustier Tagesration Rechner';
|
|
6
|
+
const description = 'Berechnen Sie die genaue Futtermenge, die Ihr Hund oder Ihre Katze benötigt. Tool basierend auf den veterinärmedizinischen RER- und DER-Formeln für ein gesundes Gewicht.';
|
|
7
|
+
|
|
8
|
+
const ui: PetRationUI = {
|
|
9
|
+
toolTitle: 'Tagesrationsrechner',
|
|
10
|
+
sectionProfile: '1. Haustierprofil',
|
|
11
|
+
labelAnimal: 'Tier',
|
|
12
|
+
labelStage: 'Lebensphase',
|
|
13
|
+
labelWeight: 'Körpergewicht',
|
|
14
|
+
labelActivity: 'Physische Aktivität',
|
|
15
|
+
sectionDiet: '2. Diät und Futter',
|
|
16
|
+
labelDietType: 'Fütterungsart',
|
|
17
|
+
speciesDog: 'Hund',
|
|
18
|
+
speciesCat: 'Katze',
|
|
19
|
+
speciesRabbit: 'Kaninchen',
|
|
20
|
+
stagePuppy: 'Welpe oder Kätzchen',
|
|
21
|
+
stageAdult: 'Erwachsen',
|
|
22
|
+
stageSenior: 'Senior',
|
|
23
|
+
activityLow: 'Niedrig',
|
|
24
|
+
activityMod: 'Normal',
|
|
25
|
+
activityHigh: 'Hoch',
|
|
26
|
+
dietDry: 'Nur Trocken',
|
|
27
|
+
dietMixed25: 'Gemischt (25%)',
|
|
28
|
+
dietHalf: 'Halbe-Halbe (50%)',
|
|
29
|
+
dietWet: 'Nur Nass',
|
|
30
|
+
manualAdjust: 'Manuelle Anpassung (1-99%)',
|
|
31
|
+
wetPercentLabel: '% Nassfutter in der Diät',
|
|
32
|
+
tagDry: 'Trocken',
|
|
33
|
+
tagWet: 'Nass',
|
|
34
|
+
totalKcal: 'Gesamt',
|
|
35
|
+
kcalUnit: 'kcal/Tag',
|
|
36
|
+
statusPuppy: 'Schnelle Wachstumsphase',
|
|
37
|
+
statusSenior: 'Reifer Stoffwechsel',
|
|
38
|
+
statusLargeDog: 'Große Rasse: Gelenkpflege',
|
|
39
|
+
statusDefault: 'Ausgewogenes Gewicht',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const faq: PetRationLocaleContent['faq'] = [
|
|
43
|
+
{
|
|
44
|
+
question: 'Was ist der RER und warum ist er wichtig?',
|
|
45
|
+
answer: 'Der RER (Resting Energy Requirement) ist die Mindestenergie, die Ihr Haustier benötigt, um seine lebenswichtigen Basisfunktionen im Ruhezustand aufrechtzuerhalten. Er ist die wissenschaftliche Grundlage für die Berechnung der Tagesration, um Unter- oder Überfütterung zu vermeiden. Das Verständnis des RER ermöglicht es Besitzern, die Futteraufnahme auf die spezifischen biologischen Bedürfnisse ihres Tieres abzustimmen und sicherzustellen, dass es nicht mehr verbraucht, als seine Organe effizient verarbeiten können.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: 'Wie beeinflusst die Kastration die Ration meines Haustiers?',
|
|
49
|
+
answer: 'Kastrierte Tiere neigen zu einem etwa 15 bis 20 Prozent niedrigeren Grundumsatz. Sie benötigen möglicherweise eine etwas kleinere Ration oder eine im Rechner auf "Niedrig" eingestellte Aktivitätsstufe, um eine Gewichtszunahme zu vermeiden. Die hormonellen Veränderungen nach dem Eingriff verändern die Art und Weise, wie der Körper Fett speichert und Energie verbrennt, was die Wachsamkeit über den Futternapf für die langfristige Gesundheit noch wichtiger macht.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
question: 'Kann ich diesen Rechner für Welpen verwenden?',
|
|
53
|
+
answer: 'Welpen im Wachstum haben einen viel höheren Energiebedarf (bis zum 3-fachen des RER). Dieser Rechner ist für erwachsene Hunde und Katzen optimiert. Konsultieren Sie für Welpen immer Ihren Tierarzt für einen spezifischen Wachstumsplan. Eine unsachgemäße Fütterung während der frühen Wachstumsphase kann später im Leben zu ernsthaften Skelettproblemen führen, da überschüssiges Kalzium oder Kalorien die Knochenentwicklung zu schnell vorantreiben können.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: 'Wie oft am Tag sollte ich die Ration verteilen?',
|
|
57
|
+
answer: 'Ideal ist es, die gesamte resultierende Menge auf 2 oder 3 Mahlzeiten pro Tag zu verteilen. Dies hilft, einen stabilen Blutzuckerspiegel aufrechtzuerhalten und verbessert die Verdauung, insbesondere bei Rassen, die zu Magendrehungen neigen. Konsistente Mahlzeiten tragen auch dazu bei, dass Ihr Haustier gesättigt bleibt und weniger dazu neigt, zwischen den geplanten Fütterungen um Reste zu betteln.',
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
const howTo: PetRationLocaleContent['howTo'] = [
|
|
62
|
+
{ name: 'Tierart sorgfältig auswählen', text: 'Geben Sie an, ob die Berechnung für einen Hund oder eine Katze erfolgt, da deren Stoffwechsel und Gewichtsgrenzen je nach ihren einzigartigen biologischen Merkmalen erheblich variieren.' },
|
|
63
|
+
{ name: 'Auf exaktes Gewicht einstellen', text: 'Bewegen Sie den Schieberegler auf das aktuelle Gewicht Ihres Haustiers in Kilogramm. Es ist wichtig, ein vor kurzem gemessenes Gewicht für eine genaue Energiebedarfsberechnung zu verwenden.' },
|
|
64
|
+
{ name: 'Aktivitätsniveau definieren', text: 'Wählen Sie zwischen niedriger, normaler oder hoher Aktivität, basierend auf der tatsächlichen täglichen Bewegung und dem Energieniveau, das Ihr vierbeiniger Begleiter an den Tag legt.' },
|
|
65
|
+
{ name: 'Kalorien des Futters pro kg eingeben', text: 'Suchen Sie auf der Futterverpackung nach dem genauen kcal/kg-Wert, damit die endgültige Ration in Gramm so präzise wie möglich für eine optimale Gesundheit berechnet wird.' },
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const bibliography: PetRationLocaleContent['bibliography'] = [
|
|
69
|
+
{ name: 'WSAVA: Nutrition Toolkit und Kalorienempfehlungen', url: 'https://wsava.org/global-guidelines/global-nutrition-guidelines/' },
|
|
70
|
+
{ name: 'FEDIAF: Ernährungsrichtlinien für Alleinfuttermittel und Ergänzungsfuttermittel für Heimtiere', url: 'https://fediaf.org/self-regulation/nutrition.html' },
|
|
71
|
+
];
|
|
72
|
+
|
|
73
|
+
const seo: PetRationLocaleContent['seo'] = [
|
|
74
|
+
{
|
|
75
|
+
type: 'summary',
|
|
76
|
+
title: 'Wichtige Prinzipien der Veterinärernährung und Gesundheit',
|
|
77
|
+
items: [
|
|
78
|
+
'Die RER-Formel lautet: 70 × (Gewicht in kg)^0,75. Sie ist die wissenschaftliche Grundlage jeder modernen Kalorienberechnung.',
|
|
79
|
+
'Der DER multipliziert den RER mit dem spezifischen Lebensstilfaktor des Tieres für den täglichen Bedarf.',
|
|
80
|
+
'Ein kastrierter Hund benötigt aufgrund hormoneller Verschiebungen bis zu 20 Prozent weniger Kalorien als ein unkastrierter.',
|
|
81
|
+
'Übergewicht betrifft heute 50 Prozent der Haustiere und verkürzt deren Lebenserwartung erheblich.',
|
|
82
|
+
'Die Berechnung der exakten Ration ist eine der effektivsten Formen der Präventivmedizin für Haustierbesitzer.',
|
|
83
|
+
'Die Verwendung einer Küchenwaage bietet die erforderliche Genauigkeit für einen wissenschaftlich fundierten Fütterungsplan.',
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
{ type: 'title', text: 'Vollständiger Leitfaden zur Berechnung der Tagesration Ihres Haustiers für optimale Gesundheit', level: 2 },
|
|
87
|
+
{
|
|
88
|
+
type: 'paragraph',
|
|
89
|
+
html: 'Einen Hund oder eine Katze richtig zu füttern, ist nicht nur eine Frage des morgendlichen Befüllens des Napfes. Ernährung ist die fundamentale Säule für ihre Gesundheit, Langlebigkeit und ihr emotionales Wohlbefinden. Ein <strong>Tagesrationsrechner für Haustiere</strong> ist ein unverzichtbares Werkzeug für jeden verantwortungsbewussten Besitzer, der die zwei häufigsten Probleme der heutigen Veterinärernährung vermeiden möchte: Fehlernährung durch Nährstoffmangel und vor allem Übergewicht, das mehr als 50% der Haustiere in Industrieländern betrifft.',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'paragraph',
|
|
93
|
+
html: 'In diesem Leitfaden untersuchen wir die wissenschaftlichen Grundlagen hinter den Kalorienberechnungen, wie man Futtermitteletiketten interpretiert und wie Faktoren wie Alter, körperliche Aktivität und physiologischer Status die Futtermenge beeinflussen, die Ihr Begleiter jeden Tag benötigt. Wir helfen Ihnen zu verstehen, wie kleine Anpassungen in der Tagesration einen großen Unterschied bei der Vorbeugung von Diabetes, Gelenkproblemen und der Herzgesundheit Ihres Tieres machen können.',
|
|
94
|
+
},
|
|
95
|
+
{ type: 'title', text: 'Die Wissenschaft hinter den Berechnungen: RER und DER verstehen', level: 3 },
|
|
96
|
+
{
|
|
97
|
+
type: 'paragraph',
|
|
98
|
+
html: 'Um genau zu bestimmen, wie viel ein Tier jeden Tag essen sollte, verwenden Tierärzte und Ernährungswissenschaftler zwei Schlüsselkonzepte: den RER und den DER. Diese Akronyme stehen für Resting Energy Requirement (Ruheenergiebedarf) bzw. Daily Energy Requirement (Tagesenergiebedarf). Das Verständnis ihres Zusammenspiels ist entscheidend für das Gewichtsmanagement und das Wohlbefinden Ihres Haustiers auf sichere und kontrollierte Weise.',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'Der RER deckt die Energie ab, die für grundlegende Organfunktionen, Atmung und Kreislauf benötigt wird, während das Tier ruht. Der DER nimmt dann diesen Wert und passt ihn an den Lebensstil des Tieres an, egal ob es sich um einen aktiven Leistungshund oder eine ruhige Wohnungskatze handelt. Wenn wir diese Werte korrekt kalibrieren, können wir ein Gleichgewicht erreichen, das langfristig einen gesunden Körperzustand fördert.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'stats',
|
|
106
|
+
items: [
|
|
107
|
+
{ label: 'RER: Ruheenergie', value: '70 × kg^0,75' },
|
|
108
|
+
{ label: 'Welpenfaktor', value: 'x2,5 bis x3,5' },
|
|
109
|
+
{ label: 'Aktiver Erwachsenenfaktor', value: 'x1,6 bis x2,0' },
|
|
110
|
+
{ label: 'Seniorfaktor', value: 'x1,0 bis x1,4' },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{ type: 'title', text: 'Wie man das Etikett des Haustierfutters liest und interpretiert', level: 3 },
|
|
114
|
+
{
|
|
115
|
+
type: 'paragraph',
|
|
116
|
+
html: 'Damit der Rechner Ihnen exakte Grammwerte liefert, müssen Sie die <strong>Kaloriendichte</strong> des Produkts kennen, auch bekannt als seine umsetzbare Energie. Dieser Wert wird normalerweise als kcal/kg oder kcal/100g auf der Verpackung angegeben. Indem Sie diese Zahlen genau eingeben, können Sie eine Diät entwerfen, die weder mangelhaft noch übertrieben ist.',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'stats',
|
|
120
|
+
items: [
|
|
121
|
+
{ label: 'Light-Trockenfutter', value: '~3000 kcal/kg' },
|
|
122
|
+
{ label: 'Standard-Trockenfutter', value: '~3500 kcal/kg' },
|
|
123
|
+
{ label: 'Energiereiches Welpenfutter', value: '~4000 kcal/kg' },
|
|
124
|
+
{ label: 'Dosen-Nassfutter', value: '~1000 kcal/kg' },
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'tip',
|
|
129
|
+
title: 'Ernährungshinweis vom Tierarzt',
|
|
130
|
+
html: 'Jedes Haustier ist ein Individuum mit seinem eigenen, einzigartigen Stoffwechsel. Der Rechner bietet einen wissenschaftlich fundierten Ausgangspunkt, aber Sie sollten den tatsächlichen Körperzustand immer überwachen, indem Sie die Rippen Ihres Haustiers abtasten. Wenn Sie diese leicht spüren können, ohne fest zu drücken, ist das Gewicht ideal. Wenn die Rippen unter einer Fettschicht schwer zu finden sind, könnte es an der Zeit sein, die Ration einzuschränken.',
|
|
131
|
+
},
|
|
132
|
+
{ type: 'title', text: 'Unterschiede in der Ernährung zwischen Katzen und Hunden', level: 3 },
|
|
133
|
+
{
|
|
134
|
+
type: 'paragraph',
|
|
135
|
+
html: 'Katzen sind obligate Fleischfresser und ihr Stoffwechsel ist darauf optimiert, Energie aus tierischen Proteinen zu gewinnen. Bei Hunden sehen wir einen flexibleren Allesfresser-Stoffwechsel, aber man muss dennoch vorsichtig mit Kohlenhydratüberschüssen sein, die zu Gewichtszunahme führen können. Beide Arten gedeihen bei einer kontrollierten Ration, die eine übermäßige Belastung der Gelenke und des Herz-Kreislauf-Systems während ihres gesamten Lebens vermeidet.',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
type: 'paragraph',
|
|
139
|
+
html: 'Sich ein paar Minuten Zeit zu nehmen, um die exakte Ration zu berechnen, ist eine der rentabelsten Investitionen in die Präventivmedizin, die Sie als Besitzer tätigen können. Ein gesundes Gewicht reduziert das Risiko für chronische Krankheiten drastisch und gibt Ihrem besten Freund die beste Chance auf ein langes, lebendiges Leben. Fragen Sie Ihren Tierarzt bei Ihrem nächsten Routinebesuch, ob Ihre aktuelle Fütterungsstrategie optimal ist.',
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
|
|
143
|
+
const schemas: PetRationLocaleContent['schemas'] = [
|
|
144
|
+
{
|
|
145
|
+
'@context': 'https://schema.org',
|
|
146
|
+
'@type': 'SoftwareApplication',
|
|
147
|
+
name: title,
|
|
148
|
+
description: description,
|
|
149
|
+
applicationCategory: 'UtilityApplication',
|
|
150
|
+
operatingSystem: 'Web',
|
|
151
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
152
|
+
} as WithContext<SoftwareApplication>,
|
|
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
|
+
} as any,
|
|
162
|
+
{
|
|
163
|
+
'@context': 'https://schema.org',
|
|
164
|
+
'@type': 'HowTo',
|
|
165
|
+
name: title,
|
|
166
|
+
step: howTo.map((h) => ({
|
|
167
|
+
'@type': 'HowToStep',
|
|
168
|
+
name: h.name,
|
|
169
|
+
text: h.text,
|
|
170
|
+
})),
|
|
171
|
+
} as any,
|
|
172
|
+
];
|
|
173
|
+
|
|
174
|
+
export const content: PetRationLocaleContent = {
|
|
175
|
+
faqTitle: 'Häufig gestellte Fragen',
|
|
176
|
+
bibliographyTitle: 'Bibliographie',
|
|
177
|
+
slug,
|
|
178
|
+
title,
|
|
179
|
+
description,
|
|
180
|
+
ui,
|
|
181
|
+
seo,
|
|
182
|
+
faq,
|
|
183
|
+
bibliography,
|
|
184
|
+
howTo,
|
|
185
|
+
schemas,
|
|
186
|
+
};
|