@jjlmoya/utils-creative 1.26.0 → 1.27.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 +2 -2
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +2 -2
  6. package/src/category/i18n/id.ts +2 -2
  7. package/src/category/i18n/it.ts +2 -2
  8. package/src/category/i18n/ja.ts +2 -2
  9. package/src/category/i18n/ko.ts +2 -2
  10. package/src/category/i18n/nl.ts +2 -2
  11. package/src/category/i18n/pl.ts +2 -2
  12. package/src/category/i18n/pt.ts +2 -2
  13. package/src/category/i18n/ru.ts +2 -2
  14. package/src/category/i18n/sv.ts +2 -2
  15. package/src/category/i18n/tr.ts +2 -2
  16. package/src/category/i18n/zh.ts +2 -2
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/env.d.ts +1 -1
  21. package/src/pages/index.astro +1 -1
  22. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  23. package/src/tests/category_seo_quality.test.ts +74 -0
  24. package/src/tests/faq_count.test.ts +1 -1
  25. package/src/tests/mocks/astro_mock.js +1 -1
  26. package/src/tests/no_h1_in_components.test.ts +1 -1
  27. package/src/tests/seo_parity.test.ts +2 -2
  28. package/src/tests/seo_translation_completeness.test.ts +69 -0
  29. package/src/tests/seo_wellformed_export.test.ts +65 -0
  30. package/src/tests/tool_validation.test.ts +17 -17
  31. package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
  32. package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
  33. package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
  34. package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
  35. package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
  36. package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
  37. package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
  38. package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
  39. package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
  40. package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
  41. package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
  42. package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
  43. package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
  44. package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
  45. package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
  46. package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
  47. package/src/tool/bead-pattern-generator/seo.astro +19 -19
  48. package/src/tool/dice-roller/bibliography.astro +8 -8
  49. package/src/tool/dice-roller/i18n/de.ts +134 -134
  50. package/src/tool/dice-roller/i18n/en.ts +134 -134
  51. package/src/tool/dice-roller/i18n/es.ts +125 -125
  52. package/src/tool/dice-roller/i18n/fr.ts +134 -134
  53. package/src/tool/dice-roller/i18n/id.ts +134 -134
  54. package/src/tool/dice-roller/i18n/it.ts +134 -134
  55. package/src/tool/dice-roller/i18n/ja.ts +134 -134
  56. package/src/tool/dice-roller/i18n/ko.ts +134 -134
  57. package/src/tool/dice-roller/i18n/nl.ts +134 -134
  58. package/src/tool/dice-roller/i18n/pl.ts +134 -134
  59. package/src/tool/dice-roller/i18n/pt.ts +134 -134
  60. package/src/tool/dice-roller/i18n/ru.ts +134 -134
  61. package/src/tool/dice-roller/i18n/sv.ts +134 -134
  62. package/src/tool/dice-roller/i18n/tr.ts +134 -134
  63. package/src/tool/dice-roller/i18n/zh.ts +134 -134
  64. package/src/tool/dice-roller/seo.astro +15 -15
  65. package/src/tool/excuse-generator/bibliography.astro +8 -8
  66. package/src/tool/excuse-generator/i18n/de.ts +120 -120
  67. package/src/tool/excuse-generator/i18n/en.ts +120 -120
  68. package/src/tool/excuse-generator/i18n/es.ts +118 -118
  69. package/src/tool/excuse-generator/i18n/fr.ts +120 -120
  70. package/src/tool/excuse-generator/i18n/id.ts +120 -120
  71. package/src/tool/excuse-generator/i18n/it.ts +120 -120
  72. package/src/tool/excuse-generator/i18n/ja.ts +120 -120
  73. package/src/tool/excuse-generator/i18n/ko.ts +120 -120
  74. package/src/tool/excuse-generator/i18n/nl.ts +120 -120
  75. package/src/tool/excuse-generator/i18n/pl.ts +120 -120
  76. package/src/tool/excuse-generator/i18n/pt.ts +120 -120
  77. package/src/tool/excuse-generator/i18n/ru.ts +120 -120
  78. package/src/tool/excuse-generator/i18n/sv.ts +120 -120
  79. package/src/tool/excuse-generator/i18n/tr.ts +120 -120
  80. package/src/tool/excuse-generator/i18n/zh.ts +120 -120
  81. package/src/tool/excuse-generator/seo.astro +15 -15
  82. package/src/tool/fortune-cookie/bibliography.astro +8 -8
  83. package/src/tool/fortune-cookie/i18n/de.ts +124 -124
  84. package/src/tool/fortune-cookie/i18n/en.ts +124 -124
  85. package/src/tool/fortune-cookie/i18n/es.ts +125 -125
  86. package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
  87. package/src/tool/fortune-cookie/i18n/id.ts +124 -124
  88. package/src/tool/fortune-cookie/i18n/it.ts +124 -124
  89. package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
  90. package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
  91. package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
  92. package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
  93. package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
  94. package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
  95. package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
  96. package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
  97. package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
  98. package/src/tool/fortune-cookie/seo.astro +15 -15
  99. package/src/tool/synesthesia-painter/bibliography.astro +8 -8
  100. package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
  101. package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
  102. package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
  103. package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
  104. package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
  105. package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
  106. package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
  107. package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
  108. package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
  109. package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
  110. package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
  111. package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
  112. package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
  113. package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
  114. package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
  115. package/src/tool/synesthesia-painter/seo.astro +15 -15
  116. package/src/tool/zalgo-generator/bibliography.astro +8 -8
  117. package/src/tool/zalgo-generator/i18n/de.ts +109 -109
  118. package/src/tool/zalgo-generator/i18n/en.ts +109 -109
  119. package/src/tool/zalgo-generator/i18n/es.ts +109 -109
  120. package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
  121. package/src/tool/zalgo-generator/i18n/id.ts +109 -109
  122. package/src/tool/zalgo-generator/i18n/it.ts +109 -109
  123. package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
  124. package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
  125. package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
  126. package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
  127. package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
  128. package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
  129. package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
  130. package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
  131. package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
  132. package/src/tool/zalgo-generator/seo.astro +15 -15
  133. package/src/types.ts +1 -1
@@ -1,111 +1,111 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import { bibliography } from '../bibliography';
3
- import type { BeadPatternGeneratorLocaleContent } from '../index';
4
-
5
- const slug = 'pembuat-pola-manik';
6
- const title = 'Pembuat Pola';
7
- const description = 'Buat pixel art dan skema manik-manik untuk Miyuki atau Hama dari foto Anda. Algoritma kuantisasi warna, mode pandangan terowongan, dan ekspor ZIP.';
8
-
9
- const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
- { question: 'Apa itu kuantisasi warna dalam pola?', answer: 'Ini adalah proses pengurangan ribuan warna dalam foto menjadi hanya beberapa yang sesuai dengan warna manik-manik asli yang tersedia (misalnya, Miyuki atau Hama). Kami menggunakan algoritma cerdas untuk menjaga kemiripan visual dengan palet seminimal mungkin.' },
11
- { question: 'Bisakah saya menggunakan pola ini untuk sulam silang (cross-stitch)?', answer: 'Ya, generator ini membuat grafik kisi yang sangat kompatibel dengan sulam silang. Anda hanya perlu memilih ukuran kisi yang sesuai dengan kain Anda (Aida 14, 18, dsb.).' },
12
- { question: 'Apa perbedaan antara Manik Miyuki dan Hama?', answer: 'Manik Miyuki Delica adalah manik-manik kaca yang sangat kecil dan presisi untuk perhiasan. Manik Hama berbahan plastik dan disatukan dengan setrika. Alat kami memungkinkan Anda menyesuaikan rasio aspek agar pola tidak terdistorsi tergantung pada bahan yang digunakan.' },
13
- { question: 'Bagaimana cara kerja algoritma dithering?', answer: 'Dithering menciptakan ilusi warna yang lebih banyak dengan mencampurkan piksel dari warna yang berbeda dalam pola berjarak. Ini membantu gradasi warna tampak lebih halus meskipun dengan palet manik-manik yang terbatas.' },
14
- ];
15
-
16
- const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
- { name: 'Unggah gambar yang jelas', text: 'Pilih foto dengan kontras yang baik dan sedikit detail kecil agar pola lebih mudah diikuti.' },
18
- { name: 'Sesuaikan ukuran kisi', text: 'Tentukan berapa banyak manik lebar dan tinggi untuk karya akhir Anda. Lebih banyak manik = lebih banyak detail tetapi lebih sulit.' },
19
- { name: 'Optimalkan palet warna', text: 'Kurangi jumlah warna hingga sesuai dengan manik-manik yang tersedia dalam kit kerajinan Anda.' },
20
- { name: 'Ekspor skema panduan', text: 'Hasilkan pola akhir dengan kode warna untuk digunakan sebagai referensi saat merangkai manik-manik Anda pada papan atau benang.' },
21
- ];
22
-
23
- const faqSchema: WithContext<FAQPage> = {
24
- '@context': 'https://schema.org',
25
- '@type': 'FAQPage',
26
- mainEntity: faq.map((item) => ({
27
- '@type': 'Question',
28
- name: item.question,
29
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
- })),
31
- };
32
-
33
- const howToSchema: WithContext<HowTo> = {
34
- '@context': 'https://schema.org',
35
- '@type': 'HowTo',
36
- name: title,
37
- description,
38
- step: howTo.map((step) => ({
39
- '@type': 'HowToStep',
40
- name: step.name,
41
- text: step.text,
42
- })),
43
- };
44
-
45
- const appSchema: WithContext<SoftwareApplication> = {
46
- '@context': 'https://schema.org',
47
- '@type': 'SoftwareApplication',
48
- name: title,
49
- description,
50
- applicationCategory: 'UtilitiesApplication',
51
- operatingSystem: 'Web',
52
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
- inLanguage: 'id',
54
- };
55
-
56
- export const content: BeadPatternGeneratorLocaleContent = {
57
- slug,
58
- title,
59
- description,
60
- faqTitle: 'Pertanyaan yang Sering Diajukan',
61
- ui: {
62
- title: 'Laboratorium Pola',
63
- subtitle: 'Rekayasa warna untuk tangan Anda',
64
- description: 'Dari foto ke skema manik-manik.',
65
- gridSizeLabel: 'Ukuran (Lebar)',
66
- colorCountLabel: 'Warna',
67
- optionsLabel: 'Opsi',
68
- rulersLabel: 'Penggaris',
69
- symbolsTooltip: 'Pola Kejutan',
70
- symbolsLabel: 'Simbol',
71
- downloadBtn: 'Unduh',
72
- uploadTitle: 'Unggah Visi Anda',
73
- uploadSubtitle: 'dan biarkan keajaiban digital terjadi',
74
- paletteTitle: 'DNA Kromatik',
75
- reuploadBtn: 'Ubah Gambar',
76
- tunnelVisionTitle: 'Pandangan Terowongan',
77
- tunnelVisionSubtitle: 'Asisten presisi Anda baris demi baris.',
78
- uploadLabel: 'Unggah foto Anda',
79
- pixelateBtn: 'Hasilkan Pola',
80
- faqTitle: 'FAQ',
81
- bibliographyTitle: 'Referensi'
82
- },
83
- seo: [
84
- { type: 'title', text: 'Alkimia Digital: Mengubah Piksel Menjadi Seni Nyata', level: 2 },
85
- { type: 'paragraph', html: 'Selamat datang di <strong>Studio Pola Utama</strong>. Sebuah <em>mesin kecerdasan kromatik</em> yang dirancang untuk arsitek Pixel Art, master Miyuki, dan visioner sulam silang. Jembatan Anda antara dunia digital dan buatan tangan.' },
86
- { type: 'card', icon: 'mdi:grid', title: 'Kisi Cerdas', html: 'Algoritma <strong>subsampling spasial</strong> kami tidak sekadar "menyusutkan" gambar Anda. Ia menganalisis struktur visual untuk memetakan kelompok piksel yang kompleks ke sel individu, menjaga integritas siluet dan tepi layaknya ilustrator ahli.' },
87
- { type: 'card', icon: 'mdi:palette', title: 'Kuantisasi Warna K Means', html: 'Kami menerapkan varian algoritma <strong>K-Means Clustering</strong> yang secara matematis menemukan nada "centroid" dari gambar Anda. Kesetiaan visual yang mengagumkan dengan palet minimalis 12, 24, atau 32 warna.' },
88
- { type: 'title', text: 'Penguasaan dalam 3 Langkah', level: 3 },
89
- { type: 'card', icon: 'mdi:image-search', title: 'Pilihan Sempurna', html: 'Cari <strong>kontras tinggi</strong>, pencahayaan dramatis, dan bentuk ikonik. Potret dengan latar belakang bersih, logo, dan seni vektor dapat diterjemahkan dengan indah.' },
90
- { type: 'card', icon: 'mdi:ruler', title: 'Kalibrasi Dimensi', html: '<strong>Miyuki Delica:</strong> 50 manik ≈ 8cm · <strong>Hama Midi:</strong> 50 manik ≈ 25cm · <strong>Sulam Silang:</strong> 1 sel = 1 jahitan.' },
91
- { type: 'card', icon: 'mdi:eye-check', title: 'Eksekusi Zen (Mode Pandangan Terowongan)', html: 'Sistem <strong>Pandangan Terowongan</strong> kami bertindak sebagai asisten pribadi Anda, meredupkan kebisingan visual dan menyoroti secara bedah hanya baris yang aktif. Konsentrasi mutlak.' },
92
- { type: 'title', text: 'Kanvas Tak Terbatas', level: 3 },
93
- { type: 'list', items: [
94
- '<strong>Perhiasan Tekstil:</strong> Pola rumit untuk alat tenun dan gelang geometris.',
95
- '<strong>Sulam Silang:</strong> Skema modern yang siap disulam piksel demi piksel.',
96
- '<strong>Mosaik:</strong> Mural skala besar menggunakan tesserae keramik yang disederhanakan.',
97
- '<strong>Retro Gaming:</strong> Aset dan sprite 8-bit otentik dalam hitungan detik.',
98
- ]},
99
- { type: 'stats', items: [
100
- { value: '10-100', label: 'Rentang lebar manik', icon: 'mdi:arrow-expand-horizontal' },
101
- { value: '2-32', label: 'Slot palet warna', icon: 'mdi:palette-swatch' },
102
- { value: 'K-Means', label: 'Algoritma kuantisasi', icon: 'mdi:function-variant' },
103
- { value: 'ZIP', label: 'Format ekspor (pola + panduan)', icon: 'mdi:zip-box' },
104
- ], columns: 4 },
105
- { type: 'paragraph', html: 'Di era layar yang fana, menciptakan sesuatu yang fisik adalah tindakan revolusioner. Alat ini tidak berusaha mengotomatisasi seni, tetapi untuk <strong>memberdayakan artisan</strong>. Kami memberi Anda presisi komputasi sehingga tangan Anda dapat membangun warisan yang langgeng.' },
106
- ],
107
- faq,
108
- bibliography,
109
- howTo,
110
- schemas: [faqSchema as any, howToSchema as any, appSchema],
111
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { BeadPatternGeneratorLocaleContent } from '../index';
4
+
5
+ const slug = 'pembuat-pola-manik';
6
+ const title = 'Pembuat Pola';
7
+ const description = 'Buat pixel art dan skema manik-manik untuk Miyuki atau Hama dari foto Anda. Algoritma kuantisasi warna, mode pandangan terowongan, dan ekspor ZIP.';
8
+
9
+ const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
+ { question: 'Apa itu kuantisasi warna dalam pola?', answer: 'Ini adalah proses pengurangan ribuan warna dalam foto menjadi hanya beberapa yang sesuai dengan warna manik-manik asli yang tersedia (misalnya, Miyuki atau Hama). Kami menggunakan algoritma cerdas untuk menjaga kemiripan visual dengan palet seminimal mungkin.' },
11
+ { question: 'Bisakah saya menggunakan pola ini untuk sulam silang (cross-stitch)?', answer: 'Ya, generator ini membuat grafik kisi yang sangat kompatibel dengan sulam silang. Anda hanya perlu memilih ukuran kisi yang sesuai dengan kain Anda (Aida 14, 18, dsb.).' },
12
+ { question: 'Apa perbedaan antara Manik Miyuki dan Hama?', answer: 'Manik Miyuki Delica adalah manik-manik kaca yang sangat kecil dan presisi untuk perhiasan. Manik Hama berbahan plastik dan disatukan dengan setrika. Alat kami memungkinkan Anda menyesuaikan rasio aspek agar pola tidak terdistorsi tergantung pada bahan yang digunakan.' },
13
+ { question: 'Bagaimana cara kerja algoritma dithering?', answer: 'Dithering menciptakan ilusi warna yang lebih banyak dengan mencampurkan piksel dari warna yang berbeda dalam pola berjarak. Ini membantu gradasi warna tampak lebih halus meskipun dengan palet manik-manik yang terbatas.' },
14
+ ];
15
+
16
+ const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
+ { name: 'Unggah gambar yang jelas', text: 'Pilih foto dengan kontras yang baik dan sedikit detail kecil agar pola lebih mudah diikuti.' },
18
+ { name: 'Sesuaikan ukuran kisi', text: 'Tentukan berapa banyak manik lebar dan tinggi untuk karya akhir Anda. Lebih banyak manik = lebih banyak detail tetapi lebih sulit.' },
19
+ { name: 'Optimalkan palet warna', text: 'Kurangi jumlah warna hingga sesuai dengan manik-manik yang tersedia dalam kit kerajinan Anda.' },
20
+ { name: 'Ekspor skema panduan', text: 'Hasilkan pola akhir dengan kode warna untuk digunakan sebagai referensi saat merangkai manik-manik Anda pada papan atau benang.' },
21
+ ];
22
+
23
+ const faqSchema: WithContext<FAQPage> = {
24
+ '@context': 'https://schema.org',
25
+ '@type': 'FAQPage',
26
+ mainEntity: faq.map((item) => ({
27
+ '@type': 'Question',
28
+ name: item.question,
29
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
+ })),
31
+ };
32
+
33
+ const howToSchema: WithContext<HowTo> = {
34
+ '@context': 'https://schema.org',
35
+ '@type': 'HowTo',
36
+ name: title,
37
+ description,
38
+ step: howTo.map((step) => ({
39
+ '@type': 'HowToStep',
40
+ name: step.name,
41
+ text: step.text,
42
+ })),
43
+ };
44
+
45
+ const appSchema: WithContext<SoftwareApplication> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'SoftwareApplication',
48
+ name: title,
49
+ description,
50
+ applicationCategory: 'UtilitiesApplication',
51
+ operatingSystem: 'Web',
52
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
+ inLanguage: 'id',
54
+ };
55
+
56
+ export const content: BeadPatternGeneratorLocaleContent = {
57
+ slug,
58
+ title,
59
+ description,
60
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
61
+ ui: {
62
+ title: 'Laboratorium Pola',
63
+ subtitle: 'Rekayasa warna untuk tangan Anda',
64
+ description: 'Dari foto ke skema manik-manik.',
65
+ gridSizeLabel: 'Ukuran (Lebar)',
66
+ colorCountLabel: 'Warna',
67
+ optionsLabel: 'Opsi',
68
+ rulersLabel: 'Penggaris',
69
+ symbolsTooltip: 'Pola Kejutan',
70
+ symbolsLabel: 'Simbol',
71
+ downloadBtn: 'Unduh',
72
+ uploadTitle: 'Unggah Visi Anda',
73
+ uploadSubtitle: 'dan biarkan keajaiban digital terjadi',
74
+ paletteTitle: 'DNA Kromatik',
75
+ reuploadBtn: 'Ubah Gambar',
76
+ tunnelVisionTitle: 'Pandangan Terowongan',
77
+ tunnelVisionSubtitle: 'Asisten presisi Anda baris demi baris.',
78
+ uploadLabel: 'Unggah foto Anda',
79
+ pixelateBtn: 'Hasilkan Pola',
80
+ faqTitle: 'FAQ',
81
+ bibliographyTitle: 'Referensi'
82
+ },
83
+ seo: [
84
+ { type: 'title', text: 'Alkimia Digital: Mengubah Piksel Menjadi Seni Nyata', level: 2 },
85
+ { type: 'paragraph', html: 'Selamat datang di <strong>Studio Pola Utama</strong>. Sebuah <em>mesin kecerdasan kromatik</em> yang dirancang untuk arsitek Pixel Art, master Miyuki, dan visioner sulam silang. Jembatan Anda antara dunia digital dan buatan tangan.' },
86
+ { type: 'card', icon: 'mdi:grid', title: 'Kisi Cerdas', html: 'Algoritma <strong>subsampling spasial</strong> kami tidak sekadar "menyusutkan" gambar Anda. Ia menganalisis struktur visual untuk memetakan kelompok piksel yang kompleks ke sel individu, menjaga integritas siluet dan tepi layaknya ilustrator ahli.' },
87
+ { type: 'card', icon: 'mdi:palette', title: 'Kuantisasi Warna K Means', html: 'Kami menerapkan varian algoritma <strong>K-Means Clustering</strong> yang secara matematis menemukan nada "centroid" dari gambar Anda. Kesetiaan visual yang mengagumkan dengan palet minimalis 12, 24, atau 32 warna.' },
88
+ { type: 'title', text: 'Penguasaan dalam 3 Langkah', level: 3 },
89
+ { type: 'card', icon: 'mdi:image-search', title: 'Pilihan Sempurna', html: 'Cari <strong>kontras tinggi</strong>, pencahayaan dramatis, dan bentuk ikonik. Potret dengan latar belakang bersih, logo, dan seni vektor dapat diterjemahkan dengan indah.' },
90
+ { type: 'card', icon: 'mdi:ruler', title: 'Kalibrasi Dimensi', html: '<strong>Miyuki Delica:</strong> 50 manik ≈ 8cm · <strong>Hama Midi:</strong> 50 manik ≈ 25cm · <strong>Sulam Silang:</strong> 1 sel = 1 jahitan.' },
91
+ { type: 'card', icon: 'mdi:eye-check', title: 'Eksekusi Zen (Mode Pandangan Terowongan)', html: 'Sistem <strong>Pandangan Terowongan</strong> kami bertindak sebagai asisten pribadi Anda, meredupkan kebisingan visual dan menyoroti secara bedah hanya baris yang aktif. Konsentrasi mutlak.' },
92
+ { type: 'title', text: 'Kanvas Tak Terbatas', level: 3 },
93
+ { type: 'list', items: [
94
+ '<strong>Perhiasan Tekstil:</strong> Pola rumit untuk alat tenun dan gelang geometris.',
95
+ '<strong>Sulam Silang:</strong> Skema modern yang siap disulam piksel demi piksel.',
96
+ '<strong>Mosaik:</strong> Mural skala besar menggunakan tesserae keramik yang disederhanakan.',
97
+ '<strong>Retro Gaming:</strong> Aset dan sprite 8-bit otentik dalam hitungan detik.',
98
+ ]},
99
+ { type: 'stats', items: [
100
+ { value: '10-100', label: 'Rentang lebar manik', icon: 'mdi:arrow-expand-horizontal' },
101
+ { value: '2-32', label: 'Slot palet warna', icon: 'mdi:palette-swatch' },
102
+ { value: 'K-Means', label: 'Algoritma kuantisasi', icon: 'mdi:function-variant' },
103
+ { value: 'ZIP', label: 'Format ekspor (pola + panduan)', icon: 'mdi:zip-box' },
104
+ ], columns: 4 },
105
+ { type: 'paragraph', html: 'Di era layar yang fana, menciptakan sesuatu yang fisik adalah tindakan revolusioner. Alat ini tidak berusaha mengotomatisasi seni, tetapi untuk <strong>memberdayakan artisan</strong>. Kami memberi Anda presisi komputasi sehingga tangan Anda dapat membangun warisan yang langgeng.' },
106
+ ],
107
+ faq,
108
+ bibliography,
109
+ howTo,
110
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
111
+ };
@@ -1,111 +1,111 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import { bibliography } from '../bibliography';
3
- import type { BeadPatternGeneratorLocaleContent } from '../index';
4
-
5
- const slug = 'generatore-schemi-perline';
6
- const title = 'Generatore di Schemi';
7
- const description = 'Crea pixel art e schemi con perline per Miyuki o Hama dalle tue foto. Algoritmo di quantizzazione del colore, modalità visione a tunnel ed esportazione ZIP.';
8
-
9
- const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
- { question: 'Che cos\'è la quantizzazione del colore negli schemi?', answer: 'È il processo di riduzione delle migliaia di colori di una foto a pochi che corrispondono ai colori reali delle perline disponibili (ad es. Miyuki o Hama). Utilizziamo algoritmi intelligenti per mantenere la somiglianza visiva con la minima tavolozza possibile.' },
11
- { question: 'Posso usare questo schema per il punto croce?', answer: 'Sì, il generatore crea una griglia perfettamente compatibile con il punto croce. Devi solo scegliere una dimensione della griglia che corrisponda al tuo tessuto (Aida 14, 18, ecc.).' },
12
- { question: 'Qual è la differenza tra perline Miyuki e Hama?', answer: 'Le perline Miyuki Delica sono perline di vetro molto piccole e precise per gioielleria. Le perline Hama sono di plastica e vengono fuse con il ferro da stiro. Il nostro strumento ti permette di regolare le proporzioni in modo che lo schema non si distorca a seconda del materiale utilizzato.' },
13
- { question: 'Come funziona l\'algoritmo di dithering?', answer: 'Il dithering crea l\'illusione di più colori mescolando pixel di colori diversi in schemi distanziati. Aiuta le sfumature di colore a sembrare più fluide anche con una tavolozza di perline limitata.' },
14
- ];
15
-
16
- const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
- { name: 'Carica un\'immagine nitida', text: 'Seleziona una foto con un buon contrasto e pochi dettagli piccoli affinché lo schema sia più facile da seguire.' },
18
- { name: 'Regola la dimensione della griglia', text: 'Definisci quanti perline di larghezza e altezza avrà il tuo pezzo finale. Più perline = più dettagli ma maggiore difficoltà.' },
19
- { name: 'Ottimizza la tavolozza dei colori', text: 'Riduci il numero di colori fino a farli corrispondere alle perline che hai a disposizione nel tuo kit.' },
20
- { name: 'Esporta lo schema guida', text: 'Genera lo schema finale con i codici colore da usare come riferimento durante l\'assemblaggio delle perline sulla base o sul filo.' },
21
- ];
22
-
23
- const faqSchema: WithContext<FAQPage> = {
24
- '@context': 'https://schema.org',
25
- '@type': 'FAQPage',
26
- mainEntity: faq.map((item) => ({
27
- '@type': 'Question',
28
- name: item.question,
29
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
- })),
31
- };
32
-
33
- const howToSchema: WithContext<HowTo> = {
34
- '@context': 'https://schema.org',
35
- '@type': 'HowTo',
36
- name: title,
37
- description,
38
- step: howTo.map((step) => ({
39
- '@type': 'HowToStep',
40
- name: step.name,
41
- text: step.text,
42
- })),
43
- };
44
-
45
- const appSchema: WithContext<SoftwareApplication> = {
46
- '@context': 'https://schema.org',
47
- '@type': 'SoftwareApplication',
48
- name: title,
49
- description,
50
- applicationCategory: 'UtilitiesApplication',
51
- operatingSystem: 'Web',
52
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
- inLanguage: 'it',
54
- };
55
-
56
- export const content: BeadPatternGeneratorLocaleContent = {
57
- slug,
58
- title,
59
- description,
60
- faqTitle: 'Domande Frequenti',
61
- ui: {
62
- title: 'Laboratorio di Schemi',
63
- subtitle: 'Ingegneria del colore per le tue mani',
64
- description: 'Dalla foto allo schema con perline.',
65
- gridSizeLabel: 'Dimensione (Larghezza)',
66
- colorCountLabel: 'Colori',
67
- optionsLabel: 'Opzioni',
68
- rulersLabel: 'Righelli',
69
- symbolsTooltip: 'Schema a Sorpresa',
70
- symbolsLabel: 'Simboli',
71
- downloadBtn: 'Scarica',
72
- uploadTitle: 'Carica la Tua Visione',
73
- uploadSubtitle: 'e lascia che la magia digitale accada',
74
- paletteTitle: 'DNA Cromatico',
75
- reuploadBtn: 'Cambia Immagine',
76
- tunnelVisionTitle: 'Visione a Tunnel',
77
- tunnelVisionSubtitle: 'Il tuo assistente di precisione riga per riga.',
78
- uploadLabel: 'Carica la tua foto',
79
- pixelateBtn: 'Genera Schema',
80
- faqTitle: 'FAQ',
81
- bibliographyTitle: 'Riferimenti'
82
- },
83
- seo: [
84
- { type: 'title', text: 'Alchimia Digitale: Trasmutare i Pixel in Arte Tangibile', level: 2 },
85
- { type: 'paragraph', html: 'Benvenuti nell\'<strong>Ultimate Pattern Studio</strong>. Un <em>motore di intelligenza cromatica</em> progettato per architetti della Pixel Art, maestri Miyuki e visionari del punto croce. Il tuo ponte tra il digitale e il fatto a mano.' },
86
- { type: 'card', icon: 'mdi:grid', title: 'La Griglia Intelligente', html: 'Il nostro algoritmo di <strong>sottocampionamento spaziale</strong> non si limita a "rimpicciolire" la tua immagine. Analizza la struttura visiva per mappare complessi gruppi di pixel su singole celle, preservando l\'integrità di sagome e bordi come un illustratore esperto.' },
87
- { type: 'card', icon: 'mdi:palette', title: 'Quantizzazione del colore K Means', html: 'Implementiamo una variante dell\'algoritmo di <strong>K-Means Clustering</strong> che trova matematicamente i toni "centroidi" della tua immagine. Fedeltà visiva sorprendente con una tavolozza minimalista di 12, 24 o 32 colori.' },
88
- { type: 'title', text: 'Maestria in 3 Passaggi', level: 3 },
89
- { type: 'card', icon: 'mdi:image-search', title: 'La Selezione Perfetta', html: 'Cerca <strong>alto contrasto</strong>, illuminazione drammatica e forme iconiche. Ritratti con sfondi puliti, loghi e vector art si traducono magnificamente.' },
90
- { type: 'card', icon: 'mdi:ruler', title: 'Calibrazione Dimensionale', html: '<strong>Miyuki Delica:</strong> 50 perline ≈ 8cm · <strong>Hama Midi:</strong> 50 perline ≈ 25cm · <strong>Punto Croce:</strong> 1 cella = 1 punto.' },
91
- { type: 'card', icon: 'mdi:eye-check', title: 'Esecuzione Zen (Modalità Visione a Tunnel)', html: 'Il nostro sistema <strong>Visione a Tunnel</strong> funge da assistente personale, attenuando il rumore visivo ed evidenziando chirurgicamente solo la riga attiva. Concentrazione assoluta.' },
92
- { type: 'title', text: 'Tele Infinite', level: 3 },
93
- { type: 'list', items: [
94
- '<strong>Gioielleria Tessile:</strong> Schemi intricati per telai e braccialetti geometrici.',
95
- '<strong>Punto Croce:</strong> Schemi moderni pronti per essere ricamati pixel per pixel.',
96
- '<strong>Mosaici:</strong> Murales su larga scala utilizzando tessere di ceramica semplificate.',
97
- '<strong>Retro Gaming:</strong> Asset e sprite 8-bit autentici in pochi secondi.',
98
- ]},
99
- { type: 'stats', items: [
100
- { value: '10-100', label: 'Range larghezza perline', icon: 'mdi:arrow-expand-horizontal' },
101
- { value: '2-32', label: 'Slot tavolozza colori', icon: 'mdi:palette-swatch' },
102
- { value: 'K-Means', label: 'Algoritmo quantizzazione', icon: 'mdi:function-variant' },
103
- { value: 'ZIP', label: 'Formato esportazione (schema + guida)', icon: 'mdi:zip-box' },
104
- ], columns: 4 },
105
- { type: 'paragraph', html: 'In un\'epoca di schermi effimeri, creare qualcosa di fisico è un atto rivoluzionario. Questo strumento non cerca di automatizzare l\'arte, ma di <strong>potenziare l\'artigiano</strong>. Ti diamo precisione computazionale affinché le tue mani possano costruire eredità durature.' },
106
- ],
107
- faq,
108
- bibliography,
109
- howTo,
110
- schemas: [faqSchema as any, howToSchema as any, appSchema],
111
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { BeadPatternGeneratorLocaleContent } from '../index';
4
+
5
+ const slug = 'generatore-schemi-perline';
6
+ const title = 'Generatore di Schemi';
7
+ const description = 'Crea pixel art e schemi con perline per Miyuki o Hama dalle tue foto. Algoritmo di quantizzazione del colore, modalità visione a tunnel ed esportazione ZIP.';
8
+
9
+ const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
+ { question: 'Che cos\'è la quantizzazione del colore negli schemi?', answer: 'È il processo di riduzione delle migliaia di colori di una foto a pochi che corrispondono ai colori reali delle perline disponibili (ad es. Miyuki o Hama). Utilizziamo algoritmi intelligenti per mantenere la somiglianza visiva con la minima tavolozza possibile.' },
11
+ { question: 'Posso usare questo schema per il punto croce?', answer: 'Sì, il generatore crea una griglia perfettamente compatibile con il punto croce. Devi solo scegliere una dimensione della griglia che corrisponda al tuo tessuto (Aida 14, 18, ecc.).' },
12
+ { question: 'Qual è la differenza tra perline Miyuki e Hama?', answer: 'Le perline Miyuki Delica sono perline di vetro molto piccole e precise per gioielleria. Le perline Hama sono di plastica e vengono fuse con il ferro da stiro. Il nostro strumento ti permette di regolare le proporzioni in modo che lo schema non si distorca a seconda del materiale utilizzato.' },
13
+ { question: 'Come funziona l\'algoritmo di dithering?', answer: 'Il dithering crea l\'illusione di più colori mescolando pixel di colori diversi in schemi distanziati. Aiuta le sfumature di colore a sembrare più fluide anche con una tavolozza di perline limitata.' },
14
+ ];
15
+
16
+ const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
+ { name: 'Carica un\'immagine nitida', text: 'Seleziona una foto con un buon contrasto e pochi dettagli piccoli affinché lo schema sia più facile da seguire.' },
18
+ { name: 'Regola la dimensione della griglia', text: 'Definisci quanti perline di larghezza e altezza avrà il tuo pezzo finale. Più perline = più dettagli ma maggiore difficoltà.' },
19
+ { name: 'Ottimizza la tavolozza dei colori', text: 'Riduci il numero di colori fino a farli corrispondere alle perline che hai a disposizione nel tuo kit.' },
20
+ { name: 'Esporta lo schema guida', text: 'Genera lo schema finale con i codici colore da usare come riferimento durante l\'assemblaggio delle perline sulla base o sul filo.' },
21
+ ];
22
+
23
+ const faqSchema: WithContext<FAQPage> = {
24
+ '@context': 'https://schema.org',
25
+ '@type': 'FAQPage',
26
+ mainEntity: faq.map((item) => ({
27
+ '@type': 'Question',
28
+ name: item.question,
29
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
30
+ })),
31
+ };
32
+
33
+ const howToSchema: WithContext<HowTo> = {
34
+ '@context': 'https://schema.org',
35
+ '@type': 'HowTo',
36
+ name: title,
37
+ description,
38
+ step: howTo.map((step) => ({
39
+ '@type': 'HowToStep',
40
+ name: step.name,
41
+ text: step.text,
42
+ })),
43
+ };
44
+
45
+ const appSchema: WithContext<SoftwareApplication> = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'SoftwareApplication',
48
+ name: title,
49
+ description,
50
+ applicationCategory: 'UtilitiesApplication',
51
+ operatingSystem: 'Web',
52
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
53
+ inLanguage: 'it',
54
+ };
55
+
56
+ export const content: BeadPatternGeneratorLocaleContent = {
57
+ slug,
58
+ title,
59
+ description,
60
+ faqTitle: 'Domande Frequenti',
61
+ ui: {
62
+ title: 'Laboratorio di Schemi',
63
+ subtitle: 'Ingegneria del colore per le tue mani',
64
+ description: 'Dalla foto allo schema con perline.',
65
+ gridSizeLabel: 'Dimensione (Larghezza)',
66
+ colorCountLabel: 'Colori',
67
+ optionsLabel: 'Opzioni',
68
+ rulersLabel: 'Righelli',
69
+ symbolsTooltip: 'Schema a Sorpresa',
70
+ symbolsLabel: 'Simboli',
71
+ downloadBtn: 'Scarica',
72
+ uploadTitle: 'Carica la Tua Visione',
73
+ uploadSubtitle: 'e lascia che la magia digitale accada',
74
+ paletteTitle: 'DNA Cromatico',
75
+ reuploadBtn: 'Cambia Immagine',
76
+ tunnelVisionTitle: 'Visione a Tunnel',
77
+ tunnelVisionSubtitle: 'Il tuo assistente di precisione riga per riga.',
78
+ uploadLabel: 'Carica la tua foto',
79
+ pixelateBtn: 'Genera Schema',
80
+ faqTitle: 'FAQ',
81
+ bibliographyTitle: 'Riferimenti'
82
+ },
83
+ seo: [
84
+ { type: 'title', text: 'Alchimia Digitale: Trasmutare i Pixel in Arte Tangibile', level: 2 },
85
+ { type: 'paragraph', html: 'Benvenuti nell\'<strong>Ultimate Pattern Studio</strong>. Un <em>motore di intelligenza cromatica</em> progettato per architetti della Pixel Art, maestri Miyuki e visionari del punto croce. Il tuo ponte tra il digitale e il fatto a mano.' },
86
+ { type: 'card', icon: 'mdi:grid', title: 'La Griglia Intelligente', html: 'Il nostro algoritmo di <strong>sottocampionamento spaziale</strong> non si limita a "rimpicciolire" la tua immagine. Analizza la struttura visiva per mappare complessi gruppi di pixel su singole celle, preservando l\'integrità di sagome e bordi come un illustratore esperto.' },
87
+ { type: 'card', icon: 'mdi:palette', title: 'Quantizzazione del colore K Means', html: 'Implementiamo una variante dell\'algoritmo di <strong>K-Means Clustering</strong> che trova matematicamente i toni "centroidi" della tua immagine. Fedeltà visiva sorprendente con una tavolozza minimalista di 12, 24 o 32 colori.' },
88
+ { type: 'title', text: 'Maestria in 3 Passaggi', level: 3 },
89
+ { type: 'card', icon: 'mdi:image-search', title: 'La Selezione Perfetta', html: 'Cerca <strong>alto contrasto</strong>, illuminazione drammatica e forme iconiche. Ritratti con sfondi puliti, loghi e vector art si traducono magnificamente.' },
90
+ { type: 'card', icon: 'mdi:ruler', title: 'Calibrazione Dimensionale', html: '<strong>Miyuki Delica:</strong> 50 perline ≈ 8cm · <strong>Hama Midi:</strong> 50 perline ≈ 25cm · <strong>Punto Croce:</strong> 1 cella = 1 punto.' },
91
+ { type: 'card', icon: 'mdi:eye-check', title: 'Esecuzione Zen (Modalità Visione a Tunnel)', html: 'Il nostro sistema <strong>Visione a Tunnel</strong> funge da assistente personale, attenuando il rumore visivo ed evidenziando chirurgicamente solo la riga attiva. Concentrazione assoluta.' },
92
+ { type: 'title', text: 'Tele Infinite', level: 3 },
93
+ { type: 'list', items: [
94
+ '<strong>Gioielleria Tessile:</strong> Schemi intricati per telai e braccialetti geometrici.',
95
+ '<strong>Punto Croce:</strong> Schemi moderni pronti per essere ricamati pixel per pixel.',
96
+ '<strong>Mosaici:</strong> Murales su larga scala utilizzando tessere di ceramica semplificate.',
97
+ '<strong>Retro Gaming:</strong> Asset e sprite 8-bit autentici in pochi secondi.',
98
+ ]},
99
+ { type: 'stats', items: [
100
+ { value: '10-100', label: 'Range larghezza perline', icon: 'mdi:arrow-expand-horizontal' },
101
+ { value: '2-32', label: 'Slot tavolozza colori', icon: 'mdi:palette-swatch' },
102
+ { value: 'K-Means', label: 'Algoritmo quantizzazione', icon: 'mdi:function-variant' },
103
+ { value: 'ZIP', label: 'Formato esportazione (schema + guida)', icon: 'mdi:zip-box' },
104
+ ], columns: 4 },
105
+ { type: 'paragraph', html: 'In un\'epoca di schermi effimeri, creare qualcosa di fisico è un atto rivoluzionario. Questo strumento non cerca di automatizzare l\'arte, ma di <strong>potenziare l\'artigiano</strong>. Ti diamo precisione computazionale affinché le tue mani possano costruire eredità durature.' },
106
+ ],
107
+ faq,
108
+ bibliography,
109
+ howTo,
110
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
111
+ };