@jjlmoya/utils-converters 1.25.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 (133) 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/tests/bibliography_wellformed_export.test.ts +46 -0
  12. package/src/tests/category_seo_quality.test.ts +74 -0
  13. package/src/tests/faq_count.test.ts +1 -1
  14. package/src/tests/no_h1_in_components.test.ts +1 -1
  15. package/src/tests/seo_parity.test.ts +2 -2
  16. package/src/tests/seo_wellformed_export.test.ts +65 -0
  17. package/src/tests/tool_validation.test.ts +15 -15
  18. package/src/tool/avifAJpg/i18n/en.ts +164 -164
  19. package/src/tool/avifAJpg/i18n/es.ts +164 -164
  20. package/src/tool/avifAJpg/i18n/fr.ts +164 -164
  21. package/src/tool/avifAJpg/i18n/ja.ts +166 -166
  22. package/src/tool/avifAJpg/i18n/ko.ts +166 -166
  23. package/src/tool/avifAJpg/i18n/zh.ts +166 -166
  24. package/src/tool/avifAJpg/seo.astro +15 -15
  25. package/src/tool/avifAPng/i18n/en.ts +164 -164
  26. package/src/tool/avifAPng/i18n/es.ts +164 -164
  27. package/src/tool/avifAPng/i18n/fr.ts +164 -164
  28. package/src/tool/avifAPng/i18n/ja.ts +166 -166
  29. package/src/tool/avifAPng/i18n/ko.ts +166 -166
  30. package/src/tool/avifAPng/i18n/zh.ts +166 -166
  31. package/src/tool/avifAPng/seo.astro +15 -15
  32. package/src/tool/avifAWebp/i18n/en.ts +164 -164
  33. package/src/tool/avifAWebp/i18n/es.ts +164 -164
  34. package/src/tool/avifAWebp/i18n/fr.ts +164 -164
  35. package/src/tool/avifAWebp/i18n/ja.ts +166 -166
  36. package/src/tool/avifAWebp/i18n/ko.ts +166 -166
  37. package/src/tool/avifAWebp/i18n/zh.ts +166 -166
  38. package/src/tool/avifAWebp/seo.astro +15 -15
  39. package/src/tool/bmpAJpg/i18n/en.ts +164 -164
  40. package/src/tool/bmpAJpg/i18n/es.ts +164 -164
  41. package/src/tool/bmpAJpg/i18n/fr.ts +164 -164
  42. package/src/tool/bmpAJpg/i18n/ja.ts +166 -166
  43. package/src/tool/bmpAJpg/i18n/ko.ts +166 -166
  44. package/src/tool/bmpAJpg/i18n/zh.ts +166 -166
  45. package/src/tool/bmpAJpg/seo.astro +15 -15
  46. package/src/tool/bmpAPng/i18n/en.ts +164 -164
  47. package/src/tool/bmpAPng/i18n/es.ts +164 -164
  48. package/src/tool/bmpAPng/i18n/fr.ts +164 -164
  49. package/src/tool/bmpAPng/i18n/ja.ts +165 -165
  50. package/src/tool/bmpAPng/i18n/ko.ts +165 -165
  51. package/src/tool/bmpAPng/i18n/zh.ts +165 -165
  52. package/src/tool/bmpAPng/seo.astro +15 -15
  53. package/src/tool/bmpAWebp/i18n/en.ts +164 -164
  54. package/src/tool/bmpAWebp/i18n/es.ts +164 -164
  55. package/src/tool/bmpAWebp/i18n/fr.ts +164 -164
  56. package/src/tool/bmpAWebp/i18n/ja.ts +166 -166
  57. package/src/tool/bmpAWebp/i18n/ko.ts +166 -166
  58. package/src/tool/bmpAWebp/i18n/zh.ts +166 -166
  59. package/src/tool/bmpAWebp/seo.astro +15 -15
  60. package/src/tool/gifAJpg/i18n/en.ts +164 -164
  61. package/src/tool/gifAJpg/i18n/es.ts +164 -164
  62. package/src/tool/gifAJpg/i18n/fr.ts +164 -164
  63. package/src/tool/gifAJpg/i18n/ja.ts +166 -166
  64. package/src/tool/gifAJpg/i18n/ko.ts +166 -166
  65. package/src/tool/gifAJpg/i18n/zh.ts +166 -166
  66. package/src/tool/gifAJpg/seo.astro +15 -15
  67. package/src/tool/gifAPng/i18n/en.ts +164 -164
  68. package/src/tool/gifAPng/i18n/es.ts +164 -164
  69. package/src/tool/gifAPng/i18n/fr.ts +164 -164
  70. package/src/tool/gifAPng/i18n/ja.ts +166 -166
  71. package/src/tool/gifAPng/i18n/ko.ts +166 -166
  72. package/src/tool/gifAPng/i18n/zh.ts +166 -166
  73. package/src/tool/gifAPng/seo.astro +15 -15
  74. package/src/tool/gifAWebp/i18n/en.ts +164 -164
  75. package/src/tool/gifAWebp/i18n/es.ts +164 -164
  76. package/src/tool/gifAWebp/i18n/fr.ts +164 -164
  77. package/src/tool/gifAWebp/i18n/ja.ts +166 -166
  78. package/src/tool/gifAWebp/i18n/ko.ts +166 -166
  79. package/src/tool/gifAWebp/i18n/zh.ts +166 -166
  80. package/src/tool/gifAWebp/seo.astro +15 -15
  81. package/src/tool/imagenBase64/i18n/en.ts +154 -154
  82. package/src/tool/imagenBase64/i18n/es.ts +154 -154
  83. package/src/tool/imagenBase64/i18n/fr.ts +154 -154
  84. package/src/tool/imagenBase64/seo.astro +15 -15
  85. package/src/tool/jpgAIco/seo.astro +15 -15
  86. package/src/tool/jpgAPng/i18n/en.ts +164 -164
  87. package/src/tool/jpgAPng/i18n/es.ts +164 -164
  88. package/src/tool/jpgAPng/i18n/fr.ts +164 -164
  89. package/src/tool/jpgAPng/i18n/ja.ts +166 -166
  90. package/src/tool/jpgAPng/i18n/ko.ts +166 -166
  91. package/src/tool/jpgAPng/i18n/zh.ts +166 -166
  92. package/src/tool/jpgAPng/seo.astro +15 -15
  93. package/src/tool/jpgAWebp/i18n/en.ts +164 -164
  94. package/src/tool/jpgAWebp/i18n/es.ts +164 -164
  95. package/src/tool/jpgAWebp/i18n/fr.ts +164 -164
  96. package/src/tool/jpgAWebp/seo.astro +15 -15
  97. package/src/tool/pngAIco/seo.astro +15 -15
  98. package/src/tool/pngAJpg/i18n/de.ts +21 -21
  99. package/src/tool/pngAJpg/i18n/es.ts +177 -177
  100. package/src/tool/pngAJpg/i18n/fr.ts +137 -137
  101. package/src/tool/pngAJpg/i18n/id.ts +89 -89
  102. package/src/tool/pngAJpg/i18n/it.ts +89 -89
  103. package/src/tool/pngAJpg/i18n/ko.ts +177 -177
  104. package/src/tool/pngAJpg/i18n/nl.ts +20 -20
  105. package/src/tool/pngAJpg/i18n/pl.ts +89 -89
  106. package/src/tool/pngAJpg/i18n/pt.ts +89 -89
  107. package/src/tool/pngAJpg/i18n/ru.ts +177 -177
  108. package/src/tool/pngAJpg/i18n/sv.ts +89 -89
  109. package/src/tool/pngAJpg/i18n/tr.ts +89 -89
  110. package/src/tool/pngAJpg/seo.astro +15 -15
  111. package/src/tool/pngAWebp/i18n/en.ts +164 -164
  112. package/src/tool/pngAWebp/i18n/es.ts +164 -164
  113. package/src/tool/pngAWebp/i18n/fr.ts +164 -164
  114. package/src/tool/pngAWebp/seo.astro +15 -15
  115. package/src/tool/svgAJpg/i18n/fr.ts +164 -164
  116. package/src/tool/svgAJpg/seo.astro +15 -15
  117. package/src/tool/svgAPng/i18n/fr.ts +164 -164
  118. package/src/tool/svgAPng/seo.astro +15 -15
  119. package/src/tool/webpAIco/seo.astro +15 -15
  120. package/src/tool/webpAJpg/seo.astro +15 -15
  121. package/src/tool/webpAPng/bibliography.ts +13 -13
  122. package/src/tool/webpAPng/i18n/de.ts +166 -166
  123. package/src/tool/webpAPng/i18n/es.ts +171 -171
  124. package/src/tool/webpAPng/i18n/fr.ts +166 -166
  125. package/src/tool/webpAPng/i18n/id.ts +166 -166
  126. package/src/tool/webpAPng/i18n/it.ts +166 -166
  127. package/src/tool/webpAPng/i18n/nl.ts +166 -166
  128. package/src/tool/webpAPng/i18n/pl.ts +166 -166
  129. package/src/tool/webpAPng/i18n/pt.ts +166 -166
  130. package/src/tool/webpAPng/i18n/ru.ts +166 -166
  131. package/src/tool/webpAPng/i18n/sv.ts +166 -166
  132. package/src/tool/webpAPng/i18n/tr.ts +167 -167
  133. package/src/tool/webpAPng/seo.astro +15 -15
@@ -1,168 +1,168 @@
1
1
  import { bibliography } from '../bibliography';
2
- import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
- import { generateSchemas } from '../../../shared/logic/schemas';
4
- import type { WebpAPngLocaleContent } from '../index';
5
-
6
- const slug = 'konverter-webp-ke-png';
7
- const title = 'Konversi WebP ke PNG Online dan Gratis';
8
- const description =
9
- 'Konversi gambar WebP ke PNG di browser Anda. Menjaga transparansi. Tanpa unggah file ke server. Gratis dan 100% pribadi.';
10
-
11
- const ui: ImageConverterUI = {
12
- dragText: 'Tarik file WebP...',
13
- convertText: 'Untuk mengkonversinya ke PNG secara instan',
14
- selectFiles: 'Pilih file',
15
- processedFiles: 'File yang diproses',
16
- downloadAll: 'Unduh Semua (.zip)',
2
+ import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
3
+ import { generateSchemas } from '../../../shared/logic/schemas';
4
+ import type { WebpAPngLocaleContent } from '../index';
5
+
6
+ const slug = 'konverter-webp-ke-png';
7
+ const title = 'Konversi WebP ke PNG Online dan Gratis';
8
+ const description =
9
+ 'Konversi gambar WebP ke PNG di browser Anda. Menjaga transparansi. Tanpa unggah file ke server. Gratis dan 100% pribadi.';
10
+
11
+ const ui: ImageConverterUI = {
12
+ dragText: 'Tarik file WebP...',
13
+ convertText: 'Untuk mengkonversinya ke PNG secara instan',
14
+ selectFiles: 'Pilih file',
15
+ processedFiles: 'File yang diproses',
16
+ downloadAll: 'Unduh Semua (.zip)',
17
17
  pending: 'Menunggu',
18
- bibliographyTitle: 'Referensi Bibliografi',
19
- faqTitle: 'Pertanyaan yang Sering Diajukan',
20
- };
21
-
22
- const faq: WebpAPngLocaleContent['faq'] = [
23
- {
24
- question: 'Mengapa saya perlu mengonversi file WebP saya ke PNG?',
25
- answer:
26
- 'Meskipun lebih ringan, file WebP dapat menyebabkan ketidakcocokan dalam program pengeditan seperti Photoshop versi lama. PNG memastikan kompatibilitas universal 100%.',
27
- },
28
- {
29
- question: 'Apakah transparansi hilang saat mengonversi dari WebP ke PNG?',
30
- answer:
31
- 'Sama sekali tidak. Berbeda dengan konversi ke JPG, PNG mendukung saluran alfa. Alat kami akan menjaga area transparan apa pun dari file asli.',
32
- },
33
- {
34
- question: 'Dapatkah saya mengunggah file perusahaan yang bersifat rahasia?',
35
- answer:
36
- 'Anda bisa dan harus melakukannya. Karena semuanya berjalan secara lokal melalui JavaScript, gambar perusahaan Anda tidak akan pernah meninggalkan komputer Anda atau disimpan di server eksternal.',
37
- },
38
- ];
39
-
40
- const howTo: WebpAPngLocaleContent['howTo'] = [
41
- {
42
- name: 'Tarik file WebP Anda',
43
- text: 'Pindahkan dan letakkan file WebP Anda ke panel utama atau pilih gambar secara tradisional.',
44
- },
45
- {
46
- name: 'Konversi Fidelity Tinggi',
47
- text: 'Browser Anda akan menggambar ulang gambar piksel demi piksel dan menghasilkan salinan persis dalam format PNG, dengan mempertahankan gamut warna asli.',
48
- },
49
- {
50
- name: 'Unduhan Individu atau Massal',
51
- text: 'Simpan setiap file secara terpisah atau, jika Anda memproses dalam jumlah banyak, klik tombol ZIP untuk mengunduh semuanya secara bersamaan.',
52
- },
53
- ];
54
-
55
- const seo: WebpAPngLocaleContent['seo'] = [
56
- {
57
- type: 'title',
58
- text: 'Konverter WebP ke PNG: Pilihan Profesional untuk Pengeditan dan Desain',
59
- level: 2,
60
- },
61
- {
62
- type: 'paragraph',
63
- html: 'Ketika seorang desainer mengunduh aset grafis dalam format <strong>WebP</strong> dan mencoba membukanya di Photoshop, Figma, atau Illustrator, hasilnya bisa membuat frustrasi: file gagal dimuat atau kualitasnya menurun. Format <strong>PNG</strong> adalah standar tak terbantahkan dalam pengeditan profesional: kompresi lossless, saluran alfa penuh, dan jaminan kompatibilitas di seluruh rantai produksi kreatif.',
64
- },
65
- {
66
- type: 'title',
67
- text: 'WebP untuk Web, PNG untuk Studio',
68
- level: 3,
69
- },
70
- {
71
- type: 'paragraph',
72
- html: 'WebP adalah format produksi web: algoritme kompresinya dioptimalkan untuk mengurangi berat transfer, bukan untuk menjaga kesetiaan maksimum melalui alur kerja pengeditan iteratif. Setiap kali Anda menyimpan WebP yang telah diedit, codec akan menerapkan kompresi lagi. Untuk proyek di mana sebuah file akan dimodifikasi berkali-kali, ini berarti penurunan kualitas secara kumulatif.',
73
- },
74
- {
75
- type: 'paragraph',
76
- html: 'PNG menggunakan <strong>kompresi lossless</strong>: data setiap piksel dipertahankan sepenuhnya tidak peduli berapa kali Anda menyimpan file tersebut. Ini adalah format yang dipilih oleh desainer UI/UX, ilustrator digital, dan tim branding yang perlu menjaga integritas visual melalui puluhan revisi. Alat seperti Photoshop, Figma, Sketch, dan Illustrator memperlakukan PNG sebagai format ekspor utama mereka.',
77
- },
78
- {
79
- type: 'title',
80
- text: 'Perbandingan: Konversi Lokal vs Cloud',
81
- level: 3,
82
- },
83
- {
84
- type: 'comparative',
85
- items: [
86
- {
87
- title: 'Konverter Cloud',
88
- description: 'Alat yang mengunggah file Anda ke server jarak jauh.',
89
- icon: 'mdi:cloud-upload',
90
- pointIcon: 'mdi:close-circle-outline',
91
- points: [
92
- 'Aset desain Anda disimpan di server pihak ketiga',
93
- 'Pemrosesan jarak jauh yang lambat untuk file besar',
94
- 'Risiko kebocoran untuk proyek klien yang bersifat rahasia',
95
- 'Konversi batch terbatas atau berbayar',
96
- ],
97
- },
98
- {
99
- title: 'Arsitektur Lokal Kami',
100
- description: 'Pemrosesan langsung pada perangkat keras Anda menggunakan teknologi Vanilla JS.',
101
- icon: 'mdi:laptop-mac',
102
- highlight: true,
103
- points: [
104
- 'Desain Anda tidak pernah meninggalkan mesin Anda',
105
- 'Konversi batch puluhan file secara instan',
106
- 'Pelestarian penuh saluran alfa dan gamut warna',
107
- 'Privasi absolut untuk proyek klien',
108
- ],
109
- },
110
- ],
111
- },
112
- {
113
- type: 'title',
114
- text: 'Cara Kerjanya Secara Teknis',
115
- level: 3,
116
- },
117
- {
118
- type: 'paragraph',
119
- html: 'Browser modern dapat mendekode WebP secara native. Alat kami memanfaatkan kemampuan ini untuk memuat file ke dalam elemen JavaScript <strong>Image</strong>, lalu menggambarnya ke kanvas HTML5 dengan dimensi yang sama dengan aslinya. Berbeda dengan konversi ke JPG, tidak diperlukan pengisian latar belakang di sini: kanvas mempertahankan saluran alfa penuh.',
120
- },
121
- {
122
- type: 'paragraph',
123
- html: 'Ekspor akhir menggunakan metode <code>toDataURL(\'image/png\')</code>, yang menghasilkan PNG lossless yang sesuai dengan aslinya. Hasilnya adalah file yang siap diimpor langsung ke perangkat lunak desain profesional apa pun tanpa langkah perantara, degradasi warna, atau hilangnya transparansi.',
124
- },
125
- {
126
- type: 'tip',
127
- title: 'Tip untuk editor',
128
- html: 'Gunakan PNG saat Anda perlu terus mengedit gambar. Kompresi lossless menjamin tidak ada penurunan kualitas akibat penyimpanan berulang kali - sangat penting saat bekerja dengan lapisan, masker, atau penyesuaian warna di Photoshop atau Figma.',
129
- },
130
- {
131
- type: 'title',
132
- text: 'Kasus Penggunaan dan Kompatibilitas',
133
- level: 3,
134
- },
135
- {
136
- type: 'list',
137
- icon: 'mdi:check-circle',
138
- items: [
139
- 'Mengimpor aset WebP ke Photoshop, Figma, Sketch, atau Illustrator.',
140
- 'Menjaga transparansi pada logo dan ikon untuk digunakan pada berbagai latar belakang.',
141
- 'Membuat salinan master grafik untuk proyek jangka panjang.',
142
- 'Mengekspor aset untuk aplikasi seluler yang memerlukan PNG dengan saluran alfa.',
143
- 'Menggunakan gambar dalam desain mockup dan presentasi dengan latar belakang variabel.',
144
- ],
145
- },
146
- {
147
- type: 'title',
148
- text: 'Kesimpulan',
149
- level: 3,
150
- },
151
- {
152
- type: 'paragraph',
153
- html: 'Jika WebP adalah format server web, maka PNG adalah format studio desain. Alat ini mengonversi aset WebP Anda menjadi PNG siap produksi, dengan transparansi yang utuh dan kualitas maksimal - semuanya di browser Anda dan tanpa file Anda pernah meninggalkan mesin Anda.',
154
- },
155
- ];
156
-
157
-
158
- export const content: WebpAPngLocaleContent = {
159
- slug,
160
- title,
161
- description,
162
- ui,
163
- seo,
164
- faq,
165
- bibliography,
166
- howTo,
167
- schemas: generateSchemas({ title, description, inLanguage: 'id', faq, howTo }),
168
- };
18
+ bibliographyTitle: 'Referensi Bibliografi',
19
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
20
+ };
21
+
22
+ const faq: WebpAPngLocaleContent['faq'] = [
23
+ {
24
+ question: 'Mengapa saya perlu mengonversi file WebP saya ke PNG?',
25
+ answer:
26
+ 'Meskipun lebih ringan, file WebP dapat menyebabkan ketidakcocokan dalam program pengeditan seperti Photoshop versi lama. PNG memastikan kompatibilitas universal 100%.',
27
+ },
28
+ {
29
+ question: 'Apakah transparansi hilang saat mengonversi dari WebP ke PNG?',
30
+ answer:
31
+ 'Sama sekali tidak. Berbeda dengan konversi ke JPG, PNG mendukung saluran alfa. Alat kami akan menjaga area transparan apa pun dari file asli.',
32
+ },
33
+ {
34
+ question: 'Dapatkah saya mengunggah file perusahaan yang bersifat rahasia?',
35
+ answer:
36
+ 'Anda bisa dan harus melakukannya. Karena semuanya berjalan secara lokal melalui JavaScript, gambar perusahaan Anda tidak akan pernah meninggalkan komputer Anda atau disimpan di server eksternal.',
37
+ },
38
+ ];
39
+
40
+ const howTo: WebpAPngLocaleContent['howTo'] = [
41
+ {
42
+ name: 'Tarik file WebP Anda',
43
+ text: 'Pindahkan dan letakkan file WebP Anda ke panel utama atau pilih gambar secara tradisional.',
44
+ },
45
+ {
46
+ name: 'Konversi Fidelity Tinggi',
47
+ text: 'Browser Anda akan menggambar ulang gambar piksel demi piksel dan menghasilkan salinan persis dalam format PNG, dengan mempertahankan gamut warna asli.',
48
+ },
49
+ {
50
+ name: 'Unduhan Individu atau Massal',
51
+ text: 'Simpan setiap file secara terpisah atau, jika Anda memproses dalam jumlah banyak, klik tombol ZIP untuk mengunduh semuanya secara bersamaan.',
52
+ },
53
+ ];
54
+
55
+ const seo: WebpAPngLocaleContent['seo'] = [
56
+ {
57
+ type: 'title',
58
+ text: 'Konverter WebP ke PNG: Pilihan Profesional untuk Pengeditan dan Desain',
59
+ level: 2,
60
+ },
61
+ {
62
+ type: 'paragraph',
63
+ html: 'Ketika seorang desainer mengunduh aset grafis dalam format <strong>WebP</strong> dan mencoba membukanya di Photoshop, Figma, atau Illustrator, hasilnya bisa membuat frustrasi: file gagal dimuat atau kualitasnya menurun. Format <strong>PNG</strong> adalah standar tak terbantahkan dalam pengeditan profesional: kompresi lossless, saluran alfa penuh, dan jaminan kompatibilitas di seluruh rantai produksi kreatif.',
64
+ },
65
+ {
66
+ type: 'title',
67
+ text: 'WebP untuk Web, PNG untuk Studio',
68
+ level: 3,
69
+ },
70
+ {
71
+ type: 'paragraph',
72
+ html: 'WebP adalah format produksi web: algoritme kompresinya dioptimalkan untuk mengurangi berat transfer, bukan untuk menjaga kesetiaan maksimum melalui alur kerja pengeditan iteratif. Setiap kali Anda menyimpan WebP yang telah diedit, codec akan menerapkan kompresi lagi. Untuk proyek di mana sebuah file akan dimodifikasi berkali-kali, ini berarti penurunan kualitas secara kumulatif.',
73
+ },
74
+ {
75
+ type: 'paragraph',
76
+ html: 'PNG menggunakan <strong>kompresi lossless</strong>: data setiap piksel dipertahankan sepenuhnya tidak peduli berapa kali Anda menyimpan file tersebut. Ini adalah format yang dipilih oleh desainer UI/UX, ilustrator digital, dan tim branding yang perlu menjaga integritas visual melalui puluhan revisi. Alat seperti Photoshop, Figma, Sketch, dan Illustrator memperlakukan PNG sebagai format ekspor utama mereka.',
77
+ },
78
+ {
79
+ type: 'title',
80
+ text: 'Perbandingan: Konversi Lokal vs Cloud',
81
+ level: 3,
82
+ },
83
+ {
84
+ type: 'comparative',
85
+ items: [
86
+ {
87
+ title: 'Konverter Cloud',
88
+ description: 'Alat yang mengunggah file Anda ke server jarak jauh.',
89
+ icon: 'mdi:cloud-upload',
90
+ pointIcon: 'mdi:close-circle-outline',
91
+ points: [
92
+ 'Aset desain Anda disimpan di server pihak ketiga',
93
+ 'Pemrosesan jarak jauh yang lambat untuk file besar',
94
+ 'Risiko kebocoran untuk proyek klien yang bersifat rahasia',
95
+ 'Konversi batch terbatas atau berbayar',
96
+ ],
97
+ },
98
+ {
99
+ title: 'Arsitektur Lokal Kami',
100
+ description: 'Pemrosesan langsung pada perangkat keras Anda menggunakan teknologi Vanilla JS.',
101
+ icon: 'mdi:laptop-mac',
102
+ highlight: true,
103
+ points: [
104
+ 'Desain Anda tidak pernah meninggalkan mesin Anda',
105
+ 'Konversi batch puluhan file secara instan',
106
+ 'Pelestarian penuh saluran alfa dan gamut warna',
107
+ 'Privasi absolut untuk proyek klien',
108
+ ],
109
+ },
110
+ ],
111
+ },
112
+ {
113
+ type: 'title',
114
+ text: 'Cara Kerjanya Secara Teknis',
115
+ level: 3,
116
+ },
117
+ {
118
+ type: 'paragraph',
119
+ html: 'Browser modern dapat mendekode WebP secara native. Alat kami memanfaatkan kemampuan ini untuk memuat file ke dalam elemen JavaScript <strong>Image</strong>, lalu menggambarnya ke kanvas HTML5 dengan dimensi yang sama dengan aslinya. Berbeda dengan konversi ke JPG, tidak diperlukan pengisian latar belakang di sini: kanvas mempertahankan saluran alfa penuh.',
120
+ },
121
+ {
122
+ type: 'paragraph',
123
+ html: 'Ekspor akhir menggunakan metode <code>toDataURL(\'image/png\')</code>, yang menghasilkan PNG lossless yang sesuai dengan aslinya. Hasilnya adalah file yang siap diimpor langsung ke perangkat lunak desain profesional apa pun tanpa langkah perantara, degradasi warna, atau hilangnya transparansi.',
124
+ },
125
+ {
126
+ type: 'tip',
127
+ title: 'Tip untuk editor',
128
+ html: 'Gunakan PNG saat Anda perlu terus mengedit gambar. Kompresi lossless menjamin tidak ada penurunan kualitas akibat penyimpanan berulang kali - sangat penting saat bekerja dengan lapisan, masker, atau penyesuaian warna di Photoshop atau Figma.',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Kasus Penggunaan dan Kompatibilitas',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ icon: 'mdi:check-circle',
138
+ items: [
139
+ 'Mengimpor aset WebP ke Photoshop, Figma, Sketch, atau Illustrator.',
140
+ 'Menjaga transparansi pada logo dan ikon untuk digunakan pada berbagai latar belakang.',
141
+ 'Membuat salinan master grafik untuk proyek jangka panjang.',
142
+ 'Mengekspor aset untuk aplikasi seluler yang memerlukan PNG dengan saluran alfa.',
143
+ 'Menggunakan gambar dalam desain mockup dan presentasi dengan latar belakang variabel.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Kesimpulan',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: 'Jika WebP adalah format server web, maka PNG adalah format studio desain. Alat ini mengonversi aset WebP Anda menjadi PNG siap produksi, dengan transparansi yang utuh dan kualitas maksimal - semuanya di browser Anda dan tanpa file Anda pernah meninggalkan mesin Anda.',
154
+ },
155
+ ];
156
+
157
+
158
+ export const content: WebpAPngLocaleContent = {
159
+ slug,
160
+ title,
161
+ description,
162
+ ui,
163
+ seo,
164
+ faq,
165
+ bibliography,
166
+ howTo,
167
+ schemas: generateSchemas({ title, description, inLanguage: 'id', faq, howTo }),
168
+ };