@jjlmoya/utils-hardware 1.15.0 → 1.17.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 (178) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/ru.ts +5 -5
  3. package/src/category/index.ts +3 -1
  4. package/src/entries.ts +7 -1
  5. package/src/index.ts +2 -0
  6. package/src/pages/[locale]/[slug].astro +28 -12
  7. package/src/tests/locale_completeness.test.ts +7 -21
  8. package/src/tests/no_h1_in_components.test.ts +1 -1
  9. package/src/tests/shared-test-helpers.ts +56 -0
  10. package/src/tests/tool_exports.test.ts +34 -0
  11. package/src/tests/tool_validation.test.ts +2 -2
  12. package/src/tool/batteryHealthEstimator/bibliography.ts +13 -0
  13. package/src/tool/batteryHealthEstimator/i18n/de.ts +3 -13
  14. package/src/tool/batteryHealthEstimator/i18n/en.ts +3 -13
  15. package/src/tool/batteryHealthEstimator/i18n/es.ts +2 -12
  16. package/src/tool/batteryHealthEstimator/i18n/fr.ts +3 -13
  17. package/src/tool/batteryHealthEstimator/i18n/id.ts +3 -13
  18. package/src/tool/batteryHealthEstimator/i18n/it.ts +2 -12
  19. package/src/tool/batteryHealthEstimator/i18n/ja.ts +2 -12
  20. package/src/tool/batteryHealthEstimator/i18n/ko.ts +2 -12
  21. package/src/tool/batteryHealthEstimator/i18n/nl.ts +3 -13
  22. package/src/tool/batteryHealthEstimator/i18n/pl.ts +3 -13
  23. package/src/tool/batteryHealthEstimator/i18n/pt.ts +3 -13
  24. package/src/tool/batteryHealthEstimator/i18n/ru.ts +7 -17
  25. package/src/tool/batteryHealthEstimator/i18n/sv.ts +3 -13
  26. package/src/tool/batteryHealthEstimator/i18n/tr.ts +3 -13
  27. package/src/tool/batteryHealthEstimator/i18n/zh.ts +3 -13
  28. package/src/tool/batteryHealthEstimator/seo.astro +3 -2
  29. package/src/tool/colorAccuracyTest/bibliography.astro +14 -0
  30. package/src/tool/colorAccuracyTest/bibliography.ts +16 -0
  31. package/src/tool/colorAccuracyTest/color-accuracy-test.css +728 -0
  32. package/src/tool/colorAccuracyTest/component.astro +157 -0
  33. package/src/tool/colorAccuracyTest/entry.ts +29 -0
  34. package/src/tool/colorAccuracyTest/i18n/de.ts +284 -0
  35. package/src/tool/colorAccuracyTest/i18n/en.ts +284 -0
  36. package/src/tool/colorAccuracyTest/i18n/es.ts +284 -0
  37. package/src/tool/colorAccuracyTest/i18n/fr.ts +284 -0
  38. package/src/tool/colorAccuracyTest/i18n/id.ts +284 -0
  39. package/src/tool/colorAccuracyTest/i18n/it.ts +284 -0
  40. package/src/tool/colorAccuracyTest/i18n/ja.ts +284 -0
  41. package/src/tool/colorAccuracyTest/i18n/ko.ts +284 -0
  42. package/src/tool/colorAccuracyTest/i18n/nl.ts +284 -0
  43. package/src/tool/colorAccuracyTest/i18n/pl.ts +284 -0
  44. package/src/tool/colorAccuracyTest/i18n/pt.ts +284 -0
  45. package/src/tool/colorAccuracyTest/i18n/ru.ts +284 -0
  46. package/src/tool/colorAccuracyTest/i18n/sv.ts +284 -0
  47. package/src/tool/colorAccuracyTest/i18n/tr.ts +284 -0
  48. package/src/tool/colorAccuracyTest/i18n/zh.ts +284 -0
  49. package/src/tool/colorAccuracyTest/index.ts +9 -0
  50. package/src/tool/colorAccuracyTest/logic.ts +226 -0
  51. package/src/tool/colorAccuracyTest/seo.astro +15 -0
  52. package/src/tool/colorAccuracyTest/ui.ts +27 -0
  53. package/src/tool/deadPixelTest/bibliography.ts +13 -0
  54. package/src/tool/deadPixelTest/i18n/de.ts +2 -12
  55. package/src/tool/deadPixelTest/i18n/en.ts +2 -12
  56. package/src/tool/deadPixelTest/i18n/es.ts +2 -12
  57. package/src/tool/deadPixelTest/i18n/fr.ts +2 -12
  58. package/src/tool/deadPixelTest/i18n/id.ts +2 -12
  59. package/src/tool/deadPixelTest/i18n/it.ts +2 -12
  60. package/src/tool/deadPixelTest/i18n/ja.ts +2 -12
  61. package/src/tool/deadPixelTest/i18n/ko.ts +2 -12
  62. package/src/tool/deadPixelTest/i18n/nl.ts +2 -12
  63. package/src/tool/deadPixelTest/i18n/pl.ts +2 -12
  64. package/src/tool/deadPixelTest/i18n/pt.ts +2 -12
  65. package/src/tool/deadPixelTest/i18n/ru.ts +2 -12
  66. package/src/tool/deadPixelTest/i18n/sv.ts +2 -12
  67. package/src/tool/deadPixelTest/i18n/tr.ts +2 -12
  68. package/src/tool/deadPixelTest/i18n/zh.ts +2 -12
  69. package/src/tool/deadPixelTest/seo.astro +3 -2
  70. package/src/tool/gamepadTest/bibliography.ts +12 -0
  71. package/src/tool/gamepadTest/i18n/de.ts +2 -12
  72. package/src/tool/gamepadTest/i18n/en.ts +2 -12
  73. package/src/tool/gamepadTest/i18n/es.ts +2 -12
  74. package/src/tool/gamepadTest/i18n/fr.ts +2 -12
  75. package/src/tool/gamepadTest/i18n/id.ts +2 -12
  76. package/src/tool/gamepadTest/i18n/it.ts +2 -12
  77. package/src/tool/gamepadTest/i18n/ja.ts +2 -12
  78. package/src/tool/gamepadTest/i18n/ko.ts +2 -12
  79. package/src/tool/gamepadTest/i18n/nl.ts +2 -12
  80. package/src/tool/gamepadTest/i18n/pl.ts +2 -12
  81. package/src/tool/gamepadTest/i18n/pt.ts +2 -12
  82. package/src/tool/gamepadTest/i18n/ru.ts +3 -13
  83. package/src/tool/gamepadTest/i18n/sv.ts +2 -12
  84. package/src/tool/gamepadTest/i18n/tr.ts +2 -12
  85. package/src/tool/gamepadTest/i18n/zh.ts +2 -12
  86. package/src/tool/gamepadTest/seo.astro +3 -2
  87. package/src/tool/gamepadVibrationTester/bibliography.ts +13 -0
  88. package/src/tool/gamepadVibrationTester/i18n/de.ts +2 -12
  89. package/src/tool/gamepadVibrationTester/i18n/en.ts +2 -12
  90. package/src/tool/gamepadVibrationTester/i18n/es.ts +2 -12
  91. package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -12
  92. package/src/tool/gamepadVibrationTester/i18n/id.ts +2 -12
  93. package/src/tool/gamepadVibrationTester/i18n/it.ts +2 -12
  94. package/src/tool/gamepadVibrationTester/i18n/ja.ts +2 -12
  95. package/src/tool/gamepadVibrationTester/i18n/ko.ts +2 -12
  96. package/src/tool/gamepadVibrationTester/i18n/nl.ts +2 -12
  97. package/src/tool/gamepadVibrationTester/i18n/pl.ts +2 -12
  98. package/src/tool/gamepadVibrationTester/i18n/pt.ts +2 -12
  99. package/src/tool/gamepadVibrationTester/i18n/ru.ts +5 -15
  100. package/src/tool/gamepadVibrationTester/i18n/sv.ts +2 -12
  101. package/src/tool/gamepadVibrationTester/i18n/tr.ts +2 -12
  102. package/src/tool/gamepadVibrationTester/i18n/zh.ts +2 -12
  103. package/src/tool/gamepadVibrationTester/seo.astro +3 -2
  104. package/src/tool/keyboardTest/bibliography.ts +13 -0
  105. package/src/tool/keyboardTest/i18n/de.ts +2 -12
  106. package/src/tool/keyboardTest/i18n/en.ts +2 -12
  107. package/src/tool/keyboardTest/i18n/es.ts +2 -12
  108. package/src/tool/keyboardTest/i18n/fr.ts +2 -12
  109. package/src/tool/keyboardTest/i18n/id.ts +2 -12
  110. package/src/tool/keyboardTest/i18n/it.ts +2 -12
  111. package/src/tool/keyboardTest/i18n/ja.ts +2 -12
  112. package/src/tool/keyboardTest/i18n/ko.ts +2 -12
  113. package/src/tool/keyboardTest/i18n/nl.ts +2 -12
  114. package/src/tool/keyboardTest/i18n/pl.ts +2 -12
  115. package/src/tool/keyboardTest/i18n/pt.ts +2 -12
  116. package/src/tool/keyboardTest/i18n/ru.ts +2 -12
  117. package/src/tool/keyboardTest/i18n/sv.ts +2 -12
  118. package/src/tool/keyboardTest/i18n/tr.ts +2 -12
  119. package/src/tool/keyboardTest/i18n/zh.ts +2 -12
  120. package/src/tool/keyboardTest/seo.astro +3 -2
  121. package/src/tool/mousePollingTest/bibliography.ts +13 -0
  122. package/src/tool/mousePollingTest/i18n/de.ts +3 -13
  123. package/src/tool/mousePollingTest/i18n/en.ts +3 -13
  124. package/src/tool/mousePollingTest/i18n/es.ts +3 -13
  125. package/src/tool/mousePollingTest/i18n/fr.ts +3 -13
  126. package/src/tool/mousePollingTest/i18n/id.ts +3 -13
  127. package/src/tool/mousePollingTest/i18n/it.ts +3 -13
  128. package/src/tool/mousePollingTest/i18n/ja.ts +3 -13
  129. package/src/tool/mousePollingTest/i18n/ko.ts +3 -13
  130. package/src/tool/mousePollingTest/i18n/nl.ts +3 -13
  131. package/src/tool/mousePollingTest/i18n/pl.ts +3 -13
  132. package/src/tool/mousePollingTest/i18n/pt.ts +3 -13
  133. package/src/tool/mousePollingTest/i18n/ru.ts +5 -15
  134. package/src/tool/mousePollingTest/i18n/sv.ts +3 -13
  135. package/src/tool/mousePollingTest/i18n/tr.ts +3 -13
  136. package/src/tool/mousePollingTest/i18n/zh.ts +3 -13
  137. package/src/tool/mousePollingTest/seo.astro +3 -2
  138. package/src/tool/refreshRateDetector/bibliography.astro +14 -0
  139. package/src/tool/refreshRateDetector/bibliography.ts +12 -0
  140. package/src/tool/refreshRateDetector/component.astro +206 -0
  141. package/src/tool/refreshRateDetector/entry.ts +29 -0
  142. package/src/tool/refreshRateDetector/i18n/de.ts +196 -0
  143. package/src/tool/refreshRateDetector/i18n/en.ts +196 -0
  144. package/src/tool/refreshRateDetector/i18n/es.ts +196 -0
  145. package/src/tool/refreshRateDetector/i18n/fr.ts +196 -0
  146. package/src/tool/refreshRateDetector/i18n/id.ts +196 -0
  147. package/src/tool/refreshRateDetector/i18n/it.ts +196 -0
  148. package/src/tool/refreshRateDetector/i18n/ja.ts +196 -0
  149. package/src/tool/refreshRateDetector/i18n/ko.ts +196 -0
  150. package/src/tool/refreshRateDetector/i18n/nl.ts +196 -0
  151. package/src/tool/refreshRateDetector/i18n/pl.ts +196 -0
  152. package/src/tool/refreshRateDetector/i18n/pt.ts +196 -0
  153. package/src/tool/refreshRateDetector/i18n/ru.ts +196 -0
  154. package/src/tool/refreshRateDetector/i18n/sv.ts +196 -0
  155. package/src/tool/refreshRateDetector/i18n/tr.ts +196 -0
  156. package/src/tool/refreshRateDetector/i18n/zh.ts +196 -0
  157. package/src/tool/refreshRateDetector/index.ts +11 -0
  158. package/src/tool/refreshRateDetector/monitor-refresh-rate-detector.css +342 -0
  159. package/src/tool/refreshRateDetector/seo.astro +15 -0
  160. package/src/tool/refreshRateDetector/ui.ts +24 -0
  161. package/src/tool/toneGenerator/bibliography.ts +13 -0
  162. package/src/tool/toneGenerator/i18n/de.ts +3 -13
  163. package/src/tool/toneGenerator/i18n/en.ts +3 -13
  164. package/src/tool/toneGenerator/i18n/es.ts +2 -12
  165. package/src/tool/toneGenerator/i18n/fr.ts +3 -13
  166. package/src/tool/toneGenerator/i18n/id.ts +3 -13
  167. package/src/tool/toneGenerator/i18n/it.ts +3 -13
  168. package/src/tool/toneGenerator/i18n/ja.ts +2 -12
  169. package/src/tool/toneGenerator/i18n/ko.ts +2 -12
  170. package/src/tool/toneGenerator/i18n/nl.ts +3 -13
  171. package/src/tool/toneGenerator/i18n/pl.ts +3 -13
  172. package/src/tool/toneGenerator/i18n/pt.ts +3 -13
  173. package/src/tool/toneGenerator/i18n/ru.ts +6 -16
  174. package/src/tool/toneGenerator/i18n/sv.ts +3 -13
  175. package/src/tool/toneGenerator/i18n/tr.ts +2 -12
  176. package/src/tool/toneGenerator/i18n/zh.ts +2 -12
  177. package/src/tool/toneGenerator/seo.astro +3 -2
  178. package/src/tools.ts +3 -1
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-tastiera-online';
6
7
  const title = 'Test Tastiera Online e Rilevatore Ghosting';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Domande Frequenti',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Riferimenti Tecnici',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'keyboard-test';
6
7
  const title = 'オンライン・キーボードテスト&ゴースト検出器';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'よくある質問',
86
86
  faq: faqData,
87
- bibliographyTitle: '技術リファレンス',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'keyboard-test';
6
7
  const title = '온라인 키보드 테스트 및 고스트 감지기';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: '자주 묻는 질문',
86
86
  faq: faqData,
87
- bibliographyTitle: '기술 참조',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'toetsenbord-test-online';
6
7
  const title = 'Online Toetsenbord Test & Ghosting Detector';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Veelgestelde Vragen',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Technische Referenties',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-klawiatury-online';
6
7
  const title = 'Online Test Klawiatury i Detektor Ghostingu';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Często Zadawane Pytania',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referencje Techniczne',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'teste-teclado-online';
6
7
  const title = 'Teste de Teclado Online e Detetor de Ghosting';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Perguntas Frequentes',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referências Técnicas',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-klaviatury-online';
6
7
  const title = 'Онлайн тест клавиатуры и детектор гостинга';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Часто задаваемые вопросы',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Технические справки',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tangentbordstest-online';
6
7
  const title = 'Online Tangentbordstest & Ghosting detektor';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Vanliga frågor',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Tekniska referenser',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'klavye-testi-online';
6
7
  const title = 'Çevrimiçi Klavye Testi ve Ghosting Belirleyici';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Sıkça Sorulan Sorular',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Teknik Referanslar',
88
- bibliography: [
89
- {
90
- name: 'USB Klavye/Tuş Takımı Sayfası - HID Kullanım Tabloları',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mekanik ve Membran Klavyeler - Teknik İnceleme',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'keyboard-test';
6
7
  const title = '在线键盘测试与按键冲突检测器';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: '常见问题',
86
86
  faq: faqData,
87
- bibliographyTitle: '技术参考',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import type { KnownLocale } from '../../types';
4
3
  import { testTeclado } from './index';
4
+ import type { KnownLocale } from '../../types';
5
5
 
6
6
  interface Props {
7
7
  locale?: KnownLocale;
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await testTeclado.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,13 @@
1
+ import type { BibliographyEntry } from '../../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+
5
+ {
6
+ name: 'Gamepad Polling Rate -Logitech',
7
+ url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
8
+ },
9
+ {
10
+ name: 'USB HID Polling Rate -USB Implementers Forum',
11
+ url: 'https://www.usb.org/hid',
12
+ },
13
+ ];
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'maus-polling-rate-test-online';
6
7
  const title = 'Online Maus Polling Rate Test';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Häufig gestellte Fragen',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referenzen',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Der ultimative Leitfaden zur Polling Rate', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Polling Rate Stufen und ihre Verwendung', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> Die Maus meldet alle 8 Millisekunden. Gut für die Büroarbeit, fühlt sich aber auf 144Hz-Monitoren ruckelig an. <strong>1000 Hz</strong> Der Goldstandard für Gaming: meldet jede Millisekunde (1 ms). Flüssige Bewegung ohne spürbare Verzögerung. <strong>8000 Hz</strong> Modernste Technologie (Razer, Logitech). Meldet alle 0,125 ms, erfordert aber eine starke CPU.',
104
+ html: '<strong>125 Hz</strong> -Die Maus meldet alle 8 Millisekunden. Gut für die Büroarbeit, fühlt sich aber auf 144Hz-Monitoren ruckelig an. <strong>1000 Hz</strong> -Der Goldstandard für Gaming: meldet jede Millisekunde (1 ms). Flüssige Bewegung ohne spürbare Verzögerung. <strong>8000 Hz</strong> -Modernste Technologie (Razer, Logitech). Meldet alle 0,125 ms, erfordert aber eine starke CPU.',
115
105
  },
116
106
  { type: 'title', text: 'Warum schwanken meine Hz?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'mouse-polling-rate-test';
6
7
  const title = 'Online Mouse Polling Rate Test';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Frequently Asked Questions',
91
91
  faq: faqData,
92
- bibliographyTitle: 'References',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Definitive Guide to Polling Rate', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Polling Rate Levels and Their Uses', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> The mouse reports every 8 milliseconds. Fine for office use but feels choppy on 144Hz monitors. <strong>1000 Hz</strong> The gaming gold standard: reports every 1 ms. Smooth movement with no perceptible delay. <strong>8000 Hz</strong> Cutting-edge technology (Razer, Logitech). Reports every 0.125 ms but requires a powerful CPU.',
104
+ html: '<strong>125 Hz</strong> -The mouse reports every 8 milliseconds. Fine for office use but feels choppy on 144Hz monitors. <strong>1000 Hz</strong> -The gaming gold standard: reports every 1 ms. Smooth movement with no perceptible delay. <strong>8000 Hz</strong> -Cutting-edge technology (Razer, Logitech). Reports every 0.125 ms but requires a powerful CPU.',
115
105
  },
116
106
  { type: 'title', text: 'Why Do My Hz Fluctuate?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-raton';
6
7
  const title = 'Test de Polling Rate del Ratón Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Preguntas Frecuentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referencias',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Guía Definitiva sobre Polling Rate (tasa de sondeo)', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Niveles de Polling Rate y sus usos', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> El ratón informa cada 8 milisegundos. Perfecto para uso de oficina, pero se nota a tirones en monitores de 144Hz. <strong>1000 Hz</strong> El estándar de oro del gaming: informa cada 1 ms. Movimiento fluido y sin retraso perceptible. <strong>8000 Hz</strong> Tecnología punta (Razer, Logitech). Informa cada 0.125 ms, pero requiere una CPU potente.',
104
+ html: '<strong>125 Hz</strong> -El ratón informa cada 8 milisegundos. Perfecto para uso de oficina, pero se nota a tirones en monitores de 144Hz. <strong>1000 Hz</strong> -El estándar de oro del gaming: informa cada 1 ms. Movimiento fluido y sin retraso perceptible. <strong>8000 Hz</strong> -Tecnología punta (Razer, Logitech). Informa cada 0.125 ms, pero requiere una CPU potente.',
115
105
  },
116
106
  { type: 'title', text: '¿Por qué mis Hz fluctúan?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-taux-sondage-souris';
6
7
  const title = 'Test du Taux de Sondage de la Souris en Ligne';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Questions Fréquentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Références',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Guide Complet sur le Taux de Sondage', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Niveaux de Taux de Sondage et Leurs Usages', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: "<strong>125 Hz</strong> La souris communique toutes les 8 ms. Parfait pour un usage bureautique, mais saccadé sur un écran 144Hz. <strong>1000 Hz</strong> L'étalon-or du gaming : communication toutes les 1 ms, mouvement fluide. <strong>8000 Hz</strong> Technologie de pointe (Razer, Logitech), nécessite un processeur puissant.",
104
+ html: "<strong>125 Hz</strong> -La souris communique toutes les 8 ms. Parfait pour un usage bureautique, mais saccadé sur un écran 144Hz. <strong>1000 Hz</strong> -L'étalon-or du gaming : communication toutes les 1 ms, mouvement fluide. <strong>8000 Hz</strong> -Technologie de pointe (Razer, Logitech), nécessite un processeur puissant.",
115
105
  },
116
106
  { type: 'title', text: 'Pourquoi mes Hz fluctuent-ils ?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tes-mouse-polling-rate-online';
6
7
  const title = 'Tes Mouse Polling Rate Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Pertanyaan yang Sering Diajukan',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referensi',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Panduan Definitif tentang Polling Rate', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Tingkat Polling Rate dan Kegunaannya', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> Mouse melapor setiap 8 milidetik. Baik untuk penggunaan kantor tetapi terasa patah-patah pada monitor 144Hz. <strong>1000 Hz</strong> Standar emas gaming: melapor setiap 1 ms. Gerakan mulus tanpa lag yang terasa. <strong>8000 Hz</strong> Teknologi mutakhir (Razer, Logitech). Melapor setiap 0,125 ms tetapi membutuhkan CPU yang kuat.',
104
+ html: '<strong>125 Hz</strong> -Mouse melapor setiap 8 milidetik. Baik untuk penggunaan kantor tetapi terasa patah-patah pada monitor 144Hz. <strong>1000 Hz</strong> -Standar emas gaming: melapor setiap 1 ms. Gerakan mulus tanpa lag yang terasa. <strong>8000 Hz</strong> -Teknologi mutakhir (Razer, Logitech). Melapor setiap 0,125 ms tetapi membutuhkan CPU yang kuat.',
115
105
  },
116
106
  { type: 'title', text: 'Mengapa Hz saya Berfluktuasi?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-polling-rate-mouse-online';
6
7
  const title = 'Test Polling Rate Mouse Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Domande Frequenti',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Riferimenti',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Guida definitiva alla Polling Rate', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'Livelli di Polling Rate e loro utilizzi', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> Il mouse comunica ogni 8 millisecondi. Va bene per l\'ufficio ma appare a scatti sui monitor a 144Hz. <strong>1000 Hz</strong> Lo standard d\'oro per il gaming: comunica ogni 1 ms. Movimento fluido senza ritardi percettibili. <strong>8000 Hz</strong> Tecnologia all\'avanguardia (Razer, Logitech). Comunica ogni 0,125 ms ma richiede una CPU potente.',
104
+ html: '<strong>125 Hz</strong> -Il mouse comunica ogni 8 millisecondi. Va bene per l\'ufficio ma appare a scatti sui monitor a 144Hz. <strong>1000 Hz</strong> -Lo standard d\'oro per il gaming: comunica ogni 1 ms. Movimento fluido senza ritardi percettibili. <strong>8000 Hz</strong> -Tecnologia all\'avanguardia (Razer, Logitech). Comunica ogni 0,125 ms ma richiede una CPU potente.',
115
105
  },
116
106
  { type: 'title', text: 'Perché i miei Hz fluttuano?', level: 3 },
117
107
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestRatonUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'mouse-polling-rate-test';
6
7
  const title = 'オンライン・マウス・ポーリングレートテスト';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<TestRatonUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'よくある質問',
91
91
  faq: faqData,
92
- bibliographyTitle: 'リファレンス',
93
- bibliography: [
94
- {
95
- name: 'Gamepad Polling Rate — Logitech',
96
- url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
- },
98
- {
99
- name: 'USB HID Polling Rate — USB Implementers Forum',
100
- url: 'https://www.usb.org/hid',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'ポーリングレート完全ガイド', level: 2 },
107
97
  {
@@ -111,7 +101,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
111
101
  { type: 'title', text: 'ポーリングレートの種類と用途', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: '<strong>125 Hz</strong> 8ミリ秒ごとに報告。一般事務用途には十分ですが、144Hzモニターでは動きが荒く感じられます。<strong>1000 Hz</strong> — ゲーミングの標準:1ミリ秒ごとに報告。感知できる遅延のないスムーズな動き。<strong>8000 Hz</strong> — 最新技術(Razer、Logitechなど)。0.125ミリ秒ごとに報告しますが、ハイスペックなCPUが必要です。',
104
+ html: '<strong>125 Hz</strong> -8ミリ秒ごとに報告。一般事務用途には十分ですが、144Hzモニターでは動きが荒く感じられます。<strong>1000 Hz</strong> -ゲーミングの標準:1ミリ秒ごとに報告。感知できる遅延のないスムーズな動き。<strong>8000 Hz</strong> -最新技術(Razer、Logitechなど)。0.125ミリ秒ごとに報告しますが、ハイスペックなCPUが必要です。',
115
105
  },
116
106
  { type: 'title', text: 'Hzが変動するのはなぜですか?', level: 3 },
117
107
  {