@jjlmoya/utils-alcohol 1.13.0 → 1.15.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 (94) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/id.ts +28 -0
  3. package/src/category/i18n/sv.ts +19 -0
  4. package/src/category/index.ts +2 -0
  5. package/src/tests/faq_count.test.ts +12 -10
  6. package/src/tests/i18n_coverage.test.ts +36 -0
  7. package/src/tests/locale_completeness.test.ts +42 -0
  8. package/src/tests/no_h1_in_components.test.ts +48 -0
  9. package/src/tests/schemas_fulfillment.test.ts +23 -0
  10. package/src/tests/seo_length.test.ts +3 -34
  11. package/src/tests/title_quality.test.ts +55 -0
  12. package/src/tests/tool_validation.test.ts +4 -4
  13. package/src/tool/alcoholClearance/i18n/de.ts +205 -0
  14. package/src/tool/alcoholClearance/i18n/en.ts +22 -1
  15. package/src/tool/alcoholClearance/i18n/es.ts +22 -1
  16. package/src/tool/alcoholClearance/i18n/fr.ts +22 -1
  17. package/src/tool/alcoholClearance/i18n/id.ts +205 -0
  18. package/src/tool/alcoholClearance/i18n/it.ts +180 -0
  19. package/src/tool/alcoholClearance/i18n/ja.ts +205 -0
  20. package/src/tool/alcoholClearance/i18n/ko.ts +205 -0
  21. package/src/tool/alcoholClearance/i18n/nl.ts +205 -0
  22. package/src/tool/alcoholClearance/i18n/pl.ts +205 -0
  23. package/src/tool/alcoholClearance/i18n/pt.ts +205 -0
  24. package/src/tool/alcoholClearance/i18n/ru.ts +205 -0
  25. package/src/tool/alcoholClearance/i18n/sv.ts +205 -0
  26. package/src/tool/alcoholClearance/i18n/tr.ts +180 -0
  27. package/src/tool/alcoholClearance/i18n/zh.ts +205 -0
  28. package/src/tool/alcoholClearance/index.ts +13 -1
  29. package/src/tool/beerCooler/i18n/de.ts +197 -0
  30. package/src/tool/beerCooler/i18n/en.ts +25 -4
  31. package/src/tool/beerCooler/i18n/es.ts +25 -4
  32. package/src/tool/beerCooler/i18n/fr.ts +25 -4
  33. package/src/tool/beerCooler/i18n/id.ts +197 -0
  34. package/src/tool/beerCooler/i18n/it.ts +197 -0
  35. package/src/tool/beerCooler/i18n/ja.ts +197 -0
  36. package/src/tool/beerCooler/i18n/ko.ts +197 -0
  37. package/src/tool/beerCooler/i18n/nl.ts +197 -0
  38. package/src/tool/beerCooler/i18n/pl.ts +197 -0
  39. package/src/tool/beerCooler/i18n/pt.ts +197 -0
  40. package/src/tool/beerCooler/i18n/ru.ts +197 -0
  41. package/src/tool/beerCooler/i18n/sv.ts +197 -0
  42. package/src/tool/beerCooler/i18n/tr.ts +197 -0
  43. package/src/tool/beerCooler/i18n/zh.ts +197 -0
  44. package/src/tool/beerCooler/index.ts +13 -1
  45. package/src/tool/carbonationCalculator/i18n/de.ts +200 -0
  46. package/src/tool/carbonationCalculator/i18n/en.ts +22 -1
  47. package/src/tool/carbonationCalculator/i18n/es.ts +22 -1
  48. package/src/tool/carbonationCalculator/i18n/fr.ts +22 -1
  49. package/src/tool/carbonationCalculator/i18n/id.ts +200 -0
  50. package/src/tool/carbonationCalculator/i18n/it.ts +200 -0
  51. package/src/tool/carbonationCalculator/i18n/ja.ts +200 -0
  52. package/src/tool/carbonationCalculator/i18n/ko.ts +200 -0
  53. package/src/tool/carbonationCalculator/i18n/nl.ts +200 -0
  54. package/src/tool/carbonationCalculator/i18n/pl.ts +200 -0
  55. package/src/tool/carbonationCalculator/i18n/pt.ts +200 -0
  56. package/src/tool/carbonationCalculator/i18n/ru.ts +200 -0
  57. package/src/tool/carbonationCalculator/i18n/sv.ts +200 -0
  58. package/src/tool/carbonationCalculator/i18n/tr.ts +200 -0
  59. package/src/tool/carbonationCalculator/i18n/zh.ts +200 -0
  60. package/src/tool/carbonationCalculator/index.ts +13 -1
  61. package/src/tool/cocktailBalancer/i18n/de.ts +222 -0
  62. package/src/tool/cocktailBalancer/i18n/en.ts +23 -2
  63. package/src/tool/cocktailBalancer/i18n/es.ts +23 -2
  64. package/src/tool/cocktailBalancer/i18n/fr.ts +23 -2
  65. package/src/tool/cocktailBalancer/i18n/id.ts +222 -0
  66. package/src/tool/cocktailBalancer/i18n/it.ts +222 -0
  67. package/src/tool/cocktailBalancer/i18n/ja.ts +222 -0
  68. package/src/tool/cocktailBalancer/i18n/ko.ts +222 -0
  69. package/src/tool/cocktailBalancer/i18n/nl.ts +222 -0
  70. package/src/tool/cocktailBalancer/i18n/pl.ts +222 -0
  71. package/src/tool/cocktailBalancer/i18n/pt.ts +222 -0
  72. package/src/tool/cocktailBalancer/i18n/ru.ts +222 -0
  73. package/src/tool/cocktailBalancer/i18n/sv.ts +222 -0
  74. package/src/tool/cocktailBalancer/i18n/tr.ts +222 -0
  75. package/src/tool/cocktailBalancer/i18n/zh.ts +222 -0
  76. package/src/tool/cocktailBalancer/index.ts +13 -1
  77. package/src/tool/partyKeg/i18n/de.ts +187 -0
  78. package/src/tool/partyKeg/i18n/en.ts +22 -1
  79. package/src/tool/partyKeg/i18n/es.ts +22 -1
  80. package/src/tool/partyKeg/i18n/fr.ts +23 -2
  81. package/src/tool/partyKeg/i18n/id.ts +187 -0
  82. package/src/tool/partyKeg/i18n/it.ts +187 -0
  83. package/src/tool/partyKeg/i18n/ja.ts +187 -0
  84. package/src/tool/partyKeg/i18n/ko.ts +187 -0
  85. package/src/tool/partyKeg/i18n/nl.ts +187 -0
  86. package/src/tool/partyKeg/i18n/pl.ts +187 -0
  87. package/src/tool/partyKeg/i18n/pt.ts +187 -0
  88. package/src/tool/partyKeg/i18n/ru.ts +187 -0
  89. package/src/tool/partyKeg/i18n/sv.ts +187 -0
  90. package/src/tool/partyKeg/i18n/tr.ts +187 -0
  91. package/src/tool/partyKeg/i18n/zh.ts +187 -0
  92. package/src/tool/partyKeg/index.ts +13 -1
  93. package/src/types.ts +1 -1
  94. package/src/tests/content_mandatory.test.ts +0 -32
@@ -0,0 +1,222 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { CocktailBalancerUI, CocktailBalancerLocaleContent } from '../index';
3
+
4
+ const slug = 'cocktail-balancer';
5
+ const title = 'Балансир Коктейлей: Закон Кислоты';
6
+ const description = 'Вычислите идеальный баланс между сладким и кислым для ваших коктейлей. Овладейте золотым сечением миксологии.';
7
+
8
+ const ui: CocktailBalancerUI = {
9
+ title: 'Балансир Коктейлей',
10
+ presetsBtn: 'Рецепты',
11
+ saveBtn: 'Сохранить',
12
+ resetBtn: 'Сброс',
13
+ emptyStateTitle: 'Ваш Рабочий Стол Пуст',
14
+ emptyStateDescription: 'Добавьте ингредиенты, чтобы анализировать баланс вашего коктейля в реальном времени.',
15
+ addBtn: 'Добавить Ингредиент',
16
+ addMoreBtn: 'Добавить Еще Один Ингредиент',
17
+ flavorProfileTitle: 'Профиль Вкуса',
18
+ volLabel: 'Объем',
19
+ sugarLabel: 'Сахар',
20
+ colorLabel: 'Цвет',
21
+ sourLawTitle: 'Закон Кислоты',
22
+ acidDryLabel: 'Кислота (Сухая)',
23
+ balanceLabel: 'Баланс',
24
+ sweetLabel: 'Сладкий',
25
+ aiSuggestionTitle: 'Рекомендация ИИ',
26
+ addIngredientTitle: 'Добавить Ингредиент',
27
+ searchPlaceholder: 'Поиск рома, лайма, сиропа...',
28
+ presetsTitle: 'Рецепты и Предустановки',
29
+ savedSectionTitle: 'Мои Сохраненные',
30
+ classicsSectionTitle: 'Классика',
31
+ confirmDeleteTitle: 'Удалить все?',
32
+ confirmDeleteText: 'Это удалит все ингредиенты с вашего рабочего стола. Это действие невозможно отменить.',
33
+ cancelBtn: 'Отмена',
34
+ deleteBtn: 'Удалить',
35
+ verdictSpiritSeco: 'Крепкие / Сухие',
36
+ verdictSoloDulce: 'Только Сладкий (Old Fashioned)',
37
+ verdictMuyAcido: 'Слишком Кислый / Очень Сухой',
38
+ verdictAcido: 'Кислый / Терпкий',
39
+ verdictEquilibrado: 'Сбалансированный (Кислый)',
40
+ verdictDulce: 'Сладкий / Коммерческий',
41
+ verdictEmpalagoso: 'Слишком Сладкий',
42
+ fixAddBitters: 'Не хватает Горечи',
43
+ fixAddSugar: 'Слишком Кислый',
44
+ fixAddAcid: 'Слишком Сладкий'
45
+ };
46
+
47
+ const faqTitle = 'Часто Задаваемые Вопросы';
48
+ const bibliographyTitle = 'Библиография и Источники';
49
+
50
+ const faq: CocktailBalancerLocaleContent['faq'] = [
51
+ {
52
+ question: "Что такое 'Закон Кислоты'?",
53
+ answer: "Это золотое сечение миксологии, которое уравновешивает три элемента: крепкую основу (спирт), кислоту (цитрусовые) и сладость (сиропы). Классический рецепт обычно следует пропорции 2:1:1 (Крепкий:Кислый:Сладкий), хотя это варьируется в зависимости от крепости и плотности.",
54
+ },
55
+ {
56
+ question: "Как разбавление влияет на баланс коктейля?",
57
+ answer: "Лед не только охлаждает; он добавляет воду (разбавление), которая раскрывает ароматы спирта и смягчает пики кислотности и сладости. Сбалансированный коктейль в шейкере может стать несбалансированным, если слишком долго остаётся со льдом в стакане.",
58
+ },
59
+ {
60
+ question: "Почему мои домашние коктейли не имеют вкуса как в баре?",
61
+ answer: "Это обычно из-за недостатка баланса между сахаром и pH цитрусовых. Лимоны варьируются в кислотности в зависимости от сезона. Наш калькулятор помогает вам отрегулировать точное количество сиропа на основе объема использованного сока.",
62
+ },
63
+ {
64
+ question: "Что такое градусы Брикса и почему они важны в коктейлях?",
65
+ answer: "Брикс — это шкала, которая измеряет количество растворённого сахара в жидкости. Простой сироп (1:1) находится около 50 °Brix; богатый сироп (2:1) превышает 66 °Brix. Чем выше Брикс, тем больше тела и сладости он вносит на единицу объема. Знание этого позволяет вам менять сиропы в рецепте без нарушения баланса.",
66
+ },
67
+ ];
68
+
69
+ const howTo: CocktailBalancerLocaleContent['howTo'] = [
70
+ {
71
+ name: "Выберите спиртовую основу",
72
+ text: "Выберите основной спирт (Джин, Ром, Виски) из нашей базы данных, чтобы узнать его плотность и содержание алкоголя.",
73
+ },
74
+ {
75
+ name: "Введите кислотный агент",
76
+ text: "Добавьте объем лимонного, лаймового или грейпфрутового сока. Калькулятор проанализирует влияние pH на смесь.",
77
+ },
78
+ {
79
+ name: "Отрегулируйте сладкий компонент",
80
+ text: "Введите тип сиропа (простой, 2:1, агава) и наблюдайте, как индикатор баланса движется в реальном времени.",
81
+ },
82
+ {
83
+ name: "Идеальная подача",
84
+ text: "Проверьте окончательный вердикт инструмента: соотношение кислоты, предполагаемый ABV после разбавления и предложения по коррекции. Подавайте со свежим льдом и отрегулируйте цитрусовые или сироп по вкусу.",
85
+ },
86
+ ];
87
+
88
+ const bibliography: CocktailBalancerLocaleContent['bibliography'] = [
89
+ {
90
+ name: "Liquid Intelligence: The Art and Science of the Perfect Cocktail",
91
+ url: "https://www.indigo.ca/en-ca/liquid-intelligence-the-art-and-science-of-the-perfect-cocktail/9780393089035.html",
92
+ },
93
+ {
94
+ name: "Cocktails: The Science of Shaking",
95
+ url: "https://cookingissues.com/2009/07/22/cocktails-the-science-of-shaking/",
96
+ },
97
+ {
98
+ name: "Cocktail Balance - Difford's Guide",
99
+ url: "https://www.diffordsguide.com/encyclopedia/1066/cocktails/cocktail-balance",
100
+ },
101
+ ];
102
+
103
+ const seo: CocktailBalancerLocaleContent['seo'] = [
104
+ {
105
+ type: 'title',
106
+ text: 'Молекулярная Инженерия и Баланс Жидкостей',
107
+ level: 2
108
+ },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'Добро пожаловать в цифровую лабораторию, где интуиция встречается с математикой. Этот инструмент — не просто сборник рецептов; это <strong>передовой физико-химический симулятор</strong>, разработанный для декonstruktion и анализа молекулярной структуры ваших коктейлей в реальном времени. Каждая капля цитруса, каждая порция спирта, каждый грамм сиропа взаимодействует в соответствии с неизменяемыми законами химии, которые определяют, будет ли ваш напиток шедевром или разочаровывающей неудачей.'
112
+ },
113
+ {
114
+ type: 'stats',
115
+ items: [
116
+ { label: 'Лайм', value: '~6% Кислота', icon: 'mdi:fruit-citrus' },
117
+ { label: 'Лимон', value: '~6% Кислота', icon: 'mdi:fruit-citrus' },
118
+ { label: 'Грейпфрут', value: '~1-2% Кислота', icon: 'mdi:fruit-citrus' }
119
+ ],
120
+ columns: 3
121
+ },
122
+ {
123
+ type: 'card',
124
+ title: 'Наука о Кислотности',
125
+ icon: 'mdi:fruit-citrus',
126
+ html: 'Кислотность — это не просто вкус; это структурный позвоночник любого сбалансированного коктейля. Без надлежащей кислотности напиток становится плоским, одномерным и забываемым. Наш алгоритм различает титруемую кислотность персидского лайма и лимона Eureka, учитывая сезонные колебания pH цитрусовых, которые могут сместить вашу рецепту на целый балансовый пункт во вкусовом восприятии.'
127
+ },
128
+ {
129
+ type: 'card',
130
+ title: 'Контроль Брикса (Сладость)',
131
+ icon: 'mdi:spoon-sugar',
132
+ html: 'Плотность и текстура вашего коктейля полностью зависят от растворённого сахара. Простой сироп (1:1) ведёт себя совершенно иначе, чем богатый сироп (2:1), мёд или нектар агавы. Каждый подсластитель имеет различную степень Брикса и вязкость, которые влияют на то, как напиток обволакивает язык. Наш калькулятор вычисляет точное количество граммов растворённого сахара для прогнозирования окончательной текстуры во рту и восприятия сладости.'
133
+ },
134
+ {
135
+ type: 'card',
136
+ title: 'Термодинамика и Разбавление',
137
+ icon: 'mdi:water-percent',
138
+ html: 'Взбитый коктейль разбавляется на 25-40% в зависимости от температуры льда, техники встряхивания и продолжительности. Это добавление воды — не недостаток; это необходимый ингредиент, который раскрывает ароматы и смягчает спиртовой край. Наш калькулятор оценивает финальный ABV после разбавления, чтобы вы могли разрабатывать напитки с точно предусмотренной крепостью и вкусовым балансом.'
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'За Пределами Базовой Пропорции',
143
+ level: 2
144
+ },
145
+ {
146
+ type: 'paragraph',
147
+ html: 'Многие бармены учат классическое правило 2:1:1 (2 части спирта, 1 часть кислоты, 1 часть сладости) и рассматривают его как универсальную истину. Однако <strong>химия намного более нюансирована</strong>. Сицилийский лимон содержит другую кислотность, чем мексиканский лайм. Triple sec типа Cointreau ведёт себя радикально иначе, чем Blue Curaçao. Один и тот же рецепт может казаться идеально сбалансированным одну неделю и жестоко кислым в следующую, просто из-за сезонных колебаний фруктов.'
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Этот балансир преодолевает такие упрощенные барьеры. Вводя ваши конкретные ингредиенты, вы обращаетесь к живой базе данных, которая динамически регулирует векторы кислотности и сладости, предлагая точную сенсорную карту вашего творения. Прекратите угадывать и начните разрабатывать коктейли с той же научной строгостью, которую барменов в учреждениях мирового класса используют на каждой смене.'
152
+ },
153
+ {
154
+ type: 'summary',
155
+ title: 'Для кого этот инструмент?',
156
+ items: [
157
+ 'Профессиональные бармены: Стандартизируйте рецепты и создавайте фирменные меню с воспроизводимой согласованностью.',
158
+ 'Домашние энтузиасты: Прекратите угадывать и начните понимать, почему ваши коктейли удаются или терпят неудачу.',
159
+ 'Разработчики напитков: Быстро создавайте прототипы новых концепций вкуса перед дорогостоящими производственными циклами.'
160
+ ]
161
+ },
162
+ {
163
+ type: 'diagnostic',
164
+ title: 'Золотая Зона',
165
+ icon: 'mdi:star',
166
+ variant: 'success',
167
+ badge: 'Цель',
168
+ html: 'Это конечная цель: контролируемый pH, в котором сахар нейтрализует агрессию кислоты, не маскируя эфирные масла и ароматические соединения базового спирта. Этот точный баланс — место, где живут бессмертные классики — Дайкири, Маргарита, Сайдкар — напитки, которые пережили десятилетия, потому что они подчиняются фундаментальным законам химии вкуса.'
169
+ },
170
+ {
171
+ type: 'tip',
172
+ title: 'Совет Эксперта: Всегда Используйте Свежие Цитрусовые',
173
+ html: 'Всегда выжимайте цитрусовые в последний момент. Лимонный и лаймовый сок быстро окисляются, теряя живую кислотность в течение 20-30 минут после выжима. Коктейль, приготовленный из действительно свежего сока, всегда будет иметь яркость и живость во вкусовом восприятии, которую не может воспроизвести никакой готовый продукт. Используйте фрукты комнатной температуры, чтобы максимизировать выход сока.'
174
+ }
175
+ ];
176
+
177
+ const schemas: CocktailBalancerLocaleContent['schemas'] = [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: faq.map((item) => ({
182
+ '@type': 'Question',
183
+ name: item.question,
184
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
185
+ })),
186
+ } as WithContext<FAQPage>,
187
+ {
188
+ '@context': 'https://schema.org',
189
+ '@type': 'HowTo',
190
+ name: title,
191
+ description: description,
192
+ step: howTo.map((step, i) => ({
193
+ '@type': 'HowToStep',
194
+ position: i + 1,
195
+ name: step.name,
196
+ text: step.text,
197
+ })),
198
+ } as WithContext<HowTo>,
199
+ {
200
+ '@context': 'https://schema.org',
201
+ '@type': 'SoftwareApplication',
202
+ name: title,
203
+ description: description,
204
+ applicationCategory: 'UtilityApplication',
205
+ operatingSystem: 'Web',
206
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
207
+ } as WithContext<SoftwareApplication>,
208
+ ];
209
+
210
+ export const content: CocktailBalancerLocaleContent = {
211
+ slug,
212
+ title,
213
+ description,
214
+ ui,
215
+ seo,
216
+ faqTitle,
217
+ faq,
218
+ bibliographyTitle,
219
+ bibliography,
220
+ howTo,
221
+ schemas,
222
+ };
@@ -0,0 +1,222 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { CocktailBalancerUI, CocktailBalancerLocaleContent } from '../index';
3
+
4
+ const slug = 'cocktail-balancer';
5
+ const title = 'Cocktail Balancer: Surlagenen';
6
+ const description = 'Beräkna den perfekta balansen mellan sött och surt för dina cocktails. Bemästra det gyllene snittet inom mixologi.';
7
+
8
+ const ui: CocktailBalancerUI = {
9
+ title: 'Cocktail Balancer',
10
+ presetsBtn: 'Recept',
11
+ saveBtn: 'Spara',
12
+ resetBtn: 'Återställ',
13
+ emptyStateTitle: 'Din Arbetsbänk är Tom',
14
+ emptyStateDescription: 'Lägg till ingredienser för att analysera din cocktails balans i realtid.',
15
+ addBtn: 'Lägg Till Ingrediens',
16
+ addMoreBtn: 'Lägg Till En Till Ingrediens',
17
+ flavorProfileTitle: 'Smakprofil',
18
+ volLabel: 'Volym',
19
+ sugarLabel: 'Socker',
20
+ colorLabel: 'Färg',
21
+ sourLawTitle: 'Surlagenen',
22
+ acidDryLabel: 'Sur (Torr)',
23
+ balanceLabel: 'Balans',
24
+ sweetLabel: 'Söt',
25
+ aiSuggestionTitle: 'AI-förslag',
26
+ addIngredientTitle: 'Lägg Till Ingrediens',
27
+ searchPlaceholder: 'Sök rom, lime, sirap...',
28
+ presetsTitle: 'Recept & Förinställningar',
29
+ savedSectionTitle: 'Mina Sparade',
30
+ classicsSectionTitle: 'Klassiker',
31
+ confirmDeleteTitle: 'Ta bort allt?',
32
+ confirmDeleteText: 'Detta tar bort alla ingredienser från din arbetsbänk. Den här åtgärden kan inte ångras.',
33
+ cancelBtn: 'Avbryt',
34
+ deleteBtn: 'Ta bort',
35
+ verdictSpiritSeco: 'Spritdryck / Torr',
36
+ verdictSoloDulce: 'Endast Söt (Old Fashioned)',
37
+ verdictMuyAcido: 'För Sur / Skelettorr',
38
+ verdictAcido: 'Sur / Tart',
39
+ verdictEquilibrado: 'Balanserad (Sur)',
40
+ verdictDulce: 'Söt / Kommersiell',
41
+ verdictEmpalagoso: 'För Söt',
42
+ fixAddBitters: 'Bittrare Saknas',
43
+ fixAddSugar: 'För Sur',
44
+ fixAddAcid: 'För Söt'
45
+ };
46
+
47
+ const faqTitle = 'Vanliga Frågor';
48
+ const bibliographyTitle = 'Bibliografi & Källor';
49
+
50
+ const faq: CocktailBalancerLocaleContent['faq'] = [
51
+ {
52
+ question: "Vad är 'Surlagenen'?",
53
+ answer: "Det är det gyllene snittet inom mixologi som balanserar tre element: den starka basen (sprit), det sura (citrusfrukter) och det söta (siraper). Ett klassiskt recept följer vanligtvis förhållandet 2:1:1 (Stark:Sur:Söt), även om detta varierar beroende på styrka och densitet.",
54
+ },
55
+ {
56
+ question: "Hur påverkar utspädning cocktails balans?",
57
+ answer: "Is kyl inte bara; det adderar vatten (utspädning) som öppnar spritens aromer och mjukar upp topparna av surhet och söta. En balanserad cocktail i shaken kan bli obalanserad om den lämnas för länge med is i glaset.",
58
+ },
59
+ {
60
+ question: "Varför smakar mina hemgjorda cocktails inte som de på baren?",
61
+ answer: "Det beror vanligtvis på bristen på balans mellan socker och citronfrukternas pH. Citron varierar i surhet beroende på årstid. Vår kalkylator hjälper dig att justera den exakta mängden sirap baserat på volymen saft som använts.",
62
+ },
63
+ {
64
+ question: "Vad är Brix-grader och varför är de viktiga i cocktails?",
65
+ answer: "Brix är en skala som mäter mängden upplöst socker i en vätska. En enkel sirap (1:1) ligger runt 50 °Brix; en rik sirap (2:1) överstiger 66 °Brix. Ju högre Brix, desto mer kropp och söta bidrar det per volymenheten. Att veta detta låter dig byta siraper i ett recept utan att bryta balansen.",
66
+ },
67
+ ];
68
+
69
+ const howTo: CocktailBalancerLocaleContent['howTo'] = [
70
+ {
71
+ name: "Välj alkoholisk bas",
72
+ text: "Välj huvudspriten (Gin, Rom, Whiskey) från vår databas för att känna till dess kropp och alkoholbidrag.",
73
+ },
74
+ {
75
+ name: "Ange den sura agenten",
76
+ text: "Lägg till volymen av citron-, lime- eller grapefruktjuice. Kalkylatorn analyserar pH-effekten på blandningen.",
77
+ },
78
+ {
79
+ name: "Justera den söta komponenten",
80
+ text: "Ange siraptyp (enkel, 2:1, agava) och se hur balanssindikatorn rör sig i realtid.",
81
+ },
82
+ {
83
+ name: "Perfekt servering",
84
+ text: "Granska verktygets slutgiltiga dikt: surförhållandet, det beräknade ABV efter utspädning och rättningsförslag. Servera med färsk is och finjustera citrus eller sirap efter smak.",
85
+ },
86
+ ];
87
+
88
+ const bibliography: CocktailBalancerLocaleContent['bibliography'] = [
89
+ {
90
+ name: "Liquid Intelligence: The Art and Science of the Perfect Cocktail",
91
+ url: "https://www.indigo.ca/en-ca/liquid-intelligence-the-art-and-science-of-the-perfect-cocktail/9780393089035.html",
92
+ },
93
+ {
94
+ name: "Cocktails: The Science of Shaking",
95
+ url: "https://cookingissues.com/2009/07/22/cocktails-the-science-of-shaking/",
96
+ },
97
+ {
98
+ name: "Cocktail Balance - Difford's Guide",
99
+ url: "https://www.diffordsguide.com/encyclopedia/1066/cocktails/cocktail-balance",
100
+ },
101
+ ];
102
+
103
+ const seo: CocktailBalancerLocaleContent['seo'] = [
104
+ {
105
+ type: 'title',
106
+ text: 'Molekylär Teknik och Vätskebalans',
107
+ level: 2
108
+ },
109
+ {
110
+ type: 'paragraph',
111
+ html: 'Välkommen till det digitala laboratoriet där intuition möter matematik. Detta verktyg är inte bara en receptbok; det är en <strong>avancerad fysikalisk-kemisk simulator</strong> utformad för att dekonstruera och analysera din cocktails molekylära struktur i realtid. Varje droppe citrusfrukter, varje mått sprit, varje gram sirap interagerar enligt oföränderliga kemiska lagar som avgör om din dryck blir ett mästerverk eller en besvikelse misslyckande.'
112
+ },
113
+ {
114
+ type: 'stats',
115
+ items: [
116
+ { label: 'Lime', value: '~6% Sur', icon: 'mdi:fruit-citrus' },
117
+ { label: 'Citron', value: '~6% Sur', icon: 'mdi:fruit-citrus' },
118
+ { label: 'Grapefrukt', value: '~1-2% Sur', icon: 'mdi:fruit-citrus' }
119
+ ],
120
+ columns: 3
121
+ },
122
+ {
123
+ type: 'card',
124
+ title: 'Surhetsvetenskapen',
125
+ icon: 'mdi:fruit-citrus',
126
+ html: 'Surhet är inte bara en smak; det är det strukturella ryggraden på varje balanserad cocktail. Utan rätt surhet blir en dryck platt, endimensionell och glömsk. Vår algoritm skiljer mellan titrerbar surhet av persisk lime jämfört med Eureka-citron, tar hänsyn till säsongsvariationer i citrusfrukts pH som kan flytta ditt recept ett helt balanspoäng på gommen.'
127
+ },
128
+ {
129
+ type: 'card',
130
+ title: 'Brixkontroll (Söta)',
131
+ icon: 'mdi:spoon-sugar',
132
+ html: 'Din cocktails kropp och textur beror helt på upplöst socker. En enkel sirap (1:1) beter sig mycket annorlunda än en rik sirap (2:1), honung eller agavesirap. Varje sötningsmedel har olika Brix-grad och viskositet som påverkar hur drycken kläder tungan. Vår kalkylator beräknar de exakta grammen upplöst socker för att förutsäga slutmun och sötkänning.'
133
+ },
134
+ {
135
+ type: 'card',
136
+ title: 'Termodynamik och Utspädning',
137
+ icon: 'mdi:water-percent',
138
+ html: 'En skakad cocktail späds ut 25-40% beroende på istemperatur, skakningsmetod och varaktighet. Denna vattenaddition är ingen defekt; det är en väsentlig ingrediens som öppnar aromer och mjukar upp alkoholkanten. Vår kalkylator uppskattar slutligabv efter utspädning, så du kan konstruera drycker med precis den avsedd styrka och smakbalans.'
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Bortom Grundförhållandet',
143
+ level: 2
144
+ },
145
+ {
146
+ type: 'paragraph',
147
+ html: 'Många bartenders lär sig den klassiska 2:1:1-regeln (2 delar sprit, 1 del sur, 1 del söt) och behandlar det som universell sanning. Men <strong>kemien är mycket mer nyanserad</strong>. En citron från Sicilien innehåller annan surhet än en lime från Mexiko. En triple sec som Cointreau beter sig radikalt annorlunda än blå Curaçao. Samma recept kan smaka perfekt balanserat en vecka och brutalt surt nästa, bara på grund av säsongsvariationer i frukt.'
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Denna balansör bryter igenom dessa simplastiska barriärer. Genom att mata in dina specifika ingredienser konsulterar du en levande databas som dynamiskt justerar surhet- och söthetsvektorer för att erbjuda en precis sensorisk karta över din skapelse. Sluta gissa och börja konstruera dina cocktails med samma vetenskapliga rigoritet som bartenders på världsklass-etablissemang använder vid varje service.'
152
+ },
153
+ {
154
+ type: 'summary',
155
+ title: 'Vem är detta verktyg för?',
156
+ items: [
157
+ 'Professionella bartenders: Standardisera recept och skapa signaturmeny med reproducerbar konsistens.',
158
+ 'Hemmaentusiaster: Sluta gissa och börja förstå varför dina cocktails lyckas eller misslyckas.',
159
+ 'Dryckestillverkare: Prototyp snabbt nya smakbegrepp innan dyra produktionskörningar.'
160
+ ]
161
+ },
162
+ {
163
+ type: 'diagnostic',
164
+ title: 'Den Gyllene Zonen',
165
+ icon: 'mdi:star',
166
+ variant: 'success',
167
+ badge: 'Mål',
168
+ html: 'Detta är det ultimata målet: en kontrollerad pH där socker neutraliserar surhets aggression utan att maskera bassprits väsentliga oljor och aromatiska föreningar. Denna exakta balans är där odödliga klassiker bor — Daiquiri, Margarita, Sidecar — drycker som överlevde decennier eftersom de följer smakkemins grundläggande lagar.'
169
+ },
170
+ {
171
+ type: 'tip',
172
+ title: 'Experttips: Använd Alltid Färsk Citrusfrukter',
173
+ html: 'Pressa alltid citrusfrukter i sista stund. Citron- och limejuice oxideras snabbt, förlorar levande surhet inom 20-30 minuter efter pressning. En cocktail gjord med verkligt färsk juice kommer alltid att ha en ljusstyrka och vitalitet på gommen som inget buteljerat produkter kan replikera. Använd frukt vid rumstemperatur för att maximera saftutbytet.'
174
+ }
175
+ ];
176
+
177
+ const schemas: CocktailBalancerLocaleContent['schemas'] = [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: faq.map((item) => ({
182
+ '@type': 'Question',
183
+ name: item.question,
184
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
185
+ })),
186
+ } as WithContext<FAQPage>,
187
+ {
188
+ '@context': 'https://schema.org',
189
+ '@type': 'HowTo',
190
+ name: title,
191
+ description: description,
192
+ step: howTo.map((step, i) => ({
193
+ '@type': 'HowToStep',
194
+ position: i + 1,
195
+ name: step.name,
196
+ text: step.text,
197
+ })),
198
+ } as WithContext<HowTo>,
199
+ {
200
+ '@context': 'https://schema.org',
201
+ '@type': 'SoftwareApplication',
202
+ name: title,
203
+ description: description,
204
+ applicationCategory: 'UtilityApplication',
205
+ operatingSystem: 'Web',
206
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
207
+ } as WithContext<SoftwareApplication>,
208
+ ];
209
+
210
+ export const content: CocktailBalancerLocaleContent = {
211
+ slug,
212
+ title,
213
+ description,
214
+ ui,
215
+ seo,
216
+ faqTitle,
217
+ faq,
218
+ bibliographyTitle,
219
+ bibliography,
220
+ howTo,
221
+ schemas,
222
+ };