@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,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { safeZones } 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 safeZones.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,20 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'TikTok Creator Portal: Video optimization and safe zones',
6
+ url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
7
+ },
8
+ {
9
+ name: 'Instagram Business: Best practices for Reels',
10
+ url: 'https://business.instagram.com/creators/reels-best-practices',
11
+ },
12
+ {
13
+ name: 'YouTube Help: Create YouTube Shorts',
14
+ url: 'https://support.google.com/youtube/answer/10343433',
15
+ },
16
+ {
17
+ name: 'Meta for Creators: Safe zones and aspect ratios for video',
18
+ url: 'https://www.facebook.com/business/help/103816146375741',
19
+ },
20
+ ];
@@ -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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Häufig gestellte Fragen',
91
- faq: faqData,
92
- bibliographyTitle: 'Offizielle Plattform-Dokumentation',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video-Optimierung und Safe Zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best Practices für Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Hilfe: YouTube Shorts erstellen',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Safe Zones und Seitenverhältnisse für Videos',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Frequently Asked Questions',
91
- faq: faqData,
92
- bibliographyTitle: 'Official Platform Documentation',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video optimization and safe zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practices for Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Help: Create YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Safe zones and aspect ratios for video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Preguntas Frecuentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentación Oficial de Plataformas',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video optimization and safe zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practices for Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Help: Create YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Safe zones and aspect ratios for video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Questions Fréquentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentation Officielle des Plateformes',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video optimization and safe zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practices for Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Help: Create YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Safe zones and aspect ratios for video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Pertanyaan yang Sering Diajukan',
91
- faq: faqData,
92
- bibliographyTitle: 'Dokumentasi Platform Resmi',
93
- bibliography: [
94
- {
95
- name: 'Portal Kreator TikTok: Optimasi video dan zona aman',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Praktik terbaik untuk Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'Bantuan YouTube: Membuat YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Zona aman dan rasio aspek untuk video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Domande Frequenti',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentazione Ufficiale delle Piattaforme',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Ottimizzazione video e zone sicure',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practice per i Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'Guida di YouTube: Creare YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Zone sicure e rapporti d’aspetto per i video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'よくある質問',
91
- faq: faqData,
92
- bibliographyTitle: '公式プラットフォームドキュメント',
93
- bibliography: [
94
- {
95
- name: 'TikTokクリエイターポータル:動画の最適化とセーフゾーン',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business:リールのベストプラクティス',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTubeヘルプ:YouTube Shortsを作成する',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators:動画のセーフゾーンとアスペクト比',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '자주 묻는 질문',
91
- faq: faqData,
92
- bibliographyTitle: '공식 플랫폼 문서',
93
- bibliography: [
94
- {
95
- name: '틱톡 크리에이터 포털: 동영상 최적화 및 세이프 존',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: '인스타그램 비즈니스: 릴스를 위한 모범 사례',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: '유튜브 고객센터: 유튜브 쇼츠 만들기',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: '메타 크리에이터: 동영상의 세이프 존 및 화면비',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Veelgestelde Vragen',
91
- faq: faqData,
92
- bibliographyTitle: 'Officiële Platform Documentatie',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video optimization and safe zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practices voor Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Help: YouTube Shorts maken',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Veilige zones en aspectratio\'s voor video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Często Zadawane Pytania',
91
- faq: faqData,
92
- bibliographyTitle: 'Oficjalna dokumentacja platformy',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Video optimization and safe zones',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Najlepsze praktyki dla Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'Pomoc YouTube: Tworzenie YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Strefy bezpieczne i proporcje wideo',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Perguntas Frequentes',
91
- faq: faqData,
92
- bibliographyTitle: 'Documentação Oficial das Plataformas',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Otimização de vídeo e zonas seguras',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Melhores práticas para Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'Ajuda do YouTube: Criar YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Zonas seguras e proporções para vídeo',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Часто задаваемые вопросы',
91
- faq: faqData,
92
- bibliographyTitle: 'Официальная документация платформы',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: оптимизация видео и безопасные зоны',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: рекомендации для Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'Справка YouTube: создание YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: безопасные зоны и соотношение сторон для видео',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Vanliga frågor',
91
- faq: faqData,
92
- bibliographyTitle: 'Officiell plattformsdokumentation',
93
- bibliography: [
94
- {
95
- name: 'TikTok Creator Portal: Videooptimering och säkra zoner',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Best practices för Reels',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Help: Skapa YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Säkra zoner och bildförhållanden för video',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Sıkça Sorulan Sorular',
91
- faq: faqData,
92
- bibliographyTitle: 'Resmi Platform Dokümantasyonu',
93
- bibliography: [
94
- {
95
- name: 'TikTok İçerik Üretici Portalı: Video optimizasyonu ve güvenli bölgeler',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram Business: Reels için en iyi uygulamalar',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube Yardımı: YouTube Shorts oluşturma',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators: Videolar için güvenli bölgeler ve en boy oranları',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
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 { SafeZonesUI } from '../ui';
@@ -87,27 +88,8 @@ export const content: ToolLocaleContent<SafeZonesUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '常见问题',
91
- faq: faqData,
92
- bibliographyTitle: '官方平台文档',
93
- bibliography: [
94
- {
95
- name: 'TikTok 创作者门户:视频优化和安全区域',
96
- url: 'https://www.tiktok.com/creators/creator-portal/en-us/foundation/video-optimization/',
97
- },
98
- {
99
- name: 'Instagram 业务:Reels 最佳实践',
100
- url: 'https://business.instagram.com/creators/reels-best-practices',
101
- },
102
- {
103
- name: 'YouTube 帮助:创建 YouTube Shorts',
104
- url: 'https://support.google.com/youtube/answer/10343433',
105
- },
106
- {
107
- name: 'Meta for Creators:视频安全区域和纵横比',
108
- url: 'https://www.facebook.com/business/help/103816146375741',
109
- },
110
- ],
91
+ faq: faqData,
92
+ bibliography,
111
93
  howTo: howToData,
112
94
  schemas: [faqSchema, howToSchema, appSchema],
113
95
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await safeZones.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 { socialImageResizer } 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 socialImageResizer.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'MDN Web Docs: Canvas API',
6
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
7
+ },
8
+ {
9
+ name: 'Sprout Social: Social Media Image Sizes Guide 2026',
10
+ url: 'https://sproutsocial.com/insights/social-media-image-sizes-guide/',
11
+ },
12
+ ];
@@ -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: 'Häufig gestellte Fragen',
82
- faq: faqData,
83
- bibliographyTitle: 'Referenzen',
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: 'Frequently Asked Questions',
82
- faq: faqData,
83
- bibliographyTitle: 'References',
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: [