@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 = 'pechenie-s-predskazaniem-online';
6
- const title = 'Печенье с предсказанием';
7
- const description = 'Узнайте свою судьбу на сегодня и получите счастливые числа. Одно предсказание в день, доступное по клику.';
8
-
9
- const faq: FortuneCookieLocaleContent['faq'] = [
10
- {
11
- question: 'Можно ли открывать больше одного печенья в день?',
12
- answer: 'Судьба говорит лишь раз в день. Мы сохраняем ваше предсказание на устройстве, чтобы оно направляло вас в течение всего дня.'
13
- },
14
- {
15
- question: 'Предсказания генерируются случайно?',
16
- answer: 'Да - каждый день выбирается случайное предсказание и сохраняется локально. У каждого из 25 предсказаний равные шансы на выпадение, что обеспечивает разнообразие.'
17
- }
18
- ];
19
-
20
- const howTo: FortuneCookieLocaleContent['howTo'] = [
21
- { name: 'Разломить печенье', text: 'Кликайте на печенье, пока оно не разломится.' },
22
- { name: 'Прочитать предсказание', text: 'Узнайте скрытое послание внутри и ваши счастливые числа на сегодня.' }
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: 'ru',
56
- };
57
-
58
- export const content: FortuneCookieLocaleContent = {
59
- slug,
60
- title,
61
- description,
62
- faqTitle: 'Часто задаваемые вопросы',
63
- ui: {
64
- title: 'Печенье с предсказанием онлайн',
65
- description: 'Ваш ежедневный цифровой оракул.',
66
- instruction: 'Нажмите на печенье, чтобы узнать судьбу',
67
- dailyStatus: 'Ваше предсказание на сегодня уже открыто.',
68
- shareBtn: 'Поделиться мудростью',
69
- shareTitle: 'Мое печенье с предсказанием',
70
- shareText: 'Судьба гласит: "$TEXT"\nМои числа: $NUMS\n\nУзнайте свое предсказание здесь:',
71
- copied: 'Скопировано!',
72
- fortunes: JSON.stringify([
73
- "Удача, которую вы ищете, находится в другом печенье.",
74
- "Не считайте дни, сделайте так, чтобы дни считались.",
75
- "Путешествие в тысячу миль начинается с одного шага.",
76
- "Ошибка - это вступление к открытию.",
77
- "Ваша способность учиться - ваше величайшее достояние.",
78
- "Улыбайтесь, вселенная наблюдает за вами.",
79
- "Терпение - это дерево с горьким корнем, но очень сладким плодом.",
80
- "Не бойтесь расти медленно, бойтесь лишь оставаться на месте.",
81
- "Сегодня - это то самое завтра, о котором вы беспокоились вчера.",
82
- "Счастье не рождается готовым. Оно рождается из ваших действий.",
83
- "Если вы не можете изменить направление ветра, смените паруса.",
84
- "Что вы посеете сейчас, то пожнете позже.",
85
- "Творчество - это интеллект, который развлекается.",
86
- "Не ищите ошибки, ищите решения.",
87
- "Ваш настрой, а не ваши способности, определит вашу высоту.",
88
- "Успех - это сумма малых усилий, повторяемых изо дня в день.",
89
- "Поверьте, что вы можете, и вы уже на полпути.",
90
- "Единственный способ делать великие дела - любить то, что вы делаете.",
91
- "Жизнь на 10% состоит из того, что с вами происходит, и на 90% из того, как вы на это реагируете.",
92
- "Станьте тем изменением, которое вы хотите видеть в мире.",
93
- "Лучший способ предсказать будущее - создать его.",
94
- "Простота - это высшая степень изысканности.",
95
- "Вы - хозяин своей судьбы и капитан своей души.",
96
- "Скоро вы получите новости, которые изменят ваш взгляд на вещи.",
97
- "Неожиданное путешествие принесет вам большую радость."
98
- ]),
99
- faqTitle: 'FAQ',
100
- },
101
- seo: [
102
- { type: 'title', text: 'Тайна печенья с предсказанием', level: 2 },
103
- { type: 'paragraph', html: 'Вы когда-нибудь задумывались, откуда взялось это любопытное лакомство? Хотя мы ассоциируем его с китайской кухней, его происхождение - это увлекательное путешествие между Японией и США. Печенье с предсказанием в том виде, в котором мы знаем его сегодня, скорее всего, было изобретено в Калифорнии в начале XX века, а не в Китае, где оно практически неизвестно.' },
104
- { type: 'tip', title: 'Как работает наш Оракул', html: 'Каждый день вы можете открыть одно печенье. Система сохраняет результат на 24 часа. Предсказание хранится локально в вашем браузере - полная приватность, данные не передаются на сервер. Приходите завтра за новым пророчеством!' },
105
- { type: 'title', text: 'Философия оракулов', level: 3 },
106
- { type: 'paragraph', html: 'Человечество всегда искало руководства в неопределенные времена. От Дельфийского оракула до И-Цзин, системы гадания выполняют важную психологическую функцию: они дают нам разрешение <strong>остановиться и подумать</strong>. Печенье с предсказанием не предсказывает будущее - оно побуждает вас поразмышлять о нем.' },
107
- { type: 'list', items: [
108
- '<strong>Древний Китай:</strong> И-Цзин (\"Книга перемен\", ок. 1000 г. до н. э.) использовала гексаграммы для принятия решений и толкования судьбы.',
109
- '<strong>Классическая Греция:</strong> Дельфийский оракул привлекал правителей и простых граждан загадочными изречениями, которые трактовались как божественное руководство.',
110
- '<strong>Современная Япония:</strong> Предсказания омикудзи в синтоистских храмах, привязываемые к ветвям деревьев, сочетают веру в судьбу с ритуалом.',
111
- '<strong>США XX век:</strong> Печенье с предсказанием появилось в японо-американских общинах, прежде чем стать символом китайско-американской кухни.'
112
- ]},
113
- { type: 'stats', items: [
114
- { value: '3 млрд+', label: 'Печений производится ежегодно', icon: 'mdi:cookie' },
115
- { value: 'ок. 1000 г. до н.э.', label: 'Происхождение И-Цзин', icon: 'mdi:book-open-variant' },
116
- { value: '25', label: 'Предсказаний в оракуле', icon: 'mdi:star-shooting' },
117
- { value: '1 в день', label: 'Одна судьба на сутки', 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 = 'pechenie-s-predskazaniem-online';
6
+ const title = 'Печенье с предсказанием';
7
+ const description = 'Узнайте свою судьбу на сегодня и получите счастливые числа. Одно предсказание в день, доступное по клику.';
8
+
9
+ const faq: FortuneCookieLocaleContent['faq'] = [
10
+ {
11
+ question: 'Можно ли открывать больше одного печенья в день?',
12
+ answer: 'Судьба говорит лишь раз в день. Мы сохраняем ваше предсказание на устройстве, чтобы оно направляло вас в течение всего дня.'
13
+ },
14
+ {
15
+ question: 'Предсказания генерируются случайно?',
16
+ answer: 'Да - каждый день выбирается случайное предсказание и сохраняется локально. У каждого из 25 предсказаний равные шансы на выпадение, что обеспечивает разнообразие.'
17
+ }
18
+ ];
19
+
20
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
21
+ { name: 'Разломить печенье', text: 'Кликайте на печенье, пока оно не разломится.' },
22
+ { name: 'Прочитать предсказание', text: 'Узнайте скрытое послание внутри и ваши счастливые числа на сегодня.' }
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: 'ru',
56
+ };
57
+
58
+ export const content: FortuneCookieLocaleContent = {
59
+ slug,
60
+ title,
61
+ description,
62
+ faqTitle: 'Часто задаваемые вопросы',
63
+ ui: {
64
+ title: 'Печенье с предсказанием онлайн',
65
+ description: 'Ваш ежедневный цифровой оракул.',
66
+ instruction: 'Нажмите на печенье, чтобы узнать судьбу',
67
+ dailyStatus: 'Ваше предсказание на сегодня уже открыто.',
68
+ shareBtn: 'Поделиться мудростью',
69
+ shareTitle: 'Мое печенье с предсказанием',
70
+ shareText: 'Судьба гласит: "$TEXT"\nМои числа: $NUMS\n\nУзнайте свое предсказание здесь:',
71
+ copied: 'Скопировано!',
72
+ fortunes: JSON.stringify([
73
+ "Удача, которую вы ищете, находится в другом печенье.",
74
+ "Не считайте дни, сделайте так, чтобы дни считались.",
75
+ "Путешествие в тысячу миль начинается с одного шага.",
76
+ "Ошибка - это вступление к открытию.",
77
+ "Ваша способность учиться - ваше величайшее достояние.",
78
+ "Улыбайтесь, вселенная наблюдает за вами.",
79
+ "Терпение - это дерево с горьким корнем, но очень сладким плодом.",
80
+ "Не бойтесь расти медленно, бойтесь лишь оставаться на месте.",
81
+ "Сегодня - это то самое завтра, о котором вы беспокоились вчера.",
82
+ "Счастье не рождается готовым. Оно рождается из ваших действий.",
83
+ "Если вы не можете изменить направление ветра, смените паруса.",
84
+ "Что вы посеете сейчас, то пожнете позже.",
85
+ "Творчество - это интеллект, который развлекается.",
86
+ "Не ищите ошибки, ищите решения.",
87
+ "Ваш настрой, а не ваши способности, определит вашу высоту.",
88
+ "Успех - это сумма малых усилий, повторяемых изо дня в день.",
89
+ "Поверьте, что вы можете, и вы уже на полпути.",
90
+ "Единственный способ делать великие дела - любить то, что вы делаете.",
91
+ "Жизнь на 10% состоит из того, что с вами происходит, и на 90% из того, как вы на это реагируете.",
92
+ "Станьте тем изменением, которое вы хотите видеть в мире.",
93
+ "Лучший способ предсказать будущее - создать его.",
94
+ "Простота - это высшая степень изысканности.",
95
+ "Вы - хозяин своей судьбы и капитан своей души.",
96
+ "Скоро вы получите новости, которые изменят ваш взгляд на вещи.",
97
+ "Неожиданное путешествие принесет вам большую радость."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ },
101
+ seo: [
102
+ { type: 'title', text: 'Тайна печенья с предсказанием', level: 2 },
103
+ { type: 'paragraph', html: 'Вы когда-нибудь задумывались, откуда взялось это любопытное лакомство? Хотя мы ассоциируем его с китайской кухней, его происхождение - это увлекательное путешествие между Японией и США. Печенье с предсказанием в том виде, в котором мы знаем его сегодня, скорее всего, было изобретено в Калифорнии в начале XX века, а не в Китае, где оно практически неизвестно.' },
104
+ { type: 'tip', title: 'Как работает наш Оракул', html: 'Каждый день вы можете открыть одно печенье. Система сохраняет результат на 24 часа. Предсказание хранится локально в вашем браузере - полная приватность, данные не передаются на сервер. Приходите завтра за новым пророчеством!' },
105
+ { type: 'title', text: 'Философия оракулов', level: 3 },
106
+ { type: 'paragraph', html: 'Человечество всегда искало руководства в неопределенные времена. От Дельфийского оракула до И-Цзин, системы гадания выполняют важную психологическую функцию: они дают нам разрешение <strong>остановиться и подумать</strong>. Печенье с предсказанием не предсказывает будущее - оно побуждает вас поразмышлять о нем.' },
107
+ { type: 'list', items: [
108
+ '<strong>Древний Китай:</strong> И-Цзин (\"Книга перемен\", ок. 1000 г. до н. э.) использовала гексаграммы для принятия решений и толкования судьбы.',
109
+ '<strong>Классическая Греция:</strong> Дельфийский оракул привлекал правителей и простых граждан загадочными изречениями, которые трактовались как божественное руководство.',
110
+ '<strong>Современная Япония:</strong> Предсказания омикудзи в синтоистских храмах, привязываемые к ветвям деревьев, сочетают веру в судьбу с ритуалом.',
111
+ '<strong>США XX век:</strong> Печенье с предсказанием появилось в японо-американских общинах, прежде чем стать символом китайско-американской кухни.'
112
+ ]},
113
+ { type: 'stats', items: [
114
+ { value: '3 млрд+', label: 'Печений производится ежегодно', icon: 'mdi:cookie' },
115
+ { value: 'ок. 1000 г. до н.э.', label: 'Происхождение И-Цзин', icon: 'mdi:book-open-variant' },
116
+ { value: '25', label: 'Предсказаний в оракуле', icon: 'mdi:star-shooting' },
117
+ { value: '1 в день', label: 'Одна судьба на сутки', 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,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 = 'lyckokaka-online';
6
- const title = 'Lyckokaka';
7
- const description = 'Kontrollera ditt dagliga öde och upptäck dina lyckonummer. En spådom per dag, avslöjad med ett klick.';
8
-
9
- const faq: FortuneCookieLocaleContent['faq'] = [
10
- {
11
- question: 'Kan jag öppna mer än en kaka per dag?',
12
- answer: 'Ödet talar bara en gång om dagen. Vi sparar din spådom på enheten så att den vägleder dig under hela dagen.'
13
- },
14
- {
15
- question: 'Är spådomarna slumpmässigt genererade?',
16
- answer: 'Ja - en slumpmässig spådom väljs varje dag och sparas lokalt. Var och en av de 25 spådomarna har lika stor chans att väljas, vilket garanterar variation över tid.'
17
- }
18
- ];
19
-
20
- const howTo: FortuneCookieLocaleContent['howTo'] = [
21
- { name: 'Knäck kakan', text: 'Klicka upprepade gånger på kakan för att knäcka den.' },
22
- { name: 'Läs din spådom', text: 'Upptäck det dolda meddelandet inuti och dina lyckonummer för dagen.' }
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: 'sv',
56
- };
57
-
58
- export const content: FortuneCookieLocaleContent = {
59
- slug,
60
- title,
61
- description,
62
- faqTitle: 'Vanliga frågor',
63
- ui: {
64
- title: 'Online Lyckokaka',
65
- description: 'Ditt dagliga digitala orakel.',
66
- instruction: 'Slå på kakan för att öppna ditt öde',
67
- dailyStatus: 'Ditt öde har avslöjats för idag.',
68
- shareBtn: 'Dela visdom',
69
- shareTitle: 'Min lyckokaka',
70
- shareText: 'Ödet har talat: "$TEXT"\nMina nummer: $NUMS\n\nUpptäck din lycka här:',
71
- copied: 'Kopierad!',
72
- fortunes: JSON.stringify([
73
- "Lyckan du söker finns i en annan kaka.",
74
- "Räkna inte dagarna, se till att dagarna räknas.",
75
- "En resa på tusen mil börjar med ett enda steg.",
76
- "Misstag är inledningen till upptäckt.",
77
- "Din förmåga att lära är din största tillgång.",
78
- "Le, universum iakttar dig.",
79
- "Tålamod är ett träd med en bitter rot men mycket söt frukt.",
80
- "Var inte rädd för att växa långsamt, var endast rädd för att stå stilla.",
81
- "Idag är den morgondag du oroade dig för igår.",
82
- "Lycka är inte något färdigt. Det kommer från dina egna handlingar.",
83
- "Om du inte kan ändra vindens riktning, justera dina segel.",
84
- "Det du planterar nu kommer du att skörda senare.",
85
- "Kreativitet är intelligens som har roligt.",
86
- "Leta inte efter fel, leta efter lösningar.",
87
- "Din attityd, inte din begåvning, kommer att avgöra din höjd.",
88
- "Framgång är summan av små ansträngningar upprepade dag efter dag.",
89
- "Tro att du kan och du är halvvägs där.",
90
- "Det enda sättet att göra ett fantastiskt jobb är att älska det du gör.",
91
- "Livet är till 10 % vad som händer dig och 90 % hur du reagerar på det.",
92
- "Var den förändring du vill se i världen.",
93
- "Det bästa sättet att förutsäga framtiden är att uppfinna den.",
94
- "Enkelhet är den ultimata sofistikeringen.",
95
- "Du är herren över ditt öde och kaptenen över din själ.",
96
- "Snart kommer du att få nyheter som ändrar ditt perspektiv.",
97
- "En oväntad resa kommer att ge dig stor glädje."
98
- ]),
99
- faqTitle: 'FAQ',
100
- },
101
- seo: [
102
- { type: 'title', text: 'Lyckokakans mysterium', level: 2 },
103
- { type: 'paragraph', html: 'Har du någonsin undrat var dessa märkliga kakor kommer ifrån? Även om vi förknippar dem med kinesisk mat, är deras ursprung en fascinerande resa mellan Japan och USA. Lyckokakan som vi känner den idag uppfanns troligen i Kalifornien under tidigt 1900-tal, inte i Kina - där de är praktiskt taget okända.' },
104
- { type: 'tip', title: 'Så fungerar vårt orakel', html: 'Varje dag kan du öppna en kaka. Systemet sparar ditt öde så att du kommer ihåg det i 24 timmar. Spådomen lagras lokalt i din webbläsare - helt privat, ingen server är inblandad. Kom tillbaka imorgon för en ny förutsägelse!' },
105
- { type: 'title', text: 'Orakelns filosofi', level: 3 },
106
- { type: 'paragraph', html: 'Människor har alltid sökt vägledning i osäkra tider. Från oraklet i Delfi till I Ching, spådomssystem tjänar en konsekvent psykologisk funktion: de ger oss tillåtelse att <strong>stanna upp och reflektera</strong>. En lyckokaka förutsäger inte framtiden - den uppmanar dig att tänka på den.' },
107
- { type: 'list', items: [
108
- '<strong>Forntida Kina:</strong> I Ching (Förvandlingarnas bok, ca 1000 f.Kr.) använde hexagram för att vägleda beslut och tolka ödet.',
109
- '<strong>Klassiska Grekland:</strong> Oraklet i Delfi lockade både härskare och medborgare med kryptiska uttalanden som tolkades som gudomlig vägledning.',
110
- '<strong>Moderna Japan:</strong> Omikuji-spådomar vid Shinto-helgedomar, knutna till trädgrenar, blandar öde med ritual.',
111
- '<strong>1900-talets USA:</strong> Lyckokakor dök upp i japansk-amerikanska samhällen innan de blev synonymt med kinesisk-amerikansk matkultur.'
112
- ]},
113
- { type: 'stats', items: [
114
- { value: '3 miljarder+', label: 'Lyckokakor som tillverkas årligen', icon: 'mdi:cookie' },
115
- { value: 'ca 1000 f.Kr.', label: 'I Chings ursprung', icon: 'mdi:book-open-variant' },
116
- { value: '25', label: 'Spådomar i detta orakel', icon: 'mdi:star-shooting' },
117
- { value: '1/dag', label: 'Ett öde per dygn', 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 = 'lyckokaka-online';
6
+ const title = 'Lyckokaka';
7
+ const description = 'Kontrollera ditt dagliga öde och upptäck dina lyckonummer. En spådom per dag, avslöjad med ett klick.';
8
+
9
+ const faq: FortuneCookieLocaleContent['faq'] = [
10
+ {
11
+ question: 'Kan jag öppna mer än en kaka per dag?',
12
+ answer: 'Ödet talar bara en gång om dagen. Vi sparar din spådom på enheten så att den vägleder dig under hela dagen.'
13
+ },
14
+ {
15
+ question: 'Är spådomarna slumpmässigt genererade?',
16
+ answer: 'Ja - en slumpmässig spådom väljs varje dag och sparas lokalt. Var och en av de 25 spådomarna har lika stor chans att väljas, vilket garanterar variation över tid.'
17
+ }
18
+ ];
19
+
20
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
21
+ { name: 'Knäck kakan', text: 'Klicka upprepade gånger på kakan för att knäcka den.' },
22
+ { name: 'Läs din spådom', text: 'Upptäck det dolda meddelandet inuti och dina lyckonummer för dagen.' }
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: 'sv',
56
+ };
57
+
58
+ export const content: FortuneCookieLocaleContent = {
59
+ slug,
60
+ title,
61
+ description,
62
+ faqTitle: 'Vanliga frågor',
63
+ ui: {
64
+ title: 'Online Lyckokaka',
65
+ description: 'Ditt dagliga digitala orakel.',
66
+ instruction: 'Slå på kakan för att öppna ditt öde',
67
+ dailyStatus: 'Ditt öde har avslöjats för idag.',
68
+ shareBtn: 'Dela visdom',
69
+ shareTitle: 'Min lyckokaka',
70
+ shareText: 'Ödet har talat: "$TEXT"\nMina nummer: $NUMS\n\nUpptäck din lycka här:',
71
+ copied: 'Kopierad!',
72
+ fortunes: JSON.stringify([
73
+ "Lyckan du söker finns i en annan kaka.",
74
+ "Räkna inte dagarna, se till att dagarna räknas.",
75
+ "En resa på tusen mil börjar med ett enda steg.",
76
+ "Misstag är inledningen till upptäckt.",
77
+ "Din förmåga att lära är din största tillgång.",
78
+ "Le, universum iakttar dig.",
79
+ "Tålamod är ett träd med en bitter rot men mycket söt frukt.",
80
+ "Var inte rädd för att växa långsamt, var endast rädd för att stå stilla.",
81
+ "Idag är den morgondag du oroade dig för igår.",
82
+ "Lycka är inte något färdigt. Det kommer från dina egna handlingar.",
83
+ "Om du inte kan ändra vindens riktning, justera dina segel.",
84
+ "Det du planterar nu kommer du att skörda senare.",
85
+ "Kreativitet är intelligens som har roligt.",
86
+ "Leta inte efter fel, leta efter lösningar.",
87
+ "Din attityd, inte din begåvning, kommer att avgöra din höjd.",
88
+ "Framgång är summan av små ansträngningar upprepade dag efter dag.",
89
+ "Tro att du kan och du är halvvägs där.",
90
+ "Det enda sättet att göra ett fantastiskt jobb är att älska det du gör.",
91
+ "Livet är till 10 % vad som händer dig och 90 % hur du reagerar på det.",
92
+ "Var den förändring du vill se i världen.",
93
+ "Det bästa sättet att förutsäga framtiden är att uppfinna den.",
94
+ "Enkelhet är den ultimata sofistikeringen.",
95
+ "Du är herren över ditt öde och kaptenen över din själ.",
96
+ "Snart kommer du att få nyheter som ändrar ditt perspektiv.",
97
+ "En oväntad resa kommer att ge dig stor glädje."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ },
101
+ seo: [
102
+ { type: 'title', text: 'Lyckokakans mysterium', level: 2 },
103
+ { type: 'paragraph', html: 'Har du någonsin undrat var dessa märkliga kakor kommer ifrån? Även om vi förknippar dem med kinesisk mat, är deras ursprung en fascinerande resa mellan Japan och USA. Lyckokakan som vi känner den idag uppfanns troligen i Kalifornien under tidigt 1900-tal, inte i Kina - där de är praktiskt taget okända.' },
104
+ { type: 'tip', title: 'Så fungerar vårt orakel', html: 'Varje dag kan du öppna en kaka. Systemet sparar ditt öde så att du kommer ihåg det i 24 timmar. Spådomen lagras lokalt i din webbläsare - helt privat, ingen server är inblandad. Kom tillbaka imorgon för en ny förutsägelse!' },
105
+ { type: 'title', text: 'Orakelns filosofi', level: 3 },
106
+ { type: 'paragraph', html: 'Människor har alltid sökt vägledning i osäkra tider. Från oraklet i Delfi till I Ching, spådomssystem tjänar en konsekvent psykologisk funktion: de ger oss tillåtelse att <strong>stanna upp och reflektera</strong>. En lyckokaka förutsäger inte framtiden - den uppmanar dig att tänka på den.' },
107
+ { type: 'list', items: [
108
+ '<strong>Forntida Kina:</strong> I Ching (Förvandlingarnas bok, ca 1000 f.Kr.) använde hexagram för att vägleda beslut och tolka ödet.',
109
+ '<strong>Klassiska Grekland:</strong> Oraklet i Delfi lockade både härskare och medborgare med kryptiska uttalanden som tolkades som gudomlig vägledning.',
110
+ '<strong>Moderna Japan:</strong> Omikuji-spådomar vid Shinto-helgedomar, knutna till trädgrenar, blandar öde med ritual.',
111
+ '<strong>1900-talets USA:</strong> Lyckokakor dök upp i japansk-amerikanska samhällen innan de blev synonymt med kinesisk-amerikansk matkultur.'
112
+ ]},
113
+ { type: 'stats', items: [
114
+ { value: '3 miljarder+', label: 'Lyckokakor som tillverkas årligen', icon: 'mdi:cookie' },
115
+ { value: 'ca 1000 f.Kr.', label: 'I Chings ursprung', icon: 'mdi:book-open-variant' },
116
+ { value: '25', label: 'Spådomar i detta orakel', icon: 'mdi:star-shooting' },
117
+ { value: '1/dag', label: 'Ett öde per dygn', icon: 'mdi:calendar-today' }
118
+ ], columns: 4 },
119
+ ],
120
+ faq,
121
+ bibliography,
122
+ howTo,
123
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
124
+ };