@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,211 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowToThing } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PeripheralVisionTrainerUI } from '../ui';
4
+
5
+ const slug = 'entraineur-vision-peripherique';
6
+ const title = 'Entraîneur de Vision Périphérique';
7
+ const description =
8
+ "Entraînez votre champ visuel périphérique avec ce jeu d'agilité. Améliorez la vitesse de lecture, la conscience situationnelle et le temps de réaction oculaire.";
9
+
10
+ const faqData = [
11
+ {
12
+ question: "Qu'est-ce exactement que la vision périphérique?",
13
+ answer:
14
+ "C'est la partie de notre vision qui se produit en dehors du point de mise au point central. Bien qu'elle ne soit pas nette, elle est très sensible aux mouvements et au contraste, nous permettant de détecter des objets sans les regarder directement.",
15
+ },
16
+ {
17
+ question: 'Comment ce test aide-t-il à lire plus vite?',
18
+ answer:
19
+ 'La lecture rapide dépend du nombre de mots que vous pouvez saisir en un seul coup d\'œil. En entraînant votre périphérie, vous augmentez la largeur de vos "fixations", vous permettant de lire des lignes entières avec moins de mouvements oculaires.',
20
+ },
21
+ {
22
+ question: "Est-il normal d'échouer beaucoup au début?",
23
+ answer:
24
+ "Oui. Notre cerveau est habitué à ignorer les informations périphériques pour se concentrer. Avec de la pratique, les réseaux neuronaux du système magnocellulaire deviennent plus efficaces et plus rapides.",
25
+ },
26
+ {
27
+ question: 'Quels sont les risques de cet exercice?',
28
+ answer:
29
+ "L'exercice utilise des éclairs rapides. Si vous avez des antécédents d'épilepsie photosensible ou de migraines avec aura, vous devez l'éviter ou consulter un spécialiste avant de l'utiliser.",
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Focalisez le Point Central',
36
+ text: "Gardez les yeux fixés sur le point orange au centre pendant tout l'entraînement. Ne cédez pas à la tentation de regarder sur les côtés.",
37
+ },
38
+ {
39
+ name: 'Détectez la Flèche',
40
+ text: "Des flèches apparaîtront aléatoirement sur les bords de l'écran. Essayez d'identifier leur direction en utilisant uniquement votre vision latérale.",
41
+ },
42
+ {
43
+ name: 'Appuyez sur la Bonne Touche',
44
+ text: 'Appuyez sur la touche fléchée correspondante sur votre clavier le plus rapidement possible. La vitesse et le niveau augmenteront à chaque bonne réponse.',
45
+ },
46
+ {
47
+ name: 'Analysez Votre Rang',
48
+ text: "Après 60 secondes, vous verrez votre score et un rang basé sur votre agilité visuelle et votre champ de détection.",
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<PeripheralVisionTrainerUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Questions fréquentes sur la vision périphérique',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Références scientifiques',
92
+ bibliography: [
93
+ {
94
+ name: 'Perceptual learning in the absence of awareness (Seitz & Watanabe, 2003)',
95
+ url: 'https://pubmed.ncbi.nlm.nih.gov/19285458/',
96
+ },
97
+ {
98
+ name: 'Eye movements, the perceptual span, and reading speed',
99
+ url: 'https://www.researchgate.net/publication/49694262_Eye_movements_the_perceptual_span_and_reading_speed',
100
+ },
101
+ ],
102
+ howTo: howToData,
103
+ schemas: [faqSchema, howToSchema, appSchema],
104
+ ui: {
105
+ introTitle: 'Vision Périphérique',
106
+ introDesc:
107
+ "Entraînez votre capacité à traiter les informations en dehors de votre focus direct. Idéal pour la lecture rapide et l'agilité mentale.",
108
+ benefit1Title: 'Vitesse',
109
+ benefit1Desc: "Réduit le temps de réaction face aux stimuli inattendus.",
110
+ benefit2Title: 'Lecture Rapide',
111
+ benefit2Desc: 'Élargissez votre champ visuel pour saisir des phrases entières.',
112
+ benefit3Title: 'Concentration',
113
+ benefit3Desc: "Améliorez la concentration en maintenant le centre fixe.",
114
+ btnStart: "Commencer l'Entraînement",
115
+ hudPoints: 'Points',
116
+ hudLevel: 'Niveau',
117
+ hudTime: 'Temps',
118
+ methodNote:
119
+ "MÉTHODE: Gardez le regard fixé sur le point orange central. Réagissez aux flèches avec le clavier sans détourner les yeux du centre.",
120
+ mobileTitle: 'Écran Trop Petit',
121
+ mobileDesc:
122
+ "L'Entraîneur de Vision Périphérique nécessite un clavier physique et une grande zone d'écran pour mesurer avec précision votre vrai champ visuel.",
123
+ mobileTip: 'Veuillez accéder depuis un ordinateur avec un clavier physique pour profiter pleinement de cet exercice.',
124
+ resultTotal: 'Total',
125
+ rank3Title: 'VISION FRACTALE',
126
+ rank3Text: "Votre intégration hémisphérique est totale. Vous possédez une conscience situationnelle d'élite.",
127
+ rank2Title: 'FAUCON',
128
+ rank2Text: 'Excellentes performances. Votre champ visuel est significativement supérieur à la moyenne.',
129
+ rank1Title: 'EXPLORATEUR',
130
+ rank1Text: 'Bon début. Entraînez-vous quotidiennement pour élargir votre perception latérale.',
131
+ btnRestart: 'Recommencer le Protocole',
132
+ },
133
+ seo: [
134
+ {
135
+ type: 'summary',
136
+ title: 'Entraîneur Périphérique',
137
+ items: [
138
+ "<strong>60 secondes</strong> d'entraînement par session: simple, efficace et mesurable.",
139
+ '<strong>Difficulté progressive</strong>: la vitesse d\'apparition augmente avec votre score.',
140
+ '<strong>3 rangs</strong>: Explorateur, Faucon et Vision Fractale selon vos performances.',
141
+ '<strong>Desktop uniquement</strong>: nécessite un clavier physique pour capturer les réponses des touches fléchées.',
142
+ ],
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: "Entraînement de Vision Périphérique: Comment élargir votre champ visuel et lire plus vite",
147
+ level: 2,
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: "La <strong>vision périphérique</strong> est la capacité de détecter des objets et des mouvements en dehors du point de mise au point direct (vision fovéale). Tandis que la fovéa nous permet de voir des détails nets et des couleurs, la périphérie est optimisée pour détecter les mouvements et les changements dans des conditions de faible luminosité. Entraîner cette compétence améliore non seulement la sécurité, mais c'est le secret derrière la lecture rapide professionnelle.",
152
+ },
153
+ {
154
+ type: 'paragraph',
155
+ html: 'La plupart des gens lisent mot par mot, effectuant de multiples "fixations" par ligne. En élargissant votre champ visuel, vous pouvez traiter des blocs entiers de texte ou même des lignes complètes en un seul coup d\'œil, réduisant drastiquement le temps de lecture et la fatigue oculaire.',
156
+ },
157
+ { type: 'title', text: "Pourquoi entraîner la périphérie de l'œil?", level: 2 },
158
+ {
159
+ type: 'list',
160
+ items: [
161
+ "<strong>Lecture Rapide:</strong> En voyant plus de mots sur les côtés de votre point de focus, vous réduisez le nombre d'arrêts que vos yeux doivent faire.",
162
+ "<strong>Conduite Sécurisée:</strong> Détecter une voiture qui s'insère ou un piéton qui descend du trottoir quelques millisecondes plus tôt peut éviter de graves accidents.",
163
+ "<strong>Performance Sportive:</strong> Dans des sports comme le football ou le basketball, voir la position de vos coéquipiers sans quitter le ballon des yeux est un avantage compétitif critique.",
164
+ "<strong>Conscience Situationnelle:</strong> Améliore votre capacité à naviguer dans des environnements bondés et à détecter les dangers potentiels dans votre environnement.",
165
+ ],
166
+ icon: 'mdi:eye-outline',
167
+ },
168
+ { type: 'title', text: 'Techniques scientifiques pour améliorer la vision périphérique', level: 2 },
169
+ {
170
+ type: 'table',
171
+ headers: ['Technique', 'Objectif', 'Fréquence Recommandée'],
172
+ rows: [
173
+ ['<strong>Tables de Schulte</strong>', 'Entraîner la recherche visuelle rapide dans un champ statique.', '5 minutes par jour.'],
174
+ ['<strong>Suivi des Éclairs</strong>', 'Améliorer le temps de réaction périphérique aux stimuli dynamiques.', '10 minutes, 3 fois par semaine.'],
175
+ ['<strong>Fixation Centrale Active</strong>', 'Maintenir le focus sur un point tout en décrivant des objets latéraux.', 'Lors de promenades ou temps libre.'],
176
+ ['<strong>Lecture en Bloc</strong>', 'Regrouper 3-4 mots par fixation au lieu d\'un.', 'Chaque fois que vous lisez pour le plaisir.'],
177
+ ],
178
+ },
179
+ {
180
+ type: 'card',
181
+ icon: 'mdi:brain',
182
+ title: 'Le Phénomène de Vision Tunnel par Stress Numérique',
183
+ html: "<p>Lorsque nous sommes sous stress ou haute concentration devant un moniteur, le cerveau entre dans un état d'alerte qui priorise le focus central. Ce phénomène inhibe la capacité de notre cerveau à traiter les stimuli latéraux. L'entraînement périphérique agit comme un interrupteur biologique: en forçant le cerveau à traiter des informations périphériques tout en maintenant le focus central, nous activons le système nerveux parasympathique, réduisant le stress et favorisant un état de calme attentif.</p>",
184
+ },
185
+ {
186
+ type: 'tip',
187
+ title: "Instructions Critiques pour l'Entraînement",
188
+ html: "<strong>RÈGLE D'OR:</strong> N'essayez pas de suivre les éclairs avec vos yeux. Votre objectif <strong>N'EST PAS</strong> de regarder la flèche directement. Vous devez <strong>SAVOIR</strong> quelle direction indique la flèche en utilisant exclusivement votre vision latérale. Si vous remarquez que vos yeux sautent vers le bord de l'écran, l'exercice perd son efficacité neurologique.",
189
+ },
190
+ { type: 'title', text: "Bénéfices Cliniques et Cognitifs de l'Expansion Visuelle", level: 2 },
191
+ {
192
+ type: 'list',
193
+ items: [
194
+ "<strong>Réduction Drastique de la Fatigue Oculaire:</strong> En apprenant à utiliser tout le champ visuel, vous réduisez la charge de travail des muscles ciliaires qui forcent le focus central constant.",
195
+ "<strong>Amélioration de la Mémoire de Travail:</strong> Traiter plusieurs stimuli simultanés oblige le cerveau à mieux gérer les ressources d'attention, ce qui se traduit par une plus grande capacité de rétention de données à court terme.",
196
+ "<strong>Sécurité de Conduite:</strong> Un champ visuel élargi vous permet de détecter les véhicules, cyclistes ou piétons approchant par les flancs bien avant qu'ils entrent dans votre ligne de vision directe.",
197
+ "<strong>Gestion de l'Anxiété:</strong> Il existe une corrélation physiologique entre la vision périphérique et la relaxation. En \"ouvrant\" le regard, vous signalez à votre amygdale qu'il n'y a pas de menaces immédiates, abaissant le rythme cardiaque.",
198
+ ],
199
+ },
200
+ { type: 'title', text: 'Lecture Rapide: La technique de la Fixation Élargie', level: 2 },
201
+ {
202
+ type: 'paragraph',
203
+ html: "Dans la lecture conventionnelle, l'œil effectue de petits sauts appelés saccades. La plupart des gens font une fixation par mot. En entraînant votre périphérie, vous pouvez passer de la lecture mot par mot à la lecture de groupes de trois ou quatre mots par fixation. Votre vitesse de lecture peut doubler ou tripler simplement en réduisant le nombre d'arrêts que vos yeux font par ligne.",
204
+ },
205
+ { type: 'title', text: 'Conclusion: Retrouver la Vision Naturelle', level: 2 },
206
+ {
207
+ type: 'paragraph',
208
+ html: "Nos ancêtres dépendaient de leur vision périphérique pour survivre dans des environnements naturels. Aujourd'hui, nous récupérons cette compétence non pas pour chasser, mais pour naviguer dans la jungle d'informations numériques avec plus de fluidité et moins de stress. Cet entraîneur est votre premier pas pour laisser derrière vous la vision tunnel et redécouvrir l'amplitude de votre champ visuel.",
209
+ },
210
+ ],
211
+ };
@@ -0,0 +1,27 @@
1
+ import type { HealthToolEntry, ToolDefinition } from '../../types';
2
+ import PeripheralVisionTrainerComponent from './component.astro';
3
+ import PeripheralVisionTrainerSEO from './seo.astro';
4
+ import PeripheralVisionTrainerBibliography from './bibliography.astro';
5
+ import type { PeripheralVisionTrainerUI } from './ui';
6
+
7
+ export const peripheralVisionTrainer: HealthToolEntry<PeripheralVisionTrainerUI> = {
8
+ id: 'peripheralVisionTrainer',
9
+ icons: {
10
+ bg: 'mdi:eye-circle-outline',
11
+ fg: 'mdi:arrow-expand-all',
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 { PeripheralVisionTrainerComponent, PeripheralVisionTrainerSEO, PeripheralVisionTrainerBibliography };
21
+
22
+ export const PERIPHERAL_VISION_TRAINER_TOOL: ToolDefinition = {
23
+ entry: peripheralVisionTrainer,
24
+ Component: PeripheralVisionTrainerComponent,
25
+ SEOComponent: PeripheralVisionTrainerSEO,
26
+ BibliographyComponent: PeripheralVisionTrainerBibliography,
27
+ };
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { peripheralVisionTrainer } 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 peripheralVisionTrainer.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,26 @@
1
+ export interface PeripheralVisionTrainerUI extends Record<string, string> {
2
+ introTitle: string;
3
+ introDesc: string;
4
+ benefit1Title: string;
5
+ benefit1Desc: string;
6
+ benefit2Title: string;
7
+ benefit2Desc: string;
8
+ benefit3Title: string;
9
+ benefit3Desc: string;
10
+ btnStart: string;
11
+ hudPoints: string;
12
+ hudLevel: string;
13
+ hudTime: string;
14
+ methodNote: string;
15
+ mobileTitle: string;
16
+ mobileDesc: string;
17
+ mobileTip: string;
18
+ resultTotal: string;
19
+ rank3Title: string;
20
+ rank3Text: string;
21
+ rank2Title: string;
22
+ rank2Text: string;
23
+ rank1Title: string;
24
+ rank1Text: string;
25
+ btnRestart: string;
26
+ }
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography } from '@jjlmoya/utils-shared';
3
+ import { readingDistanceCalculator } 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 readingDistanceCalculator.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && <Bibliography items={content.bibliography} title={content.bibliographyTitle} />}