@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,221 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { BMICalculatorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculadora-imc';
|
|
6
|
+
const title = 'Calculadora de IMC: Índice de Masa Corporal Online';
|
|
7
|
+
const description =
|
|
8
|
+
'Calcula tu Índice de Masa Corporal (IMC) gratis. Herramienta online para evaluar tu estado nutricional según tu peso y altura, con escala visual y categorías OMS.';
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: '¿Es el IMC un indicador fiable de salud?',
|
|
13
|
+
answer:
|
|
14
|
+
'El IMC es una herramienta de cribado útil para la población general, pero tiene limitaciones. No diferencia entre masa muscular y masa grasa, por lo que atletas con mucho músculo pueden obtener resultados erróneos de sobrepeso sin tener exceso de grasa corporal.',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: '¿Qué es el Índice de Quetelet?',
|
|
18
|
+
answer:
|
|
19
|
+
'Es el nombre técnico del IMC. Fue desarrollado por el estadístico Adolphe Quetelet en el siglo XIX como una forma sencilla de clasificar el estado nutricional de las personas basándose únicamente en su peso y altura.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: '¿Cómo puedo bajar mi IMC de forma saludable?',
|
|
23
|
+
answer:
|
|
24
|
+
'La clave no es solo bajar el número, sino mejorar la composición corporal. Combina una alimentación equilibrada con déficit calórico moderado y ejercicio de fuerza para mantener el músculo mientras pierdes grasa.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '¿Cuándo debo preocuparme por mi resultado de IMC?',
|
|
28
|
+
answer:
|
|
29
|
+
'Si tu resultado está fuera del rango normal (18.5 a 24.9), es recomendable consultar con un profesional de la salud. Un IMC muy bajo o muy alto puede aumentar el riesgo de problemas cardiovasculares, diabetes o deficiencias nutricionales.',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Ajusta tu altura',
|
|
36
|
+
text: 'Mueve el slider de altura hasta tu talla en centímetros (entre 100 y 230 cm).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Ajusta tu peso',
|
|
40
|
+
text: 'Mueve el slider de peso o usa los botones más/menos para afinar el valor en kilogramos.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Lee tu resultado',
|
|
44
|
+
text: 'Observa el valor de IMC, la categoría OMS correspondiente y la descripción del estado nutricional.',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'Interpreta la escala visual',
|
|
48
|
+
text: 'El marcador en la barra de colores indica visualmente en qué zona del espectro se encuentra tu IMC.',
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'HealthApplication',
|
|
81
|
+
operatingSystem: 'Web',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const content: ToolLocaleContent<BMICalculatorUI> = {
|
|
86
|
+
slug,
|
|
87
|
+
title,
|
|
88
|
+
description,
|
|
89
|
+
faqTitle: 'Preguntas Frecuentes sobre el IMC',
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliographyTitle: 'Referencias científicas',
|
|
92
|
+
bibliography: [
|
|
93
|
+
{
|
|
94
|
+
name: 'OMS: Obesidad y sobrepeso — Nota descriptiva',
|
|
95
|
+
url: 'https://www.who.int/es/news-room/fact-sheets/detail/obesity-and-overweight',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'Quetelet LAJ. A Treatise on Man and the Development of his Faculties (1842)',
|
|
99
|
+
url: 'https://archive.org/details/treatiseonmandeve00quet',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'NIH: Classification of Overweight and Obesity by BMI',
|
|
103
|
+
url: 'https://www.nhlbi.nih.gov/health/educational/lose_wt/BMI/bmi_dis.htm',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
howTo: howToData,
|
|
107
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
108
|
+
ui: {
|
|
109
|
+
labelHeight: 'Altura',
|
|
110
|
+
labelWeight: 'Peso',
|
|
111
|
+
unitCm: 'cm',
|
|
112
|
+
unitKg: 'kg',
|
|
113
|
+
yourBmi: 'Tu IMC es',
|
|
114
|
+
waiting: 'Esperando datos...',
|
|
115
|
+
waitingDesc: 'Introduce tu peso y altura.',
|
|
116
|
+
lblUnderweight: 'Bajo Peso',
|
|
117
|
+
lblNormal: 'Peso Normal',
|
|
118
|
+
lblOverweight: 'Sobrepeso',
|
|
119
|
+
lblOb1: 'Obesidad I',
|
|
120
|
+
lblOb2: 'Obesidad II',
|
|
121
|
+
lblOb3: 'Obesidad III',
|
|
122
|
+
descUnderweight: 'Podría indicar desnutrición o problemas de salud. Consulta con un médico.',
|
|
123
|
+
descNormal: 'Buen trabajo. Mantén una dieta equilibrada y ejercicio regular.',
|
|
124
|
+
descOverweight: 'Un ligero exceso de peso. Pequeños cambios en la dieta pueden ayudar.',
|
|
125
|
+
descOb1: 'Riesgo moderado de problemas cardiovasculares. Se recomienda supervisión médica.',
|
|
126
|
+
descOb2: 'Riesgo alto de hipertensión y diabetes. Consulta a un especialista.',
|
|
127
|
+
descOb3: 'Situación de riesgo muy alto. Es crucial buscar ayuda médica profesional.',
|
|
128
|
+
},
|
|
129
|
+
seo: [
|
|
130
|
+
{
|
|
131
|
+
type: 'summary',
|
|
132
|
+
title: 'Calculadora de IMC Online',
|
|
133
|
+
items: [
|
|
134
|
+
'<strong>Cálculo instantáneo</strong>: Ajusta los sliders y obtén tu IMC en tiempo real.',
|
|
135
|
+
'<strong>6 categorías OMS</strong>: Desde Bajo Peso hasta Obesidad Tipo III con descripción clínica.',
|
|
136
|
+
'<strong>Escala visual</strong>: Un marcador te muestra visualmente en qué zona del espectro estás.',
|
|
137
|
+
'<strong>Sin registro</strong>: Sin cookies, sin cuenta, sin datos que salgan de tu dispositivo.',
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
{ type: 'title', text: '¿Qué es el Índice de Masa Corporal?', level: 2 },
|
|
141
|
+
{
|
|
142
|
+
type: 'paragraph',
|
|
143
|
+
html: 'El <strong>Índice de Masa Corporal (IMC)</strong>, conocido en el mundo anglosajón como Body Mass Index (BMI), es el indicador de salud nutricional más utilizado en el mundo. Fue desarrollado en el siglo XIX por el estadístico y matemático belga Adolphe Quetelet y se calcula dividiendo el peso corporal en kilogramos entre el cuadrado de la estatura en metros: <strong>IMC = kg / m²</strong>.',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'La Organización Mundial de la Salud adoptó el IMC como herramienta de cribado estándar porque es simple de calcular, no requiere equipamiento especializado y proporciona una aproximación razonable del estado nutricional de la mayoría de los adultos. Sin embargo, es importante entender qué mide y, sobre todo, qué <strong>no mide</strong>.',
|
|
148
|
+
},
|
|
149
|
+
{ type: 'title', text: 'Cómo se interpreta: los rangos de la OMS', level: 2 },
|
|
150
|
+
{
|
|
151
|
+
type: 'table',
|
|
152
|
+
headers: ['Categoría OMS', 'Rango de IMC', 'Riesgo para la Salud'],
|
|
153
|
+
rows: [
|
|
154
|
+
['Bajo Peso', 'Menos de 18.5', 'Riesgo de desnutrición y carencias'],
|
|
155
|
+
['Peso Normal', '18.5 a 24.9', 'Riesgo mínimo (rango óptimo)'],
|
|
156
|
+
['Sobrepeso', '25.0 a 29.9', 'Riesgo levemente aumentado'],
|
|
157
|
+
['Obesidad Tipo I', '30.0 a 34.9', 'Riesgo moderado'],
|
|
158
|
+
['Obesidad Tipo II', '35.0 a 39.9', 'Riesgo alto'],
|
|
159
|
+
['Obesidad Tipo III', '40.0 o más', 'Riesgo muy alto (obesidad mórbida)'],
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
{ type: 'title', text: 'Limitaciones del IMC: cuándo no es suficiente', level: 2 },
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'El IMC es una herramienta de <strong>cribado poblacional</strong>, no de diagnóstico individual. Sus limitaciones son bien conocidas en la comunidad médica:',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'list',
|
|
169
|
+
items: [
|
|
170
|
+
'<strong>No distingue masa muscular de grasa corporal:</strong> Un culturista puede tener un IMC de 32 (obesidad) con un porcentaje de grasa corporal saludable del 10%.',
|
|
171
|
+
'<strong>No considera la distribución de la grasa:</strong> La grasa visceral (alrededor de los órganos) es más peligrosa que la subcutánea, y el IMC no la distingue.',
|
|
172
|
+
'<strong>Varía según la etnia:</strong> Los umbrales de riesgo cardiovascular difieren entre poblaciones asiáticas, europeas y afroamericanas.',
|
|
173
|
+
'<strong>No es válido para niños:</strong> En menores de 18 años se utilizan percentiles por edad y sexo, no los rangos de adultos.',
|
|
174
|
+
'<strong>No aplica durante el embarazo:</strong> El peso gestacional requiere tablas específicas.',
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'tip',
|
|
179
|
+
title: 'Complementa el IMC con otras métricas',
|
|
180
|
+
html: 'Para una evaluación más completa, los profesionales de la salud combinan el IMC con el <strong>perímetro de cintura</strong> (indicador de grasa visceral), el <strong>porcentaje de grasa corporal</strong> (medido con bioimpedancia o DEXA) y análisis de sangre (colesterol, glucemia, presión arterial).',
|
|
181
|
+
},
|
|
182
|
+
{ type: 'title', text: 'IMC y riesgo cardiovascular: qué dice la ciencia', level: 2 },
|
|
183
|
+
{
|
|
184
|
+
type: 'paragraph',
|
|
185
|
+
html: 'Múltiples estudios epidemiológicos a gran escala han establecido una correlación entre el IMC elevado y el riesgo de padecer enfermedades crónicas. Un metaanálisis publicado en The Lancet con datos de más de 10 millones de participantes demostró que un IMC superior a 25 kg/m² se asocia con mayor riesgo de diabetes tipo 2, hipertensión arterial, enfermedades cardiovasculares y ciertos tipos de cáncer.',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'proscons',
|
|
189
|
+
items: [
|
|
190
|
+
{
|
|
191
|
+
pro: 'Simple y universal: solo necesitas conocer tu peso y altura para calcularlo.',
|
|
192
|
+
con: 'No mide la composición corporal real ni la distribución de grasa.',
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
pro: 'Validado por la OMS como indicador de cribado para estudios poblacionales.',
|
|
196
|
+
con: 'Puede clasificar erróneamente a deportistas de alto rendimiento como obesos.',
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
pro: 'Permite detectar casos de desnutrición severa en contextos clínicos.',
|
|
200
|
+
con: 'Los umbrales de riesgo varían según la etnia, lo que reduce su universalidad.',
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
pro: 'Herramienta de bajo coste para monitorizar tendencias de salud pública.',
|
|
204
|
+
con: 'No sustituye una evaluación médica completa ni un análisis de composición corporal.',
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
{ type: 'title', text: 'Cómo mejorar tu IMC de forma saludable', level: 2 },
|
|
209
|
+
{
|
|
210
|
+
type: 'list',
|
|
211
|
+
items: [
|
|
212
|
+
'Establece un déficit calórico moderado (300-500 kcal/día) para perder grasa sin sacrificar músculo.',
|
|
213
|
+
'Aumenta la ingesta de proteína (1.6 a 2.2 g/kg de peso corporal) para preservar la masa muscular.',
|
|
214
|
+
'Incorpora entrenamiento de fuerza 2 o 3 veces por semana para mejorar la composición corporal.',
|
|
215
|
+
'Prioriza el sueño reparador (7 a 9 horas): la falta de sueño aumenta las hormonas del hambre.',
|
|
216
|
+
'Gestiona el estrés crónico: el cortisol elevado favorece la acumulación de grasa visceral.',
|
|
217
|
+
'Consulta a un dietista-nutricionista para un plan personalizado y sostenible a largo plazo.',
|
|
218
|
+
],
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
};
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { BMICalculatorUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculateur-imc';
|
|
6
|
+
const title = 'Calculateur d\'IMC: Indice de Masse Corporelle en Ligne';
|
|
7
|
+
const description =
|
|
8
|
+
"Calculez votre Indice de Masse Corporelle (IMC) gratuitement. Outil en ligne pour évaluer votre état nutritionnel selon votre poids et votre taille, avec échelle visuelle et catégories OMS.";
|
|
9
|
+
|
|
10
|
+
const faqData = [
|
|
11
|
+
{
|
|
12
|
+
question: "L'IMC est-il un indicateur de santé fiable ?",
|
|
13
|
+
answer:
|
|
14
|
+
"L'IMC est un outil de dépistage utile pour la population générale, mais il a des limites. Il ne différencie pas la masse musculaire de la masse grasse, de sorte que les athlètes avec beaucoup de muscle peuvent obtenir des résultats erronés de surpoids sans avoir d'excès de graisse corporelle.",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
question: "Qu'est-ce que l'Indice de Quetelet ?",
|
|
18
|
+
answer:
|
|
19
|
+
"C'est le nom technique de l'IMC. Il a été développé par le statisticien Adolphe Quetelet au XIXe siècle comme moyen simple de classer l'état nutritionnel des personnes en se basant uniquement sur leur poids et leur taille.",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Comment puis-je baisser mon IMC de manière saine ?',
|
|
23
|
+
answer:
|
|
24
|
+
"La clé n'est pas seulement de baisser le chiffre, mais d'améliorer la composition corporelle. Combinez une alimentation équilibrée avec un déficit calorique modéré et un entraînement en force pour maintenir le muscle tout en perdant de la graisse.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Quand dois-je m\'inquiéter de mon résultat d\'IMC ?',
|
|
28
|
+
answer:
|
|
29
|
+
"Si votre résultat est en dehors de la plage normale (18,5 à 24,9), il est conseillé de consulter un professionnel de santé. Un IMC très bas ou très élevé peut augmenter le risque de problèmes cardiovasculaires, de diabète ou de carences nutritionnelles.",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const howToData = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Ajustez votre taille',
|
|
36
|
+
text: 'Déplacez le curseur de taille jusqu\'à votre hauteur en centimètres (entre 100 et 230 cm).',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'Ajustez votre poids',
|
|
40
|
+
text: 'Déplacez le curseur de poids ou utilisez les boutons plus/moins pour affiner la valeur en kilogrammes.',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Lisez votre résultat',
|
|
44
|
+
text: "Observez la valeur d'IMC, la catégorie OMS correspondante et la description de l'état nutritionnel.",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "Interprétez l'échelle visuelle",
|
|
48
|
+
text: "Le marqueur sur la barre de couleurs indique visuellement dans quelle zone du spectre se trouve votre IMC.",
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqData.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const howToSchema: WithContext<HowToThing> = {
|
|
63
|
+
'@context': 'https://schema.org',
|
|
64
|
+
'@type': 'HowTo',
|
|
65
|
+
name: title,
|
|
66
|
+
description,
|
|
67
|
+
step: howToData.map((step, i) => ({
|
|
68
|
+
'@type': 'HowToStep',
|
|
69
|
+
position: i + 1,
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'HealthApplication',
|
|
81
|
+
operatingSystem: 'Web',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const content: ToolLocaleContent<BMICalculatorUI> = {
|
|
86
|
+
slug,
|
|
87
|
+
title,
|
|
88
|
+
description,
|
|
89
|
+
faqTitle: "Questions Fréquentes sur l'IMC",
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliographyTitle: 'Références scientifiques',
|
|
92
|
+
bibliography: [
|
|
93
|
+
{
|
|
94
|
+
name: "OMS : Obésité et surpoids — Aide-mémoire",
|
|
95
|
+
url: 'https://www.who.int/fr/news-room/fact-sheets/detail/obesity-and-overweight',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'Quetelet LAJ. A Treatise on Man and the Development of his Faculties (1842)',
|
|
99
|
+
url: 'https://archive.org/details/treatiseonmandeve00quet',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: 'NIH: Classification of Overweight and Obesity by BMI',
|
|
103
|
+
url: 'https://www.nhlbi.nih.gov/health/educational/lose_wt/BMI/bmi_dis.htm',
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
howTo: howToData,
|
|
107
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
108
|
+
ui: {
|
|
109
|
+
labelHeight: 'Taille',
|
|
110
|
+
labelWeight: 'Poids',
|
|
111
|
+
unitCm: 'cm',
|
|
112
|
+
unitKg: 'kg',
|
|
113
|
+
yourBmi: 'Votre IMC est',
|
|
114
|
+
waiting: 'En attente de données...',
|
|
115
|
+
waitingDesc: 'Entrez votre poids et votre taille.',
|
|
116
|
+
lblUnderweight: 'Insuffisance Pondérale',
|
|
117
|
+
lblNormal: 'Poids Normal',
|
|
118
|
+
lblOverweight: 'Surpoids',
|
|
119
|
+
lblOb1: 'Obésité I',
|
|
120
|
+
lblOb2: 'Obésité II',
|
|
121
|
+
lblOb3: 'Obésité III',
|
|
122
|
+
descUnderweight: 'Peut indiquer une malnutrition ou des problèmes de santé. Consultez un médecin.',
|
|
123
|
+
descNormal: 'Bien joué. Maintenez une alimentation équilibrée et une activité physique régulière.',
|
|
124
|
+
descOverweight: 'Léger excès de poids. De petits changements alimentaires peuvent aider.',
|
|
125
|
+
descOb1: 'Risque modéré de problèmes cardiovasculaires. Suivi médical recommandé.',
|
|
126
|
+
descOb2: "Risque élevé d'hypertension et de diabète. Consultez un spécialiste.",
|
|
127
|
+
descOb3: 'Situation à très haut risque. Il est crucial de rechercher une aide médicale professionnelle.',
|
|
128
|
+
},
|
|
129
|
+
seo: [
|
|
130
|
+
{
|
|
131
|
+
type: 'summary',
|
|
132
|
+
title: "Calculateur d'IMC en Ligne",
|
|
133
|
+
items: [
|
|
134
|
+
'<strong>Calcul instantané</strong> : Ajustez les curseurs et obtenez votre IMC en temps réel.',
|
|
135
|
+
"<strong>6 catégories OMS</strong> : De l'Insuffisance Pondérale à l'Obésité Type III avec description clinique.",
|
|
136
|
+
'<strong>Échelle visuelle</strong> : Un marqueur vous montre visuellement dans quelle zone du spectre vous vous trouvez.',
|
|
137
|
+
'<strong>Sans inscription</strong> : Sans cookies, sans compte, sans données quittant votre appareil.',
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
{ type: 'title', text: "Qu'est-ce que l'Indice de Masse Corporelle ?", level: 2 },
|
|
141
|
+
{
|
|
142
|
+
type: 'paragraph',
|
|
143
|
+
html: "L'<strong>Indice de Masse Corporelle (IMC)</strong> est l'indicateur de santé nutritionnelle le plus utilisé au monde. Il a été développé au XIXe siècle par le statisticien et mathématicien belge Adolphe Quetelet et se calcule en divisant le poids corporel en kilogrammes par le carré de la taille en mètres : <strong>IMC = kg / m²</strong>.",
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: "L'Organisation Mondiale de la Santé a adopté l'IMC comme outil de dépistage standard car il est simple à calculer, ne nécessite aucun équipement spécialisé et fournit une approximation raisonnable de l'état nutritionnel de la plupart des adultes. Cependant, il est important de comprendre ce qu'il mesure et, surtout, ce qu'il <strong>ne mesure pas</strong>.",
|
|
148
|
+
},
|
|
149
|
+
{ type: 'title', text: "Comment l'interpréter : les plages de l'OMS", level: 2 },
|
|
150
|
+
{
|
|
151
|
+
type: 'table',
|
|
152
|
+
headers: ['Catégorie OMS', 'Plage d\'IMC', 'Risque pour la Santé'],
|
|
153
|
+
rows: [
|
|
154
|
+
['Insuffisance Pondérale', 'Moins de 18,5', 'Risque de malnutrition et carences'],
|
|
155
|
+
['Poids Normal', '18,5 à 24,9', 'Risque minimal (plage optimale)'],
|
|
156
|
+
['Surpoids', '25,0 à 29,9', 'Risque légèrement augmenté'],
|
|
157
|
+
['Obésité Type I', '30,0 à 34,9', 'Risque modéré'],
|
|
158
|
+
['Obésité Type II', '35,0 à 39,9', 'Risque élevé'],
|
|
159
|
+
['Obésité Type III', '40,0 ou plus', 'Risque très élevé (obésité morbide)'],
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
{ type: 'title', text: "Limites de l'IMC : quand ce n'est pas suffisant", level: 2 },
|
|
163
|
+
{
|
|
164
|
+
type: 'list',
|
|
165
|
+
items: [
|
|
166
|
+
"<strong>Ne distingue pas la masse musculaire de la graisse :</strong> Un culturiste peut avoir un IMC de 32 (obésité) avec un pourcentage de graisse corporelle sain de 10%.",
|
|
167
|
+
"<strong>Ne tient pas compte de la distribution des graisses :</strong> La graisse viscérale (autour des organes) est plus dangereuse que la graisse sous-cutanée, et l'IMC ne les distingue pas.",
|
|
168
|
+
"<strong>Varie selon l'ethnicité :</strong> Les seuils de risque cardiovasculaire diffèrent entre les populations asiatiques, européennes et afro-américaines.",
|
|
169
|
+
"<strong>Non valide pour les enfants :</strong> Chez les moins de 18 ans, on utilise des percentiles par âge et sexe, pas les plages adultes.",
|
|
170
|
+
"<strong>Ne s'applique pas pendant la grossesse :</strong> Le poids gestationnel nécessite des tableaux spécifiques.",
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'tip',
|
|
175
|
+
title: "Complétez l'IMC avec d'autres métriques",
|
|
176
|
+
html: "Pour une évaluation plus complète, les professionnels de santé combinent l'IMC avec le <strong>tour de taille</strong> (indicateur de graisse viscérale), le <strong>pourcentage de graisse corporelle</strong> (mesuré par bioimpédance ou DEXA) et des analyses sanguines (cholestérol, glycémie, tension artérielle).",
|
|
177
|
+
},
|
|
178
|
+
{ type: 'title', text: "IMC et risque cardiovasculaire : ce que dit la science", level: 2 },
|
|
179
|
+
{
|
|
180
|
+
type: 'paragraph',
|
|
181
|
+
html: "De multiples études épidémiologiques à grande échelle ont établi une corrélation entre un IMC élevé et le risque de maladies chroniques. Une méta-analyse publiée dans The Lancet avec des données de plus de 10 millions de participants a démontré qu'un IMC supérieur à 25 kg/m² est associé à un risque plus élevé de diabète de type 2, d'hypertension artérielle, de maladies cardiovasculaires et de certains cancers.",
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
type: 'proscons',
|
|
185
|
+
items: [
|
|
186
|
+
{
|
|
187
|
+
pro: 'Simple et universel : vous avez seulement besoin de connaître votre poids et votre taille.',
|
|
188
|
+
con: 'Ne mesure pas la composition corporelle réelle ni la distribution des graisses.',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
pro: "Validé par l'OMS comme indicateur de dépistage pour les études de population.",
|
|
192
|
+
con: "Peut classer incorrectement les athlètes de haute performance comme obèses.",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
pro: 'Permet de détecter les cas de malnutrition sévère dans les contextes cliniques.',
|
|
196
|
+
con: "Les seuils de risque varient selon l'ethnicité, réduisant son universalité.",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
pro: 'Outil peu coûteux pour surveiller les tendances de santé publique.',
|
|
200
|
+
con: 'Ne remplace pas une évaluation médicale complète ni une analyse de composition corporelle.',
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
},
|
|
204
|
+
{ type: 'title', text: 'Comment améliorer son IMC de manière saine', level: 2 },
|
|
205
|
+
{
|
|
206
|
+
type: 'list',
|
|
207
|
+
items: [
|
|
208
|
+
'Établissez un déficit calorique modéré (300 à 500 kcal/jour) pour perdre de la graisse sans sacrifier le muscle.',
|
|
209
|
+
"Augmentez l'apport en protéines (1,6 à 2,2 g/kg de poids corporel) pour préserver la masse musculaire.",
|
|
210
|
+
'Intégrez un entraînement en force 2 ou 3 fois par semaine pour améliorer la composition corporelle.',
|
|
211
|
+
'Priorisez un sommeil réparateur (7 à 9 heures) : le manque de sommeil augmente les hormones de la faim.',
|
|
212
|
+
'Gérez le stress chronique : le cortisol élevé favorise l\'accumulation de graisse viscérale.',
|
|
213
|
+
'Consultez un diététicien pour un plan personnalisé et durable à long terme.',
|
|
214
|
+
],
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { HealthToolEntry, ToolDefinition } from '../../types';
|
|
2
|
+
import BMICalculatorComponent from './component.astro';
|
|
3
|
+
import BMICalculatorSEO from './seo.astro';
|
|
4
|
+
import BMICalculatorBibliography from './bibliography.astro';
|
|
5
|
+
import type { BMICalculatorUI } from './ui';
|
|
6
|
+
|
|
7
|
+
export const bmiCalculator: HealthToolEntry<BMICalculatorUI> = {
|
|
8
|
+
id: 'bmiCalculator',
|
|
9
|
+
icons: {
|
|
10
|
+
bg: 'mdi:scale-bathroom',
|
|
11
|
+
fg: 'mdi:human',
|
|
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 { BMICalculatorComponent, BMICalculatorSEO, BMICalculatorBibliography };
|
|
21
|
+
|
|
22
|
+
export const BMI_CALCULATOR_TOOL: ToolDefinition = {
|
|
23
|
+
entry: bmiCalculator,
|
|
24
|
+
Component: BMICalculatorComponent,
|
|
25
|
+
SEOComponent: BMICalculatorSEO,
|
|
26
|
+
BibliographyComponent: BMICalculatorBibliography,
|
|
27
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SEORenderer } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { bmiCalculator } 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 bmiCalculator.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface BMICalculatorUI extends Record<string, string> {
|
|
2
|
+
labelHeight: string;
|
|
3
|
+
labelWeight: string;
|
|
4
|
+
unitCm: string;
|
|
5
|
+
unitKg: string;
|
|
6
|
+
yourBmi: string;
|
|
7
|
+
waiting: string;
|
|
8
|
+
waitingDesc: string;
|
|
9
|
+
lblUnderweight: string;
|
|
10
|
+
lblNormal: string;
|
|
11
|
+
lblOverweight: string;
|
|
12
|
+
lblOb1: string;
|
|
13
|
+
lblOb2: string;
|
|
14
|
+
lblOb3: string;
|
|
15
|
+
descUnderweight: string;
|
|
16
|
+
descNormal: string;
|
|
17
|
+
descOverweight: string;
|
|
18
|
+
descOb1: string;
|
|
19
|
+
descOb2: string;
|
|
20
|
+
descOb3: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { Bibliography } from '@jjlmoya/utils-shared';
|
|
3
|
+
import { breathingVisualizer } 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 breathingVisualizer.i18n[locale]?.();
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
{content && <Bibliography items={content.bibliography} title={content.bibliographyTitle} />}
|