@jjlmoya/utils-health 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +60 -0
- package/src/category/i18n/en.ts +60 -0
- package/src/category/i18n/es.ts +60 -0
- package/src/category/i18n/fr.ts +60 -0
- package/src/category/index.ts +22 -0
- package/src/category/seo.astro +15 -0
- package/src/components/PreviewNavSidebar.astro +116 -0
- package/src/components/PreviewToolbar.astro +143 -0
- package/src/data.ts +28 -0
- package/src/env.d.ts +5 -0
- package/src/index.ts +36 -0
- package/src/layouts/PreviewLayout.astro +117 -0
- package/src/pages/[locale]/[slug].astro +146 -0
- package/src/pages/[locale].astro +251 -0
- package/src/pages/index.astro +4 -0
- package/src/tests/faq_count.test.ts +19 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/mocks/astro_mock.js +2 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +22 -0
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +17 -0
- package/src/tool/binauralTuner/bibliography.astro +14 -0
- package/src/tool/binauralTuner/component.astro +687 -0
- package/src/tool/binauralTuner/i18n/en.ts +187 -0
- package/src/tool/binauralTuner/i18n/es.ts +187 -0
- package/src/tool/binauralTuner/i18n/fr.ts +187 -0
- package/src/tool/binauralTuner/index.ts +27 -0
- package/src/tool/binauralTuner/seo.astro +14 -0
- package/src/tool/binauralTuner/ui.ts +18 -0
- package/src/tool/bloodUnitConverter/bibliography.astro +14 -0
- package/src/tool/bloodUnitConverter/component.astro +915 -0
- package/src/tool/bloodUnitConverter/i18n/en.ts +227 -0
- package/src/tool/bloodUnitConverter/i18n/es.ts +250 -0
- package/src/tool/bloodUnitConverter/i18n/fr.ts +218 -0
- package/src/tool/bloodUnitConverter/index.ts +27 -0
- package/src/tool/bloodUnitConverter/seo.astro +14 -0
- package/src/tool/bloodUnitConverter/ui.ts +38 -0
- package/src/tool/bmiCalculator/bibliography.astro +14 -0
- package/src/tool/bmiCalculator/component.astro +415 -0
- package/src/tool/bmiCalculator/i18n/en.ts +217 -0
- package/src/tool/bmiCalculator/i18n/es.ts +221 -0
- package/src/tool/bmiCalculator/i18n/fr.ts +217 -0
- package/src/tool/bmiCalculator/index.ts +27 -0
- package/src/tool/bmiCalculator/seo.astro +14 -0
- package/src/tool/bmiCalculator/ui.ts +21 -0
- package/src/tool/breathingVisualizer/bibliography.astro +14 -0
- package/src/tool/breathingVisualizer/component.astro +636 -0
- package/src/tool/breathingVisualizer/i18n/en.ts +206 -0
- package/src/tool/breathingVisualizer/i18n/es.ts +206 -0
- package/src/tool/breathingVisualizer/i18n/fr.ts +206 -0
- package/src/tool/breathingVisualizer/index.ts +27 -0
- package/src/tool/breathingVisualizer/seo.astro +14 -0
- package/src/tool/breathingVisualizer/ui.ts +31 -0
- package/src/tool/caffeineTracker/bibliography.astro +14 -0
- package/src/tool/caffeineTracker/component.astro +1210 -0
- package/src/tool/caffeineTracker/i18n/en.ts +198 -0
- package/src/tool/caffeineTracker/i18n/es.ts +198 -0
- package/src/tool/caffeineTracker/i18n/fr.ts +198 -0
- package/src/tool/caffeineTracker/index.ts +27 -0
- package/src/tool/caffeineTracker/logic.ts +31 -0
- package/src/tool/caffeineTracker/seo.astro +14 -0
- package/src/tool/caffeineTracker/ui.ts +36 -0
- package/src/tool/daltonismSimulator/bibliography.astro +14 -0
- package/src/tool/daltonismSimulator/component.astro +383 -0
- package/src/tool/daltonismSimulator/i18n/en.ts +188 -0
- package/src/tool/daltonismSimulator/i18n/es.ts +218 -0
- package/src/tool/daltonismSimulator/i18n/fr.ts +168 -0
- package/src/tool/daltonismSimulator/index.ts +27 -0
- package/src/tool/daltonismSimulator/seo.astro +14 -0
- package/src/tool/daltonismSimulator/ui.ts +20 -0
- package/src/tool/digestionStopwatch/bibliography.astro +14 -0
- package/src/tool/digestionStopwatch/component.astro +627 -0
- package/src/tool/digestionStopwatch/i18n/en.ts +173 -0
- package/src/tool/digestionStopwatch/i18n/es.ts +173 -0
- package/src/tool/digestionStopwatch/i18n/fr.ts +173 -0
- package/src/tool/digestionStopwatch/index.ts +27 -0
- package/src/tool/digestionStopwatch/logic.ts +63 -0
- package/src/tool/digestionStopwatch/seo.astro +14 -0
- package/src/tool/digestionStopwatch/ui.ts +20 -0
- package/src/tool/epworthSleepinessScale/bibliography.astro +14 -0
- package/src/tool/epworthSleepinessScale/component.astro +528 -0
- package/src/tool/epworthSleepinessScale/i18n/en.ts +217 -0
- package/src/tool/epworthSleepinessScale/i18n/es.ts +217 -0
- package/src/tool/epworthSleepinessScale/i18n/fr.ts +217 -0
- package/src/tool/epworthSleepinessScale/index.ts +27 -0
- package/src/tool/epworthSleepinessScale/seo.astro +14 -0
- package/src/tool/epworthSleepinessScale/ui.ts +27 -0
- package/src/tool/hydrationCalculator/bibliography.astro +14 -0
- package/src/tool/hydrationCalculator/component.astro +694 -0
- package/src/tool/hydrationCalculator/i18n/en.ts +217 -0
- package/src/tool/hydrationCalculator/i18n/es.ts +222 -0
- package/src/tool/hydrationCalculator/i18n/fr.ts +199 -0
- package/src/tool/hydrationCalculator/index.ts +27 -0
- package/src/tool/hydrationCalculator/seo.astro +14 -0
- package/src/tool/hydrationCalculator/ui.ts +28 -0
- package/src/tool/pelliRobsonTest/bibliography.astro +14 -0
- package/src/tool/pelliRobsonTest/component.astro +653 -0
- package/src/tool/pelliRobsonTest/i18n/en.ts +205 -0
- package/src/tool/pelliRobsonTest/i18n/es.ts +205 -0
- package/src/tool/pelliRobsonTest/i18n/fr.ts +205 -0
- package/src/tool/pelliRobsonTest/index.ts +27 -0
- package/src/tool/pelliRobsonTest/seo.astro +14 -0
- package/src/tool/pelliRobsonTest/ui.ts +21 -0
- package/src/tool/peripheralVisionTrainer/bibliography.astro +14 -0
- package/src/tool/peripheralVisionTrainer/component.astro +678 -0
- package/src/tool/peripheralVisionTrainer/i18n/en.ts +224 -0
- package/src/tool/peripheralVisionTrainer/i18n/es.ts +224 -0
- package/src/tool/peripheralVisionTrainer/i18n/fr.ts +211 -0
- package/src/tool/peripheralVisionTrainer/index.ts +27 -0
- package/src/tool/peripheralVisionTrainer/seo.astro +14 -0
- package/src/tool/peripheralVisionTrainer/ui.ts +26 -0
- package/src/tool/readingDistanceCalculator/bibliography.astro +14 -0
- package/src/tool/readingDistanceCalculator/component.astro +588 -0
- package/src/tool/readingDistanceCalculator/i18n/en.ts +202 -0
- package/src/tool/readingDistanceCalculator/i18n/es.ts +215 -0
- package/src/tool/readingDistanceCalculator/i18n/fr.ts +193 -0
- package/src/tool/readingDistanceCalculator/index.ts +31 -0
- package/src/tool/readingDistanceCalculator/seo.astro +14 -0
- package/src/tool/readingDistanceCalculator/ui.ts +18 -0
- package/src/tool/screenDecompressionTime/bibliography.astro +14 -0
- package/src/tool/screenDecompressionTime/component.astro +671 -0
- package/src/tool/screenDecompressionTime/i18n/en.ts +225 -0
- package/src/tool/screenDecompressionTime/i18n/es.ts +247 -0
- package/src/tool/screenDecompressionTime/i18n/fr.ts +225 -0
- package/src/tool/screenDecompressionTime/index.ts +27 -0
- package/src/tool/screenDecompressionTime/seo.astro +14 -0
- package/src/tool/screenDecompressionTime/ui.ts +32 -0
- package/src/tool/tinnitusReliever/bibliography.astro +14 -0
- package/src/tool/tinnitusReliever/component.astro +581 -0
- package/src/tool/tinnitusReliever/i18n/en.ts +161 -0
- package/src/tool/tinnitusReliever/i18n/es.ts +161 -0
- package/src/tool/tinnitusReliever/i18n/fr.ts +161 -0
- package/src/tool/tinnitusReliever/index.ts +27 -0
- package/src/tool/tinnitusReliever/seo.astro +14 -0
- package/src/tool/tinnitusReliever/ui.ts +9 -0
- package/src/tool/ubeCalculator/bibliography.astro +14 -0
- package/src/tool/ubeCalculator/component.astro +683 -0
- package/src/tool/ubeCalculator/i18n/en.ts +200 -0
- package/src/tool/ubeCalculator/i18n/es.ts +200 -0
- package/src/tool/ubeCalculator/i18n/fr.ts +196 -0
- package/src/tool/ubeCalculator/index.ts +27 -0
- package/src/tool/ubeCalculator/seo.astro +14 -0
- package/src/tool/ubeCalculator/ui.ts +26 -0
- package/src/tool/waterPurifier/bibliography.astro +14 -0
- package/src/tool/waterPurifier/component.astro +628 -0
- package/src/tool/waterPurifier/i18n/en.ts +167 -0
- package/src/tool/waterPurifier/i18n/es.ts +167 -0
- package/src/tool/waterPurifier/i18n/fr.ts +167 -0
- package/src/tool/waterPurifier/index.ts +27 -0
- package/src/tool/waterPurifier/seo.astro +14 -0
- package/src/tool/waterPurifier/ui.ts +18 -0
- package/src/tools.ts +19 -0
- package/src/types.ts +72 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HydrationCalculatorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'hydration-calculator-climate';
|
|
6
|
+
const title = 'Climate and Weight Hydration Calculator';
|
|
7
|
+
const description =
|
|
8
|
+
'Calculate exactly how much water you need to drink today. Algorithm adjusted for ambient temperature, relative humidity and physical activity level.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'How much water should I actually drink per day?',
|
|
13
|
+
answer:
|
|
14
|
+
'There is no fixed number. It depends primarily on your weight and climate. Our calculator uses the scientific base of 35ml/kg adjusted for temperature and humidity to give you a precise figure.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Is it dangerous to drink too much water?',
|
|
18
|
+
answer:
|
|
19
|
+
'Yes, it is known as hyponatraemia. It occurs when a lot of pure water is consumed in a short time without replenishing salts (electrolytes), diluting sodium in the blood. That is why our calculator warns you when you exceed 4 litres.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Why does humidity affect hydration?',
|
|
23
|
+
answer:
|
|
24
|
+
'With high humidity, sweat cannot evaporate and the body cannot cool down properly. You keep sweating but without the cooling effect, which drastically increases fluid loss.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'When should I use an isotonic drink?',
|
|
28
|
+
answer:
|
|
29
|
+
'It is recommended when physical exertion exceeds one hour or when ambient temperature is very high (above 32°C), to replace salts that pure water does not provide.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: 'How does cold weather affect hydration?',
|
|
33
|
+
answer:
|
|
34
|
+
'In intense cold, the sensation of thirst is suppressed. However, the body keeps losing fluids through breathing and cold-induced diuresis. It is important to drink even without feeling thirsty.',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const howToData = [
|
|
39
|
+
{
|
|
40
|
+
name: 'Enter Your Weight',
|
|
41
|
+
text: 'Input your current body weight in kilograms to establish the hydration base.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Set Climate',
|
|
45
|
+
text: 'Use the local weather button or manually enter temperature and humidity.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Define Activity',
|
|
49
|
+
text: 'Select your intensity level and how long you will be exercising.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Follow the Recommendation',
|
|
53
|
+
text: 'Replenish fluids at the suggested rate and monitor your status with the urine colour scale.',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'FAQPage',
|
|
60
|
+
mainEntity: faqData.map((item) => ({
|
|
61
|
+
'@type': 'Question',
|
|
62
|
+
name: item.question,
|
|
63
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
68
|
+
'@context': 'https://schema.org',
|
|
69
|
+
'@type': 'HowTo',
|
|
70
|
+
name: title,
|
|
71
|
+
description,
|
|
72
|
+
step: howToData.map((step, i) => ({
|
|
73
|
+
'@type': 'HowToStep',
|
|
74
|
+
position: i + 1,
|
|
75
|
+
name: step.name,
|
|
76
|
+
text: step.text,
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
81
|
+
'@context': 'https://schema.org',
|
|
82
|
+
'@type': 'SoftwareApplication',
|
|
83
|
+
name: title,
|
|
84
|
+
description,
|
|
85
|
+
applicationCategory: 'HealthApplication',
|
|
86
|
+
operatingSystem: 'Web',
|
|
87
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const content: ToolLocaleContent<HydrationCalculatorUI> = {
|
|
91
|
+
slug,
|
|
92
|
+
title,
|
|
93
|
+
description,
|
|
94
|
+
faqTitle: 'Frequently asked questions about hydration and climate',
|
|
95
|
+
faq: faqData,
|
|
96
|
+
bibliographyTitle: 'Scientific references',
|
|
97
|
+
bibliography: [
|
|
98
|
+
{
|
|
99
|
+
name: 'National Academies of Sciences — Dietary Reference Intakes for Water',
|
|
100
|
+
url: 'https://www.nationalacademies.org/',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'American College of Sports Medicine — Exercise and Fluid Replacement',
|
|
104
|
+
url: 'https://www.acsm.org/',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'World Health Organization — Guidelines for Drinking Water Quality',
|
|
108
|
+
url: 'https://www.who.int/',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
howTo: howToData,
|
|
112
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
113
|
+
ui: {
|
|
114
|
+
sectionWeight: 'Weight',
|
|
115
|
+
sectionClimate: 'Climate',
|
|
116
|
+
sectionActivity: 'Activity',
|
|
117
|
+
labelWeight: 'Weight (kg)',
|
|
118
|
+
labelTemp: 'Temp °C',
|
|
119
|
+
labelHum: 'Hum %',
|
|
120
|
+
labelDuration: 'Duration (minutes)',
|
|
121
|
+
weatherBtnTitle: 'Use Local Weather',
|
|
122
|
+
intensitySedentary: 'Sedentary',
|
|
123
|
+
intensityActive: 'Active',
|
|
124
|
+
intensityAthlete: 'Athlete',
|
|
125
|
+
resultUnit: 'Recommended litres',
|
|
126
|
+
statRefill: 'Replenishment',
|
|
127
|
+
statRefillHelp: 'During intense activity.',
|
|
128
|
+
statMix: 'Ideal Mix',
|
|
129
|
+
statUrine: 'Hydration Check (Urine)',
|
|
130
|
+
alertElectrolytes:
|
|
131
|
+
'Warning: Adding electrolytes or salts is recommended due to high volume or extreme heat.',
|
|
132
|
+
freqLow: '250 ml / every 2h',
|
|
133
|
+
freqMed: '250 ml / every 20 min',
|
|
134
|
+
freqHigh: '250 ml / every 45 min',
|
|
135
|
+
mixWater: '100% Pure Water',
|
|
136
|
+
mixWaterSalt: 'Water + Pinch of Salt',
|
|
137
|
+
mixWaterElectrolytes: 'Water + Electrolytes',
|
|
138
|
+
mixDetailLow: 'Low salt demand.',
|
|
139
|
+
mixDetailMed: 'Mineral compensation needed.',
|
|
140
|
+
mixDetailHigh: 'High salt loss.',
|
|
141
|
+
},
|
|
142
|
+
seo: [
|
|
143
|
+
{
|
|
144
|
+
type: 'summary',
|
|
145
|
+
title: 'Climate and Weight Hydration Calculator',
|
|
146
|
+
items: [
|
|
147
|
+
'<strong>Scientific algorithm</strong>: 35ml/kg base corrected for temperature, humidity and activity.',
|
|
148
|
+
'<strong>Real-time weather</strong>: fetches temperature and humidity from your current location.',
|
|
149
|
+
'<strong>Mix indicator</strong>: tells you whether you need pure water, salted water or electrolytes.',
|
|
150
|
+
'<strong>Urine scale</strong>: visual monitoring of hydration status.',
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Scientific Hydration Guide: How to Calculate Water Intake by Weight and Climate',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'Hydration is not a one-size-fits-all science. The commonly recommended "two litres of water a day" is a myth that ignores the critical variables that define our <strong>fluid homeostasis</strong>. For an athlete in the middle of a heat wave, those two litres could be insufficient in just one hour.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'The Base Formula: 35 ml per Kilogram',
|
|
165
|
+
level: 2,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'The starting point accepted by sports physiologists and nutritionists is an intake of <strong>35 ml of water per kilogram of body weight</strong> for healthy adults under normal conditions. This base ensures that plasma volume remains stable for basic vital functions. However, this is only the hydration "floor"; any external factor will increase this demand.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'The Impact of Climate: Temperature and Humidity',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'When ambient temperature exceeds 30°C, the body must activate its main cooling mechanism: evaporation. For each degree the thermometer rises above this threshold, fluid demand increases by approximately <strong>10%</strong>.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'tip',
|
|
182
|
+
title: 'The Risk of High Humidity',
|
|
183
|
+
html: 'If humidity exceeds 60%, sweat cannot evaporate efficiently. Body temperature rises faster and the body tries to compensate by sweating more. In humid climates, <strong>electrolyte loss</strong> tends to be greater even if the air does not feel hot.',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'table',
|
|
187
|
+
headers: ['Climate Variable', 'Physiological Effect', 'Recommended Action'],
|
|
188
|
+
rows: [
|
|
189
|
+
['Dry Heat (above 35°C)', 'Fast evaporation, immediate thirst.', 'Drink small amounts frequently.'],
|
|
190
|
+
['Humid Heat (above 30°C)', 'Inefficient sweat, hyperthermia risk.', 'Add salts and seek shade/ventilation.'],
|
|
191
|
+
['Intense Cold (below 5°C)', 'Loss through breathing and cold diuresis.', 'Do not wait for thirst (thirst is suppressed).'],
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Hydration During Sport and Physical Exertion',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'paragraph',
|
|
201
|
+
html: 'During exercise, fluid loss can range from 500 ml to 2 litres per hour. It is not just water; sweat carries <strong>sodium, potassium and magnesium</strong>. If we only replace water during massive sweat loss, we risk <strong>hyponatraemia</strong> (excessive dilution of sodium in the blood).',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
type: 'title',
|
|
205
|
+
text: 'Reading the Urine Colour Scale',
|
|
206
|
+
level: 2,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: 'list',
|
|
210
|
+
items: [
|
|
211
|
+
'<strong>Levels 1-2 (Pale/Light Yellow):</strong> optimal hydration. Continue at your current pace.',
|
|
212
|
+
'<strong>Levels 3-4 (Bright Yellow):</strong> slightly deficient hydration. Drink a glass of water now.',
|
|
213
|
+
'<strong>Levels 5-7 (Amber/Brown):</strong> severe dehydration. Urgent fluid replacement needed.',
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HydrationCalculatorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculadora-hidratacion-clima';
|
|
6
|
+
const title = 'Calculadora de Hidratación según Clima y Peso';
|
|
7
|
+
const description =
|
|
8
|
+
'Calcula exactamente cuánta agua necesitas beber hoy. Algoritmo ajustado por temperatura ambiente, humedad relativa y nivel de actividad física.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: '¿Cuánta agua debo beber realmente al día?',
|
|
13
|
+
answer:
|
|
14
|
+
'No hay un número fijo. Depende fundamentalmente de tu peso y del clima. Nuestra calculadora utiliza la base científica de 35ml/kg ajustada por temperatura y humedad para darte un dato preciso.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: '¿Es peligroso beber demasiada agua?',
|
|
18
|
+
answer:
|
|
19
|
+
'Sí, se conoce como hiponatremia. Ocurre cuando se bebe mucha agua pura en poco tiempo sin reponer sales (electrolitos), diluyendo el sodio en sangre. Por eso nuestra calculadora avisa cuando superas los 4 litros.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: '¿Por qué influye la humedad en la hidratación?',
|
|
23
|
+
answer:
|
|
24
|
+
'Con humedad alta, el sudor no se evapora y el cuerpo no se enfría bien. Sigues sudando pero sin efecto refrigerante, lo que aumenta drásticamente la pérdida de líquidos.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '¿Cuándo debo usar una bebida isotónica?',
|
|
28
|
+
answer:
|
|
29
|
+
'Se recomienda cuando el esfuerzo físico supera la hora de duración o cuando la temperatura ambiente es muy elevada (más de 32°C), para recuperar las sales que el agua pura no aporta.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: '¿Cómo afecta el frío a la hidratación?',
|
|
33
|
+
answer:
|
|
34
|
+
'En frío intenso, la sensación de sed se inhibe. Sin embargo, el cuerpo sigue perdiendo líquidos por la respiración y la diuresis inducida por el frío. Es importante beber aunque no se sienta sed.',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const howToData = [
|
|
39
|
+
{
|
|
40
|
+
name: 'Ingresar Peso',
|
|
41
|
+
text: 'Introduce tu peso corporal actual en kilogramos para establecer la base hídrica.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Ajustar Clima',
|
|
45
|
+
text: 'Usa el botón de clima local o introduce manualmente la temperatura y humedad.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Definir Actividad',
|
|
49
|
+
text: 'Selecciona tu nivel de intensidad y cuánto tiempo vas a dedicar al esfuerzo.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Seguir la Recomendación',
|
|
53
|
+
text: 'Repón líquidos según la tasa sugerida y monitoriza tu estado con la escala de orina.',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'FAQPage',
|
|
60
|
+
mainEntity: faqData.map((item) => ({
|
|
61
|
+
'@type': 'Question',
|
|
62
|
+
name: item.question,
|
|
63
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
68
|
+
'@context': 'https://schema.org',
|
|
69
|
+
'@type': 'HowTo',
|
|
70
|
+
name: title,
|
|
71
|
+
description,
|
|
72
|
+
step: howToData.map((step, i) => ({
|
|
73
|
+
'@type': 'HowToStep',
|
|
74
|
+
position: i + 1,
|
|
75
|
+
name: step.name,
|
|
76
|
+
text: step.text,
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
81
|
+
'@context': 'https://schema.org',
|
|
82
|
+
'@type': 'SoftwareApplication',
|
|
83
|
+
name: title,
|
|
84
|
+
description,
|
|
85
|
+
applicationCategory: 'HealthApplication',
|
|
86
|
+
operatingSystem: 'Web',
|
|
87
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const content: ToolLocaleContent<HydrationCalculatorUI> = {
|
|
91
|
+
slug,
|
|
92
|
+
title,
|
|
93
|
+
description,
|
|
94
|
+
faqTitle: 'Preguntas frecuentes sobre hidratación y clima',
|
|
95
|
+
faq: faqData,
|
|
96
|
+
bibliographyTitle: 'Referencias científicas',
|
|
97
|
+
bibliography: [
|
|
98
|
+
{
|
|
99
|
+
name: 'National Academies of Sciences — Dietary Reference Intakes for Water',
|
|
100
|
+
url: 'https://www.nationalacademies.org/',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'American College of Sports Medicine — Exercise and Fluid Replacement',
|
|
104
|
+
url: 'https://www.acsm.org/',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'OMS — Guías sobre ingesta de agua potable',
|
|
108
|
+
url: 'https://www.who.int/',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
howTo: howToData,
|
|
112
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
113
|
+
ui: {
|
|
114
|
+
sectionWeight: 'Peso',
|
|
115
|
+
sectionClimate: 'Clima',
|
|
116
|
+
sectionActivity: 'Actividad',
|
|
117
|
+
labelWeight: 'Peso (kg)',
|
|
118
|
+
labelTemp: 'Temp °C',
|
|
119
|
+
labelHum: 'Hum %',
|
|
120
|
+
labelDuration: 'Duración (minutos)',
|
|
121
|
+
weatherBtnTitle: 'Usar Clima Local',
|
|
122
|
+
intensitySedentary: 'Sedentario',
|
|
123
|
+
intensityActive: 'Activo',
|
|
124
|
+
intensityAthlete: 'Atleta',
|
|
125
|
+
resultUnit: 'Litros recomendados',
|
|
126
|
+
statRefill: 'Reposición',
|
|
127
|
+
statRefillHelp: 'Durante la actividad intensa.',
|
|
128
|
+
statMix: 'Mezcla Ideal',
|
|
129
|
+
statUrine: 'Control de Hidratación (Orina)',
|
|
130
|
+
alertElectrolytes:
|
|
131
|
+
'Atención: Se recomienda añadir electrolitos o sales por el alto volumen o calor extremo.',
|
|
132
|
+
freqLow: '250 ml / cada 2h',
|
|
133
|
+
freqMed: '250 ml / cada 20 min',
|
|
134
|
+
freqHigh: '250 ml / cada 45 min',
|
|
135
|
+
mixWater: '100% Agua Pura',
|
|
136
|
+
mixWaterSalt: 'Agua + Pizca de sal',
|
|
137
|
+
mixWaterElectrolytes: 'Agua + Electrolitos',
|
|
138
|
+
mixDetailLow: 'Baja demanda de sales.',
|
|
139
|
+
mixDetailMed: 'Compensación mineral necesaria.',
|
|
140
|
+
mixDetailHigh: 'Alta pérdida de sales.',
|
|
141
|
+
},
|
|
142
|
+
seo: [
|
|
143
|
+
{
|
|
144
|
+
type: 'summary',
|
|
145
|
+
title: 'Calculadora de Hidratación según Clima y Peso',
|
|
146
|
+
items: [
|
|
147
|
+
'<strong>Algoritmo científico</strong>: base de 35ml/kg corregida por temperatura, humedad y actividad.',
|
|
148
|
+
'<strong>Clima en tiempo real</strong>: obtiene temperatura y humedad de tu ubicación actual.',
|
|
149
|
+
'<strong>Semáforo de mezcla</strong>: indica si necesitas agua pura, agua con sal o electrolitos.',
|
|
150
|
+
'<strong>Escala de orina</strong>: monitorización visual del estado de hidratación.',
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Guía Científica de Hidratación: Cómo Calcular el Agua según Peso y Clima',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'La hidratación no es una ciencia de "talla única". Beber los "dos litros de agua al día" recomendados habitualmente es un mito que ignora las variables críticas que definen nuestra <strong>homeostasis hídrica</strong>. Para un deportista en medio de una ola de calor, esos dos litros podrían ser insuficientes en apenas una hora.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'La Fórmula Base: 35 ml por Kilogramo',
|
|
165
|
+
level: 2,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'El punto de partida aceptado por fisiólogos deportivos y nutricionistas es la ingesta de <strong>35 ml de agua por cada kilo de peso corporal</strong> para adultos sanos en condiciones normales. Esta base asegura que el volumen plasmático se mantenga estable para las funciones vitales básicas. Sin embargo, este es solo el "suelo" de hidratación; cualquier factor externo aumentará esta demanda.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'El Impacto del Clima: Temperatura y Humedad',
|
|
174
|
+
level: 2,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Cuando la temperatura ambiente supera los 30°C, el cuerpo debe activar su mecanismo principal de enfriamiento: la evaporación. Por cada grado que sube el termómetro por encima de este umbral, la demanda de líquidos aumenta aproximadamente un <strong>10%</strong>.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'tip',
|
|
182
|
+
title: 'El Riesgo de la Humedad Alta',
|
|
183
|
+
html: 'Si la humedad supera el 60%, el sudor no puede evaporarse eficientemente. La temperatura corporal sube más rápido y el cuerpo intenta compensar sudando más. En climas húmedos la <strong>pérdida de electrolitos</strong> suele ser mayor incluso si no sentimos el aire caliente.',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'table',
|
|
187
|
+
headers: ['Variables Climáticas', 'Efecto Fisiológico', 'Acción Recomendada'],
|
|
188
|
+
rows: [
|
|
189
|
+
['Calor Seco (más de 35°C)', 'Evaporación rápida, sed inmediata.', 'Beber pequeñas cantidades frecuentemente.'],
|
|
190
|
+
['Calor Húmedo (más de 30°C)', 'Sudor ineficiente, riesgo de hipertermia.', 'Añadir sales y buscar sombra/ventilación.'],
|
|
191
|
+
['Frío Intenso (menos de 5°C)', 'Pérdida por respiración y diuresis inducida.', 'No esperar a tener sed (la sed se inhibe).'],
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: 'title',
|
|
196
|
+
text: 'Hidratación en el Deporte y Esfuerzo Físico',
|
|
197
|
+
level: 2,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
type: 'paragraph',
|
|
201
|
+
html: 'Durante el ejercicio, la pérdida de líquidos puede oscilar entre los 500 ml y los 2 litros por hora. No se trata solo de agua; el sudor arrastra <strong>sodio, potasio y magnesio</strong>. Si solo reponemos agua pura ante pérdidas masivas de sudor, corremos el riesgo de <strong>hiponatremia</strong> (dilución excesiva de sodio en sangre).',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
type: 'title',
|
|
205
|
+
text: 'Interpretación de la Escala de Orina',
|
|
206
|
+
level: 2,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
type: 'list',
|
|
210
|
+
items: [
|
|
211
|
+
'<strong>Niveles 1-2 (Pálido/Amarillo claro):</strong> hidratación óptima. Continúa con tu ritmo actual.',
|
|
212
|
+
'<strong>Niveles 3-4 (Amarillo brillante):</strong> hidratación levemente deficiente. Bebe un vaso de agua ahora.',
|
|
213
|
+
'<strong>Niveles 5-7 (Ámbar/Marrón):</strong> deshidratación severa. Urge reponer líquidos.',
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
type: 'tip',
|
|
218
|
+
title: 'Protocolo de Reposición Eficiente',
|
|
219
|
+
html: 'Beber 250 ml cada 45 min si el volumen total supera los 3.5L. Para actividades intensas, cada 20 minutos. Si la pérdida estimada supera los 3.5L, añade sales o una bebida isotónica. <strong>Evita grandes ingestas de golpe</strong> para favorecer la absorción celular.',
|
|
220
|
+
},
|
|
221
|
+
],
|
|
222
|
+
};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { HydrationCalculatorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculateur-hydratation-climat';
|
|
6
|
+
const title = 'Calculateur d\'Hydratation selon le Climat et le Poids';
|
|
7
|
+
const description =
|
|
8
|
+
'Calculez exactement la quantité d\'eau que vous devez boire aujourd\'hui. Algorithme ajusté selon la température ambiante, l\'humidité relative et le niveau d\'activité physique.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: 'Quelle quantité d\'eau dois-je vraiment boire par jour?',
|
|
13
|
+
answer:
|
|
14
|
+
'Il n\'y a pas de chiffre fixe. Cela dépend fondamentalement de votre poids et du climat. Notre calculateur utilise la base scientifique de 35ml/kg ajustée à la température et à l\'humidité pour vous donner une donnée précise.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: 'Est-il dangereux de boire trop d\'eau?',
|
|
18
|
+
answer:
|
|
19
|
+
'Oui, c\'est ce qu\'on appelle l\'hyponatrémie. Elle survient lorsqu\'on boit beaucoup d\'eau pure en peu de temps sans reconstituer les sels (électrolytes), diluant ainsi le sodium dans le sang. C\'est pourquoi notre calculateur vous avertit lorsque vous dépassez 4 litres.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Pourquoi l\'humidité influence-t-elle l\'hydratation?',
|
|
23
|
+
answer:
|
|
24
|
+
'Avec une humidité élevée, la transpiration ne peut pas s\'évaporer et le corps ne se refroidit pas bien. Vous continuez à transpirer mais sans effet rafraîchissant, ce qui augmente considérablement la perte de liquides.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Quand dois-je utiliser une boisson isotonique?',
|
|
28
|
+
answer:
|
|
29
|
+
'Elle est recommandée lorsque l\'effort physique dépasse une heure ou lorsque la température ambiante est très élevée (plus de 32°C), pour récupérer les sels que l\'eau pure n\'apporte pas.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: 'Comment le froid affecte-t-il l\'hydratation?',
|
|
33
|
+
answer:
|
|
34
|
+
'Par grand froid, la sensation de soif est inhibée. Cependant, le corps continue à perdre des liquides par la respiration et la diurèse induite par le froid. Il est important de boire même sans ressentir la soif.',
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
const howToData = [
|
|
39
|
+
{
|
|
40
|
+
name: 'Saisir le Poids',
|
|
41
|
+
text: 'Entrez votre poids corporel actuel en kilogrammes pour établir la base hydrique.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Ajuster le Climat',
|
|
45
|
+
text: 'Utilisez le bouton de météo locale ou saisissez manuellement la température et l\'humidité.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Définir l\'Activité',
|
|
49
|
+
text: 'Sélectionnez votre niveau d\'intensité et la durée de votre effort.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Suivre la Recommandation',
|
|
53
|
+
text: 'Reconstituez les liquides selon le taux suggéré et surveillez votre état avec l\'échelle d\'urine.',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
58
|
+
'@context': 'https://schema.org',
|
|
59
|
+
'@type': 'FAQPage',
|
|
60
|
+
mainEntity: faqData.map((item) => ({
|
|
61
|
+
'@type': 'Question',
|
|
62
|
+
name: item.question,
|
|
63
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
64
|
+
})),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
68
|
+
'@context': 'https://schema.org',
|
|
69
|
+
'@type': 'HowTo',
|
|
70
|
+
name: title,
|
|
71
|
+
description,
|
|
72
|
+
step: howToData.map((step, i) => ({
|
|
73
|
+
'@type': 'HowToStep',
|
|
74
|
+
position: i + 1,
|
|
75
|
+
name: step.name,
|
|
76
|
+
text: step.text,
|
|
77
|
+
})),
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
81
|
+
'@context': 'https://schema.org',
|
|
82
|
+
'@type': 'SoftwareApplication',
|
|
83
|
+
name: title,
|
|
84
|
+
description,
|
|
85
|
+
applicationCategory: 'HealthApplication',
|
|
86
|
+
operatingSystem: 'Web',
|
|
87
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const content: ToolLocaleContent<HydrationCalculatorUI> = {
|
|
91
|
+
slug,
|
|
92
|
+
title,
|
|
93
|
+
description,
|
|
94
|
+
faqTitle: 'Questions fréquentes sur l\'hydratation et le climat',
|
|
95
|
+
faq: faqData,
|
|
96
|
+
bibliographyTitle: 'Références scientifiques',
|
|
97
|
+
bibliography: [
|
|
98
|
+
{
|
|
99
|
+
name: 'National Academies of Sciences — Dietary Reference Intakes for Water',
|
|
100
|
+
url: 'https://www.nationalacademies.org/',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'American College of Sports Medicine — Exercise and Fluid Replacement',
|
|
104
|
+
url: 'https://www.acsm.org/',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: 'Organisation Mondiale de la Santé — Directives pour la qualité de l\'eau potable',
|
|
108
|
+
url: 'https://www.who.int/',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
howTo: howToData,
|
|
112
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
113
|
+
ui: {
|
|
114
|
+
sectionWeight: 'Poids',
|
|
115
|
+
sectionClimate: 'Climat',
|
|
116
|
+
sectionActivity: 'Activité',
|
|
117
|
+
labelWeight: 'Poids (kg)',
|
|
118
|
+
labelTemp: 'Temp °C',
|
|
119
|
+
labelHum: 'Hum %',
|
|
120
|
+
labelDuration: 'Durée (minutes)',
|
|
121
|
+
weatherBtnTitle: 'Utiliser la Météo Locale',
|
|
122
|
+
intensitySedentary: 'Sédentaire',
|
|
123
|
+
intensityActive: 'Actif',
|
|
124
|
+
intensityAthlete: 'Athlète',
|
|
125
|
+
resultUnit: 'Litres recommandés',
|
|
126
|
+
statRefill: 'Recharge',
|
|
127
|
+
statRefillHelp: 'Pendant l\'activité intense.',
|
|
128
|
+
statMix: 'Mélange Idéal',
|
|
129
|
+
statUrine: 'Contrôle d\'Hydratation (Urine)',
|
|
130
|
+
alertElectrolytes:
|
|
131
|
+
'Attention : Il est recommandé d\'ajouter des électrolytes ou des sels en raison du volume élevé ou de la chaleur extrême.',
|
|
132
|
+
freqLow: '250 ml / toutes les 2h',
|
|
133
|
+
freqMed: '250 ml / toutes les 20 min',
|
|
134
|
+
freqHigh: '250 ml / toutes les 45 min',
|
|
135
|
+
mixWater: '100% Eau Pure',
|
|
136
|
+
mixWaterSalt: 'Eau + Pincée de Sel',
|
|
137
|
+
mixWaterElectrolytes: 'Eau + Électrolytes',
|
|
138
|
+
mixDetailLow: 'Faible demande en sels.',
|
|
139
|
+
mixDetailMed: 'Compensation minérale nécessaire.',
|
|
140
|
+
mixDetailHigh: 'Forte perte en sels.',
|
|
141
|
+
},
|
|
142
|
+
seo: [
|
|
143
|
+
{
|
|
144
|
+
type: 'summary',
|
|
145
|
+
title: 'Calculateur d\'Hydratation selon le Climat et le Poids',
|
|
146
|
+
items: [
|
|
147
|
+
'<strong>Algorithme scientifique</strong> : base de 35ml/kg corrigée selon la température, l\'humidité et l\'activité.',
|
|
148
|
+
'<strong>Météo en temps réel</strong> : récupère la température et l\'humidité de votre position actuelle.',
|
|
149
|
+
'<strong>Indicateur de mélange</strong> : indique si vous avez besoin d\'eau pure, d\'eau salée ou d\'électrolytes.',
|
|
150
|
+
'<strong>Échelle d\'urine</strong> : surveillance visuelle de l\'état d\'hydratation.',
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'title',
|
|
155
|
+
text: 'Guide Scientifique d\'Hydratation : Calculer l\'Apport en Eau selon le Poids et le Climat',
|
|
156
|
+
level: 2,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'paragraph',
|
|
160
|
+
html: 'L\'hydratation n\'est pas une science universelle. Les "deux litres d\'eau par jour" habituellement recommandés sont un mythe qui ignore les variables critiques définissant notre <strong>homéostasie hydrique</strong>. Pour un athlète en pleine vague de chaleur, ces deux litres pourraient être insuffisants en une heure à peine.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'title',
|
|
164
|
+
text: 'La Formule de Base : 35 ml par Kilogramme',
|
|
165
|
+
level: 2,
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'Le point de départ accepté par les physiologistes du sport est un apport de <strong>35 ml d\'eau par kilogramme de poids corporel</strong> pour les adultes en bonne santé dans des conditions normales. Cette base assure que le volume plasmatique reste stable. Cependant, ce n\'est que le "plancher" d\'hydratation ; tout facteur externe augmentera cette demande.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'tip',
|
|
173
|
+
title: 'Le Risque d\'une Humidité Élevée',
|
|
174
|
+
html: 'Si l\'humidité dépasse 60%, la transpiration ne peut pas s\'évaporer efficacement. La température corporelle monte plus vite et le corps tente de compenser en transpirant davantage. Par temps humide, la <strong>perte d\'électrolytes</strong> est souvent plus importante même si l\'air ne semble pas chaud.',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'table',
|
|
178
|
+
headers: ['Variable Climatique', 'Effet Physiologique', 'Action Recommandée'],
|
|
179
|
+
rows: [
|
|
180
|
+
['Chaleur Sèche (plus de 35°C)', 'Évaporation rapide, soif immédiate.', 'Boire de petites quantités fréquemment.'],
|
|
181
|
+
['Chaleur Humide (plus de 30°C)', 'Transpiration inefficace, risque d\'hyperthermie.', 'Ajouter des sels et chercher l\'ombre/ventilation.'],
|
|
182
|
+
['Froid Intense (moins de 5°C)', 'Perte par respiration et diurèse induite.', 'Ne pas attendre la soif (la soif est inhibée).'],
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
type: 'title',
|
|
187
|
+
text: 'Lecture de l\'Échelle des Couleurs d\'Urine',
|
|
188
|
+
level: 2,
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
type: 'list',
|
|
192
|
+
items: [
|
|
193
|
+
'<strong>Niveaux 1-2 (Pâle/Jaune clair) :</strong> hydratation optimale. Continuez à votre rythme actuel.',
|
|
194
|
+
'<strong>Niveaux 3-4 (Jaune vif) :</strong> hydratation légèrement insuffisante. Buvez un verre d\'eau maintenant.',
|
|
195
|
+
'<strong>Niveaux 5-7 (Ambre/Brun) :</strong> déshydratation sévère. Reconstitution urgente des liquides.',
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HealthToolEntry, ToolDefinition } from '../../types';
|
|
2
|
+
import HydrationCalculatorComponent from './component.astro';
|
|
3
|
+
import HydrationCalculatorSEO from './seo.astro';
|
|
4
|
+
import HydrationCalculatorBibliography from './bibliography.astro';
|
|
5
|
+
import type { HydrationCalculatorUI } from './ui';
|
|
6
|
+
|
|
7
|
+
export const hydrationCalculator: HealthToolEntry<HydrationCalculatorUI> = {
|
|
8
|
+
id: 'hydrationCalculator',
|
|
9
|
+
icons: {
|
|
10
|
+
bg: 'mdi:water',
|
|
11
|
+
fg: 'mdi:thermometer',
|
|
12
|
+
},
|
|
13
|
+
i18n: {
|
|
14
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
15
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
16
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { HydrationCalculatorComponent, HydrationCalculatorSEO, HydrationCalculatorBibliography };
|
|
21
|
+
|
|
22
|
+
export const HYDRATION_CALCULATOR_TOOL: ToolDefinition = {
|
|
23
|
+
entry: hydrationCalculator,
|
|
24
|
+
Component: HydrationCalculatorComponent,
|
|
25
|
+
SEOComponent: HydrationCalculatorSEO,
|
|
26
|
+
BibliographyComponent: HydrationCalculatorBibliography,
|
|
27
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { hydrationCalculator } from './index';
|
|
4
|
+
import type { KnownLocale } from '../../types';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
locale?: KnownLocale;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const { locale = 'es' } = Astro.props;
|
|
11
|
+
const content = await hydrationCalculator.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|