@jjlmoya/utils-converters 1.24.0 → 1.26.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 (134) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +1 -1
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/fr.ts +1 -1
  5. package/src/category/i18n/id.ts +1 -1
  6. package/src/category/i18n/it.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/sv.ts +1 -1
  11. package/src/entries.ts +6 -0
  12. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  13. package/src/tests/category_seo_quality.test.ts +74 -0
  14. package/src/tests/faq_count.test.ts +1 -1
  15. package/src/tests/no_h1_in_components.test.ts +1 -1
  16. package/src/tests/seo_parity.test.ts +2 -2
  17. package/src/tests/seo_wellformed_export.test.ts +65 -0
  18. package/src/tests/tool_validation.test.ts +15 -15
  19. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  22. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  24. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  25. package/src/tool/avifAJpg/seo.astro +15 -15
  26. package/src/tool/avifAPng/i18n/en.ts +164 -164
  27. package/src/tool/avifAPng/i18n/es.ts +164 -164
  28. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  29. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  30. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  31. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  32. package/src/tool/avifAPng/seo.astro +15 -15
  33. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  36. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  38. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  39. package/src/tool/avifAWebp/seo.astro +15 -15
  40. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  43. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  45. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  46. package/src/tool/bmpAJpg/seo.astro +15 -15
  47. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  50. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  52. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  53. package/src/tool/bmpAPng/seo.astro +15 -15
  54. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  57. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  59. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  60. package/src/tool/bmpAWebp/seo.astro +15 -15
  61. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  64. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  66. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  67. package/src/tool/gifAJpg/seo.astro +15 -15
  68. package/src/tool/gifAPng/i18n/en.ts +164 -164
  69. package/src/tool/gifAPng/i18n/es.ts +164 -164
  70. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  71. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  72. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  73. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  74. package/src/tool/gifAPng/seo.astro +15 -15
  75. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  78. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  80. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  81. package/src/tool/gifAWebp/seo.astro +15 -15
  82. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  84. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  85. package/src/tool/imagenBase64/seo.astro +15 -15
  86. package/src/tool/jpgAIco/seo.astro +15 -15
  87. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  90. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  92. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  93. package/src/tool/jpgAPng/seo.astro +15 -15
  94. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  96. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  97. package/src/tool/jpgAWebp/seo.astro +15 -15
  98. package/src/tool/pngAIco/seo.astro +15 -15
  99. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  100. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  101. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  102. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  104. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  105. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  106. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  108. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  109. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  110. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  111. package/src/tool/pngAJpg/seo.astro +15 -15
  112. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  114. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  115. package/src/tool/pngAWebp/seo.astro +15 -15
  116. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  117. package/src/tool/svgAJpg/seo.astro +15 -15
  118. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  119. package/src/tool/svgAPng/seo.astro +15 -15
  120. package/src/tool/webpAIco/seo.astro +15 -15
  121. package/src/tool/webpAJpg/seo.astro +15 -15
  122. package/src/tool/webpAPng/bibliography.ts +13 -13
  123. package/src/tool/webpAPng/i18n/de.ts +166 -166
  124. package/src/tool/webpAPng/i18n/es.ts +171 -171
  125. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  126. package/src/tool/webpAPng/i18n/id.ts +166 -166
  127. package/src/tool/webpAPng/i18n/it.ts +166 -166
  128. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  130. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  131. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  132. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  133. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  134. package/src/tool/webpAPng/seo.astro +15 -15
@@ -1,181 +1,181 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
3
  import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { PngAJpgLocaleContent } from '../index';
5
-
6
- const slug = 'convertisseur-png-en-jpg';
7
- const title = 'Convertir PNG en JPG en Ligne';
8
- const description =
9
- 'Convertissez des images PNG en JPG directement dans votre navigateur. Sans téléchargement vers des serveurs. Rapide, gratuit et totalement privé.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Faites glisser des fichiers PNG...',
13
- convertText: 'Pour les convertir en JPG instantanément',
14
- selectFiles: 'Sélectionner des fichiers',
15
- processedFiles: 'Fichiers traités',
16
- downloadAll: 'Tout télécharger (.zip)',
4
+ import type { PngAJpgLocaleContent } from '../index';
5
+
6
+ const slug = 'convertisseur-png-en-jpg';
7
+ const title = 'Convertir PNG en JPG en Ligne';
8
+ const description =
9
+ 'Convertissez des images PNG en JPG directement dans votre navigateur. Sans téléchargement vers des serveurs. Rapide, gratuit et totalement privé.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Faites glisser des fichiers PNG...',
13
+ convertText: 'Pour les convertir en JPG instantanément',
14
+ selectFiles: 'Sélectionner des fichiers',
15
+ processedFiles: 'Fichiers traités',
16
+ downloadAll: 'Tout télécharger (.zip)',
17
17
  pending: 'En attente',
18
- bibliographyTitle: 'Références Bibliographiques',
19
- faqTitle: 'Questions Fréquentes',
20
- };
21
-
22
- const faq: PngAJpgLocaleContent['faq'] = [
23
- {
18
+ bibliographyTitle: 'Références Bibliographiques',
19
+ faqTitle: 'Questions Fréquentes',
20
+ };
21
+
22
+ const faq: PngAJpgLocaleContent['faq'] = [
23
+ {
24
24
  question: 'Pourquoi choisir notre convertisseur local PNG vers JPG ?',
25
- answer:
25
+ answer:
26
26
  'Contrairement aux services classiques, cet outil traite les fichiers entièrement dans le navigateur. Vos images ne touchent jamais un disque distant: vous gardez le contrôle et la confidentialité de vos données.',
27
- },
28
- {
27
+ },
28
+ {
29
29
  question: 'JPG ou PNG: quel format choisir ?',
30
- answer:
30
+ answer:
31
31
  'Le PNG convient aux logos et aux éléments transparents. Le JPG est préférable pour les photos et les bannières web, car ses fichiers sont bien plus légers et accélèrent le chargement des pages.',
32
- },
33
- {
32
+ },
33
+ {
34
34
  question: 'Comment convertir une image sans rien envoyer ?',
35
- answer:
35
+ answer:
36
36
  "Nous utilisons le Canvas HTML5. Le navigateur recrée l'image dans une zone virtuelle invisible, remplit la transparence en blanc et produit directement les octets JPEG à télécharger.",
37
- },
38
- {
37
+ },
38
+ {
39
39
  question: 'Est-ce sûr pour des documents confidentiels ?',
40
- answer:
40
+ answer:
41
41
  "Oui. Pour la banque, la santé ou le droit, il est préférable de ne pas envoyer les images à un service externe: le traitement reste dans la RAM et s'arrête à la fermeture de l'onglet.",
42
- },
43
- ];
44
-
45
- const howTo: PngAJpgLocaleContent['howTo'] = [
46
- {
47
- name: 'Glisser les fichiers PNG',
48
- text: 'Envoyez vos images PNG statiques dans la zone de traitement local en les déposant là.',
49
- },
50
- {
51
- name: 'Re-rendu blanc',
52
- text: 'Chaque photo adapte automatiquement sa transparence avec une couche blanche sous-jacente pour la rendre compatible avec l\'environnement JPG.',
53
- },
54
- {
55
- name: 'Export direct',
56
- text: 'Cliquez sur les icônes de téléchargement vertes et sauvegardez vos nouveaux fichiers JPG.',
57
- },
58
- ];
59
-
60
- const seo: PngAJpgLocaleContent['seo'] = [
61
- {
62
- type: 'title',
42
+ },
43
+ ];
44
+
45
+ const howTo: PngAJpgLocaleContent['howTo'] = [
46
+ {
47
+ name: 'Glisser les fichiers PNG',
48
+ text: 'Envoyez vos images PNG statiques dans la zone de traitement local en les déposant là.',
49
+ },
50
+ {
51
+ name: 'Re-rendu blanc',
52
+ text: 'Chaque photo adapte automatiquement sa transparence avec une couche blanche sous-jacente pour la rendre compatible avec l\'environnement JPG.',
53
+ },
54
+ {
55
+ name: 'Export direct',
56
+ text: 'Cliquez sur les icônes de téléchargement vertes et sauvegardez vos nouveaux fichiers JPG.',
57
+ },
58
+ ];
59
+
60
+ const seo: PngAJpgLocaleContent['seo'] = [
61
+ {
62
+ type: 'title',
63
63
  text: 'Convertisseur PNG vers JPG: guide pratique d\'optimisation des images',
64
- level: 2,
65
- },
66
- {
67
- type: 'paragraph',
64
+ level: 2,
65
+ },
66
+ {
67
+ type: 'paragraph',
68
68
  html: 'Dans le design numérique et le développement web, la rapidité compte. Le PNG conserve la transparence et la qualité sans perte, mais produit parfois des fichiers lourds. Pour des pages rapides et des pièces jointes légères, le JPG est souvent plus adapté.',
69
- },
70
- {
71
- type: 'title',
69
+ },
70
+ {
71
+ type: 'title',
72
72
  text: 'JPG ou PNG: lequel choisir ?',
73
- level: 3,
74
- },
75
- {
76
- type: 'paragraph',
73
+ level: 3,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
77
  html: "Aucun format n'est meilleur dans tous les cas. Le PNG convient aux interfaces, logos et fonds transparents, mais sa compression sans perte peut donner des fichiers beaucoup plus volumineux.",
78
- },
79
- {
80
- type: 'paragraph',
78
+ },
79
+ {
80
+ type: 'paragraph',
81
81
  html: "Le JPG supprime les détails peu visibles et produit des images légères. Il convient aux photos, bannières et réseaux sociaux: une légère perte en échange d'un chargement plus rapide.",
82
- },
83
- {
84
- type: 'title',
82
+ },
83
+ {
84
+ type: 'title',
85
85
  text: 'Comparaison technique: traitement local et cloud',
86
- level: 3,
87
- },
88
- {
89
- type: 'comparative',
90
- items: [
91
- {
86
+ level: 3,
87
+ },
88
+ {
89
+ type: 'comparative',
90
+ items: [
91
+ {
92
92
  title: 'Convertisseurs cloud',
93
93
  description: 'Services classiques qui envoient vos photos vers un serveur distant.',
94
- icon: 'mdi:cloud-upload',
95
- pointIcon: 'mdi:close-circle-outline',
96
- points: [
94
+ icon: 'mdi:cloud-upload',
95
+ pointIcon: 'mdi:close-circle-outline',
96
+ points: [
97
97
  'Latence réseau (envoi/téléchargement)',
98
98
  'Risque de fuite de données privées',
99
99
  'Limite de taille par fichier',
100
100
  'Publicités et traceurs',
101
- ],
102
- },
103
- {
101
+ ],
102
+ },
103
+ {
104
104
  title: 'Notre architecture locale',
105
105
  description: 'Traitement direct sur votre appareil avec du JavaScript natif.',
106
- icon: 'mdi:laptop-mac',
107
- highlight: true,
108
- points: [
106
+ icon: 'mdi:laptop-mac',
107
+ highlight: true,
108
+ points: [
109
109
  'Vitesse immédiate sans réseau',
110
110
  'Confidentialité garantie (zéro octet envoyé)',
111
111
  'Aucune limite de Mo par fichier',
112
112
  'Interface professionnelle et claire',
113
- ],
114
- },
115
- ],
116
- },
117
- {
118
- type: 'title',
113
+ ],
114
+ },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
119
  text: 'Fonctionnement de la conversion technique',
120
- level: 3,
121
- },
122
- {
123
- type: 'paragraph',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
124
  html: "La conversion sans serveur s'appuie sur les API modernes du navigateur. Le fichier devient un Blob temporaire en RAM, puis il est dessiné dans un Canvas HTML5 invisible.",
125
- },
126
- {
127
- type: 'paragraph',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
128
  html: "Le JPG ne gère pas la transparence: les zones transparentes sont donc remplies de blanc avant le rendu. Le Canvas génère ensuite le flux JPEG enregistré directement sur l'appareil.",
129
- },
130
- {
131
- type: 'tip',
129
+ },
130
+ {
131
+ type: 'tip',
132
132
  title: 'Conseil SEO: le poids idéal',
133
133
  html: 'Une image plus légère peut améliorer le LCP et les indicateurs PageSpeed. Réduire un PNG volumineux en JPG est particulièrement utile pour les en-têtes et les pages riches en images.',
134
- },
135
- {
136
- type: 'title',
134
+ },
135
+ {
136
+ type: 'title',
137
137
  text: 'Sécurité pour les entreprises et les professionnels',
138
- level: 3,
139
- },
140
- {
141
- type: 'paragraph',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
142
  html: 'Pour la banque, la santé ou le droit, envoyer des fichiers à un service externe peut présenter un risque. Ici le traitement reste dans la RAM du navigateur, sans transfert vers un cloud.',
143
- },
144
- {
145
- type: 'title',
143
+ },
144
+ {
145
+ type: 'title',
146
146
  text: 'Compatibilité du résultat',
147
- level: 3,
148
- },
149
- {
150
- type: 'list',
151
- icon: 'mdi:check-circle',
152
- items: [
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
153
  'Visionneuses Windows, macOS et appareils mobiles.',
154
154
  'Réseaux sociaux (Instagram, LinkedIn, etc.).',
155
155
  'Outils bureautiques (Word, PowerPoint).',
156
156
  'Gestionnaires de contenu (WordPress, Shopify).',
157
- ],
158
- },
159
- {
160
- type: 'title',
157
+ ],
158
+ },
159
+ {
160
+ type: 'title',
161
161
  text: 'Conclusion: optimisez avec méthode',
162
- level: 3,
163
- },
164
- {
165
- type: 'paragraph',
162
+ level: 3,
163
+ },
164
+ {
165
+ type: 'paragraph',
166
166
  html: 'Ce convertisseur associe rapidité et confidentialité. Développeur ou particulier, vous pouvez alléger vos images sans remettre vos fichiers à un service tiers.',
167
- },
168
- ];
169
-
167
+ },
168
+ ];
170
169
 
171
- export const content: PngAJpgLocaleContent = {
172
- slug,
173
- title,
174
- description,
175
- ui,
176
- seo,
177
- faq,
178
- bibliography,
179
- howTo,
180
- schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
181
- };
170
+
171
+ export const content: PngAJpgLocaleContent = {
172
+ slug,
173
+ title,
174
+ description,
175
+ ui,
176
+ seo,
177
+ faq,
178
+ bibliography,
179
+ howTo,
180
+ schemas: generateSchemas({ title, description, inLanguage: 'fr', faq, howTo }),
181
+ };
@@ -19,27 +19,27 @@ const ui: ImageConverterUI = {
19
19
  faqTitle: 'Pertanyaan Umum',
20
20
  };
21
21
 
22
- const faq: PngAJpgLocaleContent['faq'] = [
23
- {
22
+ const faq: PngAJpgLocaleContent['faq'] = [
23
+ {
24
24
  question: 'Mengapa memilih konverter PNG ke JPG lokal kami?',
25
- answer:
25
+ answer:
26
26
  'Berbeda dari layanan biasa, alat ini memproses file sepenuhnya di browser. Gambar Anda tidak dikirim ke disk jarak jauh, sehingga kendali dan privasi data tetap terjaga.',
27
- },
28
- {
27
+ },
28
+ {
29
29
  question: 'JPG atau PNG: mana yang cocok untuk saya?',
30
- answer:
30
+ answer:
31
31
  'PNG cocok untuk logo dan elemen transparan. JPG lebih sesuai untuk foto dan banner web karena ukurannya jauh lebih kecil sehingga halaman dimuat lebih cepat.',
32
- },
33
- {
32
+ },
33
+ {
34
34
  question: 'Bagaimana konversi bekerja tanpa mengunggah file?',
35
- answer:
35
+ answer:
36
36
  'Kami menggunakan Canvas HTML5. Browser membuat ulang gambar pada kanvas virtual yang tidak terlihat, mengisi area transparan dengan putih, lalu menghasilkan data JPEG untuk diunduh.',
37
- },
38
- {
37
+ },
38
+ {
39
39
  question: 'Apakah aman untuk dokumen rahasia?',
40
- answer:
40
+ answer:
41
41
  'Ya. Untuk dokumen perbankan, kesehatan, atau hukum, pemrosesan lokal lebih aman: data hanya berada di RAM perangkat dan berhenti saat tab ditutup.',
42
- },
42
+ },
43
43
  ];
44
44
 
45
45
  const howTo: PngAJpgLocaleContent['howTo'] = [
@@ -57,114 +57,114 @@ const howTo: PngAJpgLocaleContent['howTo'] = [
57
57
  },
58
58
  ];
59
59
 
60
- const seo: PngAJpgLocaleContent['seo'] = [
61
- {
62
- type: 'title',
60
+ const seo: PngAJpgLocaleContent['seo'] = [
61
+ {
62
+ type: 'title',
63
63
  text: 'Konverter PNG ke JPG: panduan praktis mengoptimalkan gambar',
64
- level: 2,
65
- },
66
- {
67
- type: 'paragraph',
64
+ level: 2,
65
+ },
66
+ {
67
+ type: 'paragraph',
68
68
  html: 'Dalam desain digital dan pengembangan web, kecepatan sangat penting. PNG mempertahankan transparansi dan kualitas tanpa kehilangan, tetapi ukurannya bisa besar. Untuk halaman cepat dan lampiran ringan, JPG sering menjadi pilihan praktis.',
69
- },
70
- {
71
- type: 'title',
69
+ },
70
+ {
71
+ type: 'title',
72
72
  text: 'JPG atau PNG: mana yang sebaiknya dipilih?',
73
- level: 3,
74
- },
75
- {
76
- type: 'paragraph',
73
+ level: 3,
74
+ },
75
+ {
76
+ type: 'paragraph',
77
77
  html: 'Tidak ada format terbaik untuk semua kebutuhan. PNG cocok untuk antarmuka, logo, dan latar transparan, tetapi kompresi tanpa kehilangan dapat menghasilkan file yang jauh lebih besar.',
78
- },
79
- {
80
- type: 'paragraph',
78
+ },
79
+ {
80
+ type: 'paragraph',
81
81
  html: 'JPG mengurangi detail yang sulit dilihat mata sehingga ukuran gambar lebih ringan. Format ini cocok untuk foto, banner, dan media sosial ketika kecepatan unduh lebih penting.',
82
- },
83
- {
84
- type: 'title',
82
+ },
83
+ {
84
+ type: 'title',
85
85
  text: 'Perbandingan teknis: proses lokal dan cloud',
86
- level: 3,
87
- },
88
- {
89
- type: 'comparative',
90
- items: [
91
- {
86
+ level: 3,
87
+ },
88
+ {
89
+ type: 'comparative',
90
+ items: [
91
+ {
92
92
  title: 'Konverter berbasis cloud',
93
93
  description: 'Layanan tradisional yang mengunggah foto ke server jarak jauh.',
94
- icon: 'mdi:cloud-upload',
95
- pointIcon: 'mdi:close-circle-outline',
96
- points: [
94
+ icon: 'mdi:cloud-upload',
95
+ pointIcon: 'mdi:close-circle-outline',
96
+ points: [
97
97
  'Latensi jaringan (unggah/unduh)',
98
98
  'Risiko kebocoran data pribadi',
99
99
  'Batas ukuran file',
100
100
  'Iklan dan pelacak',
101
- ],
102
- },
103
- {
101
+ ],
102
+ },
103
+ {
104
104
  title: 'Arsitektur lokal kami',
105
105
  description: 'Pemrosesan langsung pada perangkat dengan JavaScript asli.',
106
- icon: 'mdi:laptop-mac',
107
- highlight: true,
108
- points: [
106
+ icon: 'mdi:laptop-mac',
107
+ highlight: true,
108
+ points: [
109
109
  'Kecepatan langsung tanpa jaringan',
110
110
  'Privasi terjamin (nol byte dikirim)',
111
111
  'Tanpa batas MB per file',
112
112
  'Antarmuka bersih dan profesional',
113
- ],
114
- },
115
- ],
116
- },
117
- {
118
- type: 'title',
113
+ ],
114
+ },
115
+ ],
116
+ },
117
+ {
118
+ type: 'title',
119
119
  text: 'Cara kerja konversi teknis',
120
- level: 3,
121
- },
122
- {
123
- type: 'paragraph',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
124
  html: 'Konversi tanpa server memanfaatkan API browser modern. Saat file dipilih, browser membuat Blob sementara di RAM lalu menggambarnya pada Canvas HTML5 yang tidak terlihat.',
125
- },
126
- {
127
- type: 'paragraph',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
128
  html: 'JPG tidak mendukung transparansi, sehingga area transparan diisi putih sebelum gambar dirender. Canvas kemudian menghasilkan data JPEG yang langsung disimpan di perangkat.',
129
- },
130
- {
131
- type: 'tip',
129
+ },
130
+ {
131
+ type: 'tip',
132
132
  title: 'Tips SEO: ukuran yang ideal',
133
133
  html: 'Gambar yang lebih ringan dapat memperbaiki LCP dan metrik PageSpeed. Mengubah PNG besar menjadi JPG yang lebih kecil berguna untuk header dan halaman dengan banyak gambar.',
134
- },
135
- {
136
- type: 'title',
134
+ },
135
+ {
136
+ type: 'title',
137
137
  text: 'Keamanan untuk perusahaan dan profesional',
138
- level: 3,
139
- },
140
- {
141
- type: 'paragraph',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
142
  html: 'Untuk perbankan, kesehatan, dan hukum, mengirim file ke layanan eksternal dapat berisiko. Di sini pemrosesan berlangsung di RAM browser tanpa mengunggah data ke cloud.',
143
- },
144
- {
145
- type: 'title',
143
+ },
144
+ {
145
+ type: 'title',
146
146
  text: 'Kompatibilitas hasil',
147
- level: 3,
148
- },
149
- {
150
- type: 'list',
151
- icon: 'mdi:check-circle',
152
- items: [
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'list',
151
+ icon: 'mdi:check-circle',
152
+ items: [
153
153
  'Penampil Windows, macOS, dan perangkat seluler.',
154
154
  'Media sosial (Instagram, LinkedIn, dan lainnya).',
155
155
  'Perangkat lunak kantor (Word, PowerPoint).',
156
156
  'Pengelola konten (WordPress, Shopify).',
157
- ],
158
- },
159
- {
160
- type: 'title',
157
+ ],
158
+ },
159
+ {
160
+ type: 'title',
161
161
  text: 'Kesimpulan: optimalkan dengan tepat',
162
- level: 3,
163
- },
164
- {
165
- type: 'paragraph',
162
+ level: 3,
163
+ },
164
+ {
165
+ type: 'paragraph',
166
166
  html: 'Konverter ini menggabungkan kecepatan dan privasi. Baik Anda pengembang maupun pengguna rumahan, Anda dapat mengecilkan gambar tanpa menyerahkan file ke layanan pihak ketiga.',
167
- },
167
+ },
168
168
  ];
169
169
 
170
170