@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.
- package/package.json +59 -58
- package/src/category/i18n/id.ts +28 -0
- package/src/category/i18n/sv.ts +19 -0
- package/src/category/index.ts +2 -0
- package/src/tests/faq_count.test.ts +12 -10
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/schemas_fulfillment.test.ts +23 -0
- package/src/tests/seo_length.test.ts +3 -34
- package/src/tests/title_quality.test.ts +55 -0
- package/src/tests/tool_validation.test.ts +4 -4
- package/src/tool/alcoholClearance/i18n/de.ts +205 -0
- package/src/tool/alcoholClearance/i18n/en.ts +22 -1
- package/src/tool/alcoholClearance/i18n/es.ts +22 -1
- package/src/tool/alcoholClearance/i18n/fr.ts +22 -1
- package/src/tool/alcoholClearance/i18n/id.ts +205 -0
- package/src/tool/alcoholClearance/i18n/it.ts +180 -0
- package/src/tool/alcoholClearance/i18n/ja.ts +205 -0
- package/src/tool/alcoholClearance/i18n/ko.ts +205 -0
- package/src/tool/alcoholClearance/i18n/nl.ts +205 -0
- package/src/tool/alcoholClearance/i18n/pl.ts +205 -0
- package/src/tool/alcoholClearance/i18n/pt.ts +205 -0
- package/src/tool/alcoholClearance/i18n/ru.ts +205 -0
- package/src/tool/alcoholClearance/i18n/sv.ts +205 -0
- package/src/tool/alcoholClearance/i18n/tr.ts +180 -0
- package/src/tool/alcoholClearance/i18n/zh.ts +205 -0
- package/src/tool/alcoholClearance/index.ts +13 -1
- package/src/tool/beerCooler/i18n/de.ts +197 -0
- package/src/tool/beerCooler/i18n/en.ts +25 -4
- package/src/tool/beerCooler/i18n/es.ts +25 -4
- package/src/tool/beerCooler/i18n/fr.ts +25 -4
- package/src/tool/beerCooler/i18n/id.ts +197 -0
- package/src/tool/beerCooler/i18n/it.ts +197 -0
- package/src/tool/beerCooler/i18n/ja.ts +197 -0
- package/src/tool/beerCooler/i18n/ko.ts +197 -0
- package/src/tool/beerCooler/i18n/nl.ts +197 -0
- package/src/tool/beerCooler/i18n/pl.ts +197 -0
- package/src/tool/beerCooler/i18n/pt.ts +197 -0
- package/src/tool/beerCooler/i18n/ru.ts +197 -0
- package/src/tool/beerCooler/i18n/sv.ts +197 -0
- package/src/tool/beerCooler/i18n/tr.ts +197 -0
- package/src/tool/beerCooler/i18n/zh.ts +197 -0
- package/src/tool/beerCooler/index.ts +13 -1
- package/src/tool/carbonationCalculator/i18n/de.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/en.ts +22 -1
- package/src/tool/carbonationCalculator/i18n/es.ts +22 -1
- package/src/tool/carbonationCalculator/i18n/fr.ts +22 -1
- package/src/tool/carbonationCalculator/i18n/id.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/it.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ja.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ko.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/nl.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/pl.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/pt.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ru.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/sv.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/tr.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/zh.ts +200 -0
- package/src/tool/carbonationCalculator/index.ts +13 -1
- package/src/tool/cocktailBalancer/i18n/de.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/en.ts +23 -2
- package/src/tool/cocktailBalancer/i18n/es.ts +23 -2
- package/src/tool/cocktailBalancer/i18n/fr.ts +23 -2
- package/src/tool/cocktailBalancer/i18n/id.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/it.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ja.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ko.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/nl.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/pl.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/pt.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ru.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/sv.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/tr.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/zh.ts +222 -0
- package/src/tool/cocktailBalancer/index.ts +13 -1
- package/src/tool/partyKeg/i18n/de.ts +187 -0
- package/src/tool/partyKeg/i18n/en.ts +22 -1
- package/src/tool/partyKeg/i18n/es.ts +22 -1
- package/src/tool/partyKeg/i18n/fr.ts +23 -2
- package/src/tool/partyKeg/i18n/id.ts +187 -0
- package/src/tool/partyKeg/i18n/it.ts +187 -0
- package/src/tool/partyKeg/i18n/ja.ts +187 -0
- package/src/tool/partyKeg/i18n/ko.ts +187 -0
- package/src/tool/partyKeg/i18n/nl.ts +187 -0
- package/src/tool/partyKeg/i18n/pl.ts +187 -0
- package/src/tool/partyKeg/i18n/pt.ts +187 -0
- package/src/tool/partyKeg/i18n/ru.ts +187 -0
- package/src/tool/partyKeg/i18n/sv.ts +187 -0
- package/src/tool/partyKeg/i18n/tr.ts +187 -0
- package/src/tool/partyKeg/i18n/zh.ts +187 -0
- package/src/tool/partyKeg/index.ts +13 -1
- package/src/types.ts +1 -1
- 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 = 'Cocktail Balancer: Prawo Kwaśności';
|
|
6
|
+
const description = 'Oblicz doskonałą równowagę między słodkością a kwaśnością dla swoich koktajli. Opanuj złoty stosunek miksologii.';
|
|
7
|
+
|
|
8
|
+
const ui: CocktailBalancerUI = {
|
|
9
|
+
title: 'Cocktail Balancer',
|
|
10
|
+
presetsBtn: 'Przepisy',
|
|
11
|
+
saveBtn: 'Zapisz',
|
|
12
|
+
resetBtn: 'Resetuj',
|
|
13
|
+
emptyStateTitle: 'Twoja Ława Pracy jest Pusta',
|
|
14
|
+
emptyStateDescription: 'Dodaj składniki, aby przeanalizować równowagę koktajla w czasie rzeczywistym.',
|
|
15
|
+
addBtn: 'Dodaj Składnik',
|
|
16
|
+
addMoreBtn: 'Dodaj Kolejny Składnik',
|
|
17
|
+
flavorProfileTitle: 'Profil Smakowy',
|
|
18
|
+
volLabel: 'Objętość',
|
|
19
|
+
sugarLabel: 'Cukier',
|
|
20
|
+
colorLabel: 'Kolor',
|
|
21
|
+
sourLawTitle: 'Prawo Kwaśności',
|
|
22
|
+
acidDryLabel: 'Kwas (Suchość)',
|
|
23
|
+
balanceLabel: 'Równowaga',
|
|
24
|
+
sweetLabel: 'Słodki',
|
|
25
|
+
aiSuggestionTitle: 'Sugestia AI',
|
|
26
|
+
addIngredientTitle: 'Dodaj Składnik',
|
|
27
|
+
searchPlaceholder: 'Szukaj rumu, limetki, syropu...',
|
|
28
|
+
presetsTitle: 'Przepisy i Ustawienia Wstępne',
|
|
29
|
+
savedSectionTitle: 'Moje Zapisane',
|
|
30
|
+
classicsSectionTitle: 'Klasyki',
|
|
31
|
+
confirmDeleteTitle: 'Usunąć wszystko?',
|
|
32
|
+
confirmDeleteText: 'Spowoduje to usunięcie wszystkich składników z twojej ławy pracy. Ta akcja nie może być wycofana.',
|
|
33
|
+
cancelBtn: 'Anuluj',
|
|
34
|
+
deleteBtn: 'Usuń',
|
|
35
|
+
verdictSpiritSeco: 'Spirytus / Suche',
|
|
36
|
+
verdictSoloDulce: 'Tylko Słodkie (Old Fashioned)',
|
|
37
|
+
verdictMuyAcido: 'Zbyt Kwaśne / Bardzo Suche',
|
|
38
|
+
verdictAcido: 'Kwaśne / Tarte',
|
|
39
|
+
verdictEquilibrado: 'Zbilansowane (Kwaśne)',
|
|
40
|
+
verdictDulce: 'Słodkie / Komercyjne',
|
|
41
|
+
verdictEmpalagoso: 'Zbyt Słodkie',
|
|
42
|
+
fixAddBitters: 'Brakuje Goryczki',
|
|
43
|
+
fixAddSugar: 'Zbyt Kwaśne',
|
|
44
|
+
fixAddAcid: 'Zbyt Słodkie'
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faqTitle = 'Często Zadawane Pytania';
|
|
48
|
+
const bibliographyTitle = 'Bibliografia i Źródła';
|
|
49
|
+
|
|
50
|
+
const faq: CocktailBalancerLocaleContent['faq'] = [
|
|
51
|
+
{
|
|
52
|
+
question: "Czym jest 'Prawo Kwaśności'?",
|
|
53
|
+
answer: "Jest to złoty stosunek miksologii, który równoważy trzy elementy: silną bazę (spirytus), kwaśność (owoce cytrusowe) i słodycz (syropy). Klasyczny przepis zwykle stosuje stosunek 2:1:1 (Mocne:Kwaśne:Słodkie), chociaż zmienia się to w zależności od mocy i gęstości.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: "Jak rozcieńczenie wpływa na równowagę koktajlu?",
|
|
57
|
+
answer: "Lód nie tylko chłodzi; dodaje wody (rozcieńczenie), która otwiera aromaty spirytusu i łagodzi szczyty kwaśności i słodyczy. Zbilansowany koktajl w shakerze może stać się niezrównoważony, jeśli zbyt długo będzie stać z lodem w szklance.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: "Dlaczego moje domowe koktajle nie smakują jak te w barze?",
|
|
61
|
+
answer: "Zwykle jest to spowodowane brakiem równowagi między cukrem a pH owoców cytrusowych. Cytryny różnią się kwaśnością w zależności od sezonu. Nasz kalkulator pomaga ci dostosować dokładną ilość syropu w zależności od używanej objętości soku.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
question: "Czym są stopnie Brix i dlaczego są ważne w koktajlach?",
|
|
65
|
+
answer: "Brix to skala mierząca ilość rozpuszczonego cukru w cieczy. Prosty syrop (1:1) wynosi około 50 °Brix; bogaty syrop (2:1) przekracza 66 °Brix. Im wyższy Brix, tym więcej ciała i słodyczy wnosi na jednostkę objętości. Wiedza ta pozwala ci zamieniać syropy w przepisie bez zaburzenia równowagi.",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const howTo: CocktailBalancerLocaleContent['howTo'] = [
|
|
70
|
+
{
|
|
71
|
+
name: "Wybierz alkoholową bazę",
|
|
72
|
+
text: "Wybierz główny spirytus (Gin, Rum, Whiskey) z naszej bazy danych, aby znać jego ciało i wkład alkoholu.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Wpisz środek kwaśny",
|
|
76
|
+
text: "Dodaj objętość soku z cytryny, limetki lub grapefruita. Kalkulator przeanalizuje wpływ pH na mieszaninę.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Dostosuj słodki komponent",
|
|
80
|
+
text: "Wpisz rodzaj syropu (prosty, 2:1, agawa) i obserwuj, jak wskaźnik równowagi zmienia się w czasie rzeczywistym.",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "Doskonałe podanie",
|
|
84
|
+
text: "Przejrzyj ostateczny werdykt narzędzia: stosunek kwaśności, szacunkową ABV po rozcieńczeniu i sugestie korekcji. Podaj ze świeżym lodem i dostosuj cytrynę lub syrop do smaku.",
|
|
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: 'Inżynieria Molekularna i Równowaga Cieczy',
|
|
107
|
+
level: 2
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Witamy w cyfrowym laboratorium, gdzie intuicja spotyka się z matematyką. To narzędzie to nie zwykła książka receptur; to <strong>zaawansowany symulator fizyczno-chemiczny</strong> zaprojektowany do zdekonstruowania i analizy struktury molekularnej twoich koktajli w czasie rzeczywistym. Każda kropla cytrusów, każda miara spirytusu, każdy gram syropu oddziałuje zgodnie z niezmiennymi prawami chemii, które określają, czy twój napój będzie arcydziełem czy rozczarowującym niepowodzeniem.'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'stats',
|
|
115
|
+
items: [
|
|
116
|
+
{ label: 'Limeta', value: '~6% Kwas', icon: 'mdi:fruit-citrus' },
|
|
117
|
+
{ label: 'Cytryna', value: '~6% Kwas', icon: 'mdi:fruit-citrus' },
|
|
118
|
+
{ label: 'Grapefruit', value: '~1-2% Kwas', icon: 'mdi:fruit-citrus' }
|
|
119
|
+
],
|
|
120
|
+
columns: 3
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'card',
|
|
124
|
+
title: 'Nauka Kwaśności',
|
|
125
|
+
icon: 'mdi:fruit-citrus',
|
|
126
|
+
html: 'Kwaśność to nie tylko smak; to strukturalny kręgosłup każdego zbilansowanego koktajlu. Bez odpowiedniej kwaśności napój staje się płaski, jednowymiarowy i zapomniany. Nasz algorytm rozróżnia kwaśność titracyjną limy perskiej od cytryny Eureka, biorąc pod uwagę sezonowe wahania pH cytrusów, które mogą przesunąć twoją recepturę o cały punkt równowagi na podniebieniu.'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'card',
|
|
130
|
+
title: 'Kontrola Brix (Słodycz)',
|
|
131
|
+
icon: 'mdi:spoon-sugar',
|
|
132
|
+
html: 'Ciało i tekstura twojego koktajlu zależy całkowicie od rozpuszczonego cukru. Syrop prosty (1:1) zachowuje się bardzo inaczej niż syrop bogaty (2:1), miód lub syrop agawowy. Każdy słodzik ma inny stopień Brix i lepkość, które wpływają na sposób otulania napoju językiem. Nasz kalkulator oblicza dokładne gramy rozpuszczonego cukru, aby przewidzieć ostateczne uczucie w ustach i percepcję słodyczy.'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'card',
|
|
136
|
+
title: 'Termodynamika i Rozcieńczenie',
|
|
137
|
+
icon: 'mdi:water-percent',
|
|
138
|
+
html: 'Wstrząsany koktajl rozcieńcza się 25-40% w zależności od temperatury lodu, techniki wstrząsania i czasu trwania. Dodanie tej wody to nie wada; to niezbędny składnik, który otwiera zapachy i łagodzi krawędź alkoholu. Nasz kalkulator szacuje ostateczną ABV po rozcieńczeniu, dzięki czemu możesz projektować napoje z dokładnie zamierzoną mocą i równowagą smakową.'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Poza Podstawowym Stosunkiem',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Wielu barmańskich uczy się klasycznej reguły 2:1:1 (2 części spirytusu, 1 część kwaśnego, 1 część słodkiego) i traktuje ją jako uniwersalną prawdę. Jednak <strong>chemia jest znacznie bardziej zniuansowana</strong>. Cytryna z Sycylii zawiera inną kwaśność niż limeta z Meksyku. Triple sec taki jak Cointreau zachowuje się radykalnie inaczej niż Blue Curaçao. Ten sam przepis może smakować doskonale zbilansowany jeden tydzień i brutalne kwaśnie następny, po prostu ze względu na sezonowe wahania owoców.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Ten balancer przebija się przez te naiwne bariery. Wpisując swoje konkretne składniki, konsultujesz żywą bazę danych, która dynamicznie dostosowuje wektory kwaśności i słodyczy, aby zaoferować precyzyjną mapę sensoryczną twojej kreacji. Przestań zgadywać i zacznij projektować swoje koktajle z tą samą dokładnością naukową, którą barmańscy ze światowych établissements używają w każdej usłudze.'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'summary',
|
|
155
|
+
title: 'Dla kogo jest to narzędzie?',
|
|
156
|
+
items: [
|
|
157
|
+
'Profesjonalni barmańscy: Standaryzuj przepisy i twórz menu sygnature z powtarzalną spójnością.',
|
|
158
|
+
'Entuzjaści domowi: Przestań zgadywać i zacznij rozumieć, dlaczego twoje koktajle się udają lub nie.',
|
|
159
|
+
'Twórcy napojów: Szybko prototypuj nowe koncepcje smakowe przed drogimiami biegami produkcyjnymi.'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'diagnostic',
|
|
164
|
+
title: 'Złota Strefa',
|
|
165
|
+
icon: 'mdi:star',
|
|
166
|
+
variant: 'success',
|
|
167
|
+
badge: 'Cel',
|
|
168
|
+
html: 'To jest ostateczny cel: kontrolowane pH, w którym cukier neutralizuje agresję kwasu bez maskowania olejków eterycznych i związków aromatycznych spirytusu bazowego. Ta precyzyjna równowaga to miejsce, gdzie żyją nieśmiertelne klasyki — Daiquiri, Margarita, Sidecar — napoje, które przetrwały dziesięciolecia, ponieważ podporządkowują się podstawowym prawom chemii smaku.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: 'tip',
|
|
172
|
+
title: 'Porada Eksperta: Zawsze Używaj Świeżych Owoców Cytrusowych',
|
|
173
|
+
html: 'Zawsze wyciskaj cytrusy w ostatniej chwili. Sok z cytryny i limetki szybko się utlenia, tracąc żywą kwaśność w ciągu 20-30 minut od wyciskania. Koktajl wykonany ze świeżego soku zawsze będzie miał jasność i żywość na podniebieniu, której żaden butelkowany produkt nie może powielić. Używaj owoców w temperaturze pokojowej, aby zmaksymalizować wydajność soku.'
|
|
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: A Lei do Ácido';
|
|
6
|
+
const description = 'Calcule o equilíbrio perfeito entre doce e ácido para seus coquetéis. Domine a proporção áurea da mixologia.';
|
|
7
|
+
|
|
8
|
+
const ui: CocktailBalancerUI = {
|
|
9
|
+
title: 'Cocktail Balancer',
|
|
10
|
+
presetsBtn: 'Receitas',
|
|
11
|
+
saveBtn: 'Salvar',
|
|
12
|
+
resetBtn: 'Redefinir',
|
|
13
|
+
emptyStateTitle: 'Seu Banco de Trabalho está Vazio',
|
|
14
|
+
emptyStateDescription: 'Adicione ingredientes para analisar o equilíbrio do seu coquetel em tempo real.',
|
|
15
|
+
addBtn: 'Adicionar Ingrediente',
|
|
16
|
+
addMoreBtn: 'Adicionar Outro Ingrediente',
|
|
17
|
+
flavorProfileTitle: 'Perfil de Sabor',
|
|
18
|
+
volLabel: 'Volume',
|
|
19
|
+
sugarLabel: 'Açúcar',
|
|
20
|
+
colorLabel: 'Cor',
|
|
21
|
+
sourLawTitle: 'Lei do Ácido',
|
|
22
|
+
acidDryLabel: 'Ácido (Seco)',
|
|
23
|
+
balanceLabel: 'Equilíbrio',
|
|
24
|
+
sweetLabel: 'Doce',
|
|
25
|
+
aiSuggestionTitle: 'Sugestão de IA',
|
|
26
|
+
addIngredientTitle: 'Adicionar Ingrediente',
|
|
27
|
+
searchPlaceholder: 'Pesquisar rum, limão, xarope...',
|
|
28
|
+
presetsTitle: 'Receitas e Predefinições',
|
|
29
|
+
savedSectionTitle: 'Meus Salvos',
|
|
30
|
+
classicsSectionTitle: 'Clássicos',
|
|
31
|
+
confirmDeleteTitle: 'Apagar tudo?',
|
|
32
|
+
confirmDeleteText: 'Isso removerá todos os ingredientes do seu banco de trabalho. Esta ação não pode ser desfeita.',
|
|
33
|
+
cancelBtn: 'Cancelar',
|
|
34
|
+
deleteBtn: 'Apagar',
|
|
35
|
+
verdictSpiritSeco: 'Destilado / Seco',
|
|
36
|
+
verdictSoloDulce: 'Apenas Doce (Old Fashioned)',
|
|
37
|
+
verdictMuyAcido: 'Muito Ácido / Muito Seco',
|
|
38
|
+
verdictAcido: 'Ácido / Azedo',
|
|
39
|
+
verdictEquilibrado: 'Equilibrado (Ácido)',
|
|
40
|
+
verdictDulce: 'Doce / Comercial',
|
|
41
|
+
verdictEmpalagoso: 'Muito Doce',
|
|
42
|
+
fixAddBitters: 'Falta Amargura',
|
|
43
|
+
fixAddSugar: 'Muito Ácido',
|
|
44
|
+
fixAddAcid: 'Muito Doce'
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faqTitle = 'Perguntas Frequentes';
|
|
48
|
+
const bibliographyTitle = 'Bibliografia e Fontes';
|
|
49
|
+
|
|
50
|
+
const faq: CocktailBalancerLocaleContent['faq'] = [
|
|
51
|
+
{
|
|
52
|
+
question: "O que é a 'Lei do Ácido'?",
|
|
53
|
+
answer: "É a proporção áurea da mixologia que equilibra três elementos: a base forte (destilado), o ácido (cítricos) e o doce (xaropes). Uma receita clássica geralmente segue a proporção 2:1:1 (Forte:Ácido:Doce), embora isso varie dependendo da potência e densidade.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: "Como a diluição afeta o equilíbrio do coquetel?",
|
|
57
|
+
answer: "O gelo não apenas resfria; adiciona água (diluição) que abre os aromas do destilado e suaviza os picos de acidez e doçura. Um coquetel equilibrado no shaker pode se tornar desequilibrado se deixado muito tempo com gelo no copo.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: "Por que meus coquetéis caseiros não têm gosto como os de um bar?",
|
|
61
|
+
answer: "Geralmente é devido à falta de equilíbrio entre o açúcar e o pH dos cítricos. Os limões variam em acidez dependendo da estação. Nosso calculador ajuda você a ajustar a quantidade exata de xarope com base no volume de suco usado.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
question: "O que são graus Brix e por que são importantes em coquetéis?",
|
|
65
|
+
answer: "Brix é uma escala que mede a quantidade de açúcar dissolvido em um líquido. Um xarope simples (1:1) fica em torno de 50 °Brix; um xarope rico (2:1) ultrapassa 66 °Brix. Quanto maior o Brix, mais corpo e doçura ele contribui por unidade de volume. Saber disso permite que você troque xaropes em uma receita sem quebrar o equilíbrio.",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const howTo: CocktailBalancerLocaleContent['howTo'] = [
|
|
70
|
+
{
|
|
71
|
+
name: "Selecione a base alcoólica",
|
|
72
|
+
text: "Escolha o destilado principal (Gim, Rum, Whiskey) do nosso banco de dados para conhecer seu corpo e contribuição alcoólica.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Digite o agente ácido",
|
|
76
|
+
text: "Adicione o volume de suco de limão, lima ou toranja. A calculadora analisará o impacto do pH na mistura.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Ajuste o componente doce",
|
|
80
|
+
text: "Digite o tipo de xarope (simples, 2:1, agave) e observe o indicador de equilíbrio se mover em tempo real.",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "Serviço perfeito",
|
|
84
|
+
text: "Revise o veredito final da ferramenta: a proporção ácida, o ABV estimado após diluição e as sugestões de correção. Sirva com gelo fresco e ajuste os cítricos ou xarope ao gosto.",
|
|
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: 'Engenharia Molecular e Equilíbrio de Líquidos',
|
|
107
|
+
level: 2
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Bem-vindo ao laboratório digital onde a intuição encontra a matemática. Esta ferramenta não é um simples livro de receitas; é um <strong>simulador físico-químico avançado</strong> projetado para desconstruir e analisar a estrutura molecular dos seus coquetéis em tempo real. Cada gota de cítrico, cada medida de destilado, cada grama de xarope interage de acordo com leis químicas imutáveis que determinam se sua bebida será uma obra-prima ou um fracasso decepcionante.'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'stats',
|
|
115
|
+
items: [
|
|
116
|
+
{ label: 'Lima', value: '~6% Ácido', icon: 'mdi:fruit-citrus' },
|
|
117
|
+
{ label: 'Limão', value: '~6% Ácido', icon: 'mdi:fruit-citrus' },
|
|
118
|
+
{ label: 'Toranja', value: '~1-2% Ácido', icon: 'mdi:fruit-citrus' }
|
|
119
|
+
],
|
|
120
|
+
columns: 3
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'card',
|
|
124
|
+
title: 'A Ciência da Acidez',
|
|
125
|
+
icon: 'mdi:fruit-citrus',
|
|
126
|
+
html: 'A acidez não é apenas um sabor; é a espinha dorsal estrutural de qualquer coquetel equilibrado. Sem a acidez correta, uma bebida fica plana, unidimensional e esquecível. Nosso algoritmo distingue a acidez titulável de uma lima persa versus um limão Eureka, levando em conta variações sazonais do pH dos cítricos que podem deslocar sua receita por um ponto de equilíbrio inteiro no paladar.'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'card',
|
|
130
|
+
title: 'Controle de Brix (Doçura)',
|
|
131
|
+
icon: 'mdi:spoon-sugar',
|
|
132
|
+
html: 'O corpo e a textura do seu coquetel dependem inteiramente do açúcar dissolvido. Um xarope simples (1:1) se comporta muito diferente de um xarope rico (2:1), mel ou néctar de agave. Cada adoçante tem um grau Brix e viscosidade diferentes que afetam como a bebida reveste a língua. Nossa calculadora calcula os gramas exatos de açúcar dissolvido para prever a textura final da boca e a percepção de doçura.'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'card',
|
|
136
|
+
title: 'Termodinâmica e Diluição',
|
|
137
|
+
icon: 'mdi:water-percent',
|
|
138
|
+
html: 'Um coquetel agitado dilui 25-40% dependendo da temperatura do gelo, técnica de agitação e duração. Essa adição de água não é um defeito; é um ingrediente essencial que abre aromas e suaviza a borda do álcool. Nossa calculadora estima o ABV final após diluição, para que você possa projetar bebidas com a potência e equilíbrio de sabor exatamente pretendidos.'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Além da Proporção Básica',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Muitos bartenders aprendem a regra clássica 2:1:1 (2 partes destilado, 1 parte ácido, 1 parte doce) e a tratam como verdade universal. No entanto, <strong>a química é muito mais nuançada</strong>. Um limão da Sicília contém acidez diferente de uma lima do México. Um triple sec como Cointreau se comporta radicalmente diferente de um Curaçao azul. A mesma receita pode saborear perfeitamente equilibrada uma semana e brutalmente ácida a próxima, simplesmente por variação de fruta sazonal.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Este balanceador rompe essas barreiras simplistas. Ao inserir seus ingredientes específicos, você consulta um banco de dados vivo que ajusta dinamicamente vetores de acidez e doçura para oferecer um mapa sensorial preciso de sua criação. Pare de adivinhar e comece a projetar seus coquetéis com o mesmo rigor científico que os bartenders em estabelecimentos de classe mundial usam em cada serviço.'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'summary',
|
|
155
|
+
title: 'Para quem é esta ferramenta?',
|
|
156
|
+
items: [
|
|
157
|
+
'Bartenders Profissionais: Padronize receitas e crie menus assinados com consistência reproduzível.',
|
|
158
|
+
'Entusiastas Domésticos: Pare de adivinhar e comece a entender por que seus coquetéis têm sucesso ou falham.',
|
|
159
|
+
'Desenvolvedores de Bebidas: Prototipe rapidamente novos conceitos de sabor antes de execuções de produção caras.'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'diagnostic',
|
|
164
|
+
title: 'A Zona Dourada',
|
|
165
|
+
icon: 'mdi:star',
|
|
166
|
+
variant: 'success',
|
|
167
|
+
badge: 'Objetivo',
|
|
168
|
+
html: 'Este é o objetivo final: um pH controlado onde o açúcar neutraliza a agressão do ácido sem mascarar os óleos essenciais e compostos aromáticos do destilado base. Este equilíbrio preciso é onde vivem os clássicos imortais — a Daiquiri, a Margarita, o Sidecar — bebidas que sobreviveram a décadas porque obedecem às leis fundamentais da química do sabor.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: 'tip',
|
|
172
|
+
title: 'Dica de Especialista: Sempre Use Cítricos Frescos',
|
|
173
|
+
html: 'Sempre esprema os cítricos no último momento. O suco de limão e lima oxidam rapidamente, perdendo a acidez viva em 20-30 minutos após a extração. Um coquetel feito com suco verdadeiramente fresco sempre terá um brilho e vitalidade no paladar que nenhum produto engarrafado pode replicar. Use frutas em temperatura ambiente para maximizar o rendimento do suco.'
|
|
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
|
+
};
|