@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.
Files changed (155) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +60 -0
  3. package/src/category/i18n/es.ts +60 -0
  4. package/src/category/i18n/fr.ts +60 -0
  5. package/src/category/index.ts +22 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +28 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +36 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/locale_completeness.test.ts +42 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +48 -0
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +22 -0
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tests/tool_validation.test.ts +17 -0
  24. package/src/tool/binauralTuner/bibliography.astro +14 -0
  25. package/src/tool/binauralTuner/component.astro +687 -0
  26. package/src/tool/binauralTuner/i18n/en.ts +187 -0
  27. package/src/tool/binauralTuner/i18n/es.ts +187 -0
  28. package/src/tool/binauralTuner/i18n/fr.ts +187 -0
  29. package/src/tool/binauralTuner/index.ts +27 -0
  30. package/src/tool/binauralTuner/seo.astro +14 -0
  31. package/src/tool/binauralTuner/ui.ts +18 -0
  32. package/src/tool/bloodUnitConverter/bibliography.astro +14 -0
  33. package/src/tool/bloodUnitConverter/component.astro +915 -0
  34. package/src/tool/bloodUnitConverter/i18n/en.ts +227 -0
  35. package/src/tool/bloodUnitConverter/i18n/es.ts +250 -0
  36. package/src/tool/bloodUnitConverter/i18n/fr.ts +218 -0
  37. package/src/tool/bloodUnitConverter/index.ts +27 -0
  38. package/src/tool/bloodUnitConverter/seo.astro +14 -0
  39. package/src/tool/bloodUnitConverter/ui.ts +38 -0
  40. package/src/tool/bmiCalculator/bibliography.astro +14 -0
  41. package/src/tool/bmiCalculator/component.astro +415 -0
  42. package/src/tool/bmiCalculator/i18n/en.ts +217 -0
  43. package/src/tool/bmiCalculator/i18n/es.ts +221 -0
  44. package/src/tool/bmiCalculator/i18n/fr.ts +217 -0
  45. package/src/tool/bmiCalculator/index.ts +27 -0
  46. package/src/tool/bmiCalculator/seo.astro +14 -0
  47. package/src/tool/bmiCalculator/ui.ts +21 -0
  48. package/src/tool/breathingVisualizer/bibliography.astro +14 -0
  49. package/src/tool/breathingVisualizer/component.astro +636 -0
  50. package/src/tool/breathingVisualizer/i18n/en.ts +206 -0
  51. package/src/tool/breathingVisualizer/i18n/es.ts +206 -0
  52. package/src/tool/breathingVisualizer/i18n/fr.ts +206 -0
  53. package/src/tool/breathingVisualizer/index.ts +27 -0
  54. package/src/tool/breathingVisualizer/seo.astro +14 -0
  55. package/src/tool/breathingVisualizer/ui.ts +31 -0
  56. package/src/tool/caffeineTracker/bibliography.astro +14 -0
  57. package/src/tool/caffeineTracker/component.astro +1210 -0
  58. package/src/tool/caffeineTracker/i18n/en.ts +198 -0
  59. package/src/tool/caffeineTracker/i18n/es.ts +198 -0
  60. package/src/tool/caffeineTracker/i18n/fr.ts +198 -0
  61. package/src/tool/caffeineTracker/index.ts +27 -0
  62. package/src/tool/caffeineTracker/logic.ts +31 -0
  63. package/src/tool/caffeineTracker/seo.astro +14 -0
  64. package/src/tool/caffeineTracker/ui.ts +36 -0
  65. package/src/tool/daltonismSimulator/bibliography.astro +14 -0
  66. package/src/tool/daltonismSimulator/component.astro +383 -0
  67. package/src/tool/daltonismSimulator/i18n/en.ts +188 -0
  68. package/src/tool/daltonismSimulator/i18n/es.ts +218 -0
  69. package/src/tool/daltonismSimulator/i18n/fr.ts +168 -0
  70. package/src/tool/daltonismSimulator/index.ts +27 -0
  71. package/src/tool/daltonismSimulator/seo.astro +14 -0
  72. package/src/tool/daltonismSimulator/ui.ts +20 -0
  73. package/src/tool/digestionStopwatch/bibliography.astro +14 -0
  74. package/src/tool/digestionStopwatch/component.astro +627 -0
  75. package/src/tool/digestionStopwatch/i18n/en.ts +173 -0
  76. package/src/tool/digestionStopwatch/i18n/es.ts +173 -0
  77. package/src/tool/digestionStopwatch/i18n/fr.ts +173 -0
  78. package/src/tool/digestionStopwatch/index.ts +27 -0
  79. package/src/tool/digestionStopwatch/logic.ts +63 -0
  80. package/src/tool/digestionStopwatch/seo.astro +14 -0
  81. package/src/tool/digestionStopwatch/ui.ts +20 -0
  82. package/src/tool/epworthSleepinessScale/bibliography.astro +14 -0
  83. package/src/tool/epworthSleepinessScale/component.astro +528 -0
  84. package/src/tool/epworthSleepinessScale/i18n/en.ts +217 -0
  85. package/src/tool/epworthSleepinessScale/i18n/es.ts +217 -0
  86. package/src/tool/epworthSleepinessScale/i18n/fr.ts +217 -0
  87. package/src/tool/epworthSleepinessScale/index.ts +27 -0
  88. package/src/tool/epworthSleepinessScale/seo.astro +14 -0
  89. package/src/tool/epworthSleepinessScale/ui.ts +27 -0
  90. package/src/tool/hydrationCalculator/bibliography.astro +14 -0
  91. package/src/tool/hydrationCalculator/component.astro +694 -0
  92. package/src/tool/hydrationCalculator/i18n/en.ts +217 -0
  93. package/src/tool/hydrationCalculator/i18n/es.ts +222 -0
  94. package/src/tool/hydrationCalculator/i18n/fr.ts +199 -0
  95. package/src/tool/hydrationCalculator/index.ts +27 -0
  96. package/src/tool/hydrationCalculator/seo.astro +14 -0
  97. package/src/tool/hydrationCalculator/ui.ts +28 -0
  98. package/src/tool/pelliRobsonTest/bibliography.astro +14 -0
  99. package/src/tool/pelliRobsonTest/component.astro +653 -0
  100. package/src/tool/pelliRobsonTest/i18n/en.ts +205 -0
  101. package/src/tool/pelliRobsonTest/i18n/es.ts +205 -0
  102. package/src/tool/pelliRobsonTest/i18n/fr.ts +205 -0
  103. package/src/tool/pelliRobsonTest/index.ts +27 -0
  104. package/src/tool/pelliRobsonTest/seo.astro +14 -0
  105. package/src/tool/pelliRobsonTest/ui.ts +21 -0
  106. package/src/tool/peripheralVisionTrainer/bibliography.astro +14 -0
  107. package/src/tool/peripheralVisionTrainer/component.astro +678 -0
  108. package/src/tool/peripheralVisionTrainer/i18n/en.ts +224 -0
  109. package/src/tool/peripheralVisionTrainer/i18n/es.ts +224 -0
  110. package/src/tool/peripheralVisionTrainer/i18n/fr.ts +211 -0
  111. package/src/tool/peripheralVisionTrainer/index.ts +27 -0
  112. package/src/tool/peripheralVisionTrainer/seo.astro +14 -0
  113. package/src/tool/peripheralVisionTrainer/ui.ts +26 -0
  114. package/src/tool/readingDistanceCalculator/bibliography.astro +14 -0
  115. package/src/tool/readingDistanceCalculator/component.astro +588 -0
  116. package/src/tool/readingDistanceCalculator/i18n/en.ts +202 -0
  117. package/src/tool/readingDistanceCalculator/i18n/es.ts +215 -0
  118. package/src/tool/readingDistanceCalculator/i18n/fr.ts +193 -0
  119. package/src/tool/readingDistanceCalculator/index.ts +31 -0
  120. package/src/tool/readingDistanceCalculator/seo.astro +14 -0
  121. package/src/tool/readingDistanceCalculator/ui.ts +18 -0
  122. package/src/tool/screenDecompressionTime/bibliography.astro +14 -0
  123. package/src/tool/screenDecompressionTime/component.astro +671 -0
  124. package/src/tool/screenDecompressionTime/i18n/en.ts +225 -0
  125. package/src/tool/screenDecompressionTime/i18n/es.ts +247 -0
  126. package/src/tool/screenDecompressionTime/i18n/fr.ts +225 -0
  127. package/src/tool/screenDecompressionTime/index.ts +27 -0
  128. package/src/tool/screenDecompressionTime/seo.astro +14 -0
  129. package/src/tool/screenDecompressionTime/ui.ts +32 -0
  130. package/src/tool/tinnitusReliever/bibliography.astro +14 -0
  131. package/src/tool/tinnitusReliever/component.astro +581 -0
  132. package/src/tool/tinnitusReliever/i18n/en.ts +161 -0
  133. package/src/tool/tinnitusReliever/i18n/es.ts +161 -0
  134. package/src/tool/tinnitusReliever/i18n/fr.ts +161 -0
  135. package/src/tool/tinnitusReliever/index.ts +27 -0
  136. package/src/tool/tinnitusReliever/seo.astro +14 -0
  137. package/src/tool/tinnitusReliever/ui.ts +9 -0
  138. package/src/tool/ubeCalculator/bibliography.astro +14 -0
  139. package/src/tool/ubeCalculator/component.astro +683 -0
  140. package/src/tool/ubeCalculator/i18n/en.ts +200 -0
  141. package/src/tool/ubeCalculator/i18n/es.ts +200 -0
  142. package/src/tool/ubeCalculator/i18n/fr.ts +196 -0
  143. package/src/tool/ubeCalculator/index.ts +27 -0
  144. package/src/tool/ubeCalculator/seo.astro +14 -0
  145. package/src/tool/ubeCalculator/ui.ts +26 -0
  146. package/src/tool/waterPurifier/bibliography.astro +14 -0
  147. package/src/tool/waterPurifier/component.astro +628 -0
  148. package/src/tool/waterPurifier/i18n/en.ts +167 -0
  149. package/src/tool/waterPurifier/i18n/es.ts +167 -0
  150. package/src/tool/waterPurifier/i18n/fr.ts +167 -0
  151. package/src/tool/waterPurifier/index.ts +27 -0
  152. package/src/tool/waterPurifier/seo.astro +14 -0
  153. package/src/tool/waterPurifier/ui.ts +18 -0
  154. package/src/tools.ts +19 -0
  155. package/src/types.ts +72 -0
@@ -0,0 +1,161 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TinnitusRelieverUI } from '../ui';
4
+
5
+ const slug = 'tinnitus-relief';
6
+ const title = 'Tinnitus Relief: Online Notch Therapy Tool';
7
+ const description =
8
+ 'Free online tool for tinnitus relief through Notch Therapy. Customizable white, pink and brown noise generator with a notch filter at your exact tinnitus frequency.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'What is Notch Therapy?',
13
+ answer:
14
+ 'It is a technique that involves listening to broadband noise (like white noise) from which the specific frequency of your tinnitus has been removed. It helps the brain to ignore the ringing and reduces its intensity over the long term.',
15
+ },
16
+ {
17
+ question: 'How do I find the frequency of my tinnitus?',
18
+ answer:
19
+ 'Use the frequency slider and move it slowly until the generated tone exactly matches the ringing you hear. That is your target frequency for applying the notch filter.',
20
+ },
21
+ {
22
+ question: 'What is the difference between white, pink and brown noise?',
23
+ answer:
24
+ 'White noise sounds like TV static (all frequencies equal). Pink noise is more balanced for the human ear. Brown noise is deeper and lower, similar to a distant waterfall or soft thunder.',
25
+ },
26
+ {
27
+ question: 'Is this a definitive cure for tinnitus?',
28
+ answer:
29
+ 'No. It is a management and relief tool. Tinnitus can have many causes, from stress to hearing damage. This therapy helps mask the sound and habituate the brain, but you should always consult an ENT specialist.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Identify your frequency',
36
+ text: 'Move the frequency control until you find the tone that most closely resembles your internal ringing.',
37
+ },
38
+ {
39
+ name: 'Select the noise type',
40
+ text: 'Choose between white, pink or brown noise depending on which you find most relaxing for masking.',
41
+ },
42
+ {
43
+ name: 'Activate the notch filter',
44
+ text: 'Press Play and adjust the frequency slider — the notch filter removes your specific frequency from the generated noise spectrum.',
45
+ },
46
+ {
47
+ name: 'Relief session',
48
+ text: 'Listen to the resulting sound at a comfortable volume for 15 to 30 minutes in a quiet environment.',
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<TinnitusRelieverUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Frequently asked questions about tinnitus',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Scientific references',
92
+ bibliography: [
93
+ {
94
+ name: 'Tinnitus Notch Therapy — American Academy of Audiology',
95
+ url: 'https://www.audiology.org/',
96
+ },
97
+ {
98
+ name: 'Colors of Noise explained — Wikipedia',
99
+ url: 'https://en.wikipedia.org/wiki/Colors_of_noise',
100
+ },
101
+ {
102
+ name: 'Lateral Inhibition in Tinnitus — NIH',
103
+ url: 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3936536/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ ui: {
109
+ typeWhite: 'White Noise',
110
+ typePink: 'Pink Noise',
111
+ typeBrown: 'Brown Noise',
112
+ labelFrequency: 'Tinnitus Frequency',
113
+ labelVolume: 'Volume',
114
+ hintFrequency: 'Move this slider until it matches the tone of your tinnitus to filter it.',
115
+ hintVolume: 'Adjust the volume to a comfortable level, just below your tinnitus.',
116
+ },
117
+ seo: [
118
+ {
119
+ type: 'summary',
120
+ title: 'Online Tinnitus Relief',
121
+ items: [
122
+ '<strong>White, pink and brown noise</strong>: three types of configurable therapeutic noise.',
123
+ '<strong>Notch filter</strong>: removes the exact frequency of your tinnitus from the spectrum.',
124
+ '<strong>Real-time visualizer</strong>: graphical representation of the frequency spectrum.',
125
+ '<strong>100% local</strong>: all processing happens on your device, no data sent.',
126
+ ],
127
+ },
128
+ { type: 'title', text: 'What is Notch Therapy?', level: 2 },
129
+ {
130
+ type: 'paragraph',
131
+ html: '<strong>Notch Therapy</strong> is an innovative auditory treatment technique specifically designed for <strong>tonal tinnitus</strong> — that constant ringing at a specific frequency that does not stop.',
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Rather than simply "masking" the noise, this technique uses a broadband sound (like white noise) from which the exact frequency of your tinnitus has been removed. By depriving the brain of stimuli at that specific frequency, it aims to reduce neuronal hyperactivity in the auditory cortex through <strong>lateral inhibition</strong>.',
136
+ },
137
+ { type: 'title', text: 'Types of Noise', level: 2 },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ '<strong>White Noise:</strong> All frequencies at the same intensity. Ideal for total masking and blocking external sounds.',
142
+ '<strong>Pink Noise:</strong> Softer and more balanced. Similar to rain or wind. Reduces auditory fatigue in long sessions.',
143
+ '<strong>Brown Noise:</strong> Deep and rumbling. Dominant low frequencies. Evokes distant thunder. Perfect for sleeping.',
144
+ ],
145
+ },
146
+ { type: 'title', text: 'How to use it', level: 2 },
147
+ {
148
+ type: 'list',
149
+ items: [
150
+ '<strong>Preparation:</strong> Find a quiet environment and use good quality headphones (preferably flat-response).',
151
+ '<strong>Localization:</strong> Move the frequency slider. When the app sound matches your tinnitus, you will feel them "cancel" or blend together.',
152
+ '<strong>Treatment:</strong> Adjust the volume to the "mixing point" (audible but not masking your tinnitus). Listen for 15 to 30 minutes.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Usage warning',
158
+ html: 'This tool is for general wellness. If you experience pain, dizziness or worsening, stop use and consult a specialist.',
159
+ },
160
+ ],
161
+ };
@@ -0,0 +1,161 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TinnitusRelieverUI } from '../ui';
4
+
5
+ const slug = 'alivio-tinnitus';
6
+ const title = 'Alivio de Tinnitus: Terapia de Muesca Online Gratis';
7
+ const description =
8
+ 'Herramienta online gratuita para alivio de tinnitus mediante terapia de muesca (Notch Therapy). Generador de ruido blanco, rosa y marrón personalizable.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Qué es la terapia de muesca (Notch Therapy)?',
13
+ answer:
14
+ 'Es una técnica que consiste en escuchar ruido de banda ancha (como ruido blanco) al que se le ha eliminado la frecuencia específica de tu tinnitus. Ayuda al cerebro a ignorar el zumbido y reduce su intensidad a largo plazo.',
15
+ },
16
+ {
17
+ question: '¿Cómo encuentro la frecuencia de mi tinnitus?',
18
+ answer:
19
+ 'Usa nuestro selector de frecuencia y desplázalo lentamente hasta que el tono generado coincida exactamente con el zumbido que escuchas. Esa es tu frecuencia objetivo para aplicar el filtro de muesca.',
20
+ },
21
+ {
22
+ question: '¿Qué diferencia hay entre el ruido blanco, rosa y marrón?',
23
+ answer:
24
+ 'El ruido blanco suena como estática de TV (todas las frecuencias igual). El ruido rosa es más equilibrado para el oído humano. El ruido marrón es más profundo y grave, similar a una cascada lejana o un trueno suave.',
25
+ },
26
+ {
27
+ question: '¿Es una cura definitiva para el tinnitus?',
28
+ answer:
29
+ 'No. Es una herramienta de gestión y alivio. El tinnitus puede tener muchas causas, desde estrés hasta daños auditivos. Esta terapia ayuda a enmascarar y habituar al cerebro, pero siempre debes consultar con un otorrinolaringólogo.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Identificar tu frecuencia',
36
+ text: 'Mueve el control de frecuencia hasta encontrar el tono que más se parezca a tu zumbido interno.',
37
+ },
38
+ {
39
+ name: 'Seleccionar tipo de ruido',
40
+ text: 'Elige entre ruido blanco, rosa o marrón según el que te resulte más relajante para el enmascaramiento.',
41
+ },
42
+ {
43
+ name: 'Activar el filtro de muesca',
44
+ text: 'Pulsa el botón de Notch para eliminar tu frecuencia específica del espectro de ruido generado.',
45
+ },
46
+ {
47
+ name: 'Sesión de alivio',
48
+ text: 'Escucha el sonido resultante a un volumen cómodo durante 15 a 30 minutos en un entorno tranquilo.',
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<TinnitusRelieverUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Preguntas frecuentes sobre el tinnitus',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Referencias científicas',
92
+ bibliography: [
93
+ {
94
+ name: 'Tinnitus Notch Therapy — American Academy of Audiology',
95
+ url: 'https://www.audiology.org/',
96
+ },
97
+ {
98
+ name: 'Colors of Noise explained — Wikipedia',
99
+ url: 'https://en.wikipedia.org/wiki/Colors_of_noise',
100
+ },
101
+ {
102
+ name: 'Lateral Inhibition in Tinnitus — NIH',
103
+ url: 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3936536/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ ui: {
109
+ typeWhite: 'Ruido Blanco',
110
+ typePink: 'Ruido Rosa',
111
+ typeBrown: 'Ruido Marrón',
112
+ labelFrequency: 'Frecuencia del Tinnitus',
113
+ labelVolume: 'Volumen',
114
+ hintFrequency: 'Mueve este deslizador hasta que coincida con el tono de tu tinnitus para filtrarlo.',
115
+ hintVolume: 'Ajusta el volumen a un nivel cómodo, justo por debajo de tu tinnitus.',
116
+ },
117
+ seo: [
118
+ {
119
+ type: 'summary',
120
+ title: 'Alivio de Tinnitus Online',
121
+ items: [
122
+ '<strong>Ruido blanco, rosa y marrón</strong>: tres tipos de ruido terapéutico configurables.',
123
+ '<strong>Filtro de muesca (Notch)</strong>: elimina la frecuencia exacta de tu tinnitus del espectro.',
124
+ '<strong>Visualizador en tiempo real</strong>: representación gráfica del espectro de frecuencias.',
125
+ '<strong>100% local</strong>: todo el procesamiento ocurre en tu dispositivo, sin datos enviados.',
126
+ ],
127
+ },
128
+ { type: 'title', text: '¿Qué es la Terapia de Muesca?', level: 2 },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'La <strong>Terapia de Muesca</strong> (<em>Notch Therapy</em>) es una técnica innovadora de tratamiento auditivo diseñada específicamente para el <strong>tinnitus tonal</strong>: ese pitido constante en una frecuencia específica que no cesa.',
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'En lugar de simplemente "tapar" el ruido, esta técnica utiliza un sonido de banda ancha (como ruido blanco) al que se le ha eliminado la frecuencia exacta de tu zumbido. Al privar al cerebro de estímulos en esa frecuencia específica, se busca reducir la hiperactividad neuronal en la corteza auditiva mediante <strong>inhibición lateral</strong>.',
136
+ },
137
+ { type: 'title', text: 'Tipos de Ruido', level: 2 },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ '<strong>Ruido Blanco:</strong> Todas las frecuencias a la misma intensidad. Ideal para enmascaramiento total y bloqueo de sonidos externos.',
142
+ '<strong>Ruido Rosa:</strong> Más suave y equilibrado. Similar a la lluvia o el viento. Reduce la fatiga auditiva en sesiones largas.',
143
+ '<strong>Ruido Marrón:</strong> Profundo y retumbante. Frecuencias graves dominantes. Evoca truenos lejanos. Perfecto para dormir.',
144
+ ],
145
+ },
146
+ { type: 'title', text: 'Instrucciones de uso', level: 2 },
147
+ {
148
+ type: 'list',
149
+ items: [
150
+ '<strong>Preparación:</strong> Encuentra un entorno silencioso y usa auriculares de buena calidad (preferiblemente de respuesta plana).',
151
+ '<strong>Localización:</strong> Mueve el deslizador de frecuencia. Cuando el sonido de la app coincida con tu tinnitus, sentirás que se "cancelan" o mezclan.',
152
+ '<strong>Tratamiento:</strong> Ajusta el volumen al "punto de mezcla" (audible pero sin tapar tu tinnitus). Escucha durante 15 a 30 minutos.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Advertencia de uso',
158
+ html: 'Esta herramienta es para bienestar general. Si experimentas dolor, mareos o empeoramiento, suspende el uso y consulta a un especialista.',
159
+ },
160
+ ],
161
+ };
@@ -0,0 +1,161 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TinnitusRelieverUI } from '../ui';
4
+
5
+ const slug = 'soulagement-acouphenes';
6
+ const title = 'Soulagement des Acouphènes: Outil de Thérapie par Encoche en Ligne';
7
+ const description =
8
+ "Outil en ligne gratuit pour soulager les acouphènes par thérapie par encoche (Notch Therapy). Générateur de bruit blanc, rose et brun personnalisable.";
9
+
10
+ const faqData = [
11
+ {
12
+ question: "Qu'est-ce que la thérapie par encoche (Notch Therapy)?",
13
+ answer:
14
+ "C'est une technique qui consiste à écouter un bruit large bande (comme le bruit blanc) auquel on a retiré la fréquence spécifique de vos acouphènes. Elle aide le cerveau à ignorer le bourdonnement et réduit son intensité à long terme.",
15
+ },
16
+ {
17
+ question: 'Comment trouver la fréquence de mes acouphènes?',
18
+ answer:
19
+ "Utilisez le curseur de fréquence et déplacez-le lentement jusqu'à ce que le ton généré corresponde exactement au bourdonnement que vous entendez. C'est votre fréquence cible pour appliquer le filtre d'encoche.",
20
+ },
21
+ {
22
+ question: 'Quelle est la différence entre le bruit blanc, rose et brun?',
23
+ answer:
24
+ "Le bruit blanc ressemble à de la neige TV (toutes les fréquences égales). Le bruit rose est plus équilibré pour l'oreille humaine. Le bruit brun est plus profond et grave, similaire à une cascade lointaine ou un tonnerre doux.",
25
+ },
26
+ {
27
+ question: "Est-ce un remède définitif contre les acouphènes?",
28
+ answer:
29
+ "Non. C'est un outil de gestion et de soulagement. Les acouphènes peuvent avoir de nombreuses causes, du stress aux dommages auditifs. Cette thérapie aide à masquer le son et à habituer le cerveau, mais vous devez toujours consulter un spécialiste ORL.",
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Identifier votre fréquence',
36
+ text: "Déplacez le contrôle de fréquence jusqu'à trouver le ton qui ressemble le plus à votre bourdonnement interne.",
37
+ },
38
+ {
39
+ name: 'Sélectionner le type de bruit',
40
+ text: 'Choisissez entre bruit blanc, rose ou brun selon celui que vous trouvez le plus relaxant pour le masquage.',
41
+ },
42
+ {
43
+ name: "Activer le filtre d'encoche",
44
+ text: 'Appuyez sur Play et ajustez le curseur de fréquence — le filtre retire votre fréquence spécifique du spectre de bruit généré.',
45
+ },
46
+ {
47
+ name: 'Session de soulagement',
48
+ text: 'Écoutez le son résultant à un volume confortable pendant 15 à 30 minutes dans un environnement calme.',
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<TinnitusRelieverUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Questions fréquentes sur les acouphènes',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Références scientifiques',
92
+ bibliography: [
93
+ {
94
+ name: 'Tinnitus Notch Therapy — American Academy of Audiology',
95
+ url: 'https://www.audiology.org/',
96
+ },
97
+ {
98
+ name: 'Colors of Noise explained — Wikipedia',
99
+ url: 'https://en.wikipedia.org/wiki/Colors_of_noise',
100
+ },
101
+ {
102
+ name: 'Lateral Inhibition in Tinnitus — NIH',
103
+ url: 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3936536/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ ui: {
109
+ typeWhite: 'Bruit Blanc',
110
+ typePink: 'Bruit Rose',
111
+ typeBrown: 'Bruit Brun',
112
+ labelFrequency: 'Fréquence des Acouphènes',
113
+ labelVolume: 'Volume',
114
+ hintFrequency: "Déplacez ce curseur jusqu'à ce qu'il corresponde au ton de vos acouphènes pour le filtrer.",
115
+ hintVolume: 'Ajustez le volume à un niveau confortable, juste en dessous de vos acouphènes.',
116
+ },
117
+ seo: [
118
+ {
119
+ type: 'summary',
120
+ title: 'Soulagement des Acouphènes en Ligne',
121
+ items: [
122
+ '<strong>Bruit blanc, rose et brun</strong>: trois types de bruit thérapeutique configurables.',
123
+ "<strong>Filtre d'encoche (Notch)</strong>: retire la fréquence exacte de vos acouphènes du spectre.",
124
+ '<strong>Visualiseur en temps réel</strong>: représentation graphique du spectre de fréquences.',
125
+ '<strong>100% local</strong>: tout le traitement se fait sur votre appareil, aucune donnée envoyée.',
126
+ ],
127
+ },
128
+ { type: 'title', text: "Qu'est-ce que la Thérapie par Encoche?", level: 2 },
129
+ {
130
+ type: 'paragraph',
131
+ html: "La <strong>Thérapie par Encoche</strong> (<em>Notch Therapy</em>) est une technique innovante de traitement auditif conçue spécifiquement pour les <strong>acouphènes tonals</strong> — ce sifflement constant à une fréquence spécifique qui ne cesse pas.",
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: "Plutôt que de simplement \"masquer\" le bruit, cette technique utilise un son large bande (comme le bruit blanc) auquel on a retiré la fréquence exacte de vos acouphènes. En privant le cerveau de stimuli à cette fréquence spécifique, elle vise à réduire l'hyperactivité neuronale dans le cortex auditif par <strong>inhibition latérale</strong>.",
136
+ },
137
+ { type: 'title', text: 'Types de Bruit', level: 2 },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ "<strong>Bruit Blanc:</strong> Toutes les fréquences à la même intensité. Idéal pour le masquage total et le blocage des sons externes.",
142
+ "<strong>Bruit Rose:</strong> Plus doux et équilibré. Similaire à la pluie ou au vent. Réduit la fatigue auditive lors de longues sessions.",
143
+ "<strong>Bruit Brun:</strong> Profond et grondant. Fréquences graves dominantes. Évoque le tonnerre lointain. Parfait pour dormir.",
144
+ ],
145
+ },
146
+ { type: 'title', text: 'Instructions', level: 2 },
147
+ {
148
+ type: 'list',
149
+ items: [
150
+ "<strong>Préparation:</strong> Trouvez un environnement calme et utilisez des écouteurs de bonne qualité (de préférence à réponse plate).",
151
+ '<strong>Localisation:</strong> Déplacez le curseur de fréquence. Quand le son de l\'app correspond à vos acouphènes, vous sentirez qu\'ils se "s\'annulent" ou se mélangent.',
152
+ "<strong>Traitement:</strong> Ajustez le volume au \"point de mélange\" (audible mais sans couvrir vos acouphènes). Écoutez pendant 15 à 30 minutes.",
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: "Avertissement d'utilisation",
158
+ html: "Cet outil est destiné au bien-être général. Si vous ressentez de la douleur, des vertiges ou un aggravation, arrêtez l'utilisation et consultez un spécialiste.",
159
+ },
160
+ ],
161
+ };
@@ -0,0 +1,27 @@
1
+ import type { HealthToolEntry, ToolDefinition } from '../../types';
2
+ import TinnitusRelieverComponent from './component.astro';
3
+ import TinnitusRelieverSEO from './seo.astro';
4
+ import TinnitusRelieverBibliography from './bibliography.astro';
5
+ import type { TinnitusRelieverUI } from './ui';
6
+
7
+ export const tinnitusReliever: HealthToolEntry<TinnitusRelieverUI> = {
8
+ id: 'tinnitusReliever',
9
+ icons: {
10
+ bg: 'mdi:ear-hearing',
11
+ fg: 'mdi:waveform',
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 { TinnitusRelieverComponent, TinnitusRelieverSEO, TinnitusRelieverBibliography };
21
+
22
+ export const TINNITUS_RELIEVER_TOOL: ToolDefinition = {
23
+ entry: tinnitusReliever,
24
+ Component: TinnitusRelieverComponent,
25
+ SEOComponent: TinnitusRelieverSEO,
26
+ BibliographyComponent: TinnitusRelieverBibliography,
27
+ };
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { tinnitusReliever } 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 tinnitusReliever.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,9 @@
1
+ export interface TinnitusRelieverUI extends Record<string, string> {
2
+ typeWhite: string;
3
+ typePink: string;
4
+ typeBrown: string;
5
+ labelFrequency: string;
6
+ labelVolume: string;
7
+ hintFrequency: string;
8
+ hintVolume: string;
9
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography } from '@jjlmoya/utils-shared';
3
+ import { ubeCalculator } 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 ubeCalculator.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <Bibliography items={content.bibliography} title={content.bibliographyTitle} />}