@jjlmoya/utils-creative 1.26.0 → 1.28.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 +75 -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,124 +1,124 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { FortuneCookieLocaleContent } from '../index';
3
- import { bibliography } from '../bibliography';
4
-
5
- const slug = 'fortune-cookie';
6
- const title = 'Fortune Cookie';
7
- const description = 'Check your daily destiny and discover your lucky numbers. One fortune per day, revealed with a click.';
8
-
9
- const faq: FortuneCookieLocaleContent['faq'] = [
10
- {
11
- question: 'Can I open more than one cookie per day?',
12
- answer: 'Destiny only speaks once a day. We save your fortune on the device so it guides you throughout the day.'
13
- },
14
- {
15
- question: 'Are the fortunes randomly generated?',
16
- answer: 'Yes - a random fortune is selected each day and saved locally. Each of the 25 fortunes has an equal chance of being chosen, ensuring variety over time.'
17
- }
18
- ];
19
-
20
- const howTo: FortuneCookieLocaleContent['howTo'] = [
21
- { name: 'Break the cookie', text: 'Click repeatedly on the cookie to crack it open.' },
22
- { name: 'Read your fortune', text: 'Discover the hidden message inside and your lucky numbers for the day.' }
23
- ];
24
-
25
- const faqSchema: WithContext<FAQPage> = {
26
- '@context': 'https://schema.org',
27
- '@type': 'FAQPage',
28
- mainEntity: faq.map((item) => ({
29
- '@type': 'Question',
30
- name: item.question,
31
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
32
- })),
33
- };
34
-
35
- const howToSchema: WithContext<HowTo> = {
36
- '@context': 'https://schema.org',
37
- '@type': 'HowTo',
38
- name: title,
39
- description,
40
- step: howTo.map((step) => ({
41
- '@type': 'HowToStep',
42
- name: step.name,
43
- text: step.text,
44
- })),
45
- };
46
-
47
- const appSchema: WithContext<SoftwareApplication> = {
48
- '@context': 'https://schema.org',
49
- '@type': 'SoftwareApplication',
50
- name: title,
51
- description,
52
- applicationCategory: 'UtilitiesApplication',
53
- operatingSystem: 'Web',
54
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
55
- inLanguage: 'en',
56
- };
57
-
58
- export const content: FortuneCookieLocaleContent = {
59
- slug,
60
- title,
61
- description,
62
- faqTitle: 'Frequently Asked Questions',
63
- ui: {
64
- title: 'Online Fortune Cookie',
65
- description: 'Your daily digital oracle.',
66
- instruction: 'Hit the cookie to open your destiny',
67
- dailyStatus: 'Your destiny has been revealed for today.',
68
- shareBtn: 'Share Wisdom',
69
- shareTitle: 'My Fortune Cookie',
70
- shareText: 'Destiny has spoken: "$TEXT"\nMy numbers: $NUMS\n\nDiscover your fortune here:',
71
- copied: 'Copied!',
72
- fortunes: JSON.stringify([
73
- "The fortune you seek is in another cookie.",
74
- "Don't count the days, make the days count.",
75
- "A journey of a thousand miles begins with a single step.",
76
- "Mistake is the preamble of discovery.",
77
- "Your capacity to learn is your greatest asset.",
78
- "Smile, the universe is watching you.",
79
- "Patience is a tree with a bitter root but very sweet fruit.",
80
- "Don't fear growing slowly, fear only staying still.",
81
- "Today is the tomorrow you worried about yesterday.",
82
- "Happiness is not something made. It comes from your own actions.",
83
- "If you cannot change the direction of the wind, adjust your sails.",
84
- "What you plant now, you will harvest later.",
85
- "Creativity is intelligence having fun.",
86
- "Don't look for errors, look for solutions.",
87
- "Your attitude, not your aptitude, will determine your altitude.",
88
- "Success is the sum of small efforts repeated day after day.",
89
- "Believe you can and you're halfway there.",
90
- "The only way to do great work is to love what you do.",
91
- "Life is 10% what happens to you and 90% how you react to it.",
92
- "Be the change you want to see in the world.",
93
- "The best way to predict the future is to invent it.",
94
- "Simplicity is the ultimate sophistication.",
95
- "You are the master of your destiny and the captain of your soul.",
96
- "Soon you will receive news that will change your perspective.",
97
- "An unexpected trip will bring you great joys."
98
- ]),
99
- faqTitle: 'FAQ',
100
- },
101
- seo: [
102
- { type: 'title', text: 'The Mystery of the Fortune Cookie', level: 2 },
103
- { type: 'paragraph', html: 'Ever wondered where these curious cookies come from? Although we associate them with Chinese food, their origin is a fascinating journey between Japan and the United States. The fortune cookie as we know it today was likely invented in early 20th-century California, not China - where they are virtually unknown.' },
104
- { type: 'tip', title: 'How Our Oracle Works', html: 'Each day you can open one cookie. The system saves your destiny so you remember it for 24 hours. The fortune is stored locally in your browser - completely private, no server involved. Come back tomorrow for a new prediction!' },
105
- { type: 'title', text: 'The Philosophy of Oracles', level: 3 },
106
- { type: 'paragraph', html: 'Humans have always sought guidance in uncertain times. From the Oracle of Delphi to the I Ching, fortune-telling systems serve a consistent psychological function: they give us permission to <strong>pause and reflect</strong>. A fortune cookie does not predict the future - it prompts you to think about it.' },
107
- { type: 'list', items: [
108
- '<strong>Ancient China:</strong> The I Ching (Book of Changes, ~1000 BC) used hexagrams to guide decisions and interpret destiny.',
109
- '<strong>Classical Greece:</strong> The Oracle of Delphi attracted rulers and citizens alike with cryptic pronouncements interpreted as divine guidance.',
110
- '<strong>Modern Japan:</strong> Omikuji fortune slips at Shinto shrines, tied to tree branches, blend fate with ritual.',
111
- '<strong>20th-century USA:</strong> Fortune cookies emerged in Japanese-American communities before becoming synonymous with Chinese-American cuisine.',
112
- ]},
113
- { type: 'stats', items: [
114
- { value: '3 billion+', label: 'Fortune cookies made annually', icon: 'mdi:cookie' },
115
- { value: '~1000 BC', label: 'I Ching origin', icon: 'mdi:book-open-variant' },
116
- { value: '25', label: 'Fortunes in this oracle', icon: 'mdi:star-shooting' },
117
- { value: '1/day', label: 'One destiny per day', icon: 'mdi:calendar-today' },
118
- ], columns: 4 },
119
- ],
120
- faq,
121
- bibliography,
122
- howTo,
123
- schemas: [faqSchema as any, howToSchema as any, appSchema],
124
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+ import { bibliography } from '../bibliography';
4
+
5
+ const slug = 'fortune-cookie';
6
+ const title = 'Fortune Cookie';
7
+ const description = 'Check your daily destiny and discover your lucky numbers. One fortune per day, revealed with a click.';
8
+
9
+ const faq: FortuneCookieLocaleContent['faq'] = [
10
+ {
11
+ question: 'Can I open more than one cookie per day?',
12
+ answer: 'Destiny only speaks once a day. We save your fortune on the device so it guides you throughout the day.'
13
+ },
14
+ {
15
+ question: 'Are the fortunes randomly generated?',
16
+ answer: 'Yes - a random fortune is selected each day and saved locally. Each of the 25 fortunes has an equal chance of being chosen, ensuring variety over time.'
17
+ }
18
+ ];
19
+
20
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
21
+ { name: 'Break the cookie', text: 'Click repeatedly on the cookie to crack it open.' },
22
+ { name: 'Read your fortune', text: 'Discover the hidden message inside and your lucky numbers for the day.' }
23
+ ];
24
+
25
+ const faqSchema: WithContext<FAQPage> = {
26
+ '@context': 'https://schema.org',
27
+ '@type': 'FAQPage',
28
+ mainEntity: faq.map((item) => ({
29
+ '@type': 'Question',
30
+ name: item.question,
31
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
32
+ })),
33
+ };
34
+
35
+ const howToSchema: WithContext<HowTo> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'HowTo',
38
+ name: title,
39
+ description,
40
+ step: howTo.map((step) => ({
41
+ '@type': 'HowToStep',
42
+ name: step.name,
43
+ text: step.text,
44
+ })),
45
+ };
46
+
47
+ const appSchema: WithContext<SoftwareApplication> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'SoftwareApplication',
50
+ name: title,
51
+ description,
52
+ applicationCategory: 'UtilitiesApplication',
53
+ operatingSystem: 'Web',
54
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
55
+ inLanguage: 'en',
56
+ };
57
+
58
+ export const content: FortuneCookieLocaleContent = {
59
+ slug,
60
+ title,
61
+ description,
62
+ faqTitle: 'Frequently Asked Questions',
63
+ ui: {
64
+ title: 'Online Fortune Cookie',
65
+ description: 'Your daily digital oracle.',
66
+ instruction: 'Hit the cookie to open your destiny',
67
+ dailyStatus: 'Your destiny has been revealed for today.',
68
+ shareBtn: 'Share Wisdom',
69
+ shareTitle: 'My Fortune Cookie',
70
+ shareText: 'Destiny has spoken: "$TEXT"\nMy numbers: $NUMS\n\nDiscover your fortune here:',
71
+ copied: 'Copied!',
72
+ fortunes: JSON.stringify([
73
+ "The fortune you seek is in another cookie.",
74
+ "Don't count the days, make the days count.",
75
+ "A journey of a thousand miles begins with a single step.",
76
+ "Mistake is the preamble of discovery.",
77
+ "Your capacity to learn is your greatest asset.",
78
+ "Smile, the universe is watching you.",
79
+ "Patience is a tree with a bitter root but very sweet fruit.",
80
+ "Don't fear growing slowly, fear only staying still.",
81
+ "Today is the tomorrow you worried about yesterday.",
82
+ "Happiness is not something made. It comes from your own actions.",
83
+ "If you cannot change the direction of the wind, adjust your sails.",
84
+ "What you plant now, you will harvest later.",
85
+ "Creativity is intelligence having fun.",
86
+ "Don't look for errors, look for solutions.",
87
+ "Your attitude, not your aptitude, will determine your altitude.",
88
+ "Success is the sum of small efforts repeated day after day.",
89
+ "Believe you can and you're halfway there.",
90
+ "The only way to do great work is to love what you do.",
91
+ "Life is 10% what happens to you and 90% how you react to it.",
92
+ "Be the change you want to see in the world.",
93
+ "The best way to predict the future is to invent it.",
94
+ "Simplicity is the ultimate sophistication.",
95
+ "You are the master of your destiny and the captain of your soul.",
96
+ "Soon you will receive news that will change your perspective.",
97
+ "An unexpected trip will bring you great joys."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ },
101
+ seo: [
102
+ { type: 'title', text: 'The Mystery of the Fortune Cookie', level: 2 },
103
+ { type: 'paragraph', html: 'Ever wondered where these curious cookies come from? Although we associate them with Chinese food, their origin is a fascinating journey between Japan and the United States. The fortune cookie as we know it today was likely invented in early 20th-century California, not China - where they are virtually unknown.' },
104
+ { type: 'tip', title: 'How Our Oracle Works', html: 'Each day you can open one cookie. The system saves your destiny so you remember it for 24 hours. The fortune is stored locally in your browser - completely private, no server involved. Come back tomorrow for a new prediction!' },
105
+ { type: 'title', text: 'The Philosophy of Oracles', level: 3 },
106
+ { type: 'paragraph', html: 'Humans have always sought guidance in uncertain times. From the Oracle of Delphi to the I Ching, fortune-telling systems serve a consistent psychological function: they give us permission to <strong>pause and reflect</strong>. A fortune cookie does not predict the future - it prompts you to think about it.' },
107
+ { type: 'list', items: [
108
+ '<strong>Ancient China:</strong> The I Ching (Book of Changes, ~1000 BC) used hexagrams to guide decisions and interpret destiny.',
109
+ '<strong>Classical Greece:</strong> The Oracle of Delphi attracted rulers and citizens alike with cryptic pronouncements interpreted as divine guidance.',
110
+ '<strong>Modern Japan:</strong> Omikuji fortune slips at Shinto shrines, tied to tree branches, blend fate with ritual.',
111
+ '<strong>20th-century USA:</strong> Fortune cookies emerged in Japanese-American communities before becoming synonymous with Chinese-American cuisine.',
112
+ ]},
113
+ { type: 'stats', items: [
114
+ { value: '3 billion+', label: 'Fortune cookies made annually', icon: 'mdi:cookie' },
115
+ { value: '~1000 BC', label: 'I Ching origin', icon: 'mdi:book-open-variant' },
116
+ { value: '25', label: 'Fortunes in this oracle', icon: 'mdi:star-shooting' },
117
+ { value: '1/day', label: 'One destiny per day', icon: 'mdi:calendar-today' },
118
+ ], columns: 4 },
119
+ ],
120
+ faq,
121
+ bibliography,
122
+ howTo,
123
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
124
+ };
@@ -1,125 +1,125 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { FortuneCookieLocaleContent } from '../index';
3
- import { bibliography } from '../bibliography';
4
-
5
- const slug = 'galleta-fortuna';
6
- const title = 'Galleta de la Fortuna';
7
- const description = 'Consulta tu destino diario y descubre tus números de la suerte. Una fortuna al día, revelada con un clic.';
8
-
9
- const faq: FortuneCookieLocaleContent['faq'] = [
10
- {
11
- question: '¿Puedo abrir más de una galleta al día?',
12
- answer: 'El destino solo habla una vez al día. Guardamos tu fortuna en el dispositivo para que sea tu guía durante la jornada.'
13
- },
14
- {
15
- question: '¿Las fortunas se generan aleatoriamente?',
16
- answer: 'Sí: se selecciona una fortuna aleatoria cada día y se guarda localmente. Las 25 fortunas tienen la misma probabilidad de ser elegidas, asegurando variedad con el tiempo.'
17
- }
18
- ];
19
-
20
- const howTo: FortuneCookieLocaleContent['howTo'] = [
21
- { name: 'Golpear', text: 'Haz clic varias veces sobre la galleta para romperla.' },
22
- { name: 'Leer', text: 'Descubre el mensaje oculto en su interior y tus números de la suerte.' }
23
- ];
24
-
25
- const faqSchema: WithContext<FAQPage> = {
26
- '@context': 'https://schema.org',
27
- '@type': 'FAQPage',
28
- mainEntity: faq.map((item) => ({
29
- '@type': 'Question',
30
- name: item.question,
31
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
32
- })),
33
- };
34
-
35
- const howToSchema: WithContext<HowTo> = {
36
- '@context': 'https://schema.org',
37
- '@type': 'HowTo',
38
- name: title,
39
- description,
40
- step: howTo.map((step) => ({
41
- '@type': 'HowToStep',
42
- name: step.name,
43
- text: step.text,
44
- })),
45
- };
46
-
47
- const appSchema: WithContext<SoftwareApplication> = {
48
- '@context': 'https://schema.org',
49
- '@type': 'SoftwareApplication',
50
- name: title,
51
- description,
52
- applicationCategory: 'UtilitiesApplication',
53
- operatingSystem: 'Web',
54
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
55
- inLanguage: 'es',
56
- };
57
-
58
- export const content: FortuneCookieLocaleContent = {
59
- slug,
60
- title,
61
- description,
62
- faqTitle: 'Preguntas Frecuentes',
63
- ui: {
64
- title: 'Galleta de la Fortuna Online',
65
- description: 'Tu oráculo digital diario.',
66
- instruction: 'Golpea la galleta para abrir tu destino',
67
- dailyStatus: 'Tu destino ha sido revelado por hoy.',
68
- shareBtn: 'Compartir Sabiduría',
69
- shareTitle: 'Mi Galleta de la Fortuna',
70
- shareText: 'El destino me ha hablado: "$TEXT"\nMis números: $NUMS\n\nDescubre tu fortuna aquí:',
71
- copied: '¡Copiado!',
72
- fortunes: JSON.stringify([
73
- "La suerte que buscas está en otra galleta.",
74
- "No cuentes los días, haz que los días cuenten.",
75
- "Un viaje de mil millas comienza con un solo paso.",
76
- "El error es el preámbulo del descubrimiento.",
77
- "Tu capacidad de aprender es tu mayor activo.",
78
- "Sonríe, el universo te está mirando.",
79
- "La paciencia es un árbol de raíz amarga pero de frutos muy dulces.",
80
- "No temas crecer lentamente, teme solo quedarte quieto.",
81
- "Hoy es el mañana que tanto te preocupaba ayer.",
82
- "La felicidad no es algo hecho. Proviene de tus propias acciones.",
83
- "Si no puedes cambiar la dirección del viento, ajusta tus velas.",
84
- "Lo que plantas ahora, lo cosecharás más tarde.",
85
- "La creatividad es la inteligencia divirtiéndose.",
86
- "No busques errores, busca soluciones.",
87
- "Tu actitud, no tu aptitud, determinará tu altitud.",
88
- "El éxito es la suma de pequeños esfuerzos repetidos día tras día.",
89
- "Cree que puedes y ya estarás a medio camino.",
90
- "La única forma de hacer un gran trabajo es amar lo que haces.",
91
- "La vida es un 10% lo que te sucede y un 90% cómo reaccionas ante ello.",
92
- "Sé el cambio que quieres ver en el mundo.",
93
- "La mejor manera de predecir el futuro es inventarlo.",
94
- "La simplicidad es la máxima sofisticación.",
95
- "Eres el dueño de tu destino y el capitán de tu alma.",
96
- "Pronto recibirás una noticia que cambiará tu perspectiva.",
97
- "Un viaje inesperado te traerá grandes alegrías."
98
- ]),
99
- faqTitle: 'FAQ',
100
- bibliographyTitle: 'Referencias'
101
- },
102
- seo: [
103
- { type: 'title', text: 'El Misterio de la Galleta de la Fortuna', level: 2 },
104
- { type: 'paragraph', html: '¿Alguna vez te has preguntado de dónde vienen estas curiosas galletas? Aunque las asociamos con la comida china, su origen es un fascinante viaje entre Japón y los Estados Unidos. La galleta de la fortuna tal como la conocemos hoy fue probablemente inventada en la California de principios del siglo XX, no en China, donde son prácticamente desconocidas.' },
105
- { type: 'tip', title: '¿Cómo funciona nuestro oráculo?', html: 'Cada día puedes abrir una galleta. El sistema guarda tu destino en el navegador de forma completamente privada, sin servidor. ¡Vuelve mañana para una nueva predicción!' },
106
- { type: 'title', text: 'La Filosofía de los Oráculos', level: 3 },
107
- { type: 'paragraph', html: 'Los seres humanos siempre han buscado orientación en tiempos de incertidumbre. Desde el Oráculo de Delfos hasta el I Ching, los sistemas de adivinación cumplen una función psicológica constante: nos dan permiso para <strong>detenernos y reflexionar</strong>. Una galleta de la fortuna no predice el futuro, sino que te invita a pensar en él.' },
108
- { type: 'list', items: [
109
- '<strong>China Antigua (~1000 a.C.):</strong> El I Ching (Libro de los Cambios) utilizaba hexagramas para orientar decisiones e interpretar el destino.',
110
- '<strong>Grecia Clásica:</strong> El Oráculo de Delfos atraía a gobernantes y ciudadanos con pronunciamientos crípticos interpretados como guía divina.',
111
- '<strong>Japón Moderno:</strong> Los omikuji, papelitos de la fortuna en los santuarios sintoístas, mezclan el destino con el ritual.',
112
- '<strong>EE.UU. Siglo XX:</strong> Las galletas de la fortuna surgieron en comunidades japonés-americanas antes de convertirse en símbolo de la cocina chino-americana.',
113
- ]},
114
- { type: 'stats', items: [
115
- { value: '+3.000M', label: 'Galletas fabricadas al año', icon: 'mdi:cookie' },
116
- { value: '~1000 a.C.', label: 'Origen del I Ching', icon: 'mdi:book-open-variant' },
117
- { value: '25', label: 'Fortunas en este oráculo', icon: 'mdi:star-shooting' },
118
- { value: '1/día', label: 'Un destino diario', icon: 'mdi:calendar-today' },
119
- ], columns: 4 },
120
- ],
121
- faq,
122
- bibliography,
123
- howTo,
124
- schemas: [faqSchema as any, howToSchema as any, appSchema],
125
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+ import { bibliography } from '../bibliography';
4
+
5
+ const slug = 'galleta-fortuna';
6
+ const title = 'Galleta de la Fortuna';
7
+ const description = 'Consulta tu destino diario y descubre tus números de la suerte. Una fortuna al día, revelada con un clic.';
8
+
9
+ const faq: FortuneCookieLocaleContent['faq'] = [
10
+ {
11
+ question: '¿Puedo abrir más de una galleta al día?',
12
+ answer: 'El destino solo habla una vez al día. Guardamos tu fortuna en el dispositivo para que sea tu guía durante la jornada.'
13
+ },
14
+ {
15
+ question: '¿Las fortunas se generan aleatoriamente?',
16
+ answer: 'Sí: se selecciona una fortuna aleatoria cada día y se guarda localmente. Las 25 fortunas tienen la misma probabilidad de ser elegidas, asegurando variedad con el tiempo.'
17
+ }
18
+ ];
19
+
20
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
21
+ { name: 'Golpear', text: 'Haz clic varias veces sobre la galleta para romperla.' },
22
+ { name: 'Leer', text: 'Descubre el mensaje oculto en su interior y tus números de la suerte.' }
23
+ ];
24
+
25
+ const faqSchema: WithContext<FAQPage> = {
26
+ '@context': 'https://schema.org',
27
+ '@type': 'FAQPage',
28
+ mainEntity: faq.map((item) => ({
29
+ '@type': 'Question',
30
+ name: item.question,
31
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
32
+ })),
33
+ };
34
+
35
+ const howToSchema: WithContext<HowTo> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'HowTo',
38
+ name: title,
39
+ description,
40
+ step: howTo.map((step) => ({
41
+ '@type': 'HowToStep',
42
+ name: step.name,
43
+ text: step.text,
44
+ })),
45
+ };
46
+
47
+ const appSchema: WithContext<SoftwareApplication> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'SoftwareApplication',
50
+ name: title,
51
+ description,
52
+ applicationCategory: 'UtilitiesApplication',
53
+ operatingSystem: 'Web',
54
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
55
+ inLanguage: 'es',
56
+ };
57
+
58
+ export const content: FortuneCookieLocaleContent = {
59
+ slug,
60
+ title,
61
+ description,
62
+ faqTitle: 'Preguntas Frecuentes',
63
+ ui: {
64
+ title: 'Galleta de la Fortuna Online',
65
+ description: 'Tu oráculo digital diario.',
66
+ instruction: 'Golpea la galleta para abrir tu destino',
67
+ dailyStatus: 'Tu destino ha sido revelado por hoy.',
68
+ shareBtn: 'Compartir Sabiduría',
69
+ shareTitle: 'Mi Galleta de la Fortuna',
70
+ shareText: 'El destino me ha hablado: "$TEXT"\nMis números: $NUMS\n\nDescubre tu fortuna aquí:',
71
+ copied: '¡Copiado!',
72
+ fortunes: JSON.stringify([
73
+ "La suerte que buscas está en otra galleta.",
74
+ "No cuentes los días, haz que los días cuenten.",
75
+ "Un viaje de mil millas comienza con un solo paso.",
76
+ "El error es el preámbulo del descubrimiento.",
77
+ "Tu capacidad de aprender es tu mayor activo.",
78
+ "Sonríe, el universo te está mirando.",
79
+ "La paciencia es un árbol de raíz amarga pero de frutos muy dulces.",
80
+ "No temas crecer lentamente, teme solo quedarte quieto.",
81
+ "Hoy es el mañana que tanto te preocupaba ayer.",
82
+ "La felicidad no es algo hecho. Proviene de tus propias acciones.",
83
+ "Si no puedes cambiar la dirección del viento, ajusta tus velas.",
84
+ "Lo que plantas ahora, lo cosecharás más tarde.",
85
+ "La creatividad es la inteligencia divirtiéndose.",
86
+ "No busques errores, busca soluciones.",
87
+ "Tu actitud, no tu aptitud, determinará tu altitud.",
88
+ "El éxito es la suma de pequeños esfuerzos repetidos día tras día.",
89
+ "Cree que puedes y ya estarás a medio camino.",
90
+ "La única forma de hacer un gran trabajo es amar lo que haces.",
91
+ "La vida es un 10% lo que te sucede y un 90% cómo reaccionas ante ello.",
92
+ "Sé el cambio que quieres ver en el mundo.",
93
+ "La mejor manera de predecir el futuro es inventarlo.",
94
+ "La simplicidad es la máxima sofisticación.",
95
+ "Eres el dueño de tu destino y el capitán de tu alma.",
96
+ "Pronto recibirás una noticia que cambiará tu perspectiva.",
97
+ "Un viaje inesperado te traerá grandes alegrías."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ bibliographyTitle: 'Referencias'
101
+ },
102
+ seo: [
103
+ { type: 'title', text: 'El Misterio de la Galleta de la Fortuna', level: 2 },
104
+ { type: 'paragraph', html: '¿Alguna vez te has preguntado de dónde vienen estas curiosas galletas? Aunque las asociamos con la comida china, su origen es un fascinante viaje entre Japón y los Estados Unidos. La galleta de la fortuna tal como la conocemos hoy fue probablemente inventada en la California de principios del siglo XX, no en China, donde son prácticamente desconocidas.' },
105
+ { type: 'tip', title: '¿Cómo funciona nuestro oráculo?', html: 'Cada día puedes abrir una galleta. El sistema guarda tu destino en el navegador de forma completamente privada, sin servidor. ¡Vuelve mañana para una nueva predicción!' },
106
+ { type: 'title', text: 'La Filosofía de los Oráculos', level: 3 },
107
+ { type: 'paragraph', html: 'Los seres humanos siempre han buscado orientación en tiempos de incertidumbre. Desde el Oráculo de Delfos hasta el I Ching, los sistemas de adivinación cumplen una función psicológica constante: nos dan permiso para <strong>detenernos y reflexionar</strong>. Una galleta de la fortuna no predice el futuro, sino que te invita a pensar en él.' },
108
+ { type: 'list', items: [
109
+ '<strong>China Antigua (~1000 a.C.):</strong> El I Ching (Libro de los Cambios) utilizaba hexagramas para orientar decisiones e interpretar el destino.',
110
+ '<strong>Grecia Clásica:</strong> El Oráculo de Delfos atraía a gobernantes y ciudadanos con pronunciamientos crípticos interpretados como guía divina.',
111
+ '<strong>Japón Moderno:</strong> Los omikuji, papelitos de la fortuna en los santuarios sintoístas, mezclan el destino con el ritual.',
112
+ '<strong>EE.UU. Siglo XX:</strong> Las galletas de la fortuna surgieron en comunidades japonés-americanas antes de convertirse en símbolo de la cocina chino-americana.',
113
+ ]},
114
+ { type: 'stats', items: [
115
+ { value: '+3.000M', label: 'Galletas fabricadas al año', icon: 'mdi:cookie' },
116
+ { value: '~1000 a.C.', label: 'Origen del I Ching', icon: 'mdi:book-open-variant' },
117
+ { value: '25', label: 'Fortunas en este oráculo', icon: 'mdi:star-shooting' },
118
+ { value: '1/día', label: 'Un destino diario', icon: 'mdi:calendar-today' },
119
+ ], columns: 4 },
120
+ ],
121
+ faq,
122
+ bibliography,
123
+ howTo,
124
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
125
+ };