@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, HowToThing, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Preguntas Frecuentes',
82
- faq: faqData,
83
- bibliographyTitle: 'Referencias',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/es/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Social Media Image Sizes Guide 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Questions Fréquentes',
82
- faq: faqData,
83
- bibliographyTitle: 'Références',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/fr/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Social Media Image Sizes Guide 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Pertanyaan yang Sering Diajukan',
82
- faq: faqData,
83
- bibliographyTitle: 'Referensi',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Panduan Ukuran Gambar Media Sosial 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Domande Frequenti',
82
- faq: faqData,
83
- bibliographyTitle: 'Riferimenti',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Social Media Image Sizes Guide 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'よくある質問',
82
- faq: faqData,
83
- bibliographyTitle: '参考文献',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: 2026年ソーシャルメディア画像サイズガイド',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: '자주 묻는 질문',
82
- faq: faqData,
83
- bibliographyTitle: '참고 자료',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: 2026년 소셜 미디어 이미지 크기 가이드',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Veelgestelde Vragen',
82
- faq: faqData,
83
- bibliographyTitle: 'Referenties',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Social Media Image Sizes Guide 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Często Zadawane Pytania',
82
- faq: faqData,
83
- bibliographyTitle: 'Źródła',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Przewodnik po rozmiarach zdjęć w social media 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Perguntas Frequentes',
82
- faq: faqData,
83
- bibliographyTitle: 'Referências',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Guia de Tamanhos de Imagem para Redes Sociais 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Часто задаваемые вопросы',
82
- faq: faqData,
83
- bibliographyTitle: 'Источники',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: руководство по размерам изображений для соцсетей 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Vanliga frågor',
82
- faq: faqData,
83
- bibliographyTitle: 'Referenser',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Guide för bildstorlekar på sociala medier 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: 'Sıkça Sorulan Sorular',
82
- faq: faqData,
83
- bibliographyTitle: 'Referanslar',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: Sosyal Medya Resim Boyutları Kılavuzu 2026',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  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 { SocialImageResizerUI } from '../ui';
@@ -78,19 +79,8 @@ export const content: ToolLocaleContent<SocialImageResizerUI> = {
78
79
  slug,
79
80
  title,
80
81
  description,
81
- faqTitle: '常见问题',
82
- faq: faqData,
83
- bibliographyTitle: '参考资料',
84
- bibliography: [
85
- {
86
- name: 'MDN Web Docs: Canvas API',
87
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
88
- },
89
- {
90
- name: 'Sprout Social: 2026 社交媒体图像尺寸指南',
91
- url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
92
- },
93
- ],
82
+ faq: faqData,
83
+ bibliography,
94
84
  howTo: howToData,
95
85
  schemas: [faqSchema, howToSchema, appSchema],
96
86
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await socialImageResizer.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 { socialValueCalculator } 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 socialValueCalculator.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: 'Influencer Marketing Hub: Influencer Rates 2026',
6
+ url: 'https://influencermarketinghub.com/influencer-rates/',
7
+ },
8
+ {
9
+ name: 'HypeAuditor: TikTok & Instagram Engagement Report',
10
+ url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
11
+ },
12
+ {
13
+ name: 'Social Blade: Social Media Statistics',
14
+ url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Häufig gestellte Fragen',
91
- faq: faqData,
92
- bibliographyTitle: 'Quellen & Marktstudien',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: TikTok & Instagram Engagement Report',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Social Media Statistiken',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Frequently Asked Questions',
91
- faq: faqData,
92
- bibliographyTitle: 'Sources & Market Studies',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: TikTok & Instagram Engagement Report',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Social Media Statistics',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Preguntas Frecuentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Fuentes y Estudios de Mercado',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: Reporte de Engagement en TikTok e Instagram',
100
- url: 'https://hypeauditor.com/es/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Estadísticas de Redes Sociales',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Questions Fréquentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Sources et Études de Marché',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: "HypeAuditor: Rapport d'engagement TikTok & Instagram",
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Statistiques des réseaux sociaux',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Pertanyaan yang Sering Diajukan',
91
- faq: faqData,
92
- bibliographyTitle: 'Sumber & Studi Pasar',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: Laporan Keterlibatan TikTok & Instagram',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Statistik Media Sosial',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Domande Frequenti',
91
- faq: faqData,
92
- bibliographyTitle: 'Fonti e Studi di Mercato',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: Influencer Rates 2026',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: Rapporto Engagement TikTok e Instagram',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: Statistiche Social Media',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'よくある質問',
91
- faq: faqData,
92
- bibliographyTitle: '出典&市場調査',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: 2026年インフルエンサー料金',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: TikTok&Instagram エンゲージメントレポート',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: ソーシャルメディア統計',
104
- url: 'https://socialblade.com/',
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 { SocialValueCalculatorUI } from '../ui';
@@ -87,23 +88,8 @@ export const content: ToolLocaleContent<SocialValueCalculatorUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '자주 묻는 질문',
91
- faq: faqData,
92
- bibliographyTitle: '출처 및 시장 조사',
93
- bibliography: [
94
- {
95
- name: 'Influencer Marketing Hub: 2026년 인플루언서 단가',
96
- url: 'https://influencermarketinghub.com/influencer-rates/',
97
- },
98
- {
99
- name: 'HypeAuditor: 틱톡 및 인스타그램 참여도 리포트',
100
- url: 'https://hypeauditor.com/free-tools/tiktok-engagement-calculator/',
101
- },
102
- {
103
- name: 'Social Blade: 소셜 미디어 통계',
104
- url: 'https://socialblade.com/',
105
- },
106
- ],
91
+ faq: faqData,
92
+ bibliography,
107
93
  howTo: howToData,
108
94
  schemas: [faqSchema, howToSchema, appSchema],
109
95
  seo: [