@jjlmoya/utils-social 1.13.0 → 1.14.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 (132) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +28 -12
  3. package/src/tests/locale_completeness.test.ts +4 -14
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/redditFormatter/bibliography.astro +2 -10
  7. package/src/tool/redditFormatter/bibliography.ts +12 -0
  8. package/src/tool/redditFormatter/i18n/de.ts +3 -13
  9. package/src/tool/redditFormatter/i18n/en.ts +3 -13
  10. package/src/tool/redditFormatter/i18n/es.ts +3 -13
  11. package/src/tool/redditFormatter/i18n/fr.ts +3 -13
  12. package/src/tool/redditFormatter/i18n/id.ts +3 -13
  13. package/src/tool/redditFormatter/i18n/it.ts +3 -13
  14. package/src/tool/redditFormatter/i18n/ja.ts +3 -13
  15. package/src/tool/redditFormatter/i18n/ko.ts +3 -13
  16. package/src/tool/redditFormatter/i18n/nl.ts +3 -13
  17. package/src/tool/redditFormatter/i18n/pl.ts +3 -13
  18. package/src/tool/redditFormatter/i18n/pt.ts +3 -13
  19. package/src/tool/redditFormatter/i18n/ru.ts +3 -13
  20. package/src/tool/redditFormatter/i18n/sv.ts +3 -13
  21. package/src/tool/redditFormatter/i18n/tr.ts +3 -13
  22. package/src/tool/redditFormatter/i18n/zh.ts +3 -13
  23. package/src/tool/redditFormatter/seo.astro +2 -1
  24. package/src/tool/safeZones/bibliography.astro +2 -10
  25. package/src/tool/safeZones/bibliography.ts +20 -0
  26. package/src/tool/safeZones/i18n/de.ts +3 -21
  27. package/src/tool/safeZones/i18n/en.ts +3 -21
  28. package/src/tool/safeZones/i18n/es.ts +3 -21
  29. package/src/tool/safeZones/i18n/fr.ts +3 -21
  30. package/src/tool/safeZones/i18n/id.ts +3 -21
  31. package/src/tool/safeZones/i18n/it.ts +3 -21
  32. package/src/tool/safeZones/i18n/ja.ts +3 -21
  33. package/src/tool/safeZones/i18n/ko.ts +3 -21
  34. package/src/tool/safeZones/i18n/nl.ts +3 -21
  35. package/src/tool/safeZones/i18n/pl.ts +3 -21
  36. package/src/tool/safeZones/i18n/pt.ts +3 -21
  37. package/src/tool/safeZones/i18n/ru.ts +3 -21
  38. package/src/tool/safeZones/i18n/sv.ts +3 -21
  39. package/src/tool/safeZones/i18n/tr.ts +3 -21
  40. package/src/tool/safeZones/i18n/zh.ts +3 -21
  41. package/src/tool/safeZones/seo.astro +2 -1
  42. package/src/tool/socialImageResizer/bibliography.astro +2 -10
  43. package/src/tool/socialImageResizer/bibliography.ts +12 -0
  44. package/src/tool/socialImageResizer/i18n/de.ts +3 -13
  45. package/src/tool/socialImageResizer/i18n/en.ts +3 -13
  46. package/src/tool/socialImageResizer/i18n/es.ts +3 -13
  47. package/src/tool/socialImageResizer/i18n/fr.ts +3 -13
  48. package/src/tool/socialImageResizer/i18n/id.ts +3 -13
  49. package/src/tool/socialImageResizer/i18n/it.ts +3 -13
  50. package/src/tool/socialImageResizer/i18n/ja.ts +3 -13
  51. package/src/tool/socialImageResizer/i18n/ko.ts +3 -13
  52. package/src/tool/socialImageResizer/i18n/nl.ts +3 -13
  53. package/src/tool/socialImageResizer/i18n/pl.ts +3 -13
  54. package/src/tool/socialImageResizer/i18n/pt.ts +3 -13
  55. package/src/tool/socialImageResizer/i18n/ru.ts +3 -13
  56. package/src/tool/socialImageResizer/i18n/sv.ts +3 -13
  57. package/src/tool/socialImageResizer/i18n/tr.ts +3 -13
  58. package/src/tool/socialImageResizer/i18n/zh.ts +3 -13
  59. package/src/tool/socialImageResizer/seo.astro +2 -1
  60. package/src/tool/socialValueCalculator/bibliography.astro +2 -10
  61. package/src/tool/socialValueCalculator/bibliography.ts +16 -0
  62. package/src/tool/socialValueCalculator/i18n/de.ts +3 -17
  63. package/src/tool/socialValueCalculator/i18n/en.ts +3 -17
  64. package/src/tool/socialValueCalculator/i18n/es.ts +3 -17
  65. package/src/tool/socialValueCalculator/i18n/fr.ts +3 -17
  66. package/src/tool/socialValueCalculator/i18n/id.ts +3 -17
  67. package/src/tool/socialValueCalculator/i18n/it.ts +3 -17
  68. package/src/tool/socialValueCalculator/i18n/ja.ts +3 -17
  69. package/src/tool/socialValueCalculator/i18n/ko.ts +3 -17
  70. package/src/tool/socialValueCalculator/i18n/nl.ts +3 -17
  71. package/src/tool/socialValueCalculator/i18n/pl.ts +3 -17
  72. package/src/tool/socialValueCalculator/i18n/pt.ts +3 -17
  73. package/src/tool/socialValueCalculator/i18n/ru.ts +3 -17
  74. package/src/tool/socialValueCalculator/i18n/sv.ts +3 -17
  75. package/src/tool/socialValueCalculator/i18n/tr.ts +3 -17
  76. package/src/tool/socialValueCalculator/i18n/zh.ts +3 -17
  77. package/src/tool/socialValueCalculator/seo.astro +2 -1
  78. package/src/tool/tinderPhotoOptimizer/bibliography.astro +2 -10
  79. package/src/tool/tinderPhotoOptimizer/bibliography.ts +12 -0
  80. package/src/tool/tinderPhotoOptimizer/i18n/de.ts +3 -13
  81. package/src/tool/tinderPhotoOptimizer/i18n/en.ts +3 -13
  82. package/src/tool/tinderPhotoOptimizer/i18n/es.ts +3 -13
  83. package/src/tool/tinderPhotoOptimizer/i18n/fr.ts +3 -13
  84. package/src/tool/tinderPhotoOptimizer/i18n/id.ts +3 -13
  85. package/src/tool/tinderPhotoOptimizer/i18n/it.ts +3 -13
  86. package/src/tool/tinderPhotoOptimizer/i18n/ja.ts +3 -13
  87. package/src/tool/tinderPhotoOptimizer/i18n/ko.ts +3 -13
  88. package/src/tool/tinderPhotoOptimizer/i18n/nl.ts +3 -13
  89. package/src/tool/tinderPhotoOptimizer/i18n/pl.ts +3 -13
  90. package/src/tool/tinderPhotoOptimizer/i18n/pt.ts +3 -13
  91. package/src/tool/tinderPhotoOptimizer/i18n/ru.ts +3 -13
  92. package/src/tool/tinderPhotoOptimizer/i18n/sv.ts +3 -13
  93. package/src/tool/tinderPhotoOptimizer/i18n/tr.ts +3 -13
  94. package/src/tool/tinderPhotoOptimizer/i18n/zh.ts +3 -13
  95. package/src/tool/tinderPhotoOptimizer/seo.astro +2 -1
  96. package/src/tool/youtubeThumbnail/bibliography.astro +2 -10
  97. package/src/tool/youtubeThumbnail/bibliography.ts +16 -0
  98. package/src/tool/youtubeThumbnail/i18n/de.ts +3 -17
  99. package/src/tool/youtubeThumbnail/i18n/en.ts +3 -17
  100. package/src/tool/youtubeThumbnail/i18n/es.ts +3 -17
  101. package/src/tool/youtubeThumbnail/i18n/fr.ts +3 -17
  102. package/src/tool/youtubeThumbnail/i18n/id.ts +3 -17
  103. package/src/tool/youtubeThumbnail/i18n/it.ts +3 -17
  104. package/src/tool/youtubeThumbnail/i18n/ja.ts +3 -17
  105. package/src/tool/youtubeThumbnail/i18n/ko.ts +3 -17
  106. package/src/tool/youtubeThumbnail/i18n/nl.ts +3 -17
  107. package/src/tool/youtubeThumbnail/i18n/pl.ts +3 -17
  108. package/src/tool/youtubeThumbnail/i18n/pt.ts +3 -17
  109. package/src/tool/youtubeThumbnail/i18n/ru.ts +3 -17
  110. package/src/tool/youtubeThumbnail/i18n/sv.ts +3 -17
  111. package/src/tool/youtubeThumbnail/i18n/tr.ts +3 -17
  112. package/src/tool/youtubeThumbnail/i18n/zh.ts +3 -17
  113. package/src/tool/youtubeThumbnail/seo.astro +2 -1
  114. package/src/tool/youtubeThumbnailPreviewer/bibliography.astro +2 -10
  115. package/src/tool/youtubeThumbnailPreviewer/bibliography.ts +16 -0
  116. package/src/tool/youtubeThumbnailPreviewer/i18n/de.ts +3 -17
  117. package/src/tool/youtubeThumbnailPreviewer/i18n/en.ts +3 -17
  118. package/src/tool/youtubeThumbnailPreviewer/i18n/es.ts +3 -17
  119. package/src/tool/youtubeThumbnailPreviewer/i18n/fr.ts +3 -17
  120. package/src/tool/youtubeThumbnailPreviewer/i18n/id.ts +3 -17
  121. package/src/tool/youtubeThumbnailPreviewer/i18n/it.ts +3 -17
  122. package/src/tool/youtubeThumbnailPreviewer/i18n/ja.ts +3 -17
  123. package/src/tool/youtubeThumbnailPreviewer/i18n/ko.ts +3 -17
  124. package/src/tool/youtubeThumbnailPreviewer/i18n/nl.ts +3 -17
  125. package/src/tool/youtubeThumbnailPreviewer/i18n/pl.ts +3 -17
  126. package/src/tool/youtubeThumbnailPreviewer/i18n/pt.ts +3 -17
  127. package/src/tool/youtubeThumbnailPreviewer/i18n/ru.ts +3 -17
  128. package/src/tool/youtubeThumbnailPreviewer/i18n/sv.ts +3 -17
  129. package/src/tool/youtubeThumbnailPreviewer/i18n/tr.ts +3 -17
  130. package/src/tool/youtubeThumbnailPreviewer/i18n/zh.ts +3 -17
  131. package/src/tool/youtubeThumbnailPreviewer/seo.astro +2 -1
  132. package/src/types.ts +0 -2
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TinderPhotoOptimizerUI } from '../ui';
@@ -87,19 +88,8 @@ export const content: ToolLocaleContent<TinderPhotoOptimizerUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '常见问题',
91
- faq: faqData,
92
- bibliographyTitle: '参考文献',
93
- bibliography: [
94
- {
95
- name: 'face-api.js: JavaScript Face Recognition in the Browser',
96
- url: 'https://github.com/justadudewhohacks/face-api.js',
97
- },
98
- {
99
- name: 'MDN Web Docs: Canvas API',
100
- url: 'https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API',
101
- },
102
- ],
91
+ faq: faqData,
92
+ bibliography,
103
93
  howTo: howToData,
104
94
  schemas: [faqSchema, howToSchema, appSchema],
105
95
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await tinderPhotoOptimizer.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { youtubeThumbnail } 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 youtubeThumbnail.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'YouTube Help: Add a custom video thumbnail',
6
+ url: 'https://support.google.com/youtube/answer/72431',
7
+ },
8
+ {
9
+ name: 'YouTube Creator Academy: Make great thumbnails',
10
+ url: 'https://creatoracademy.youtube.com/',
11
+ },
12
+ {
13
+ name: 'Google Developers: YouTube Data API — Thumbnails',
14
+ url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
15
+ },
16
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Häufig gestellte Fragen',
91
- faq: faqData,
92
- bibliographyTitle: 'Dokumentation & Referenzen',
93
- bibliography: [
94
- {
95
- name: 'YouTube-Hilfe: Ein benutzerdefiniertes Video-Thumbnail hinzufügen',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Großartige Thumbnails erstellen',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Frequently Asked Questions',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentation & References',
93
- bibliography: [
94
- {
95
- name: 'YouTube Help: Add a custom video thumbnail',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Make great thumbnails',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Preguntas Frecuentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentación y Referencias',
93
- bibliography: [
94
- {
95
- name: 'YouTube Help: Añadir una imagen en miniatura personalizada',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Cómo crear miniaturas efectivas',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Questions Fréquentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentation et Références',
93
- bibliography: [
94
- {
95
- name: 'YouTube Aide : Ajouter une miniature personnalisée',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy : Créer de bonnes miniatures',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers : YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Pertanyaan yang Sering Diajukan',
91
- faq: faqData,
92
- bibliographyTitle: 'Dokumentation dan Referensi',
93
- bibliography: [
94
- {
95
- name: 'Bantuan YouTube: Menambahkan gambar thumbnail kustom',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Cara membuat thumbnail yang efektif',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Domande Frequenti',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentazione e Riferimenti',
93
- bibliography: [
94
- {
95
- name: 'Guida di YouTube: Aggiungere un\'immagine in miniatura personalizzata',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Come creare miniature efficaci',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'よくある質問',
91
- faq: faqData,
92
- bibliographyTitle: 'ドキュメントと参照先',
93
- bibliography: [
94
- {
95
- name: 'YouTube ヘルプ: 動画のカスタム サムネイルを追加する',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube クリエイター アカデミー: 効果的なサムネイルの作成',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '자주 묻는 질문',
91
- faq: faqData,
92
- bibliographyTitle: '참고 자료 및 문서',
93
- bibliography: [
94
- {
95
- name: 'YouTube 고객센터: 맞춤 동영상 썸네일 만들기',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube 크리에이터 아카데미: 효과적인 썸네일 제작법',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Veelgestelde Vragen',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentatie en Referenties',
93
- bibliography: [
94
- {
95
- name: 'YouTube Help: Een aangepaste miniatuurafbeelding toevoegen',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Hoe maak je effectieve thumbnails',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Często zadawane pytania',
91
- faq: faqData,
92
- bibliographyTitle: 'Dokumentacja i źródła',
93
- bibliography: [
94
- {
95
- name: 'Pomoc YouTube: Dodawanie niestandardowej miniatury filmu',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Jak tworzyć skuteczne miniaturki',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Perguntas Frequentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentação e Referências',
93
- bibliography: [
94
- {
95
- name: 'Ajuda do YouTube: Adicionar uma imagem em miniatura personalizada',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Como criar miniaturas eficazes',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Часто задаваемые вопросы',
91
- faq: faqData,
92
- bibliographyTitle: 'Документация и источники',
93
- bibliography: [
94
- {
95
- name: 'Справка YouTube: Как добавить персонализированный значок видео',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Как создавать эффектные значки',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Vanliga frågor',
91
- faq: faqData,
92
- bibliographyTitle: 'Dokumentation och referenser',
93
- bibliography: [
94
- {
95
- name: 'YouTube-hjälp: Lägg till en anpassad videominiatyr',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Så skapar du effektiva miniatyrer',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Sıkça Sorulan Sorular',
91
- faq: faqData,
92
- bibliographyTitle: 'Dökümantasyon ve Referanslar',
93
- bibliography: [
94
- {
95
- name: 'YouTube Yardımı: Özel video küçük resmi ekleme',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube Creator Academy: Etkili küçük resimler nasıl oluşturulur',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '常见问题',
91
- faq: faqData,
92
- bibliographyTitle: '文档与参考资料',
93
- bibliography: [
94
- {
95
- name: 'YouTube 帮助:添加自定义视频缩略图',
96
- url: 'https://support.google.com/youtube/answer/72431',
97
- },
98
- {
99
- name: 'YouTube 创作者学院:如何制作高效的缩略图',
100
- url: 'https://creatoracademy.youtube.com/',
101
- },
102
- {
103
- name: 'Google Developers: YouTube Data API — Thumbnails',
104
- url: 'https://developers.google.com/youtube/v3/docs/thumbnails',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await youtubeThumbnail.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { youtubeThumbnailPreviewer } 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 youtubeThumbnailPreviewer.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'YouTube Help: Create custom video thumbnails',
6
+ url: 'https://support.google.com/youtube/answer/141805',
7
+ },
8
+ {
9
+ name: 'Nielsen Norman Group: Visual Processing and UX Design',
10
+ url: 'https://www.nngroup.com/articles/visual-processing/',
11
+ },
12
+ {
13
+ name: 'Derral Eves: The YouTube Formula (Thumbnail Strategy)',
14
+ url: 'https://derraleves.com/the-youtube-formula/',
15
+ },
16
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailPreviewerUI } from '../ui';
@@ -92,23 +93,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailPreviewerUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: 'Häufig gestellte Fragen',
96
- faq: faqData,
97
- bibliographyTitle: 'Referenzen',
98
- bibliography: [
99
- {
100
- name: 'YouTube-Hilfe: Eigene Video-Thumbnails erstellen',
101
- url: 'https://support.google.com/youtube/answer/141805',
102
- },
103
- {
104
- name: 'Nielsen Norman Group: Visuelle Verarbeitung und UX-Design',
105
- url: 'https://www.nngroup.com/articles/visual-processing/',
106
- },
107
- {
108
- name: 'Derral Eves: Die YouTube-Formel (Thumbnail-Strategie)',
109
- url: 'https://derraleves.com/the-youtube-formula/',
110
- },
111
- ],
96
+ faq: faqData,
97
+ bibliography,
112
98
  howTo: howToData,
113
99
  schemas: [faqSchema, howToSchema, appSchema],
114
100
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { YoutubeThumbnailPreviewerUI } from '../ui';
@@ -92,23 +93,8 @@ export const content: ToolLocaleContent<YoutubeThumbnailPreviewerUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: 'Frequently Asked Questions',
96
- faq: faqData,
97
- bibliographyTitle: 'References',
98
- bibliography: [
99
- {
100
- name: 'YouTube Help: Create custom video thumbnails',
101
- url: 'https://support.google.com/youtube/answer/141805',
102
- },
103
- {
104
- name: 'Nielsen Norman Group: Visual Processing and UX Design',
105
- url: 'https://www.nngroup.com/articles/visual-processing/',
106
- },
107
- {
108
- name: 'Derral Eves: The YouTube Formula (Thumbnail Strategy)',
109
- url: 'https://derraleves.com/the-youtube-formula/',
110
- },
111
- ],
96
+ faq: faqData,
97
+ bibliography,
112
98
  howTo: howToData,
113
99
  schemas: [faqSchema, howToSchema, appSchema],
114
100
  seo: [