@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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'toon-frequentie-generator-online';
6
7
  const title = 'Online Toon en Frequentiegenerator';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Veelgestelde Vragen',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referenties',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Alles over Frequenties en Geluidsgolven', level: 2 },
107
97
  {
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
116
106
  { type: 'title', text: 'Golfvormen en hun Gebruik', level: 3 },
117
107
  {
118
108
  type: 'paragraph',
119
- html: '<strong>Sinus:</strong> zuivere toon zonder boventonen, gebruikt bij medische gehoortesten en instrumentkalibratie. <strong>Blok:</strong> rijk aan oneven boventonen, klinkt als retro 8-bit consoles. <strong>Zaagtand:</strong> bevat alle boventonen, de basis van synthesizers voor elektronische muziek. <strong>Driehoek:</strong> middelpunt tussen sinus en blok gladder dan blok maar met meer harmonische inhoud dan sinus.',
109
+ html: '<strong>Sinus:</strong> zuivere toon zonder boventonen, gebruikt bij medische gehoortesten en instrumentkalibratie. <strong>Blok:</strong> rijk aan oneven boventonen, klinkt als retro 8-bit consoles. <strong>Zaagtand:</strong> bevat alle boventonen, de basis van synthesizers voor elektronische muziek. <strong>Driehoek:</strong> middelpunt tussen sinus en blok -gladder dan blok maar met meer harmonische inhoud dan sinus.',
120
110
  },
121
111
  { type: 'title', text: 'Luidsprekertest en Reiniging door Vibratie', level: 3 },
122
112
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'generator-tonow-czestotliwosci-online';
6
7
  const title = 'Online Generator Tonów i Częstotliwości';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Często Zadawane Pytania',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referencje',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Wszystko o Częstotliwościach i Falach Dźwiękowych', level: 2 },
107
97
  {
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
116
106
  { type: 'title', text: 'Rodzaje Fal i ich Zastosowanie', level: 3 },
117
107
  {
118
108
  type: 'paragraph',
119
- html: '<strong>Sinusoidalna:</strong> czysty ton bez harmonicznych, używany w medycznych badaniach słuchu i kalibracji instrumentów. <strong>Prostokątna:</strong> bogata w nieparzyste harmoniczne, brzmi jak retro konsole 8-bitowe. <strong>Piłokształtna:</strong> zawiera wszystkie harmoniczne, podstawa syntezatorów muzyki elektronicznej. <strong>Trójkątna:</strong> punkt pośredni między sinusoidalną a prostokątną gładsza niż prostokątna, ale z większą zawartością harmonicznych niż sinusoidalna.',
109
+ html: '<strong>Sinusoidalna:</strong> czysty ton bez harmonicznych, używany w medycznych badaniach słuchu i kalibracji instrumentów. <strong>Prostokątna:</strong> bogata w nieparzyste harmoniczne, brzmi jak retro konsole 8-bitowe. <strong>Piłokształtna:</strong> zawiera wszystkie harmoniczne, podstawa syntezatorów muzyki elektronicznej. <strong>Trójkątna:</strong> punkt pośredni między sinusoidalną a prostokątną -gładsza niż prostokątna, ale z większą zawartością harmonicznych niż sinusoidalna.',
120
110
  },
121
111
  { type: 'title', text: 'Testowanie Głośników i Czyszczenie Wibracyjne', level: 3 },
122
112
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gerador-tons-frequencia-online';
6
7
  const title = 'Gerador de Tons e Frequências Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Perguntas Frequentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referências',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Tudo Sobre Frequências e Ondas Sonoras', level: 2 },
107
97
  {
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
116
106
  { type: 'title', text: 'Tipos de Onda e Seus Usos', level: 3 },
117
107
  {
118
108
  type: 'paragraph',
119
- html: '<strong>Sinusoidal:</strong> tom puro sem harmónicas, usado em testes de audição médicos e calibração de instrumentos. <strong>Quadrada:</strong> rica em harmónicas ímpares, soa como consolas retro de 8 bits. <strong>Dente de serra:</strong> contém todas as harmónicas, a base dos sintetizadores de música eletrónica. <strong>Triangular:</strong> ponto médio entre sinusoidal e quadrada mais suave que a quadrada, mas com mais conteúdo harmónico que a sinusoidal.',
109
+ html: '<strong>Sinusoidal:</strong> tom puro sem harmónicas, usado em testes de audição médicos e calibração de instrumentos. <strong>Quadrada:</strong> rica em harmónicas ímpares, soa como consolas retro de 8 bits. <strong>Dente de serra:</strong> contém todas as harmónicas, a base dos sintetizadores de música eletrónica. <strong>Triangular:</strong> ponto médio entre sinusoidal e quadrada -mais suave que a quadrada, mas com mais conteúdo harmónico que a sinusoidal.',
120
110
  },
121
111
  { type: 'title', text: 'Teste de Colunas e Limpeza por Vibração', level: 3 },
122
112
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'onlayn-generator-tonov-i-chastot';
6
7
  const title = 'Онлайн генератор тонов и частот';
@@ -16,7 +17,7 @@ const faqData = [
16
17
  {
17
18
  question: 'В чем разница между синусоидальной и прямоугольной волной?',
18
19
  answer:
19
- 'Синусоидальная волна это чистый тон без гармоник (плавный и округлый). Прямоугольная волна богата нечетными гармониками и звучит гораздо более агрессивно или «цифрово». Треугольная волна находится посередине и полезна для аудиосинтеза.',
20
+ 'Синусоидальная волна -это чистый тон без гармоник (плавный и округлый). Прямоугольная волна богата нечетными гармониками и звучит гораздо более агрессивно или «цифрово». Треугольная волна находится посередине и полезна для аудиосинтеза.',
20
21
  },
21
22
  {
22
23
  question: 'Могу ли я повредить свои динамики этим инструментом?',
@@ -87,36 +88,25 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Часто задаваемые вопросы',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Ссылки',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
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
  {
108
98
  type: 'paragraph',
109
- html: 'Звук это чистая физика в движении. Этот инструмент позволяет вам манипулировать звуковыми волнами в режиме реального времени: от самых глубоких басов, которые вы чувствуете грудью, до ультразвуковых высот, которые воспринимают только животные.',
99
+ html: 'Звук -это чистая физика в движении. Этот инструмент позволяет вам манипулировать звуковыми волнами в режиме реального времени: от самых глубоких басов, которые вы чувствуете грудью, до ультразвуковых высот, которые воспринимают только животные.',
110
100
  },
111
101
  { type: 'title', text: 'Диапазон человеческого слуха и пресбиакузис', level: 3 },
112
102
  {
113
103
  type: 'paragraph',
114
- html: 'Здоровое человеческое ухо воспринимает звуки в диапазоне от <strong>20 Гц до 20 кГц</strong>. С возрастом верхний предел снижается: большинство взрослых старше 50 лет не слышат звуки выше 12 кГц. Тон 17,4 кГц, известный как «комариный писк», это классический тест, который обычно проходят только подростки.',
104
+ html: 'Здоровое человеческое ухо воспринимает звуки в диапазоне от <strong>20 Гц до 20 кГц</strong>. С возрастом верхний предел снижается: большинство взрослых старше 50 лет не слышат звуки выше 12 кГц. Тон 17,4 кГц, известный как «комариный писк», -это классический тест, который обычно проходят только подростки.',
115
105
  },
116
106
  { type: 'title', text: 'Типы волн и их использование', level: 3 },
117
107
  {
118
108
  type: 'paragraph',
119
- html: '<strong>Синусоидальная:</strong> чистый тон без гармоник, используется в медицинских тестах слуха и калибровке инструментов. <strong>Прямоугольная:</strong> богата нечетными гармониками, звучит как ретро 8-битные консоли. <strong>Пилообразная:</strong> содержит все гармоники, основа синтезаторов электронной музыки. <strong>Треугольная:</strong> промежуточное звено между синусоидой и прямоугольником мягче прямоугольной, но с большим гармоническим содержанием, чем синусоида.',
109
+ html: '<strong>Синусоидальная:</strong> чистый тон без гармоник, используется в медицинских тестах слуха и калибровке инструментов. <strong>Прямоугольная:</strong> богата нечетными гармониками, звучит как ретро 8-битные консоли. <strong>Пилообразная:</strong> содержит все гармоники, основа синтезаторов электронной музыки. <strong>Треугольная:</strong> промежуточное звено между синусоидой и прямоугольником -мягче прямоугольной, но с большим гармоническим содержанием, чем синусоида.',
120
110
  },
121
111
  { type: 'title', text: 'Тестирование динамиков и виброочистка', level: 3 },
122
112
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'ton-och-frekvensgenerator-online';
6
7
  const title = 'Online ton och frekvensgenerator';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Vanliga frågor',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referenser',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Allt om frekvenser och ljudvågor', level: 2 },
107
97
  {
@@ -116,7 +106,7 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
116
106
  { type: 'title', text: 'Vågtyper och deras användning', level: 3 },
117
107
  {
118
108
  type: 'paragraph',
119
- html: '<strong>Sinus:</strong> ren ton utan övertoner, används i medicinska hörseltester och instrumentkalibrering. <strong>Fyrkant:</strong> rik på udda övertoner, låter som retro 8-bitarskonsoler. <strong>Sågtand:</strong> innehåller alla övertoner, basen för elektroniska musik-syntar. <strong>Triangel:</strong> mittpunkt mellan sinus och fyrkant mjukare än fyrkant men med mer harmoniskt innehåll än sinus.',
109
+ html: '<strong>Sinus:</strong> ren ton utan övertoner, används i medicinska hörseltester och instrumentkalibrering. <strong>Fyrkant:</strong> rik på udda övertoner, låter som retro 8-bitarskonsoler. <strong>Sågtand:</strong> innehåller alla övertoner, basen för elektroniska musik-syntar. <strong>Triangel:</strong> mittpunkt mellan sinus och fyrkant -mjukare än fyrkant men med mer harmoniskt innehåll än sinus.',
120
110
  },
121
111
  { type: 'title', text: 'Högtalartest och rengöring genom vibration', level: 3 },
122
112
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'online-ses-ve-frekans-ureteci';
6
7
  const title = 'Çevrimiçi Ses ve Frekans Üreteci';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Sıkça Sorulan Sorular',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referanslar',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Frekanslar ve Ses Dalgaları Hakkında Her Şey', level: 2 },
107
97
  {
@@ -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 { ToneGeneratorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tone-frequency-generator';
6
7
  const title = '在线音频和频率发生器';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '常见问题',
91
91
  faq: faqData,
92
- bibliographyTitle: '参考资料',
93
- bibliography: [
94
- {
95
- name: 'MDN Web Docs — Web Audio API',
96
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
- },
98
- {
99
- name: 'ISO 226:2023 — Equal-loudness contours',
100
- url: 'https://www.iso.org/standard/83117.html',
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
  {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import type { KnownLocale } from '../../types';
4
3
  import { toneGenerator } 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 toneGenerator.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 }} />}
package/src/tools.ts CHANGED
@@ -7,6 +7,8 @@ import { PROBADOR_VIBRACION_MANDO_TOOL } from './tool/gamepadVibrationTester/ind
7
7
  import { TEST_RATON_TOOL } from './tool/mousePollingTest/index';
8
8
  import { ESTIMADOR_SALUD_BATERIA_TOOL } from './tool/batteryHealthEstimator/index';
9
9
  import { TONE_GENERATOR_TOOL } from './tool/toneGenerator/index';
10
+ import { REFRESH_RATE_DETECTOR_TOOL } from './tool/refreshRateDetector/index';
11
+ import { SPECTRUM_CANVAS_TOOL } from './tool/colorAccuracyTest/index';
10
12
 
11
- export const ALL_TOOLS: ToolDefinition[] = [PIXELES_PANTALLA_TOOL, TEST_TECLADO_TOOL, TEST_MANDO_TOOL, PROBADOR_VIBRACION_MANDO_TOOL, TEST_RATON_TOOL, ESTIMADOR_SALUD_BATERIA_TOOL, TONE_GENERATOR_TOOL];
13
+ export const ALL_TOOLS: ToolDefinition[] = [PIXELES_PANTALLA_TOOL, TEST_TECLADO_TOOL, TEST_MANDO_TOOL, PROBADOR_VIBRACION_MANDO_TOOL, TEST_RATON_TOOL, ESTIMADOR_SALUD_BATERIA_TOOL, TONE_GENERATOR_TOOL, REFRESH_RATE_DETECTOR_TOOL, SPECTRUM_CANVAS_TOOL];
12
14