@jjlmoya/utils-hardware 1.16.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 (79) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/ru.ts +5 -5
  3. package/src/category/index.ts +2 -1
  4. package/src/entries.ts +4 -1
  5. package/src/index.ts +1 -0
  6. package/src/tests/locale_completeness.test.ts +2 -2
  7. package/src/tests/no_h1_in_components.test.ts +1 -1
  8. package/src/tests/tool_validation.test.ts +2 -2
  9. package/src/tool/batteryHealthEstimator/bibliography.ts +8 -8
  10. package/src/tool/batteryHealthEstimator/i18n/de.ts +1 -1
  11. package/src/tool/batteryHealthEstimator/i18n/en.ts +1 -1
  12. package/src/tool/batteryHealthEstimator/i18n/fr.ts +1 -1
  13. package/src/tool/batteryHealthEstimator/i18n/id.ts +1 -1
  14. package/src/tool/batteryHealthEstimator/i18n/nl.ts +1 -1
  15. package/src/tool/batteryHealthEstimator/i18n/pl.ts +1 -1
  16. package/src/tool/batteryHealthEstimator/i18n/pt.ts +1 -1
  17. package/src/tool/batteryHealthEstimator/i18n/ru.ts +5 -5
  18. package/src/tool/batteryHealthEstimator/i18n/sv.ts +1 -1
  19. package/src/tool/batteryHealthEstimator/i18n/tr.ts +1 -1
  20. package/src/tool/batteryHealthEstimator/i18n/zh.ts +1 -1
  21. package/src/tool/colorAccuracyTest/bibliography.astro +14 -0
  22. package/src/tool/colorAccuracyTest/bibliography.ts +16 -0
  23. package/src/tool/colorAccuracyTest/color-accuracy-test.css +728 -0
  24. package/src/tool/colorAccuracyTest/component.astro +157 -0
  25. package/src/tool/colorAccuracyTest/entry.ts +29 -0
  26. package/src/tool/colorAccuracyTest/i18n/de.ts +284 -0
  27. package/src/tool/colorAccuracyTest/i18n/en.ts +284 -0
  28. package/src/tool/colorAccuracyTest/i18n/es.ts +284 -0
  29. package/src/tool/colorAccuracyTest/i18n/fr.ts +284 -0
  30. package/src/tool/colorAccuracyTest/i18n/id.ts +284 -0
  31. package/src/tool/colorAccuracyTest/i18n/it.ts +284 -0
  32. package/src/tool/colorAccuracyTest/i18n/ja.ts +284 -0
  33. package/src/tool/colorAccuracyTest/i18n/ko.ts +284 -0
  34. package/src/tool/colorAccuracyTest/i18n/nl.ts +284 -0
  35. package/src/tool/colorAccuracyTest/i18n/pl.ts +284 -0
  36. package/src/tool/colorAccuracyTest/i18n/pt.ts +284 -0
  37. package/src/tool/colorAccuracyTest/i18n/ru.ts +284 -0
  38. package/src/tool/colorAccuracyTest/i18n/sv.ts +284 -0
  39. package/src/tool/colorAccuracyTest/i18n/tr.ts +284 -0
  40. package/src/tool/colorAccuracyTest/i18n/zh.ts +284 -0
  41. package/src/tool/colorAccuracyTest/index.ts +9 -0
  42. package/src/tool/colorAccuracyTest/logic.ts +226 -0
  43. package/src/tool/colorAccuracyTest/seo.astro +15 -0
  44. package/src/tool/colorAccuracyTest/ui.ts +27 -0
  45. package/src/tool/gamepadTest/i18n/ru.ts +1 -1
  46. package/src/tool/gamepadVibrationTester/bibliography.ts +8 -8
  47. package/src/tool/gamepadVibrationTester/i18n/ru.ts +3 -3
  48. package/src/tool/mousePollingTest/bibliography.ts +8 -8
  49. package/src/tool/mousePollingTest/i18n/de.ts +1 -1
  50. package/src/tool/mousePollingTest/i18n/en.ts +1 -1
  51. package/src/tool/mousePollingTest/i18n/es.ts +1 -1
  52. package/src/tool/mousePollingTest/i18n/fr.ts +1 -1
  53. package/src/tool/mousePollingTest/i18n/id.ts +1 -1
  54. package/src/tool/mousePollingTest/i18n/it.ts +1 -1
  55. package/src/tool/mousePollingTest/i18n/ja.ts +1 -1
  56. package/src/tool/mousePollingTest/i18n/ko.ts +1 -1
  57. package/src/tool/mousePollingTest/i18n/nl.ts +1 -1
  58. package/src/tool/mousePollingTest/i18n/pl.ts +1 -1
  59. package/src/tool/mousePollingTest/i18n/pt.ts +1 -1
  60. package/src/tool/mousePollingTest/i18n/ru.ts +3 -3
  61. package/src/tool/mousePollingTest/i18n/sv.ts +1 -1
  62. package/src/tool/mousePollingTest/i18n/tr.ts +1 -1
  63. package/src/tool/mousePollingTest/i18n/zh.ts +1 -1
  64. package/src/tool/refreshRateDetector/bibliography.ts +3 -11
  65. package/src/tool/refreshRateDetector/i18n/fr.ts +3 -3
  66. package/src/tool/refreshRateDetector/i18n/nl.ts +3 -3
  67. package/src/tool/refreshRateDetector/i18n/ru.ts +4 -4
  68. package/src/tool/toneGenerator/bibliography.ts +8 -8
  69. package/src/tool/toneGenerator/i18n/de.ts +1 -1
  70. package/src/tool/toneGenerator/i18n/en.ts +1 -1
  71. package/src/tool/toneGenerator/i18n/fr.ts +1 -1
  72. package/src/tool/toneGenerator/i18n/id.ts +1 -1
  73. package/src/tool/toneGenerator/i18n/it.ts +1 -1
  74. package/src/tool/toneGenerator/i18n/nl.ts +1 -1
  75. package/src/tool/toneGenerator/i18n/pl.ts +1 -1
  76. package/src/tool/toneGenerator/i18n/pt.ts +1 -1
  77. package/src/tool/toneGenerator/i18n/ru.ts +4 -4
  78. package/src/tool/toneGenerator/i18n/sv.ts +1 -1
  79. package/src/tools.ts +2 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-hardware",
3
- "version": "1.16.0",
3
+ "version": "1.17.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -12,7 +12,7 @@ export const content: CategoryLocaleContent = {
12
12
  },
13
13
  {
14
14
  type: 'paragraph',
15
- html: 'Обслуживание оборудования больше не требует установки тяжёлых диагностических приложений. В этом разделе мы предлагаем набор <strong>бесплатных онлайн-инструментов</strong>, предназначенных для тестирования ваших компонентов с использованием нативных веб-API. От обнаружения усталости LED-панели до измерения частоты опроса игровых периферийных устройств мы применяем стандартные протоколы тестирования, чтобы вы знали реальное состояние вашего оборудования.',
15
+ html: 'Обслуживание оборудования больше не требует установки тяжёлых диагностических приложений. В этом разделе мы предлагаем набор <strong>бесплатных онлайн-инструментов</strong>, предназначенных для тестирования ваших компонентов с использованием нативных веб-API. От обнаружения усталости LED-панели до измерения частоты опроса игровых периферийных устройств -мы применяем стандартные протоколы тестирования, чтобы вы знали реальное состояние вашего оборудования.',
16
16
  },
17
17
  {
18
18
  type: 'paragraph',
@@ -43,7 +43,7 @@ export const content: CategoryLocaleContent = {
43
43
  },
44
44
  {
45
45
  type: 'paragraph',
46
- html: 'Износ джойстика (известный как дрейф) наиболее распространённая неисправность в современных контроллерах PS5, Xbox и Switch. Наш <strong>симулятор контроллера</strong> анализирует оси X/Y с точностью числа с плавающей запятой, позволяя визуализировать любое нежелательное движение или отсутствие мёртвой зоны в стиках. Также позволяет тестировать тактильный отклик и вибрацию мотора Dual-Rumble через браузер.',
46
+ html: 'Износ джойстика (известный как дрейф) -наиболее распространённая неисправность в современных контроллерах PS5, Xbox и Switch. Наш <strong>симулятор контроллера</strong> анализирует оси X/Y с точностью числа с плавающей запятой, позволяя визуализировать любое нежелательное движение или отсутствие мёртвой зоны в стиках. Также позволяет тестировать тактильный отклик и вибрацию мотора Dual-Rumble через браузер.',
47
47
  },
48
48
  {
49
49
  type: 'title',
@@ -65,7 +65,7 @@ export const content: CategoryLocaleContent = {
65
65
  },
66
66
  {
67
67
  type: 'paragraph',
68
- html: 'Понимание sRGB vs. Adobe RGB vs. P3 также критично. sRGB веб-стандарт (достаточен для 99% использования), но Adobe RGB охватывает на 40% больше цветов (необходим для профессионалов). Монитор, охватывающий только 70% sRGB, будет производить недостаточную цветовую насыщенность. Наши инструменты позволяют проводить проверку без вложений в профессиональное оборудование за €1000.',
68
+ html: 'Понимание sRGB vs. Adobe RGB vs. P3 также критично. sRGB -веб-стандарт (достаточен для 99% использования), но Adobe RGB охватывает на 40% больше цветов (необходим для профессионалов). Монитор, охватывающий только 70% sRGB, будет производить недостаточную цветовую насыщенность. Наши инструменты позволяют проводить проверку без вложений в профессиональное оборудование за €1000.',
69
69
  },
70
70
  {
71
71
  type: 'title',
@@ -78,7 +78,7 @@ export const content: CategoryLocaleContent = {
78
78
  },
79
79
  {
80
80
  type: 'paragraph',
81
- html: 'Тесты задержки также критичны для соревновательного игрового процесса. Задержка ввод-дисплей (от нажатия кнопки до отображения на экране) может составлять 20–50 мс на приличном оборудовании, но 200+ мс на медленном. В соревновательных играх (FPS, файтинги) 50 мс разница между победой и поражением. Поэтому профессиональные геймеры инвестируют в мониторы 240 Гц, мыши 8000 Гц и оптимизированные ПК.',
81
+ html: 'Тесты задержки также критичны для соревновательного игрового процесса. Задержка ввод-дисплей (от нажатия кнопки до отображения на экране) может составлять 20–50 мс на приличном оборудовании, но 200+ мс на медленном. В соревновательных играх (FPS, файтинги) 50 мс -разница между победой и поражением. Поэтому профессиональные геймеры инвестируют в мониторы 240 Гц, мыши 8000 Гц и оптимизированные ПК.',
82
82
  },
83
83
  {
84
84
  type: 'title',
@@ -87,7 +87,7 @@ export const content: CategoryLocaleContent = {
87
87
  },
88
88
  {
89
89
  type: 'paragraph',
90
- html: '"Ремонтопригодность" становится всё важнее в 2026 году. "Ремонтируемый" телефон служит 6 лет; "запечатанный" истекает через 2–3 года. Ноутбук с обновляемой ОЗУ инвестиция; с припаянной ОЗУ одноразовый. Диагностические инструменты, которые мы внедряем, согласуются с движением за право на ремонт: мы хотим, чтобы вы знали точно, что сломалось, прежде чем выбрасывать устройства.',
90
+ html: '"Ремонтопригодность" становится всё важнее в 2026 году. "Ремонтируемый" телефон служит 6 лет; "запечатанный" истекает через 2–3 года. Ноутбук с обновляемой ОЗУ -инвестиция; с припаянной ОЗУ -одноразовый. Диагностические инструменты, которые мы внедряем, согласуются с движением за право на ремонт: мы хотим, чтобы вы знали точно, что сломалось, прежде чем выбрасывать устройства.',
91
91
  },
92
92
  {
93
93
  type: 'paragraph',
@@ -7,10 +7,11 @@ import { testRaton } from '../tool/mousePollingTest/index';
7
7
  import { estimadorSaludBateria } from '../tool/batteryHealthEstimator/index';
8
8
  import { toneGenerator } from '../tool/toneGenerator/index';
9
9
  import { refreshRateDetector } from '../tool/refreshRateDetector/index';
10
+ import { spectrumCanvas } from '../tool/colorAccuracyTest/index';
10
11
 
11
12
  export const hardwareCategory: HardwareCategoryEntry = {
12
13
  icon: 'mdi:memory',
13
- tools: [pixelesPantalla, testTeclado, testMando, probadorVibracionMando, testRaton, estimadorSaludBateria, toneGenerator, refreshRateDetector],
14
+ tools: [pixelesPantalla, testTeclado, testMando, probadorVibracionMando, testRaton, estimadorSaludBateria, toneGenerator, refreshRateDetector, spectrumCanvas],
14
15
  i18n: {
15
16
  en: () => import('./i18n/en').then((m) => m.content),
16
17
  es: () => import('./i18n/es').then((m) => m.content),
package/src/entries.ts CHANGED
@@ -14,6 +14,8 @@ export { toneGenerator } from './tool/toneGenerator/entry';
14
14
  export type { ToneGeneratorLocaleContent } from './tool/toneGenerator/entry';
15
15
  export { refreshRateDetector } from './tool/refreshRateDetector/entry';
16
16
  export type { RefreshRateDetectorLocaleContent } from './tool/refreshRateDetector/entry';
17
+ export { spectrumCanvas } from './tool/colorAccuracyTest/entry';
18
+ export type { SpectrumCanvasLocaleContent } from './tool/colorAccuracyTest/entry';
17
19
  export { hardwareCategory } from './category';
18
20
  import { estimadorSaludBateria } from './tool/batteryHealthEstimator/entry';
19
21
  import { pixelesPantalla } from './tool/deadPixelTest/entry';
@@ -23,4 +25,5 @@ import { testTeclado } from './tool/keyboardTest/entry';
23
25
  import { testRaton } from './tool/mousePollingTest/entry';
24
26
  import { toneGenerator } from './tool/toneGenerator/entry';
25
27
  import { refreshRateDetector } from './tool/refreshRateDetector/entry';
26
- export const ALL_ENTRIES = [estimadorSaludBateria, pixelesPantalla, testMando, probadorVibracionMando, testTeclado, testRaton, toneGenerator, refreshRateDetector];
28
+ import { spectrumCanvas } from './tool/colorAccuracyTest/entry';
29
+ export const ALL_ENTRIES = [estimadorSaludBateria, pixelesPantalla, testMando, probadorVibracionMando, testTeclado, testRaton, toneGenerator, refreshRateDetector, spectrumCanvas];
package/src/index.ts CHANGED
@@ -25,3 +25,4 @@ export { TEST_RATON_TOOL } from './tool/mousePollingTest/index';
25
25
  export { ESTIMADOR_SALUD_BATERIA_TOOL } from './tool/batteryHealthEstimator/index';
26
26
  export { TONE_GENERATOR_TOOL } from './tool/toneGenerator/index';
27
27
  export { REFRESH_RATE_DETECTOR_TOOL } from './tool/refreshRateDetector/index';
28
+ export { SPECTRUM_CANVAS_TOOL } from './tool/colorAccuracyTest/index';
@@ -21,8 +21,8 @@ describe('Locale Completeness Validation', () => {
21
21
  });
22
22
  });
23
23
 
24
- it('all 10 tools registered', () => {
25
- expect(ALL_TOOLS.length).toBe(8);
24
+ it('all 9 tools registered', () => {
25
+ expect(ALL_TOOLS.length).toBe(9);
26
26
  });
27
27
  });
28
28
 
@@ -40,7 +40,7 @@ describe('No H1 in Components', () => {
40
40
  const content = readFileSync(file, 'utf-8');
41
41
  expect(
42
42
  hasH1(content),
43
- `File "${relativePath}" contains a <h1> element. Use <h2> or lower inside components h1 belongs to the page layout.`,
43
+ `File "${relativePath}" contains a <h1> element. Use <h2> or lower inside components -h1 belongs to the page layout.`,
44
44
  ).toBe(false);
45
45
  });
46
46
  });
@@ -4,8 +4,8 @@ import { hardwareCategory } from '../data';
4
4
 
5
5
  describe('Tool Validation Suite', () => {
6
6
  describe('Library Registration', () => {
7
- it('should have 8 tools in ALL_TOOLS', () => {
8
- expect(ALL_TOOLS.length).toBe(8);
7
+ it('should have 9 tools in ALL_TOOLS', () => {
8
+ expect(ALL_TOOLS.length).toBe(9);
9
9
  });
10
10
 
11
11
  it('hardwareCategory should be defined', () => {
@@ -2,12 +2,12 @@ import type { BibliographyEntry } from '../../../types';
2
2
 
3
3
  export const bibliography: BibliographyEntry[] = [
4
4
 
5
- {
6
- name: 'Journal of Power Sources',
7
- url: 'https://www.sciencedirect.com/journal/journal-of-power-sources',
8
- },
9
- {
10
- name: 'IEEE Xplore Lithium-Ion Battery Life Prediction',
11
- url: 'https://ieeexplore.ieee.org/abstract/document/11090151',
12
- },
5
+ {
6
+ name: 'Journal of Power Sources',
7
+ url: 'https://www.sciencedirect.com/journal/journal-of-power-sources',
8
+ },
9
+ {
10
+ name: 'IEEE Xplore -Lithium-Ion Battery Life Prediction',
11
+ url: 'https://ieeexplore.ieee.org/abstract/document/11090151',
12
+ },
13
13
  ];
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Vermeiden Sie es, die Batterie über längere Zeit bei 100 % Ladung (4,2 V) zu halten.',
144
144
  recVoltageLow: 'Tiefe Entladungen vermeiden; Zyklen zwischen 20 % und 80 % verdoppeln die Lebensdauer.',
145
145
  recSohLow: 'Kapazität ist unter den optimalen Standard gefallen. Erwägen Sie einen Austausch, wenn die Autonomie nicht ausreicht.',
146
- recDefault: 'Behalten Sie Ihre aktuellen Gewohnheiten bei Ihre Batterie befindet sich in einem idealen Betriebsbereich.',
146
+ recDefault: 'Behalten Sie Ihre aktuellen Gewohnheiten bei -Ihre Batterie befindet sich in einem idealen Betriebsbereich.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Avoid keeping the battery at 100% charge (4.2V) for extended periods.',
144
144
  recVoltageLow: 'Avoid deep discharges; cycles between 20% and 80% double battery life.',
145
145
  recSohLow: 'Capacity has dropped below the optimal standard. Consider a replacement if autonomy is insufficient.',
146
- recDefault: 'Keep your current habits your battery is in an ideal operating range.',
146
+ recDefault: 'Keep your current habits -your battery is in an ideal operating range.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: "Évitez de maintenir la batterie à 100% de charge (4,2V) pendant de longues périodes.",
144
144
  recVoltageLow: "Évitez les décharges profondes ; les cycles entre 20% et 80% doublent la durée de vie.",
145
145
  recSohLow: "La capacité est tombée en dessous du standard optimal. Envisagez un remplacement si l'autonomie est insuffisante.",
146
- recDefault: "Maintenez vos habitudes actuelles votre batterie est dans une plage de fonctionnement idéale.",
146
+ recDefault: "Maintenez vos habitudes actuelles -votre batterie est dans une plage de fonctionnement idéale.",
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Hindari menjaga baterai pada daya 100% (4.2V) untuk waktu yang lama.',
144
144
  recVoltageLow: 'Hindari pengosongan daya yang dalam; siklus antara 20% dan 80% menggandakan masa pakai baterai.',
145
145
  recSohLow: 'Kapasitas telah turun di bawah standar optimal. Pertimbangkan penggantian jika otonomi tidak mencukupi.',
146
- recDefault: 'Pertahankan kebiasaan Anda saat ini baterai Anda berada dalam rentang operasi yang ideal.',
146
+ recDefault: 'Pertahankan kebiasaan Anda saat ini -baterai Anda berada dalam rentang operasi yang ideal.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Vermijd het langdurig op 100% lading (4,2 V) houden van de batterij.',
144
144
  recVoltageLow: 'Vermijd diepe ontladingen; cycli tussen 20% en 80% verdubbelen de levensduur van de batterij.',
145
145
  recSohLow: 'De capaciteit is onder de optimale standaard gezakt. Overweeg vervanging als de autonomie onvoldoende is.',
146
- recDefault: 'Houd uw huidige gewoonten aan uw batterij bevindt zich in een ideaal werkingsbereik.',
146
+ recDefault: 'Houd uw huidige gewoonten aan -uw batterij bevindt zich in een ideaal werkingsbereik.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Unikaj trzymania baterii naładowanej w 100% (4.2V) przez dłuższy czas.',
144
144
  recVoltageLow: 'Unikaj głębokich rozładowań; cykle między 20% a 80% podwajają żywotność baterii.',
145
145
  recSohLow: 'Pojemność spadła poniżej optymalnego standardu. Rozważ wymianę, jeśli czas pracy jest niewystarczający.',
146
- recDefault: 'Utrzymuj obecne nawyki Twoja bateria pracuje w idealnym zakresie.',
146
+ recDefault: 'Utrzymuj obecne nawyki -Twoja bateria pracuje w idealnym zakresie.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Evite manter a bateria com 100% de carga (4.2V) por períodos prolongados.',
144
144
  recVoltageLow: 'Evite descargas profundas; ciclos entre 20% e 80% duplicam a vida útil da bateria.',
145
145
  recSohLow: 'A capacidade caiu abaixo do padrão ideal. Considere uma substituição se a autonomia for insuficiente.',
146
- recDefault: 'Mantenha os seus hábitos atuais a sua bateria está numa gama de funcionamento ideal.',
146
+ recDefault: 'Mantenha os seus hábitos atuais -a sua bateria está numa gama de funcionamento ideal.',
147
147
  },
148
148
  };
@@ -22,12 +22,12 @@ const faqData = [
22
22
  {
23
23
  question: 'Как тепло влияет на срок службы батареи?',
24
24
  answer:
25
- 'Тепло враг номер один. На каждые 10 градусов повышения выше оптимальной температуры окружающей среды (25 градусов) скорость химической деградации примерно удваивается.',
25
+ 'Тепло -враг номер один. На каждые 10 градусов повышения выше оптимальной температуры окружающей среды (25 градусов) скорость химической деградации примерно удваивается.',
26
26
  },
27
27
  {
28
28
  question: 'Что такое полный цикл зарядки?',
29
29
  answer:
30
- 'Цикл это использование 100% емкости батареи, но это не обязательно должно происходить за один раз. Если вы используете 50% сегодня, зарядите ее и используете 50% завтра, вы завершите 1 полный цикл.',
30
+ 'Цикл -это использование 100% емкости батареи, но это не обязательно должно происходить за один раз. Если вы используете 50% сегодня, зарядите ее и используете 50% завтра, вы завершите 1 полный цикл.',
31
31
  },
32
32
  ];
33
33
 
@@ -96,14 +96,14 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
96
96
  { type: 'title', text: 'Химия времени: почему умирают литиевые батареи', level: 2 },
97
97
  {
98
98
  type: 'paragraph',
99
- html: 'Литий-ионный аккумулятор это не статичная коробка с энергией, а динамичная химическая экосистема, находящаяся в состоянии постоянной деградации с момента изготовления. Каждый цикл заряда и разряда, каждое колебание температуры и каждая минута при экстремальном напряжении способствуют образованию побочных продуктов, препятствующих потоку ионов.',
99
+ html: 'Литий-ионный аккумулятор -это не статичная коробка с энергией, а динамичная химическая экосистема, находящаяся в состоянии постоянной деградации с момента изготовления. Каждый цикл заряда и разряда, каждое колебание температуры и каждая минута при экстремальном напряжении способствуют образованию побочных продуктов, препятствующих потоку ионов.',
100
100
  },
101
101
  { type: 'title', text: 'Основные механизмы деградации', level: 3 },
102
102
  {
103
103
  type: 'paragraph',
104
104
  html: '<strong>Слой SEI:</strong> межфазный слой твердого электролита растет со временем, потребляя активный литий и увеличивая внутреннее сопротивление. <strong>Окисление электролита:</strong> напряжение выше 4,1 В ускоряет окисление и может привести к вздутию батареи. <strong>Lithium Plating:</strong> зарядка при низких температурах осаждает литий в металлической форме, создавая дендриты, которые могут проколоть сепаратор.',
105
105
  },
106
- { type: 'title', text: 'Миф о 100%: почему зарядка на ночь это ошибка', level: 3 },
106
+ { type: 'title', text: 'Миф о 100%: почему зарядка на ночь -это ошибка', level: 3 },
107
107
  {
108
108
  type: 'paragraph',
109
109
  html: 'Для иона лития пребывание при 100% заряде (4,2 В) является состоянием высокого стресса. Исследования показывают, что срок службы увеличивается в два или три раза, если держать устройство в диапазоне <strong>от 20% до 80%</strong>. Кроме того, на каждые 10°C выше 25°C скорость химической деградации примерно удваивается.',
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Избегайте длительного удержания аккумулятора при 100% заряде (4,2 В).',
144
144
  recVoltageLow: 'Избегайте глубоких разрядов; циклы между 20% и 80% удваивают срок службы.',
145
145
  recSohLow: 'Емкость упала ниже оптимального стандарта. Рассмотрите возможность замены, если автономности недостаточно.',
146
- recDefault: 'Придерживайтесь текущих привычек ваша батарея находится в идеальном рабочем диапазоне.',
146
+ recDefault: 'Придерживайтесь текущих привычек -ваша батарея находится в идеальном рабочем диапазоне.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Undvik att hålla batteriet vid 100 % laddning (4,2 V) under längre perioder.',
144
144
  recVoltageLow: 'Undvik djupa urladdningar; cykler mellan 20 % och 80 % fördubblar batteriets livslängd.',
145
145
  recSohLow: 'Kapaciteten har sjunkit under den optimala nivån. Överväg ett byte om batteritiden är otillräcklig.',
146
- recDefault: 'Behåll dina nuvarande vanor ditt batteri är i ett idealiskt driftintervall.',
146
+ recDefault: 'Behåll dina nuvarande vanor -ditt batteri är i ett idealiskt driftintervall.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: 'Pili uzun süre %100 şarjda (4.2V) tutmaktan kaçının.',
144
144
  recVoltageLow: 'Derin deşarjlardan kaçının; %20 ile %80 arasındaki döngüler pil ömrünü iki katına çıkarır.',
145
145
  recSohLow: 'Kapasite optimal standardın altına düştü. Otonomi yetersizse değişim yapmayı düşünün.',
146
- recDefault: 'Mevcut alışkanlıklarınızı koruyun piliniz ideal çalışma aralığında.',
146
+ recDefault: 'Mevcut alışkanlıklarınızı koruyun -piliniz ideal çalışma aralığında.',
147
147
  },
148
148
  };
@@ -143,6 +143,6 @@ export const content: ToolLocaleContent<EstimadorSaludBateriaUI> = {
143
143
  recVoltageHigh: '避免让电池长时间保持 100% 电量 (4.2V)。',
144
144
  recVoltageLow: '避免深度放电;将电量保持在 20% 到 80% 之间可使电池寿命翻倍。',
145
145
  recSohLow: '容量已降至最佳标准以下。如果续航不足,请考虑更换电池。',
146
- recDefault: '保持当前习惯 — 你的电池处于理想的工作范围内。',
146
+ recDefault: '保持当前习惯 -你的电池处于理想的工作范围内。',
147
147
  },
148
148
  };
@@ -0,0 +1,14 @@
1
+ ---
2
+ import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
+ import type { KnownLocale } from '../../types';
4
+ import { spectrumCanvas } from './index';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await spectrumCanvas.i18n[locale]?.();
12
+ ---
13
+
14
+ {content && content.bibliography.length > 0 && <SharedBibliography links={content.bibliography} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'CIE 1931 Color Space and Tristimulus Values',
6
+ url: 'https://en.wikipedia.org/wiki/CIE_1931_color_space',
7
+ },
8
+ {
9
+ name: 'sRGB: IEC 61966-2-1 Standard Color Space',
10
+ url: 'https://en.wikipedia.org/wiki/SRGB',
11
+ },
12
+ {
13
+ name: 'DCI-P3 Digital Cinema Initiatives Color Space',
14
+ url: 'https://en.wikipedia.org/wiki/DCI-P3',
15
+ }
16
+ ];