@jjlmoya/utils-audiovisual 1.6.0 → 1.8.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 (175) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +198 -0
  3. package/src/category/i18n/fr.ts +1 -1
  4. package/src/category/i18n/id.ts +198 -0
  5. package/src/category/i18n/it.ts +198 -0
  6. package/src/category/i18n/ja.ts +198 -0
  7. package/src/category/i18n/ko.ts +198 -0
  8. package/src/category/i18n/nl.ts +198 -0
  9. package/src/category/i18n/pl.ts +198 -0
  10. package/src/category/i18n/pt.ts +198 -0
  11. package/src/category/i18n/ru.ts +198 -0
  12. package/src/category/i18n/sv.ts +198 -0
  13. package/src/category/i18n/tr.ts +198 -0
  14. package/src/category/i18n/zh.ts +198 -0
  15. package/src/category/index.ts +31 -3
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/schemas_fulfillment.test.ts +23 -0
  18. package/src/tests/title_quality.test.ts +55 -0
  19. package/src/tool/chromaticLens/i18n/de.ts +246 -0
  20. package/src/tool/chromaticLens/i18n/en.ts +1 -1
  21. package/src/tool/chromaticLens/i18n/es.ts +1 -1
  22. package/src/tool/chromaticLens/i18n/fr.ts +1 -1
  23. package/src/tool/chromaticLens/i18n/id.ts +246 -0
  24. package/src/tool/chromaticLens/i18n/it.ts +246 -0
  25. package/src/tool/chromaticLens/i18n/ja.ts +246 -0
  26. package/src/tool/chromaticLens/i18n/ko.ts +246 -0
  27. package/src/tool/chromaticLens/i18n/nl.ts +246 -0
  28. package/src/tool/chromaticLens/i18n/pl.ts +246 -0
  29. package/src/tool/chromaticLens/i18n/pt.ts +246 -0
  30. package/src/tool/chromaticLens/i18n/ru.ts +246 -0
  31. package/src/tool/chromaticLens/i18n/sv.ts +246 -0
  32. package/src/tool/chromaticLens/i18n/tr.ts +246 -0
  33. package/src/tool/chromaticLens/i18n/zh.ts +246 -0
  34. package/src/tool/chromaticLens/index.ts +15 -7
  35. package/src/tool/collageMaker/i18n/de.ts +233 -0
  36. package/src/tool/collageMaker/i18n/en.ts +1 -1
  37. package/src/tool/collageMaker/i18n/es.ts +1 -1
  38. package/src/tool/collageMaker/i18n/fr.ts +1 -1
  39. package/src/tool/collageMaker/i18n/id.ts +233 -0
  40. package/src/tool/collageMaker/i18n/it.ts +233 -0
  41. package/src/tool/collageMaker/i18n/ja.ts +233 -0
  42. package/src/tool/collageMaker/i18n/ko.ts +233 -0
  43. package/src/tool/collageMaker/i18n/nl.ts +233 -0
  44. package/src/tool/collageMaker/i18n/pl.ts +233 -0
  45. package/src/tool/collageMaker/i18n/pt.ts +233 -0
  46. package/src/tool/collageMaker/i18n/ru.ts +233 -0
  47. package/src/tool/collageMaker/i18n/sv.ts +233 -0
  48. package/src/tool/collageMaker/i18n/tr.ts +233 -0
  49. package/src/tool/collageMaker/i18n/zh.ts +233 -0
  50. package/src/tool/collageMaker/index.ts +15 -6
  51. package/src/tool/exifCleaner/i18n/de.ts +277 -0
  52. package/src/tool/exifCleaner/i18n/en.ts +2 -2
  53. package/src/tool/exifCleaner/i18n/es.ts +2 -2
  54. package/src/tool/exifCleaner/i18n/fr.ts +4 -4
  55. package/src/tool/exifCleaner/i18n/id.ts +277 -0
  56. package/src/tool/exifCleaner/i18n/it.ts +277 -0
  57. package/src/tool/exifCleaner/i18n/ja.ts +277 -0
  58. package/src/tool/exifCleaner/i18n/ko.ts +277 -0
  59. package/src/tool/exifCleaner/i18n/nl.ts +277 -0
  60. package/src/tool/exifCleaner/i18n/pl.ts +277 -0
  61. package/src/tool/exifCleaner/i18n/pt.ts +277 -0
  62. package/src/tool/exifCleaner/i18n/ru.ts +277 -0
  63. package/src/tool/exifCleaner/i18n/sv.ts +277 -0
  64. package/src/tool/exifCleaner/i18n/tr.ts +277 -0
  65. package/src/tool/exifCleaner/i18n/zh.ts +277 -0
  66. package/src/tool/exifCleaner/index.ts +16 -8
  67. package/src/tool/imageCompressor/i18n/de.ts +242 -0
  68. package/src/tool/imageCompressor/i18n/en.ts +2 -2
  69. package/src/tool/imageCompressor/i18n/es.ts +2 -2
  70. package/src/tool/imageCompressor/i18n/id.ts +242 -0
  71. package/src/tool/imageCompressor/i18n/it.ts +242 -0
  72. package/src/tool/imageCompressor/i18n/ja.ts +242 -0
  73. package/src/tool/imageCompressor/i18n/ko.ts +242 -0
  74. package/src/tool/imageCompressor/i18n/nl.ts +242 -0
  75. package/src/tool/imageCompressor/i18n/pl.ts +242 -0
  76. package/src/tool/imageCompressor/i18n/pt.ts +242 -0
  77. package/src/tool/imageCompressor/i18n/ru.ts +242 -0
  78. package/src/tool/imageCompressor/i18n/sv.ts +242 -0
  79. package/src/tool/imageCompressor/i18n/tr.ts +242 -0
  80. package/src/tool/imageCompressor/i18n/zh.ts +244 -0
  81. package/src/tool/imageCompressor/index.ts +15 -7
  82. package/src/tool/printQualityCalculator/i18n/de.ts +261 -0
  83. package/src/tool/printQualityCalculator/i18n/en.ts +2 -2
  84. package/src/tool/printQualityCalculator/i18n/es.ts +3 -3
  85. package/src/tool/printQualityCalculator/i18n/fr.ts +3 -3
  86. package/src/tool/printQualityCalculator/i18n/id.ts +261 -0
  87. package/src/tool/printQualityCalculator/i18n/it.ts +261 -0
  88. package/src/tool/printQualityCalculator/i18n/ja.ts +261 -0
  89. package/src/tool/printQualityCalculator/i18n/ko.ts +261 -0
  90. package/src/tool/printQualityCalculator/i18n/nl.ts +261 -0
  91. package/src/tool/printQualityCalculator/i18n/pl.ts +261 -0
  92. package/src/tool/printQualityCalculator/i18n/pt.ts +261 -0
  93. package/src/tool/printQualityCalculator/i18n/ru.ts +261 -0
  94. package/src/tool/printQualityCalculator/i18n/sv.ts +261 -0
  95. package/src/tool/printQualityCalculator/i18n/tr.ts +261 -0
  96. package/src/tool/printQualityCalculator/i18n/zh.ts +261 -0
  97. package/src/tool/printQualityCalculator/index.ts +15 -7
  98. package/src/tool/privacyBlur/i18n/de.ts +238 -0
  99. package/src/tool/privacyBlur/i18n/en.ts +1 -1
  100. package/src/tool/privacyBlur/i18n/es.ts +1 -1
  101. package/src/tool/privacyBlur/i18n/fr.ts +1 -1
  102. package/src/tool/privacyBlur/i18n/id.ts +238 -0
  103. package/src/tool/privacyBlur/i18n/it.ts +238 -0
  104. package/src/tool/privacyBlur/i18n/ja.ts +238 -0
  105. package/src/tool/privacyBlur/i18n/ko.ts +238 -0
  106. package/src/tool/privacyBlur/i18n/nl.ts +238 -0
  107. package/src/tool/privacyBlur/i18n/pl.ts +238 -0
  108. package/src/tool/privacyBlur/i18n/pt.ts +238 -0
  109. package/src/tool/privacyBlur/i18n/ru.ts +238 -0
  110. package/src/tool/privacyBlur/i18n/sv.ts +238 -0
  111. package/src/tool/privacyBlur/i18n/tr.ts +238 -0
  112. package/src/tool/privacyBlur/i18n/zh.ts +238 -0
  113. package/src/tool/privacyBlur/index.ts +15 -7
  114. package/src/tool/subtitleSync/i18n/de.ts +241 -0
  115. package/src/tool/subtitleSync/i18n/en.ts +1 -1
  116. package/src/tool/subtitleSync/i18n/es.ts +1 -1
  117. package/src/tool/subtitleSync/i18n/fr.ts +8 -8
  118. package/src/tool/subtitleSync/i18n/id.ts +241 -0
  119. package/src/tool/subtitleSync/i18n/it.ts +241 -0
  120. package/src/tool/subtitleSync/i18n/ja.ts +241 -0
  121. package/src/tool/subtitleSync/i18n/ko.ts +241 -0
  122. package/src/tool/subtitleSync/i18n/nl.ts +241 -0
  123. package/src/tool/subtitleSync/i18n/pl.ts +241 -0
  124. package/src/tool/subtitleSync/i18n/pt.ts +241 -0
  125. package/src/tool/subtitleSync/i18n/ru.ts +241 -0
  126. package/src/tool/subtitleSync/i18n/sv.ts +241 -0
  127. package/src/tool/subtitleSync/i18n/tr.ts +241 -0
  128. package/src/tool/subtitleSync/i18n/zh.ts +241 -0
  129. package/src/tool/subtitleSync/index.ts +15 -7
  130. package/src/tool/timelapseCalculator/i18n/de.ts +169 -0
  131. package/src/tool/timelapseCalculator/i18n/fr.ts +2 -2
  132. package/src/tool/timelapseCalculator/i18n/id.ts +169 -0
  133. package/src/tool/timelapseCalculator/i18n/it.ts +169 -0
  134. package/src/tool/timelapseCalculator/i18n/ja.ts +169 -0
  135. package/src/tool/timelapseCalculator/i18n/ko.ts +169 -0
  136. package/src/tool/timelapseCalculator/i18n/nl.ts +169 -0
  137. package/src/tool/timelapseCalculator/i18n/pl.ts +169 -0
  138. package/src/tool/timelapseCalculator/i18n/pt.ts +169 -0
  139. package/src/tool/timelapseCalculator/i18n/ru.ts +169 -0
  140. package/src/tool/timelapseCalculator/i18n/sv.ts +169 -0
  141. package/src/tool/timelapseCalculator/i18n/tr.ts +169 -0
  142. package/src/tool/timelapseCalculator/i18n/zh.ts +169 -0
  143. package/src/tool/timelapseCalculator/index.ts +16 -8
  144. package/src/tool/tvDistance/i18n/de.ts +223 -0
  145. package/src/tool/tvDistance/i18n/en.ts +1 -1
  146. package/src/tool/tvDistance/i18n/es.ts +1 -1
  147. package/src/tool/tvDistance/i18n/fr.ts +1 -1
  148. package/src/tool/tvDistance/i18n/id.ts +223 -0
  149. package/src/tool/tvDistance/i18n/it.ts +223 -0
  150. package/src/tool/tvDistance/i18n/ja.ts +223 -0
  151. package/src/tool/tvDistance/i18n/ko.ts +223 -0
  152. package/src/tool/tvDistance/i18n/nl.ts +223 -0
  153. package/src/tool/tvDistance/i18n/pl.ts +223 -0
  154. package/src/tool/tvDistance/i18n/pt.ts +223 -0
  155. package/src/tool/tvDistance/i18n/ru.ts +223 -0
  156. package/src/tool/tvDistance/i18n/sv.ts +223 -0
  157. package/src/tool/tvDistance/i18n/tr.ts +223 -0
  158. package/src/tool/tvDistance/i18n/zh.ts +223 -0
  159. package/src/tool/tvDistance/index.ts +15 -7
  160. package/src/tool/videoFrameExtractor/i18n/de.ts +235 -0
  161. package/src/tool/videoFrameExtractor/i18n/en.ts +1 -1
  162. package/src/tool/videoFrameExtractor/i18n/es.ts +1 -1
  163. package/src/tool/videoFrameExtractor/i18n/fr.ts +1 -1
  164. package/src/tool/videoFrameExtractor/i18n/id.ts +235 -0
  165. package/src/tool/videoFrameExtractor/i18n/it.ts +235 -0
  166. package/src/tool/videoFrameExtractor/i18n/ja.ts +235 -0
  167. package/src/tool/videoFrameExtractor/i18n/ko.ts +235 -0
  168. package/src/tool/videoFrameExtractor/i18n/nl.ts +235 -0
  169. package/src/tool/videoFrameExtractor/i18n/pl.ts +235 -0
  170. package/src/tool/videoFrameExtractor/i18n/pt.ts +235 -0
  171. package/src/tool/videoFrameExtractor/i18n/ru.ts +235 -0
  172. package/src/tool/videoFrameExtractor/i18n/sv.ts +235 -0
  173. package/src/tool/videoFrameExtractor/i18n/tr.ts +235 -0
  174. package/src/tool/videoFrameExtractor/i18n/zh.ts +235 -0
  175. package/src/tool/videoFrameExtractor/index.ts +16 -8
@@ -0,0 +1,246 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ChromaticLensUI, ChromaticLensLocaleContent } from '../index';
3
+
4
+ const slug = 'chromatic-lens-ekstraksi-palet-warna-online';
5
+ const title = 'Chromatic Lens: Ekstraksi Palet Warna Online';
6
+ const description = 'Ekstrak palet warna profesional dari gambar apa pun secara gratis. Identifikasi warna dominan dalam foto Anda menggunakan algoritma matematika.';
7
+
8
+ const ui: ChromaticLensUI = {
9
+ dropTitle: "Analisis Warna",
10
+ dropSubtitle: "Seret gambar untuk mengekstrak DNA kromatiknya.",
11
+ processingLabel: "Mengekstrak palet...",
12
+ paletteTitle: "Palet yang Diekstrak",
13
+ copyLabel: "Salin HEX",
14
+ copiedLabel: "Tersalin!",
15
+ colorCountLabel: "Jumlah warna",
16
+ changeImage: "Ganti gambar",
17
+ faqTitle: "Pertanyaan umum tentang ekstraksi warna",
18
+ bibliographyTitle: "Sumber daya dan dokumentasi teknis"
19
+ };
20
+
21
+ const faq: ChromaticLensLocaleContent['faq'] = [
22
+ {
23
+ question: "Bagaimana cara kerja ekstraksi warna?",
24
+ answer: "Kami menggunakan algoritma 'Median Cut', yang mengelompokkan piksel gambar berdasarkan kedekatannya dalam ruang warna RGB untuk menemukan nada yang paling representatif.",
25
+ },
26
+ {
27
+ question: "Dapatkah saya menyalin warna ke editor desain saya?",
28
+ answer: "Ya, dengan mengeklik setiap warna, kode HEX akan disalin secara otomatis ke papan klip Anda, siap ditempelkan ke Photoshop, Figma, atau CSS.",
29
+ },
30
+ {
31
+ question: "Jenis gambar apa yang bisa saya analisis?",
32
+ answer: "Semua file JPG, PNG, atau WebP. Pemrosesan dilakukan secara lokal, sehingga gambar besar akan dianalisis dengan cepat tanpa menghabiskan data jaringan.",
33
+ },
34
+ ];
35
+
36
+ const howTo: ChromaticLensLocaleContent['howTo'] = [
37
+ {
38
+ name: "Unggah gambar",
39
+ text: "Unggah foto yang ingin Anda ambil inspirasi kromatiknya.",
40
+ },
41
+ {
42
+ name: "Sesuaikan presisi",
43
+ text: "Pilih berapa banyak warna dominan yang ingin diidentifikasi oleh alat ini (dari 3 hingga 12).",
44
+ },
45
+ {
46
+ name: "Analisis hasilnya",
47
+ text: "Palet akan muncul secara instan dengan kode heksadesimal yang sesuai.",
48
+ },
49
+ {
50
+ name: "Salin dan gunakan",
51
+ text: "Klik pada nada warna untuk menyimpannya dan menerapkannya pada proyek desain Anda.",
52
+ },
53
+ ];
54
+
55
+ const bibliography: ChromaticLensLocaleContent['bibliography'] = [
56
+ {
57
+ name: "Median Cut Algorithm - Wikipedia",
58
+ url: "https://en.wikipedia.org/wiki/Median_cut",
59
+ },
60
+ {
61
+ name: "Teori Warna untuk Desainer",
62
+ url: "https://www.smashingmagazine.com/2010/01/color-theory-for-designers-part-1-the-meaning-of-color/",
63
+ },
64
+ ];
65
+
66
+ const seo: ChromaticLensLocaleContent['seo'] = [
67
+ {
68
+ type: 'summary',
69
+ title: 'Ekstraksi Palet Warna Cerdas',
70
+ items: [
71
+ 'Algoritma Median Cut profesional untuk analisis warna',
72
+ 'Ekstrak 3-12 warna dominan dari gambar apa pun',
73
+ 'Kode HEX dapat disalin langsung ke papan klip',
74
+ 'Pemrosesan lokal 100% - ideal untuk kreatif'
75
+ ]
76
+ },
77
+ { type: 'title', text: 'Ekstraksi Palet Warna: Sains dan Desain', level: 2 },
78
+ { type: 'paragraph', html: 'Pernahkah Anda bertanya-tanya mengapa foto film terasa begitu harmonis? Itu bukan kebetulan; itu adalah teori warna yang sedang beraksi. Chromatic Lens memungkinkan Anda mengekstrak harmoni itu langsung dari piksel, mengubahnya menjadi kode HEX yang dapat digunakan dalam proyek desain Anda.' },
79
+
80
+ { type: 'stats', items: [
81
+ { value: 'Instan', label: 'Analisis Warna', icon: 'mdi:lightning-bolt' },
82
+ { value: '100%', label: 'Privasi Lokal', icon: 'mdi:lock' },
83
+ { value: 'RGB', label: 'Ruang Warna Presisi', icon: 'mdi:palette' }
84
+ ], columns: 3 },
85
+
86
+ { type: 'title', text: 'Penjelasan Algoritma Median Cut', level: 3 },
87
+ { type: 'paragraph', html: 'Ekstraksi palet cerdas bukanlah pengambilan sampel piksel acak yang sederhana. Ia menggunakan algoritma Median Cut, teknik partisi rekursif yang memastikan representasi setia:' },
88
+ { type: 'list', items: [
89
+ '<strong>Pembagian Rekursif:</strong> \"Kubus warna\" RGB dari gambar dibagi secara rekursif menjadi kotak-kotak yang lebih kecil.',
90
+ '<strong>Keseimbangan Volume:</strong> Setiap partisi berusaha mengelompokkan piksel dari ruang warna yang sama dengan volume yang serupa.',
91
+ '<strong>Rata-rata Tertimbang:</strong> Warna yang dihasilkan dari setiap kotak adalah rata-rata dari semua piksel yang dikandungnya.',
92
+ '<strong>Representasi Setia:</strong> Warna dominan mencerminkan suasana visual nyata dari gambar, bukan sekadar sampel sederhana.'
93
+ ], icon: 'mdi:check' },
94
+
95
+ { type: 'card', title: 'Alur Kerja Kreatif', html: 'Ideal untuk pengembang web, desainer UX/UI, seniman digital, dan kreatif yang ingin menangkap esensi visual foto, film, atau referensi visual secara instan untuk diterapkan dalam antarmuka, ilustrasi, atau palet merek mereka.' },
96
+
97
+ { type: 'title', text: 'Kasus Penggunaan dalam Desain Digital', level: 3 },
98
+ { type: 'comparative', items: [
99
+ {
100
+ title: 'Desainer UX/UI',
101
+ description: 'Ekstrak palet dari gambar utama untuk membuat antarmuka yang kohesif',
102
+ icon: 'mdi:palette',
103
+ points: [
104
+ 'Warna latar belakang yang harmonis',
105
+ 'Tombol dan elemen sekunder',
106
+ 'Kontras yang dihitung secara otomatis'
107
+ ]
108
+ },
109
+ {
110
+ title: 'Pengembang Web',
111
+ description: 'Buat lembar gaya CSS langsung dari referensi visual',
112
+ icon: 'mdi:code-braces',
113
+ points: [
114
+ 'Salin HEX langsung ke CSS',
115
+ 'Variabel warna dalam SCSS/CSS',
116
+ 'Tema yang kohesif tanpa desain sebelumnya'
117
+ ],
118
+ highlight: true
119
+ },
120
+ {
121
+ title: 'Seniman Digital dan Ilustrator',
122
+ description: 'Tangkap referensi kromatik dari film, alam, atau seni',
123
+ icon: 'mdi:brush',
124
+ points: [
125
+ 'Palet referensi dari mahakarya',
126
+ 'Studi warna sinematik',
127
+ 'Inspirasi visual instan'
128
+ ]
129
+ },
130
+ {
131
+ title: 'Spesialis Branding',
132
+ description: 'Kembangkan identitas visual berdasarkan foto panduan',
133
+ icon: 'mdi:tag-multiple',
134
+ points: [
135
+ 'Ekstrak warna merek dari gambar',
136
+ 'Buat panduan kromatik profesional',
137
+ 'Pastikan konsistensi visual'
138
+ ]
139
+ }
140
+ ], columns: 2 },
141
+
142
+ { type: 'title', text: 'Teori Warna Terapan', level: 3 },
143
+ { type: 'table', headers: ['Konsep Warna', 'Definisi', 'Aplikasi Praktis'], rows: [
144
+ ['Harmoni Kromatik', 'Kombinasi warna yang seimbang secara visual', 'Identitas visual yang kohesif dalam UI'],
145
+ ['Kontras', 'Perbedaan kecerahan antar warna', 'Keterbacaan dan hierarki visual'],
146
+ ['Saturasi', 'Intensitas warna dari sebuah nada', 'Profesionalisme (rendah) vs Energi (tinggi)'],
147
+ ['Temperatur Warna', 'Warna hangat (merah) vs warna dingin (biru)', 'Psikologi emosional desain'],
148
+ ['Palet Monokromatik', 'Variasi dari satu nada warna', 'Elegan dan minimalis']
149
+ ] },
150
+
151
+ { type: 'proscons', items: [
152
+ {
153
+ pro: 'Presisi matematis dalam ekstraksi - bukan pilihan visual perkiraan',
154
+ con: 'Warna yang nyaris tidak terlihat dapat disertakan jika memiliki banyak piksel'
155
+ },
156
+ {
157
+ pro: 'Salin instan ke papan klip - integrasi sempurna dengan alur kerja',
158
+ con: 'Memerlukan browser modern yang kompatibel dengan Canvas API'
159
+ },
160
+ {
161
+ pro: 'Privasi total - analisis lokal 100% tanpa pengiriman data',
162
+ con: 'Tidak ada riwayat analisis sebelumnya yang disimpan'
163
+ },
164
+ {
165
+ pro: 'Kompatibel dengan semua format gambar digital',
166
+ con: 'Warna akhir bergantung pada kompresi dan kualitas gambar'
167
+ }
168
+ ], proTitle: 'Keunggulan', conTitle: 'Batasan' },
169
+
170
+ { type: 'diagnostic', variant: 'success', title: 'Representasi Warna Realistis', icon: 'mdi:check-circle-outline', badge: 'Algoritma Canggih', html: 'Berbeda dengan alat yang hanya mengambil sampel piksel acak, sistem kami menggunakan algoritma Median Cut yang menimbang seluruh jumlah piksel dari setiap nada, memastikan palet yang dihasilkan secara setia mencerminkan suasana visual dan psikologi warna dari gambar aslinya.' },
171
+
172
+ { type: 'glossary', items: [
173
+ {
174
+ term: 'Median Cut',
175
+ definition: 'Algoritma kuantisasi warna yang membagi ruang RGB secara rekursif menjadi kotak-kotak, memastikan distribusi yang seragam. Secara historis digunakan dalam teknologi warna GIF dan terindeks.'
176
+ },
177
+ {
178
+ term: 'Ruang Warna RGB',
179
+ definition: 'Model warna berdasarkan merah, hijau, dan biru. Setiap warna direpresentasikan sebagai kombinasi dari ketiga nilai ini (0-255). Standar pada layar digital dan web.'
180
+ },
181
+ {
182
+ term: 'Kode HEX',
183
+ definition: 'Notasi heksadesimal 6 digit (#RRGGBB) yang mewakili warna di web: #FF0000 (merah), #00FF00 (hijau), #0000FF (biru). Universal di CSS, Figma, dan Adobe.'
184
+ },
185
+ {
186
+ term: 'Saturasi Warna',
187
+ definition: 'Intensitas atau kemurnian warna. Saturasi tinggi = warna cerah; saturasi rendah = warna keabu-abuan. Mempengaruhi persepsi emosional desain.'
188
+ },
189
+ {
190
+ term: 'Harmoni Kromatik',
191
+ definition: 'Pemilihan dan kombinasi warna yang menghasilkan hasil yang menyenangkan secara visual. Bisa berupa monokromatik, komplementer, analog, atau triadik.'
192
+ }
193
+ ] },
194
+
195
+ { type: 'message', title: 'Analisis Kromatik Profesional', ariaLabel: 'Informasi teknis tentang analisis warna', html: 'Chromatic Lens mengubah analisis visual manual menjadi presisi algoritmik. Alat ini tidak hanya mengekstrak warna: ia menangkap esensi emosional dan visual dari gambar apa pun, menempatkannya langsung di papan klip Anda sebagai kode HEX yang siap digunakan. Privasi total, tanpa batas volume analisis.' },
196
+
197
+ { type: 'title', text: 'Desain dari Inspirasi Visual', level: 3 },
198
+ { type: 'paragraph', html: 'Palet warna terbaik adalah yang menangkap maksud visual dari referensi Anda. Chromatic Lens mengotomatiskan apa yang dulunya merupakan proses manual: mengamati, menganalisis, mencatat. Sekarang, cukup seret gambar dan dapatkan kode HEX profesional dalam hitungan detik.' }
199
+ ];
200
+
201
+ const faqSchema: WithContext<FAQPage> = {
202
+ '@context': 'https://schema.org',
203
+ '@type': 'FAQPage',
204
+ mainEntity: faq.map((item) => ({
205
+ '@type': 'Question',
206
+ name: item.question,
207
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
208
+ })),
209
+ };
210
+
211
+ const howToSchema: WithContext<HowTo> = {
212
+ '@context': 'https://schema.org',
213
+ '@type': 'HowTo',
214
+ name: title,
215
+ description,
216
+ step: howTo.map((step) => ({
217
+ '@type': 'HowToStep',
218
+ name: step.name,
219
+ text: step.text,
220
+ })),
221
+ };
222
+
223
+ const appSchema: WithContext<SoftwareApplication> = {
224
+ '@context': 'https://schema.org',
225
+ '@type': 'SoftwareApplication',
226
+ name: title,
227
+ description,
228
+ applicationCategory: 'UtilitiesApplication',
229
+ operatingSystem: 'Web',
230
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
231
+ inLanguage: 'id',
232
+ };
233
+
234
+ export const content: ChromaticLensLocaleContent = {
235
+ slug,
236
+ title,
237
+ description,
238
+ ui,
239
+ seo,
240
+ faqTitle: "Pertanyaan yang Sering Diajukan",
241
+ faq,
242
+ bibliographyTitle: "Referensi",
243
+ bibliography,
244
+ howTo,
245
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
246
+ };
@@ -0,0 +1,246 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ChromaticLensUI, ChromaticLensLocaleContent } from '../index';
3
+
4
+ const slug = 'chromatic-lens-estrazione-tavolozza-colori-online';
5
+ const title = 'Chromatic Lens: Estrazione Tavolozza Colori Online';
6
+ const description = 'Estrai gratuitamente tavolozze di colori professionali da qualsiasi immagine. Identifica i colori dominanti nelle tue foto usando algoritmi matematici.';
7
+
8
+ const ui: ChromaticLensUI = {
9
+ dropTitle: "Analizza Colori",
10
+ dropSubtitle: "Trascina un'immagine per estrarre il suo DNA cromatico.",
11
+ processingLabel: "Estrazione tavolozza...",
12
+ paletteTitle: "Tavolozza Estratta",
13
+ copyLabel: "Copia HEX",
14
+ copiedLabel: "Copiato!",
15
+ colorCountLabel: "Numero di colori",
16
+ changeImage: "Cambia immagine",
17
+ faqTitle: "Domande frequenti sull'estrazione del colore",
18
+ bibliographyTitle: "Risorse e documentazione tecnica"
19
+ };
20
+
21
+ const faq: ChromaticLensLocaleContent['faq'] = [
22
+ {
23
+ question: "Come funziona l'estrazione del colore?",
24
+ answer: "Utilizziamo l'algoritmo 'Median Cut', che raggruppa i pixel dell'immagine in base alla loro vicinanza nello spazio colore RGB per trovare le tonalità più rappresentative.",
25
+ },
26
+ {
27
+ question: "Posso copiare i colori nel mio editor di design?",
28
+ answer: "Sì, cliccando su ogni colore, il codice HEX verrà automaticamente copiato negli appunti, pronto per essere incollato in Photoshop, Figma o CSS.",
29
+ },
30
+ {
31
+ question: "Quali tipi di immagini posso analizzare?",
32
+ answer: "Qualsiasi file JPG, PNG o WebP. L'elaborazione è locale, quindi le immagini di grandi dimensioni verranno analizzate rapidamente senza consumare dati di rete.",
33
+ },
34
+ ];
35
+
36
+ const howTo: ChromaticLensLocaleContent['howTo'] = [
37
+ {
38
+ name: "Carica l'immagine",
39
+ text: "Carica la fotografia da cui desideri estrarre l'ispirazione cromatica.",
40
+ },
41
+ {
42
+ name: "Regola la precisione",
43
+ text: "Seleziona quanti colori dominanti desideri che lo strumento identifichi (da 3 a 12).",
44
+ },
45
+ {
46
+ name: "Analizza il risultato",
47
+ text: "La tavolozza apparirà istantaneamente con i relativi codici esadecimali.",
48
+ },
49
+ {
50
+ name: "Copia e usa",
51
+ text: "Clicca sulle tonalità per salvarle e applicarle al tuo progetto di design.",
52
+ },
53
+ ];
54
+
55
+ const bibliography: ChromaticLensLocaleContent['bibliography'] = [
56
+ {
57
+ name: "Median Cut Algorithm - Wikipedia",
58
+ url: "https://en.wikipedia.org/wiki/Median_cut",
59
+ },
60
+ {
61
+ name: "Teoria del Colore per Designer",
62
+ url: "https://www.smashingmagazine.com/2010/01/color-theory-for-designers-part-1-the-meaning-of-color/",
63
+ },
64
+ ];
65
+
66
+ const seo: ChromaticLensLocaleContent['seo'] = [
67
+ {
68
+ type: 'summary',
69
+ title: 'Estrazione Intelligente della Tavolozza Colori',
70
+ items: [
71
+ 'Algoritmo professionale Median Cut per l\'analisi del colore',
72
+ 'Estrai da 3 a 12 colori dominanti da qualsiasi immagine',
73
+ 'Codici HEX copiabili direttamente negli appunti',
74
+ 'Elaborazione 100% locale - ideale per i creativi'
75
+ ]
76
+ },
77
+ { type: 'title', text: 'Estrazione Tavolozza Colori: Scienza e Design', level: 2 },
78
+ { type: 'paragraph', html: 'Ti sei mai chiesto perché una fotografia cinematografica appare così armoniosa? Non è una coincidenza; è la teoria del colore in azione. Chromatic Lens ti permette di estrarre quell\'armonia direttamente dal pixel, trasformandola in codici HEX utilizzabili nei tuoi progetti di design.' },
79
+
80
+ { type: 'stats', items: [
81
+ { value: 'Istantanea', label: 'Analisi Colore', icon: 'mdi:lightning-bolt' },
82
+ { value: '100%', label: 'Privacy Locale', icon: 'mdi:lock' },
83
+ { value: 'RGB', label: 'Spazio Colore Preciso', icon: 'mdi:palette' }
84
+ ], columns: 3 },
85
+
86
+ { type: 'title', text: 'L\'Algoritmo Median Cut Spiegato', level: 3 },
87
+ { type: 'paragraph', html: 'L\'estrazione intelligente della tavolozza non è un semplice campionamento casuale di pixel. Utilizza l\'algoritmo Median Cut, una tecnica di partizionamento ricorsivo che garantisce una rappresentazione fedele:' },
88
+ { type: 'list', items: [
89
+ '<strong>Divisione Ricorsiva:</strong> Il \"cubo di colore\" RGB dell\'immagine viene diviso ricorsivamente in scatole più piccole.',
90
+ '<strong>Bilanciamento del Volume:</strong> Ogni partizione cerca di raggruppare i pixel dello stesso spazio colore con volumi simili.',
91
+ '<strong>Media Ponderata:</strong> Il colore risultante di ogni scatola è la media di tutti i pixel che contiene.',
92
+ '<strong>Rappresentazione Fedele:</strong> I colori dominanti riflettono la reale atmosfera visiva dell\'immagine, non un semplice campione.'
93
+ ], icon: 'mdi:check' },
94
+
95
+ { type: 'card', title: 'Flusso di Lavoro Creativo', html: 'Ideale per sviluppatori web, designer UX/UI, artisti digitali e creativi che desiderano catturare istantaneamente l\'essenza visiva di una fotografia, di un film o di un riferimento visivo da applicare nelle loro interfacce, illustrazioni o tavolozze di brand.' },
96
+
97
+ { type: 'title', text: 'Casi d\'Uso nel Design Digitale', level: 3 },
98
+ { type: 'comparative', items: [
99
+ {
100
+ title: 'Designer UX/UI',
101
+ description: 'Estrai tavolozze dalle immagini hero per creare interfacce coerenti',
102
+ icon: 'mdi:palette',
103
+ points: [
104
+ 'Colori di sfondo armoniosi',
105
+ 'Pulsanti ed elementi secondari',
106
+ 'Contrasto calcolato automaticamente'
107
+ ]
108
+ },
109
+ {
110
+ title: 'Sviluppatori Web',
111
+ description: 'Crea fogli di stile CSS direttamente da riferimenti visivi',
112
+ icon: 'mdi:code-braces',
113
+ points: [
114
+ 'Copia HEX direttamente nel CSS',
115
+ 'Variabili di colore in SCSS/CSS',
116
+ 'Temi coerenti senza design preventivo'
117
+ ],
118
+ highlight: true
119
+ },
120
+ {
121
+ title: 'Artisti Digitali e Illustratori',
122
+ description: 'Cattura riferimenti cromatici da film, natura o arte',
123
+ icon: 'mdi:brush',
124
+ points: [
125
+ 'Tavolozze di riferimento da capolavori',
126
+ 'Studi sul colore cinematografico',
127
+ 'Ispirazione visiva immediata'
128
+ ]
129
+ },
130
+ {
131
+ title: 'Specialisti di Branding',
132
+ description: 'Sviluppa identità visive basate su fotografie guida',
133
+ icon: 'mdi:tag-multiple',
134
+ points: [
135
+ 'Estrai colori del brand dalle immagini',
136
+ 'Crea guide cromatiche professionali',
137
+ 'Garantisci coerenza visiva'
138
+ ]
139
+ }
140
+ ], columns: 2 },
141
+
142
+ { type: 'title', text: 'Teoria del Colore Applicata', level: 3 },
143
+ { type: 'table', headers: ['Concetto Colore', 'Definizione', 'Applicazione Pratica'], rows: [
144
+ ['Armonia Cromatica', 'Combinazione di colori visivamente bilanciata', 'Identità visiva coerente nella UI'],
145
+ ['Contrasto', 'Differenza di luminosità tra i colori', 'Leggibilità e gerarchia visiva'],
146
+ ['Saturazione', 'Intensità del colore di una tonalità', 'Professionalità (bassa) vs Energia (alta)'],
147
+ ['Temperatura Colore', 'Colori caldi (rossi) vs colori freddi (blu)', 'Psicologia emotiva del design'],
148
+ ['Tavolozza Monocromatica', 'Variazioni di una singola tonalità', 'Eleganza e minimalismo']
149
+ ] },
150
+
151
+ { type: 'proscons', items: [
152
+ {
153
+ pro: 'Precisione matematica nell\'estrazione - non una selezione visiva approssimativa',
154
+ con: 'Colori difficilmente visibili possono essere inclusi se hanno molti pixel'
155
+ },
156
+ {
157
+ pro: 'Copia istantanea negli appunti - integrazione perfetta con il flusso di lavoro',
158
+ con: 'Richiede un browser moderno compatibile con la Canvas API'
159
+ },
160
+ {
161
+ pro: 'Privacy totale - analisi 100% locale senza invio di dati',
162
+ con: 'Nessuna cronologia delle analisi precedenti salvata'
163
+ },
164
+ {
165
+ pro: 'Compatibile con qualsiasi formato di immagine digitale',
166
+ con: 'I colori finali dipendono dalla compressione e dalla qualità dell\'immagine'
167
+ }
168
+ ], proTitle: 'Vantaggi', conTitle: 'Limitazioni' },
169
+
170
+ { type: 'diagnostic', variant: 'success', title: 'Rappresentazione Realistica del Colore', icon: 'mdi:check-circle-outline', badge: 'Algoritmo Avanzato', html: 'A differenza degli strumenti che campionano semplicemente pixel casuali, il nostro sistema utilizza l\'algoritmo Median Cut che pesa l\'intero conteggio dei pixel di ogni tonalità, garantendo che la tavolozza risultante rifletta fedelmente l\'atmosfera visiva e la psicologia del colore dell\'immagine originale.' },
171
+
172
+ { type: 'glossary', items: [
173
+ {
174
+ term: 'Median Cut',
175
+ definition: 'Algoritmo di quantizzazione del colore che divide ricorsivamente lo spazio RGB in scatole, garantendo una distribuzione uniforme. Storicamente utilizzato nella tecnologia GIF e dei colori indicizzati.'
176
+ },
177
+ {
178
+ term: 'Spazio Colore RGB',
179
+ definition: 'Modello di colore basato su rosso, verde e blu. Ogni colore è rappresentato come combinazione di questi tre valori (0-255). Standard su schermi digitali e web.'
180
+ },
181
+ {
182
+ term: 'Codice HEX',
183
+ definition: 'Notazione esadecimale a 6 cifre (#RRGGBB) che rappresenta il colore sul web: #FF0000 (rosso), #00FF00 (verde), #0000FF (blu). Universale in CSS, Figma e Adobe.'
184
+ },
185
+ {
186
+ term: 'Saturazione Colore',
187
+ definition: 'Intensità o purezza del colore. Alta saturazione = colore vivido; bassa saturazione = colore grigiastro. Influisce sulla percezione emotiva del design.'
188
+ },
189
+ {
190
+ term: 'Armonia Cromatica',
191
+ definition: 'La selezione e la combinazione di colori che danno un risultato visivamente gradevole. Può essere monocromatica, complementare, analoga o triadica.'
192
+ }
193
+ ] },
194
+
195
+ { type: 'message', title: 'Analisi Cromatica Professionale', ariaLabel: 'Informazioni tecniche sull\'analisi del colore', html: 'Chromatic Lens trasforma l\'analisi visiva manuale in precisione algoritmica. Non si limita a estrarre i colori: cattura l\'essenza emotiva e visiva di qualsiasi immagine, mettendola direttamente negli appunti sotto forma di codici HEX pronti all\'uso. Privacy totale, nessun limite al volume di analisi.' },
196
+
197
+ { type: 'title', text: 'Design dall\'Ispirazione Visiva', level: 3 },
198
+ { type: 'paragraph', html: 'La migliore tavolozza di colori è quella che cattura l\'intento visivo del tuo riferimento. Chromatic Lens automatizza quello che prima era un processo manuale: osservare, analizzare, annotare. Ora, basta trascinare un\'immagine e ottenere codici HEX professionali in pochi secondi.' }
199
+ ];
200
+
201
+ const faqSchema: WithContext<FAQPage> = {
202
+ '@context': 'https://schema.org',
203
+ '@type': 'FAQPage',
204
+ mainEntity: faq.map((item) => ({
205
+ '@type': 'Question',
206
+ name: item.question,
207
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
208
+ })),
209
+ };
210
+
211
+ const howToSchema: WithContext<HowTo> = {
212
+ '@context': 'https://schema.org',
213
+ '@type': 'HowTo',
214
+ name: title,
215
+ description,
216
+ step: howTo.map((step) => ({
217
+ '@type': 'HowToStep',
218
+ name: step.name,
219
+ text: step.text,
220
+ })),
221
+ };
222
+
223
+ const appSchema: WithContext<SoftwareApplication> = {
224
+ '@context': 'https://schema.org',
225
+ '@type': 'SoftwareApplication',
226
+ name: title,
227
+ description,
228
+ applicationCategory: 'UtilitiesApplication',
229
+ operatingSystem: 'Web',
230
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
231
+ inLanguage: 'it',
232
+ };
233
+
234
+ export const content: ChromaticLensLocaleContent = {
235
+ slug,
236
+ title,
237
+ description,
238
+ ui,
239
+ seo,
240
+ faqTitle: "Domande Frequenti",
241
+ faq,
242
+ bibliographyTitle: "Riferimenti",
243
+ bibliography,
244
+ howTo,
245
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
246
+ };