@jjlmoya/utils-creative 1.25.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 (134) 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/spanish_leakage.test.ts +5 -1
  31. package/src/tests/tool_validation.test.ts +17 -17
  32. package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
  33. package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
  34. package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
  35. package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
  36. package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
  37. package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
  38. package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
  39. package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
  40. package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
  41. package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
  42. package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
  43. package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
  44. package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
  45. package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
  46. package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
  47. package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
  48. package/src/tool/bead-pattern-generator/seo.astro +19 -19
  49. package/src/tool/dice-roller/bibliography.astro +8 -8
  50. package/src/tool/dice-roller/i18n/de.ts +134 -134
  51. package/src/tool/dice-roller/i18n/en.ts +134 -134
  52. package/src/tool/dice-roller/i18n/es.ts +125 -125
  53. package/src/tool/dice-roller/i18n/fr.ts +134 -134
  54. package/src/tool/dice-roller/i18n/id.ts +134 -134
  55. package/src/tool/dice-roller/i18n/it.ts +134 -134
  56. package/src/tool/dice-roller/i18n/ja.ts +134 -134
  57. package/src/tool/dice-roller/i18n/ko.ts +134 -134
  58. package/src/tool/dice-roller/i18n/nl.ts +134 -134
  59. package/src/tool/dice-roller/i18n/pl.ts +134 -134
  60. package/src/tool/dice-roller/i18n/pt.ts +134 -134
  61. package/src/tool/dice-roller/i18n/ru.ts +134 -134
  62. package/src/tool/dice-roller/i18n/sv.ts +134 -134
  63. package/src/tool/dice-roller/i18n/tr.ts +134 -134
  64. package/src/tool/dice-roller/i18n/zh.ts +134 -134
  65. package/src/tool/dice-roller/seo.astro +15 -15
  66. package/src/tool/excuse-generator/bibliography.astro +8 -8
  67. package/src/tool/excuse-generator/i18n/de.ts +120 -120
  68. package/src/tool/excuse-generator/i18n/en.ts +120 -120
  69. package/src/tool/excuse-generator/i18n/es.ts +118 -118
  70. package/src/tool/excuse-generator/i18n/fr.ts +120 -120
  71. package/src/tool/excuse-generator/i18n/id.ts +120 -120
  72. package/src/tool/excuse-generator/i18n/it.ts +120 -120
  73. package/src/tool/excuse-generator/i18n/ja.ts +120 -120
  74. package/src/tool/excuse-generator/i18n/ko.ts +120 -120
  75. package/src/tool/excuse-generator/i18n/nl.ts +120 -120
  76. package/src/tool/excuse-generator/i18n/pl.ts +120 -120
  77. package/src/tool/excuse-generator/i18n/pt.ts +120 -120
  78. package/src/tool/excuse-generator/i18n/ru.ts +120 -120
  79. package/src/tool/excuse-generator/i18n/sv.ts +120 -120
  80. package/src/tool/excuse-generator/i18n/tr.ts +120 -120
  81. package/src/tool/excuse-generator/i18n/zh.ts +120 -120
  82. package/src/tool/excuse-generator/seo.astro +15 -15
  83. package/src/tool/fortune-cookie/bibliography.astro +8 -8
  84. package/src/tool/fortune-cookie/i18n/de.ts +124 -124
  85. package/src/tool/fortune-cookie/i18n/en.ts +124 -124
  86. package/src/tool/fortune-cookie/i18n/es.ts +125 -125
  87. package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
  88. package/src/tool/fortune-cookie/i18n/id.ts +124 -124
  89. package/src/tool/fortune-cookie/i18n/it.ts +124 -124
  90. package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
  91. package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
  92. package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
  93. package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
  94. package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
  95. package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
  96. package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
  97. package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
  98. package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
  99. package/src/tool/fortune-cookie/seo.astro +15 -15
  100. package/src/tool/synesthesia-painter/bibliography.astro +8 -8
  101. package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
  102. package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
  103. package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
  104. package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
  105. package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
  106. package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
  107. package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
  108. package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
  109. package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
  110. package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
  111. package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
  112. package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
  113. package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
  114. package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
  115. package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
  116. package/src/tool/synesthesia-painter/seo.astro +15 -15
  117. package/src/tool/zalgo-generator/bibliography.astro +8 -8
  118. package/src/tool/zalgo-generator/i18n/de.ts +109 -109
  119. package/src/tool/zalgo-generator/i18n/en.ts +109 -109
  120. package/src/tool/zalgo-generator/i18n/es.ts +109 -109
  121. package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
  122. package/src/tool/zalgo-generator/i18n/id.ts +109 -109
  123. package/src/tool/zalgo-generator/i18n/it.ts +109 -109
  124. package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
  125. package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
  126. package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
  127. package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
  128. package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
  129. package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
  130. package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
  131. package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
  132. package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
  133. package/src/tool/zalgo-generator/seo.astro +15 -15
  134. 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 = 'perlenmuster-generator';
6
- const title = 'Muster Generator';
7
- const description = 'Erstellen Sie Pixelkunst und Perlenschemata für Miyuki oder Hama aus Ihren Fotos. Farbauantierungsalgorithmus, Tunnelblick-Modus und ZIP-Export.';
8
-
9
- const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
- { question: 'Was ist Farbauantierung bei Mustern?', answer: 'Dabei werden die Tausenden von Farben in einem Foto auf einige wenige reduziert, die den tatsächlich verfügbaren Perlenfarben entsprechen (z. B. Miyuki oder Hama). Wir verwenden intelligente Algorithmen, um die visuelle Ähnlichkeit mit einer minimalen Palette beizubehalten.' },
11
- { question: 'Kann ich dieses Muster für Kreuzstich verwenden?', answer: 'Ja, der Generator erstellt ein Rasterdiagramm, das perfekt für Kreuzstich geeignet ist. Sie müssen lediglich eine Rastergröße wählen, die zu Ihrem Stoff passt (Aida 14, 18 usw.).' },
12
- { question: 'Was ist der Unterschied zwischen Miyuki- und Hama-Perlen?', answer: 'Miyuki Delica-Perlen sind sehr kleine, präzise Glasperlen für Schmuck. Hama-Perlen sind aus Kunststoff und werden mit einem Bügeleisen verschmolzen. Unser Werkzeug ermöglicht es Ihnen, das Seitenverhältnis anzupassen, damit sich das Muster je nach verwendetem Material nicht verzerrt.' },
13
- { question: 'Wie funktioniert der Dithering-Algorithmus?', answer: 'Dithering erzeugt die Illusion von mehr Farben, indem Pixel verschiedener Farben in Abständen gemischt werden. Dies hilft dabei, Farbübergänge auch mit einer begrenzten Perlenpalette glatter erscheinen zu lassen.' },
14
- ];
15
-
16
- const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
- { name: 'Ein klares Bild hochladen', text: 'Wählen Sie ein Foto mit gutem Kontrast und wenigen kleinen Details, damit das Muster einfacher zu befolgen ist.' },
18
- { name: 'Die Rastergröße anpassen', text: 'Legen Sie fest, wie viele Perlen breit und hoch Ihr fertiges Stück sein soll. Mehr Perlen = mehr Details, aber auch höherer Schwierigkeitsgrad.' },
19
- { name: 'Die Farbpalette optimieren', text: 'Reduzieren Sie die Anzahl der Farben, bis sie mit den Perlen übereinstimmen, die Sie in Ihrem Bastelset zur Verfügung haben.' },
20
- { name: 'Das Musterschema exportieren', text: 'Generieren Sie das endgültige Muster mit Farbcodes, um es als Referenz beim Zusammensetzen Ihrer Perlen auf der Platte oder dem Faden zu verwenden.' },
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: 'de',
54
- };
55
-
56
- export const content: BeadPatternGeneratorLocaleContent = {
57
- slug,
58
- title,
59
- description,
60
- faqTitle: 'Häufig gestellte Fragen',
61
- ui: {
62
- title: 'Muster Labor',
63
- subtitle: 'Farbtechnik für Ihre Hände',
64
- description: 'Vom Foto zum Perlenschema.',
65
- gridSizeLabel: 'Größe (Breite)',
66
- colorCountLabel: 'Farben',
67
- optionsLabel: 'Optionen',
68
- rulersLabel: 'Lineale',
69
- symbolsTooltip: 'Überraschungsmuster',
70
- symbolsLabel: 'Symbole',
71
- downloadBtn: 'Herunterladen',
72
- uploadTitle: 'Laden Sie Ihre Vision hoch',
73
- uploadSubtitle: 'und lassen Sie die digitale Magie wirken',
74
- paletteTitle: 'Chromatische DNA',
75
- reuploadBtn: 'Bild ändern',
76
- tunnelVisionTitle: 'Tunnelblick',
77
- tunnelVisionSubtitle: 'Ihr Präzisionsassistent Reihe für Reihe.',
78
- uploadLabel: 'Laden Sie Ihr Foto hoch',
79
- pixelateBtn: 'Muster generieren',
80
- faqTitle: 'FAQ',
81
- bibliographyTitle: 'Referenzen'
82
- },
83
- seo: [
84
- { type: 'title', text: 'Digitale Alchemie: Pixel in greifbare Kunst verwandeln', level: 2 },
85
- { type: 'paragraph', html: 'Willkommen im <strong>Ultimativen Musterstudio</strong>. Ein <em>chromatisches Intelligenzsystem</em>, entwickelt für Pixel-Art-Architekten, Miyuki-Meister und Kreuzstich-Visionäre. Ihre Brücke zwischen Digitalem und Handwerk.' },
86
- { type: 'card', icon: 'mdi:grid', title: 'Das intelligente Raster', html: 'Unser Algorithmus für <strong>räumliches Subsampling</strong> "schrumpft" Ihr Bild nicht einfach nur. Er analysiert die visuelle Struktur, um komplexe Pixelgruppen auf einzelne Zellen abzubilden und so die Integrität von Silhouetten und Kanten wie ein erfahrener Illustrator zu bewahren.' },
87
- { type: 'card', icon: 'mdi:palette', title: 'K Means Farbquantisierung', html: 'Wir implementieren eine Variante des <strong>K-Means-Clustering</strong>-Algorithmus, der mathematisch die "Zentroid"-Töne Ihres Bildes findet. Erstaunliche visuelle Treue mit einer minimalistischen Palette von 12, 24 oder 32 Farben.' },
88
- { type: 'title', text: 'Meisterschaft in 3 Schritten', level: 3 },
89
- { type: 'card', icon: 'mdi:image-search', title: 'Die perfekte Auswahl', html: 'Suchen Sie nach <strong>hohem Kontrast</strong>, dramatischer Beleuchtung und ikonischen Formen. Porträts mit klarem Hintergrund, Logos und Vektorgrafiken lassen sich wunderbar umsetzen.' },
90
- { type: 'card', icon: 'mdi:ruler', title: 'Dimensionale Kalibrierung', html: '<strong>Miyuki Delica:</strong> 50 Perlen ≈ 8 cm · <strong>Hama Midi:</strong> 50 Perlen ≈ 25 cm · <strong>Kreuzstich:</strong> 1 Zelle = 1 Stich.' },
91
- { type: 'card', icon: 'mdi:eye-check', title: 'Zen Ausführung (Tunnelblick Modus)', html: 'Unser <strong>Tunnelblick</strong>-System fungiert als Ihr persönlicher Assistent, der visuelles Rauschen ausblendet und chirurgisch nur die aktive Reihe hervorhebt. Absolute Konzentration.' },
92
- { type: 'title', text: 'Unendliche Leinwände', level: 3 },
93
- { type: 'list', items: [
94
- '<strong>Textiler Schmuck:</strong> Komplizierte Muster für Webstühle und geometrische Armbänder.',
95
- '<strong>Kreuzstich:</strong> Moderne Schemata, bereit, Pixel für Pixel gestickt zu werden.',
96
- '<strong>Mosaike:</strong> Großformatige Wandbilder aus vereinfachten Keramikmosaiksteinen.',
97
- '<strong>Retro-Gaming:</strong> Authentische 8-Bit-Assets und Sprites in Sekunden.',
98
- ]},
99
- { type: 'stats', items: [
100
- { value: '10-100', label: 'Perlenbreite', icon: 'mdi:arrow-expand-horizontal' },
101
- { value: '2-32', label: 'Farbpalettenplätze', icon: 'mdi:palette-swatch' },
102
- { value: 'K-Means', label: 'Quantisierungsalgorithmus', icon: 'mdi:function-variant' },
103
- { value: 'ZIP', label: 'Exportformat (Muster + Anleitung)', icon: 'mdi:zip-box' },
104
- ], columns: 4 },
105
- { type: 'paragraph', html: 'In einer Ära flüchtiger Bildschirme ist das Erschaffen von etwas Physischem ein revolutionärer Akt. Dieses Werkzeug versucht nicht, Kunst zu automatisieren, sondern den <strong>Handwerker zu stärken</strong>. Wir geben Ihnen rechnerische Präzision, damit Ihre Hände bleibende Vermächtnisse schaffen können.' },
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 = 'perlenmuster-generator';
6
+ const title = 'Muster Generator';
7
+ const description = 'Erstellen Sie Pixelkunst und Perlenschemata für Miyuki oder Hama aus Ihren Fotos. Farbauantierungsalgorithmus, Tunnelblick-Modus und ZIP-Export.';
8
+
9
+ const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
+ { question: 'Was ist Farbauantierung bei Mustern?', answer: 'Dabei werden die Tausenden von Farben in einem Foto auf einige wenige reduziert, die den tatsächlich verfügbaren Perlenfarben entsprechen (z. B. Miyuki oder Hama). Wir verwenden intelligente Algorithmen, um die visuelle Ähnlichkeit mit einer minimalen Palette beizubehalten.' },
11
+ { question: 'Kann ich dieses Muster für Kreuzstich verwenden?', answer: 'Ja, der Generator erstellt ein Rasterdiagramm, das perfekt für Kreuzstich geeignet ist. Sie müssen lediglich eine Rastergröße wählen, die zu Ihrem Stoff passt (Aida 14, 18 usw.).' },
12
+ { question: 'Was ist der Unterschied zwischen Miyuki- und Hama-Perlen?', answer: 'Miyuki Delica-Perlen sind sehr kleine, präzise Glasperlen für Schmuck. Hama-Perlen sind aus Kunststoff und werden mit einem Bügeleisen verschmolzen. Unser Werkzeug ermöglicht es Ihnen, das Seitenverhältnis anzupassen, damit sich das Muster je nach verwendetem Material nicht verzerrt.' },
13
+ { question: 'Wie funktioniert der Dithering-Algorithmus?', answer: 'Dithering erzeugt die Illusion von mehr Farben, indem Pixel verschiedener Farben in Abständen gemischt werden. Dies hilft dabei, Farbübergänge auch mit einer begrenzten Perlenpalette glatter erscheinen zu lassen.' },
14
+ ];
15
+
16
+ const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
+ { name: 'Ein klares Bild hochladen', text: 'Wählen Sie ein Foto mit gutem Kontrast und wenigen kleinen Details, damit das Muster einfacher zu befolgen ist.' },
18
+ { name: 'Die Rastergröße anpassen', text: 'Legen Sie fest, wie viele Perlen breit und hoch Ihr fertiges Stück sein soll. Mehr Perlen = mehr Details, aber auch höherer Schwierigkeitsgrad.' },
19
+ { name: 'Die Farbpalette optimieren', text: 'Reduzieren Sie die Anzahl der Farben, bis sie mit den Perlen übereinstimmen, die Sie in Ihrem Bastelset zur Verfügung haben.' },
20
+ { name: 'Das Musterschema exportieren', text: 'Generieren Sie das endgültige Muster mit Farbcodes, um es als Referenz beim Zusammensetzen Ihrer Perlen auf der Platte oder dem Faden zu verwenden.' },
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: 'de',
54
+ };
55
+
56
+ export const content: BeadPatternGeneratorLocaleContent = {
57
+ slug,
58
+ title,
59
+ description,
60
+ faqTitle: 'Häufig gestellte Fragen',
61
+ ui: {
62
+ title: 'Muster Labor',
63
+ subtitle: 'Farbtechnik für Ihre Hände',
64
+ description: 'Vom Foto zum Perlenschema.',
65
+ gridSizeLabel: 'Größe (Breite)',
66
+ colorCountLabel: 'Farben',
67
+ optionsLabel: 'Optionen',
68
+ rulersLabel: 'Lineale',
69
+ symbolsTooltip: 'Überraschungsmuster',
70
+ symbolsLabel: 'Symbole',
71
+ downloadBtn: 'Herunterladen',
72
+ uploadTitle: 'Laden Sie Ihre Vision hoch',
73
+ uploadSubtitle: 'und lassen Sie die digitale Magie wirken',
74
+ paletteTitle: 'Chromatische DNA',
75
+ reuploadBtn: 'Bild ändern',
76
+ tunnelVisionTitle: 'Tunnelblick',
77
+ tunnelVisionSubtitle: 'Ihr Präzisionsassistent Reihe für Reihe.',
78
+ uploadLabel: 'Laden Sie Ihr Foto hoch',
79
+ pixelateBtn: 'Muster generieren',
80
+ faqTitle: 'FAQ',
81
+ bibliographyTitle: 'Referenzen'
82
+ },
83
+ seo: [
84
+ { type: 'title', text: 'Digitale Alchemie: Pixel in greifbare Kunst verwandeln', level: 2 },
85
+ { type: 'paragraph', html: 'Willkommen im <strong>Ultimativen Musterstudio</strong>. Ein <em>chromatisches Intelligenzsystem</em>, entwickelt für Pixel-Art-Architekten, Miyuki-Meister und Kreuzstich-Visionäre. Ihre Brücke zwischen Digitalem und Handwerk.' },
86
+ { type: 'card', icon: 'mdi:grid', title: 'Das intelligente Raster', html: 'Unser Algorithmus für <strong>räumliches Subsampling</strong> "schrumpft" Ihr Bild nicht einfach nur. Er analysiert die visuelle Struktur, um komplexe Pixelgruppen auf einzelne Zellen abzubilden und so die Integrität von Silhouetten und Kanten wie ein erfahrener Illustrator zu bewahren.' },
87
+ { type: 'card', icon: 'mdi:palette', title: 'K Means Farbquantisierung', html: 'Wir implementieren eine Variante des <strong>K-Means-Clustering</strong>-Algorithmus, der mathematisch die "Zentroid"-Töne Ihres Bildes findet. Erstaunliche visuelle Treue mit einer minimalistischen Palette von 12, 24 oder 32 Farben.' },
88
+ { type: 'title', text: 'Meisterschaft in 3 Schritten', level: 3 },
89
+ { type: 'card', icon: 'mdi:image-search', title: 'Die perfekte Auswahl', html: 'Suchen Sie nach <strong>hohem Kontrast</strong>, dramatischer Beleuchtung und ikonischen Formen. Porträts mit klarem Hintergrund, Logos und Vektorgrafiken lassen sich wunderbar umsetzen.' },
90
+ { type: 'card', icon: 'mdi:ruler', title: 'Dimensionale Kalibrierung', html: '<strong>Miyuki Delica:</strong> 50 Perlen ≈ 8 cm · <strong>Hama Midi:</strong> 50 Perlen ≈ 25 cm · <strong>Kreuzstich:</strong> 1 Zelle = 1 Stich.' },
91
+ { type: 'card', icon: 'mdi:eye-check', title: 'Zen Ausführung (Tunnelblick Modus)', html: 'Unser <strong>Tunnelblick</strong>-System fungiert als Ihr persönlicher Assistent, der visuelles Rauschen ausblendet und chirurgisch nur die aktive Reihe hervorhebt. Absolute Konzentration.' },
92
+ { type: 'title', text: 'Unendliche Leinwände', level: 3 },
93
+ { type: 'list', items: [
94
+ '<strong>Textiler Schmuck:</strong> Komplizierte Muster für Webstühle und geometrische Armbänder.',
95
+ '<strong>Kreuzstich:</strong> Moderne Schemata, bereit, Pixel für Pixel gestickt zu werden.',
96
+ '<strong>Mosaike:</strong> Großformatige Wandbilder aus vereinfachten Keramikmosaiksteinen.',
97
+ '<strong>Retro-Gaming:</strong> Authentische 8-Bit-Assets und Sprites in Sekunden.',
98
+ ]},
99
+ { type: 'stats', items: [
100
+ { value: '10-100', label: 'Perlenbreite', icon: 'mdi:arrow-expand-horizontal' },
101
+ { value: '2-32', label: 'Farbpalettenplätze', icon: 'mdi:palette-swatch' },
102
+ { value: 'K-Means', label: 'Quantisierungsalgorithmus', icon: 'mdi:function-variant' },
103
+ { value: 'ZIP', label: 'Exportformat (Muster + Anleitung)', icon: 'mdi:zip-box' },
104
+ ], columns: 4 },
105
+ { type: 'paragraph', html: 'In einer Ära flüchtiger Bildschirme ist das Erschaffen von etwas Physischem ein revolutionärer Akt. Dieses Werkzeug versucht nicht, Kunst zu automatisieren, sondern den <strong>Handwerker zu stärken</strong>. Wir geben Ihnen rechnerische Präzision, damit Ihre Hände bleibende Vermächtnisse schaffen können.' },
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 = 'bead-pattern-generator';
6
- const title = 'Pattern Generator';
7
- const description = 'Create pixel art and bead schemes for Miyuki or Hama from your photos. Color quantization algorithm, tunnel vision mode, and ZIP export.';
8
-
9
- const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
- { question: 'What is color quantization in patterns?', answer: 'It is the process of reducing the thousands of colors in a photo to just a few that correspond to the actual bead colors available (e.g., Miyuki or Hama). We use smart algorithms to maintain visual resemblance with the minimum possible palette.' },
11
- { question: 'Can I use this pattern for cross-stitch?', answer: 'Yes, the generator creates a grid chart that is perfectly compatible with cross-stitch. You just need to choose a grid size that matches your fabric (Aida 14, 18, etc.).' },
12
- { question: 'What is the difference between Miyuki and Hama Beads?', answer: 'Miyuki Delica beads are very small, precise glass beads for jewelry. Hama Beads are plastic and are fused with an iron. Our tool lets you adjust the aspect ratio so the pattern does not distort depending on the material used.' },
13
- { question: 'How does the dithering algorithm work?', answer: 'Dithering creates the illusion of more colors by mixing pixels of different colors in spaced patterns. It helps color gradients look smoother even with a limited bead palette.' },
14
- ];
15
-
16
- const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
- { name: 'Upload a clear image', text: 'Select a photo with good contrast and few small details so the pattern is easier to follow.' },
18
- { name: 'Adjust the grid size', text: 'Define how many beads wide and tall your final piece will be. More beads = more detail but more difficulty.' },
19
- { name: 'Optimize the color palette', text: 'Reduce the number of colors until they match the beads you have available in your craft kit.' },
20
- { name: 'Export the guide scheme', text: 'Generate the final pattern with color codes to use as a reference while assembling your beads on the board or thread.' },
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: 'en',
54
- };
55
-
56
- export const content: BeadPatternGeneratorLocaleContent = {
57
- slug,
58
- title,
59
- description,
60
- faqTitle: 'Frequently Asked Questions',
61
- ui: {
62
- title: 'Pattern Laboratory',
63
- subtitle: 'Color engineering for your hands',
64
- description: 'From photo to bead scheme.',
65
- gridSizeLabel: 'Size (Width)',
66
- colorCountLabel: 'Colors',
67
- optionsLabel: 'Options',
68
- rulersLabel: 'Rulers',
69
- symbolsTooltip: 'Surprise Pattern',
70
- symbolsLabel: 'Symbols',
71
- downloadBtn: 'Download',
72
- uploadTitle: 'Upload Your Vision',
73
- uploadSubtitle: 'and let the digital magic happen',
74
- paletteTitle: 'Chromatic DNA',
75
- reuploadBtn: 'Change Image',
76
- tunnelVisionTitle: 'Tunnel Vision',
77
- tunnelVisionSubtitle: 'Your precision assistant row by row.',
78
- uploadLabel: 'Upload your photo',
79
- pixelateBtn: 'Generate Pattern',
80
- faqTitle: 'FAQ',
81
- bibliographyTitle: 'References'
82
- },
83
- seo: [
84
- { type: 'title', text: 'Digital Alchemy: Transmute Pixels into Tangible Art', level: 2 },
85
- { type: 'paragraph', html: 'Welcome to the <strong>Ultimate Pattern Studio</strong>. A <em>chromatic intelligence engine</em> designed for Pixel Art architects, Miyuki masters, and cross-stitch visionaries. Your bridge between the digital and the handmade.' },
86
- { type: 'card', icon: 'mdi:grid', title: 'The Intelligent Grid', html: 'Our <strong>spatial subsampling</strong> algorithm does not just "shrink" your image. It analyzes the visual structure to map complex pixel groups to individual cells, preserving the integrity of silhouettes and edges like an expert illustrator.' },
87
- { type: 'card', icon: 'mdi:palette', title: 'K Means Color Quantization', html: 'We implement a variant of the <strong>K-Means Clustering</strong> algorithm that mathematically finds the "centroid" tones of your image. Astonishing visual fidelity with a minimalist palette of 12, 24 or 32 colors.' },
88
- { type: 'title', text: 'Mastery in 3 Steps', level: 3 },
89
- { type: 'card', icon: 'mdi:image-search', title: 'The Perfect Selection', html: 'Look for <strong>high contrast</strong>, dramatic lighting and iconic shapes. Portraits with clean backgrounds, logos, and vector art translate beautifully.' },
90
- { type: 'card', icon: 'mdi:ruler', title: 'Dimensional Calibration', html: '<strong>Miyuki Delica:</strong> 50 beads ≈ 8cm · <strong>Hama Midi:</strong> 50 beads ≈ 25cm · <strong>Cross-Stitch:</strong> 1 cell = 1 stitch.' },
91
- { type: 'card', icon: 'mdi:eye-check', title: 'Zen Execution (Tunnel Vision Mode)', html: 'Our <strong>Tunnel Vision</strong> system acts as your personal assistant, dimming visual noise and surgically highlighting only the active row. Absolute concentration.' },
92
- { type: 'title', text: 'Infinite Canvases', level: 3 },
93
- { type: 'list', items: [
94
- '<strong>Textile Jewelry:</strong> Intricate patterns for looms and geometric bracelets.',
95
- '<strong>Cross-Stitch:</strong> Modern schemes ready to be embroidered pixel by pixel.',
96
- '<strong>Mosaics:</strong> Large-scale murals using simplified ceramic tesserae.',
97
- '<strong>Retro Gaming:</strong> 8-bit authentic assets and sprites in seconds.',
98
- ]},
99
- { type: 'stats', items: [
100
- { value: '10-100', label: 'Bead width range', icon: 'mdi:arrow-expand-horizontal' },
101
- { value: '2-32', label: 'Color palette slots', icon: 'mdi:palette-swatch' },
102
- { value: 'K-Means', label: 'Quantization algorithm', icon: 'mdi:function-variant' },
103
- { value: 'ZIP', label: 'Export format (pattern + guide)', icon: 'mdi:zip-box' },
104
- ], columns: 4 },
105
- { type: 'paragraph', html: 'In an era of ephemeral screens, creating something physical is a revolutionary act. This tool does not seek to automate art, but to <strong>empower the artisan</strong>. We give you computational precision so your hands can build lasting legacies.' },
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 = 'bead-pattern-generator';
6
+ const title = 'Pattern Generator';
7
+ const description = 'Create pixel art and bead schemes for Miyuki or Hama from your photos. Color quantization algorithm, tunnel vision mode, and ZIP export.';
8
+
9
+ const faq: BeadPatternGeneratorLocaleContent['faq'] = [
10
+ { question: 'What is color quantization in patterns?', answer: 'It is the process of reducing the thousands of colors in a photo to just a few that correspond to the actual bead colors available (e.g., Miyuki or Hama). We use smart algorithms to maintain visual resemblance with the minimum possible palette.' },
11
+ { question: 'Can I use this pattern for cross-stitch?', answer: 'Yes, the generator creates a grid chart that is perfectly compatible with cross-stitch. You just need to choose a grid size that matches your fabric (Aida 14, 18, etc.).' },
12
+ { question: 'What is the difference between Miyuki and Hama Beads?', answer: 'Miyuki Delica beads are very small, precise glass beads for jewelry. Hama Beads are plastic and are fused with an iron. Our tool lets you adjust the aspect ratio so the pattern does not distort depending on the material used.' },
13
+ { question: 'How does the dithering algorithm work?', answer: 'Dithering creates the illusion of more colors by mixing pixels of different colors in spaced patterns. It helps color gradients look smoother even with a limited bead palette.' },
14
+ ];
15
+
16
+ const howTo: BeadPatternGeneratorLocaleContent['howTo'] = [
17
+ { name: 'Upload a clear image', text: 'Select a photo with good contrast and few small details so the pattern is easier to follow.' },
18
+ { name: 'Adjust the grid size', text: 'Define how many beads wide and tall your final piece will be. More beads = more detail but more difficulty.' },
19
+ { name: 'Optimize the color palette', text: 'Reduce the number of colors until they match the beads you have available in your craft kit.' },
20
+ { name: 'Export the guide scheme', text: 'Generate the final pattern with color codes to use as a reference while assembling your beads on the board or thread.' },
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: 'en',
54
+ };
55
+
56
+ export const content: BeadPatternGeneratorLocaleContent = {
57
+ slug,
58
+ title,
59
+ description,
60
+ faqTitle: 'Frequently Asked Questions',
61
+ ui: {
62
+ title: 'Pattern Laboratory',
63
+ subtitle: 'Color engineering for your hands',
64
+ description: 'From photo to bead scheme.',
65
+ gridSizeLabel: 'Size (Width)',
66
+ colorCountLabel: 'Colors',
67
+ optionsLabel: 'Options',
68
+ rulersLabel: 'Rulers',
69
+ symbolsTooltip: 'Surprise Pattern',
70
+ symbolsLabel: 'Symbols',
71
+ downloadBtn: 'Download',
72
+ uploadTitle: 'Upload Your Vision',
73
+ uploadSubtitle: 'and let the digital magic happen',
74
+ paletteTitle: 'Chromatic DNA',
75
+ reuploadBtn: 'Change Image',
76
+ tunnelVisionTitle: 'Tunnel Vision',
77
+ tunnelVisionSubtitle: 'Your precision assistant row by row.',
78
+ uploadLabel: 'Upload your photo',
79
+ pixelateBtn: 'Generate Pattern',
80
+ faqTitle: 'FAQ',
81
+ bibliographyTitle: 'References'
82
+ },
83
+ seo: [
84
+ { type: 'title', text: 'Digital Alchemy: Transmute Pixels into Tangible Art', level: 2 },
85
+ { type: 'paragraph', html: 'Welcome to the <strong>Ultimate Pattern Studio</strong>. A <em>chromatic intelligence engine</em> designed for Pixel Art architects, Miyuki masters, and cross-stitch visionaries. Your bridge between the digital and the handmade.' },
86
+ { type: 'card', icon: 'mdi:grid', title: 'The Intelligent Grid', html: 'Our <strong>spatial subsampling</strong> algorithm does not just "shrink" your image. It analyzes the visual structure to map complex pixel groups to individual cells, preserving the integrity of silhouettes and edges like an expert illustrator.' },
87
+ { type: 'card', icon: 'mdi:palette', title: 'K Means Color Quantization', html: 'We implement a variant of the <strong>K-Means Clustering</strong> algorithm that mathematically finds the "centroid" tones of your image. Astonishing visual fidelity with a minimalist palette of 12, 24 or 32 colors.' },
88
+ { type: 'title', text: 'Mastery in 3 Steps', level: 3 },
89
+ { type: 'card', icon: 'mdi:image-search', title: 'The Perfect Selection', html: 'Look for <strong>high contrast</strong>, dramatic lighting and iconic shapes. Portraits with clean backgrounds, logos, and vector art translate beautifully.' },
90
+ { type: 'card', icon: 'mdi:ruler', title: 'Dimensional Calibration', html: '<strong>Miyuki Delica:</strong> 50 beads ≈ 8cm · <strong>Hama Midi:</strong> 50 beads ≈ 25cm · <strong>Cross-Stitch:</strong> 1 cell = 1 stitch.' },
91
+ { type: 'card', icon: 'mdi:eye-check', title: 'Zen Execution (Tunnel Vision Mode)', html: 'Our <strong>Tunnel Vision</strong> system acts as your personal assistant, dimming visual noise and surgically highlighting only the active row. Absolute concentration.' },
92
+ { type: 'title', text: 'Infinite Canvases', level: 3 },
93
+ { type: 'list', items: [
94
+ '<strong>Textile Jewelry:</strong> Intricate patterns for looms and geometric bracelets.',
95
+ '<strong>Cross-Stitch:</strong> Modern schemes ready to be embroidered pixel by pixel.',
96
+ '<strong>Mosaics:</strong> Large-scale murals using simplified ceramic tesserae.',
97
+ '<strong>Retro Gaming:</strong> 8-bit authentic assets and sprites in seconds.',
98
+ ]},
99
+ { type: 'stats', items: [
100
+ { value: '10-100', label: 'Bead width range', icon: 'mdi:arrow-expand-horizontal' },
101
+ { value: '2-32', label: 'Color palette slots', icon: 'mdi:palette-swatch' },
102
+ { value: 'K-Means', label: 'Quantization algorithm', icon: 'mdi:function-variant' },
103
+ { value: 'ZIP', label: 'Export format (pattern + guide)', icon: 'mdi:zip-box' },
104
+ ], columns: 4 },
105
+ { type: 'paragraph', html: 'In an era of ephemeral screens, creating something physical is a revolutionary act. This tool does not seek to automate art, but to <strong>empower the artisan</strong>. We give you computational precision so your hands can build lasting legacies.' },
106
+ ],
107
+ faq,
108
+ bibliography,
109
+ howTo,
110
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
111
+ };