@jjlmoya/utils-creative 1.20.0 → 1.21.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 (137) hide show
  1. package/package.json +1 -1
  2. package/src/data.ts +2 -1
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +3 -0
  5. package/src/tests/locale_completeness.test.ts +2 -14
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/bead-pattern-generator/bibliography.astro +2 -12
  8. package/src/tool/bead-pattern-generator/bibliography.ts +5 -0
  9. package/src/tool/bead-pattern-generator/entry.ts +0 -1
  10. package/src/tool/bead-pattern-generator/i18n/de.ts +2 -6
  11. package/src/tool/bead-pattern-generator/i18n/en.ts +2 -6
  12. package/src/tool/bead-pattern-generator/i18n/es.ts +2 -6
  13. package/src/tool/bead-pattern-generator/i18n/fr.ts +2 -6
  14. package/src/tool/bead-pattern-generator/i18n/id.ts +2 -6
  15. package/src/tool/bead-pattern-generator/i18n/it.ts +2 -6
  16. package/src/tool/bead-pattern-generator/i18n/ja.ts +2 -6
  17. package/src/tool/bead-pattern-generator/i18n/ko.ts +2 -6
  18. package/src/tool/bead-pattern-generator/i18n/nl.ts +2 -6
  19. package/src/tool/bead-pattern-generator/i18n/pl.ts +2 -6
  20. package/src/tool/bead-pattern-generator/i18n/pt.ts +2 -6
  21. package/src/tool/bead-pattern-generator/i18n/ru.ts +2 -6
  22. package/src/tool/bead-pattern-generator/i18n/sv.ts +2 -6
  23. package/src/tool/bead-pattern-generator/i18n/tr.ts +2 -6
  24. package/src/tool/bead-pattern-generator/i18n/zh.ts +2 -6
  25. package/src/tool/dice-roller/bibliography.astro +3 -12
  26. package/src/tool/dice-roller/bibliography.ts +5 -0
  27. package/src/tool/dice-roller/entry.ts +0 -1
  28. package/src/tool/dice-roller/i18n/de.ts +2 -6
  29. package/src/tool/dice-roller/i18n/en.ts +2 -6
  30. package/src/tool/dice-roller/i18n/es.ts +2 -6
  31. package/src/tool/dice-roller/i18n/fr.ts +2 -6
  32. package/src/tool/dice-roller/i18n/id.ts +2 -6
  33. package/src/tool/dice-roller/i18n/it.ts +2 -6
  34. package/src/tool/dice-roller/i18n/ja.ts +2 -6
  35. package/src/tool/dice-roller/i18n/ko.ts +2 -6
  36. package/src/tool/dice-roller/i18n/nl.ts +2 -6
  37. package/src/tool/dice-roller/i18n/pl.ts +2 -6
  38. package/src/tool/dice-roller/i18n/pt.ts +2 -6
  39. package/src/tool/dice-roller/i18n/ru.ts +2 -6
  40. package/src/tool/dice-roller/i18n/sv.ts +2 -6
  41. package/src/tool/dice-roller/i18n/tr.ts +2 -6
  42. package/src/tool/dice-roller/i18n/zh.ts +2 -6
  43. package/src/tool/excuse-generator/bibliography.astro +2 -12
  44. package/src/tool/excuse-generator/bibliography.ts +3 -0
  45. package/src/tool/excuse-generator/entry.ts +0 -1
  46. package/src/tool/excuse-generator/i18n/de.ts +2 -4
  47. package/src/tool/excuse-generator/i18n/en.ts +2 -4
  48. package/src/tool/excuse-generator/i18n/es.ts +2 -4
  49. package/src/tool/excuse-generator/i18n/fr.ts +2 -4
  50. package/src/tool/excuse-generator/i18n/id.ts +2 -4
  51. package/src/tool/excuse-generator/i18n/it.ts +2 -4
  52. package/src/tool/excuse-generator/i18n/ja.ts +2 -4
  53. package/src/tool/excuse-generator/i18n/ko.ts +2 -4
  54. package/src/tool/excuse-generator/i18n/nl.ts +2 -4
  55. package/src/tool/excuse-generator/i18n/pl.ts +2 -4
  56. package/src/tool/excuse-generator/i18n/pt.ts +2 -4
  57. package/src/tool/excuse-generator/i18n/ru.ts +2 -4
  58. package/src/tool/excuse-generator/i18n/sv.ts +2 -4
  59. package/src/tool/excuse-generator/i18n/tr.ts +2 -4
  60. package/src/tool/excuse-generator/i18n/zh.ts +2 -4
  61. package/src/tool/fortune-cookie/bibliography.astro +2 -12
  62. package/src/tool/fortune-cookie/bibliography.ts +3 -0
  63. package/src/tool/fortune-cookie/entry.ts +0 -1
  64. package/src/tool/fortune-cookie/i18n/de.ts +2 -5
  65. package/src/tool/fortune-cookie/i18n/en.ts +2 -5
  66. package/src/tool/fortune-cookie/i18n/es.ts +2 -4
  67. package/src/tool/fortune-cookie/i18n/fr.ts +2 -5
  68. package/src/tool/fortune-cookie/i18n/id.ts +2 -5
  69. package/src/tool/fortune-cookie/i18n/it.ts +2 -5
  70. package/src/tool/fortune-cookie/i18n/ja.ts +2 -5
  71. package/src/tool/fortune-cookie/i18n/ko.ts +2 -5
  72. package/src/tool/fortune-cookie/i18n/nl.ts +2 -5
  73. package/src/tool/fortune-cookie/i18n/pl.ts +2 -5
  74. package/src/tool/fortune-cookie/i18n/pt.ts +2 -5
  75. package/src/tool/fortune-cookie/i18n/ru.ts +2 -5
  76. package/src/tool/fortune-cookie/i18n/sv.ts +2 -5
  77. package/src/tool/fortune-cookie/i18n/tr.ts +2 -5
  78. package/src/tool/fortune-cookie/i18n/zh.ts +2 -5
  79. package/src/tool/glitch-image-distorter/bibliography.astro +8 -0
  80. package/src/tool/glitch-image-distorter/bibliography.ts +4 -0
  81. package/src/tool/glitch-image-distorter/component.astro +393 -0
  82. package/src/tool/glitch-image-distorter/entry.ts +48 -0
  83. package/src/tool/glitch-image-distorter/glitch-image-distorter.css +233 -0
  84. package/src/tool/glitch-image-distorter/i18n/de.ts +131 -0
  85. package/src/tool/glitch-image-distorter/i18n/en.ts +131 -0
  86. package/src/tool/glitch-image-distorter/i18n/es.ts +131 -0
  87. package/src/tool/glitch-image-distorter/i18n/fr.ts +131 -0
  88. package/src/tool/glitch-image-distorter/i18n/id.ts +131 -0
  89. package/src/tool/glitch-image-distorter/i18n/it.ts +131 -0
  90. package/src/tool/glitch-image-distorter/i18n/ja.ts +131 -0
  91. package/src/tool/glitch-image-distorter/i18n/ko.ts +131 -0
  92. package/src/tool/glitch-image-distorter/i18n/nl.ts +131 -0
  93. package/src/tool/glitch-image-distorter/i18n/pl.ts +131 -0
  94. package/src/tool/glitch-image-distorter/i18n/pt.ts +131 -0
  95. package/src/tool/glitch-image-distorter/i18n/ru.ts +131 -0
  96. package/src/tool/glitch-image-distorter/i18n/sv.ts +131 -0
  97. package/src/tool/glitch-image-distorter/i18n/tr.ts +131 -0
  98. package/src/tool/glitch-image-distorter/i18n/zh.ts +131 -0
  99. package/src/tool/glitch-image-distorter/index.ts +9 -0
  100. package/src/tool/glitch-image-distorter/seo.astro +15 -0
  101. package/src/tool/synesthesia-painter/bibliography.astro +3 -12
  102. package/src/tool/synesthesia-painter/bibliography.ts +5 -0
  103. package/src/tool/synesthesia-painter/entry.ts +0 -1
  104. package/src/tool/synesthesia-painter/i18n/de.ts +2 -6
  105. package/src/tool/synesthesia-painter/i18n/en.ts +2 -6
  106. package/src/tool/synesthesia-painter/i18n/es.ts +2 -6
  107. package/src/tool/synesthesia-painter/i18n/fr.ts +2 -6
  108. package/src/tool/synesthesia-painter/i18n/id.ts +2 -6
  109. package/src/tool/synesthesia-painter/i18n/it.ts +2 -6
  110. package/src/tool/synesthesia-painter/i18n/ja.ts +2 -6
  111. package/src/tool/synesthesia-painter/i18n/ko.ts +2 -6
  112. package/src/tool/synesthesia-painter/i18n/nl.ts +2 -6
  113. package/src/tool/synesthesia-painter/i18n/pl.ts +2 -6
  114. package/src/tool/synesthesia-painter/i18n/pt.ts +2 -6
  115. package/src/tool/synesthesia-painter/i18n/ru.ts +2 -6
  116. package/src/tool/synesthesia-painter/i18n/sv.ts +2 -6
  117. package/src/tool/synesthesia-painter/i18n/tr.ts +2 -6
  118. package/src/tool/synesthesia-painter/i18n/zh.ts +2 -6
  119. package/src/tool/zalgo-generator/bibliography.astro +2 -12
  120. package/src/tool/zalgo-generator/bibliography.ts +5 -0
  121. package/src/tool/zalgo-generator/entry.ts +0 -1
  122. package/src/tool/zalgo-generator/i18n/de.ts +2 -6
  123. package/src/tool/zalgo-generator/i18n/en.ts +2 -6
  124. package/src/tool/zalgo-generator/i18n/es.ts +2 -6
  125. package/src/tool/zalgo-generator/i18n/fr.ts +2 -6
  126. package/src/tool/zalgo-generator/i18n/id.ts +2 -6
  127. package/src/tool/zalgo-generator/i18n/it.ts +2 -6
  128. package/src/tool/zalgo-generator/i18n/ja.ts +2 -6
  129. package/src/tool/zalgo-generator/i18n/ko.ts +2 -6
  130. package/src/tool/zalgo-generator/i18n/nl.ts +2 -6
  131. package/src/tool/zalgo-generator/i18n/pl.ts +2 -6
  132. package/src/tool/zalgo-generator/i18n/pt.ts +2 -6
  133. package/src/tool/zalgo-generator/i18n/ru.ts +2 -6
  134. package/src/tool/zalgo-generator/i18n/sv.ts +2 -6
  135. package/src/tool/zalgo-generator/i18n/tr.ts +2 -6
  136. package/src/tool/zalgo-generator/i18n/zh.ts +2 -6
  137. package/src/tools.ts +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-creative",
3
- "version": "1.20.0",
3
+ "version": "1.21.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
package/src/data.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { creativeCategory as _creativeCategory, CREATIVE_TOOLS } from './category';
1
+ import { creativeCategory as _creativeCategory } from './category';
2
+ import { CREATIVE_TOOLS } from './index';
2
3
 
3
4
  export * from './types';
4
5
  export { CREATIVE_TOOLS };
package/src/entries.ts CHANGED
@@ -2,6 +2,7 @@ export { beadPatternGenerator } from './tool/bead-pattern-generator/entry';
2
2
  export { diceRoller } from './tool/dice-roller/entry';
3
3
  export { excuseGenerator } from './tool/excuse-generator/entry';
4
4
  export { fortuneCookie } from './tool/fortune-cookie/entry';
5
+ export { glitchImageDistorter } from './tool/glitch-image-distorter/entry';
5
6
  export { synesthesiaPainter } from './tool/synesthesia-painter/entry';
6
7
  export { zalgoGenerator } from './tool/zalgo-generator/entry';
7
8
  export { creativeCategory } from './category';
@@ -9,6 +10,7 @@ import { beadPatternGenerator } from './tool/bead-pattern-generator/entry';
9
10
  import { diceRoller } from './tool/dice-roller/entry';
10
11
  import { excuseGenerator } from './tool/excuse-generator/entry';
11
12
  import { fortuneCookie } from './tool/fortune-cookie/entry';
13
+ import { glitchImageDistorter } from './tool/glitch-image-distorter/entry';
12
14
  import { synesthesiaPainter } from './tool/synesthesia-painter/entry';
13
15
  import { zalgoGenerator } from './tool/zalgo-generator/entry';
14
- export const ALL_ENTRIES = [beadPatternGenerator, diceRoller, excuseGenerator, fortuneCookie, synesthesiaPainter, zalgoGenerator];
16
+ export const ALL_ENTRIES = [beadPatternGenerator, diceRoller, excuseGenerator, fortuneCookie, glitchImageDistorter, synesthesiaPainter, zalgoGenerator];
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ import { creativeCategory } from './category';
2
2
  import type { ToolDefinition } from './types';
3
3
  import { EXCUSE_GENERATOR_TOOL } from './tool/excuse-generator';
4
4
  import { FORTUNE_COOKIE_TOOL } from './tool/fortune-cookie';
5
+ import { GLITCH_IMAGE_DISTORTER_TOOL } from './tool/glitch-image-distorter';
5
6
  import { SYNESTHESIA_PAINTER_TOOL } from './tool/synesthesia-painter';
6
7
  import { ZALGO_GENERATOR_TOOL } from './tool/zalgo-generator';
7
8
  import { BEAD_PATTERN_GENERATOR_TOOL } from './tool/bead-pattern-generator';
@@ -12,6 +13,7 @@ export const templateCategory = creativeCategory;
12
13
  export const CREATIVE_TOOLS: Record<string, ToolDefinition> = {
13
14
  'excuse-generator': EXCUSE_GENERATOR_TOOL,
14
15
  'fortune-cookie': FORTUNE_COOKIE_TOOL,
16
+ 'glitch-image-distorter': GLITCH_IMAGE_DISTORTER_TOOL,
15
17
  'synesthesia-painter': SYNESTHESIA_PAINTER_TOOL,
16
18
  'zalgo-generator': ZALGO_GENERATOR_TOOL,
17
19
  'bead-pattern-generator': BEAD_PATTERN_GENERATOR_TOOL,
@@ -21,6 +23,7 @@ export const ALL_TOOLS = Object.values(CREATIVE_TOOLS);
21
23
 
22
24
  export * from './tool/excuse-generator';
23
25
  export * from './tool/fortune-cookie';
26
+ export * from './tool/glitch-image-distorter';
24
27
  export * from './tool/synesthesia-painter';
25
28
  export * from './tool/zalgo-generator';
26
29
  export * from './tool/bead-pattern-generator';
@@ -18,25 +18,13 @@ describe('Locale Completeness Validation', () => {
18
18
  ).toBeTruthy();
19
19
  }
20
20
  });
21
-
22
- it('bibliographyTitle should be defined when bibliography items exist', async () => {
23
- const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
24
- const content = (await loader?.()) as ToolLocaleContent;
25
-
26
- if (content.bibliography.length > 0) {
27
- expect(
28
- content.bibliographyTitle,
29
- `Tool "${tool.entry.id}" locale "${locale}" has ${content.bibliography.length} bibliography items but is missing bibliographyTitle`,
30
- ).toBeTruthy();
31
- }
32
- });
33
21
  });
34
22
  });
35
23
  });
36
24
  });
37
25
 
38
- it('all 6 tools registered', () => {
39
- expect(ALL_TOOLS.length).toBe(6);
26
+ it('all 7 tools registered', () => {
27
+ expect(ALL_TOOLS.length).toBe(7);
40
28
  });
41
29
  });
42
30
 
@@ -4,8 +4,8 @@ import { creativeCategory } from '../data';
4
4
 
5
5
  describe('Tool Validation Suite', () => {
6
6
  describe('Library Registration', () => {
7
- it('should have 6 tools in ALL_TOOLS', () => {
8
- expect(ALL_TOOLS.length).toBe(6);
7
+ it('should have 7 tools in ALL_TOOLS', () => {
8
+ expect(ALL_TOOLS.length).toBe(7);
9
9
  });
10
10
 
11
11
  it('creativeCategory should be defined', () => {
@@ -1,18 +1,8 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { beadPatternGenerator, type BeadPatternGeneratorLocaleContent } from './index';
4
- import type { KnownLocale } from '../../types';
3
+ import { bibliography } from './bibliography';
5
4
 
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const localeContentLoader = (beadPatternGenerator.i18n as Record<string, () => Promise<BeadPatternGeneratorLocaleContent>>)[locale];
12
- const content = localeContentLoader ? await localeContentLoader() : null;
13
- if (!content) return null;
14
-
15
- const { bibliography } = content;
5
+ if (!bibliography || bibliography.length === 0) return null;
16
6
  ---
17
7
 
18
8
  <SharedBibliography links={bibliography} />
@@ -0,0 +1,5 @@
1
+ export const bibliography = [
2
+ { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
3
+ { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
4
+ { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
5
+ ];
@@ -21,7 +21,6 @@ export interface BeadPatternGeneratorUI {
21
21
  uploadLabel: string;
22
22
  pixelateBtn: string;
23
23
  faqTitle: string;
24
- bibliographyTitle: string;
25
24
  }
26
25
 
27
26
  export type BeadPatternGeneratorLocaleContent = ToolLocaleContent<BeadPatternGeneratorUI>;
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'perlenmuster-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Häufig gestellte Fragen',
60
- bibliographyTitle: 'Handwerks-Bibliographie',
61
61
  ui: {
62
62
  title: 'Muster Labor',
63
63
  subtitle: 'Farbtechnik für Ihre Hände',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
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
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'bead-pattern-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Frequently Asked Questions',
60
- bibliographyTitle: 'Artisan Bibliography',
61
61
  ui: {
62
62
  title: 'Pattern Laboratory',
63
63
  subtitle: 'Color engineering for your hands',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
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
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'generador-patrones-cuentas';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Preguntas Frecuentes',
60
- bibliographyTitle: 'Bibliografía del Artesano',
61
61
  ui: {
62
62
  title: 'Laboratorio de Patrones',
63
63
  subtitle: 'Ingeniería de color para tus manos',
@@ -112,11 +112,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
112
112
  ]},
113
113
  ],
114
114
  faq,
115
- bibliography: [
116
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
117
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
118
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
119
- ],
115
+ bibliography,
120
116
  howTo,
121
117
  schemas: [faqSchema as any, howToSchema as any, appSchema],
122
118
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'generateur-de-modeles-de-perles';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Questions Fréquemment Posées',
60
- bibliographyTitle: 'Bibliographie de l\'Artisan',
61
61
  ui: {
62
62
  title: 'Laboratoire de Modèles',
63
63
  subtitle: 'Ingénierie chromatique pour vos mains',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'À l\'ère des écrans éphémères, créer quelque chose de physique est un acte révolutionnaire. Cet outil ne cherche pas à automatiser l\'art, mais à <strong>donner du pouvoir à l\'artisan</strong>. Nous vous offrons la précision informatique pour que vos mains puissent bâtir des héritages durables.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Quantification de couleurs utilisant K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Spécifications des Perles Miyuki Delica', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Algorithmes de Tramage (Dithering)', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'pembuat-pola-manik';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Pertanyaan yang Sering Diajukan',
60
- bibliographyTitle: 'Bibliografi Artisan',
61
61
  ui: {
62
62
  title: 'Laboratorium Pola',
63
63
  subtitle: 'Rekayasa warna untuk tangan Anda',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
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
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'generatore-schemi-perline';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Domande Frequenti',
60
- bibliographyTitle: 'Bibliografia Artigiana',
61
61
  ui: {
62
62
  title: 'Laboratorio di Schemi',
63
63
  subtitle: 'Ingegneria del colore per le tue mani',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
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
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'bead-pattern-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'よくある質問',
60
- bibliographyTitle: '職人のための参考文献',
61
61
  ui: {
62
62
  title: 'パターン研究所',
63
63
  subtitle: 'その手で色を操るエンジニアリング',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: '刹那的な画面が支配する現代において、形のある物を創り出すことは、ある種の革命です。このツールは芸術の自動化を目指すものではなく、<strong>職人の力を引き出す</strong>ためのものです。コンピューターの精度を貸与することで、あなたの手で不朽の遺産を築く手助けをします。' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'bead-pattern-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: '자주 묻는 질문',
60
- bibliographyTitle: '전문가 참고 자료',
61
61
  ui: {
62
62
  title: '도안 연구소',
63
63
  subtitle: '당신의 손을 위한 색상 공학',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: '덧없는 화면의 시대에 물리적인 무언가를 만드는 것은 혁명적인 행위입니다. 이 도구는 예술을 자동화하려는 것이 아니라 <strong>장인의 능력을 강화</strong>하기 위한 것입니다. 당신의 손이 지속적인 유산을 쌓을 수 있도록 계산적인 정밀함을 제공합니다.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'kralenpatroon-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Veelgestelde Vragen',
60
- bibliographyTitle: 'Ambachtelijke Bibliografie',
61
61
  ui: {
62
62
  title: 'Patroon Laboratorium',
63
63
  subtitle: 'Kleurtechniek voor je eigen handen',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'In een tijdperk van vluchtige schermen is het creëren van iets fysieks een revolutionaire daad. Deze tool probeert kunst niet te automatiseren, maar de <strong>ambachtsman te versterken</strong>. We geven je computationele precisie zodat jouw handen blijvende erfenissen kunnen bouwen.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'generator-wzorow-koralikowych';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Najczęściej Zadawane Pytania',
60
- bibliographyTitle: 'Bibliografia Rękodzielnicza',
61
61
  ui: {
62
62
  title: 'Laboratorium Wzorów',
63
63
  subtitle: 'Inżynieria kolorów dla Twoich rąk',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'W erze efemerycznych ekranów, tworzenie czegoś fizycznego jest aktem rewolucyjnym. To narzędzie nie dąży do zautomatyzowania sztuki, ale do <strong>wzmocnienia rzemieślnika</strong>. Dajemy Ci obliczeniową precyzję, aby Twoje ręce mogły budować trwałe dziedzictwo.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'gerador-de-padroes-de-contas';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Perguntas Frequentes',
60
- bibliographyTitle: 'Bibliografia Artesanal',
61
61
  ui: {
62
62
  title: 'Laboratório de Padrões',
63
63
  subtitle: 'Engenharia de cores para as suas mãos',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'Numa era de ecrãs efémeros, criar algo físico é um ato revolucionário. Esta ferramenta não procura automatizar a arte, mas sim <strong>capacitar o artesão</strong>. Damos-lhe precisão computacional para que as suas mãos possam construir legados duradouros.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'generator-skhem';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Часто задаваемые вопросы',
60
- bibliographyTitle: 'Библиография мастера',
61
61
  ui: {
62
62
  title: 'Лаборатория узоров',
63
63
  subtitle: 'Инженерия цвета для ваших рук',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'В эпоху ускользающих экранов создание чего-то физического — это революционный акт. Этот инструмент не стремится автоматизировать искусство, он призван <strong>расширить возможности мастера</strong>. Мы даем вам вычислительную точность, чтобы ваши руки могли создавать долговечное наследие.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'monstergenerator-for-parlor';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Vanliga frågor',
60
- bibliographyTitle: 'Hantverksbibliografi',
61
61
  ui: {
62
62
  title: 'Mönsterlaboratorium',
63
63
  subtitle: 'Färgteknik för dina händer',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'I en tid av flyktiga skärmar är skapandet av något fysiskt en revolutionerande handling. Detta verktyg söker inte efter att automatisera konst, utan att <strong>ge genkraft åt hantverkaren</strong>. Vi ger dig beräkningsprecision så att dina händer kan bygga varaktiga arv.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'boncuk-desen-olusturucu';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: 'Sıkça Sorulan Sorular',
60
- bibliographyTitle: 'Zanaatkar Kaynakçası',
61
61
  ui: {
62
62
  title: 'Desen Laboratuvarı',
63
63
  subtitle: 'Elleriniz için renk mühendisliği',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: 'Uçucu ekranlar çağında, fiziksel bir şey yaratmak devrimci bir eylemdir. Bu araç sanatı otomatikleştirmeyi değil, <strong>zanaatkarı güçlendirmeyi</strong> amaçlar. Ellerinizin kalıcı miraslar inşa edebilmesi için size hesaplamalı hassasiyet sağlıyoruz.' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { BeadPatternGeneratorLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'bead-pattern-generator';
@@ -57,7 +58,6 @@ export const content: BeadPatternGeneratorLocaleContent = {
57
58
  title,
58
59
  description,
59
60
  faqTitle: '常见问题解答',
60
- bibliographyTitle: '工匠参考文献',
61
61
  ui: {
62
62
  title: '图案实验室',
63
63
  subtitle: '指尖上的色彩工程',
@@ -105,11 +105,7 @@ export const content: BeadPatternGeneratorLocaleContent = {
105
105
  { type: 'paragraph', html: '在转瞬即逝的屏幕时代,亲手创造实体作品是一种革命性的行为。本工具不致力于取代艺术,而是旨在<strong>赋能工匠</strong>。我们为您提供计算精度,助您的双手打造持久的传承。' },
106
106
  ],
107
107
  faq,
108
- bibliography: [
109
- { name: 'Scikit-Image: Color Quantization using K-Means', url: 'https://scikit-learn.org/0.23/auto_examples/cluster/plot_color_quantization.html' },
110
- { name: 'Miyuki Delica Beads Specification', url: 'https://www.miyuki-beads.co.jp/english/seedbeads/delica.html' },
111
- { name: 'Visgraf Lab: Dithering Algorithms', url: 'https://www.visgraf.impa.br/Courses/ip00/proj/Dithering1/floyd_steinberg_dithering.html' },
112
- ],
108
+ bibliography,
113
109
  howTo,
114
110
  schemas: [faqSchema as any, howToSchema as any, appSchema],
115
111
  };
@@ -1,17 +1,8 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { diceRoller } from './index';
4
- import type { KnownLocale } from '../../types';
3
+ import { bibliography } from './bibliography';
5
4
 
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await diceRoller.i18n[locale]?.();
12
- if (!content || !content.bibliography || content.bibliography.length === 0) return null;
13
-
14
- const { bibliography, bibliographyTitle = 'Bibliografía' } = content;
5
+ if (!bibliography || bibliography.length === 0) return null;
15
6
  ---
16
7
 
17
- <SharedBibliography title={bibliographyTitle} links={bibliography} />
8
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,5 @@
1
+ export const bibliography = [
2
+ { name: 'D&D Beyond – Dice mechanics rules', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
3
+ { name: 'Roll20 – Virtual tabletop and dice systems', url: 'https://roll20.net/' },
4
+ { name: 'Pathfinder – d20 System Reference', url: 'https://paizo.com/pathfinder' },
5
+ ];
@@ -9,7 +9,6 @@ export interface DiceRollerUI {
9
9
  historyLabel: string;
10
10
  clearHistoryBtn: string;
11
11
  faqTitle: string;
12
- bibliographyTitle: string;
13
12
  addDiceLabel: string;
14
13
  bagLabel: string;
15
14
  emptyBagBtn: string;
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { DiceRollerLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'wuerfel-simulator';
@@ -73,7 +74,6 @@ export const content: DiceRollerLocaleContent = {
73
74
  title,
74
75
  description,
75
76
  faqTitle: 'Häufig gestellte Fragen',
76
- bibliographyTitle: 'Zufalls-Bibliographie',
77
77
  ui: {
78
78
  title: 'Würfel Simulator',
79
79
  description: 'Möge das Glück mit dir sein.',
@@ -128,11 +128,7 @@ export const content: DiceRollerLocaleContent = {
128
128
  ]},
129
129
  ],
130
130
  faq,
131
- bibliography: [
132
- { name: 'D&D Beyond – Regeln zur Würfelmechanik', url: 'https://www.dndbeyond.com/sources/basic-rules/using-ability-scores' },
133
- { name: 'Roll20 – Virtueller Spieltisch und Würfelsysteme', url: 'https://roll20.net/' },
134
- { name: 'Pathfinder – d20 System Reference', url: 'https://paizo.com/pathfinder' },
135
- ],
131
+ bibliography,
136
132
  howTo,
137
133
  schemas: [faqSchema as any, howToSchema as any, appSchema],
138
134
  };