@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,205 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
+
4
+ const slug = 'alkoholabbau-rechner';
5
+ const title = 'Kater und BAK Rechner: Erholungsprognose';
6
+ const description = 'Berechne deinen Blutalkoholspiegel (BAK) und die Zeit bis 0,0 mit der Widmark-Formel. Plane deine Flüssigkeitszufuhr vor dem Schlafengehen und erkenne, wenn du vollständig genesen bist.';
7
+
8
+ const ui: AlcoholClearanceUI = {
9
+ biologicalSexLabel: 'Biologisches Geschlecht',
10
+ weightLabel: 'Körpergewicht',
11
+ kgUnit: 'kg',
12
+ addDrinkLabel: 'Getränk hinzufügen',
13
+ beerLabel: 'Bier',
14
+ wineLabel: 'Wein',
15
+ spiritLabel: 'Cocktail/Longdrink',
16
+ shotLabel: 'Shot',
17
+ accumulatedLabel: 'Konsumierte Getränke',
18
+ emptyListLabel: 'Deine Liste ist leer',
19
+ emptySubLabel: 'Wähle Getränke zur Berechnung aus.',
20
+ estimatedBacLabel: 'Geschätzter BAK',
21
+ bacUnit: 'BAK',
22
+ timeToZeroLabel: 'bis 0,0 erreicht',
23
+ waterAdviceLabel: 'Wasser (vor dem Schlafengehen)',
24
+ pillAdviceLabel: 'Nahrungsergänzung',
25
+ noneAdvice: 'Nicht erforderlich',
26
+ hydrationAdvice: 'Priorität: Flüssigkeitszufuhr',
27
+ electrolytesAdvice: 'Elektrolyte + Vit. B',
28
+ disclaimerText: 'Dieser Rechner ist eine theoretische Schätzung. Stoffwechsel und Nahrung beeinflussen das Ergebnis. Fahre nicht unter Alkoholeinfluss.',
29
+ drinkUnit: 'Getränk',
30
+ drinksUnit: 'Getränke'
31
+ };
32
+
33
+ const faqTitle = 'Häufig gestellte Fragen';
34
+ const bibliographyTitle = 'Literaturverzeichnis & Quellen';
35
+
36
+ const faq: AlcoholClearanceLocaleContent['faq'] = [
37
+ {
38
+ question: "Was ist eine Standardgetränkeeinheit und wie viel steckt in jedem Getränk?",
39
+ answer: "Eine Standardgetränkeeinheit enthält etwa 10 Gramm reinen Alkohol (Definition in UK/EU; 14 g in den USA). Ein normales Bier (330 ml bei 5 %) enthält etwa 1,3 Einheiten, ein Glas Wein (150 ml bei 12 %) etwa 1,4 Einheiten und ein Shot (40 ml bei 40 %) etwa 1,3 Einheiten. Das Kennen der Einheiten in dem, was du trinkst, ist wesentlich für die richtige Interpretation der Rechner-Ergebnisse.",
40
+ },
41
+ {
42
+ question: "Warum beeinflusst das biologische Geschlecht die BAK-Berechnung?",
43
+ answer: "Das biologische Geschlecht beeinflusst den Widmark-Faktor 'r', der den Gesamtkörperwasser­anteil als Bruchteil des Körpergewichts darstellt. Männer haben durchschnittlich r=0,68, da sie proportional mehr Körperwasser haben. Frauen haben durchschnittlich r=0,55 wegen eines höheren Körperfettanteils, der weniger Alkohol speichert. Das bedeutet, dass bei denselben Getränken und gleichem Körpergewicht Frauen einen höheren BAK erreichen.",
44
+ },
45
+ {
46
+ question: "Können Kaffee, Wasser oder Sport den Alkoholabbau beschleunigen?",
47
+ answer: "Nein. Die Leber baut Alkohol mit einer konstanten Rate von etwa 0,15 g/L pro Stunde ab (Kinetik nullter Ordnung). Kaffee kann Müdigkeit maskieren, Wasser hilft gegen Dehydration, und Sport verbessert das allgemeine Wohlbefinden – aber nichts davon reduziert deinen tatsächlichen BAK. Nur Zeit baut Alkohol aus dem Blut ab.",
48
+ },
49
+ {
50
+ question: "Hilft das Essen nach dem Trinken, den BAK zu senken?",
51
+ answer: "Das Essen nach dem Trinken reduziert nicht den Alkohol, der bereits in deinem Blutkreislauf ist. Wo Nahrung einen großen Unterschied macht, ist vor oder während des Trinkens: Nahrung im Magen – besonders Proteine und Fette – verlangsamt die gastrale Aufnahme und kann deinen Spitzen-BAK um bis zu 50 % senken. Sobald Alkohol aufgenommen wurde, kann nur der hepatische Stoffwechsel ihn abbauen.",
52
+ },
53
+ {
54
+ question: "Wie lange dauert es, bis man 0,0 BAK erreicht?",
55
+ answer: "Das hängt von deinem Ausgangs-BAK ab. Teile deinen geschätzten BAK (in g/L) durch 0,15, um die ungefähre Dauer in Stunden zu erhalten. Ein BAK von 1,5 g/L dauert etwa 10 Stunden. Die Leber stoppt nie: Sie baut Alkohol sogar ab, während du schläfst. Aber beachte – Alkohol kann noch in deinem Blut vorhanden sein, auch wenn du dich vollständig erholt fühlst.",
56
+ },
57
+ {
58
+ question: "Ist dieser Rechner 100 % zuverlässig für die Entscheidung, Auto zu fahren?",
59
+ answer: "Nein. Dieses Tool ist eine theoretische Schätzung basierend auf der Widmark-Formel. Faktoren wie Nahrungsaufnahme, Medikamente, Müdigkeit, genetische ADH-Enzym-Varianten und Stress können deinen tatsächlichen BAK um 20–30 % in beide Richtungen verschieben. Nutze diesen Rechner niemals, um zu entscheiden, ob du fahren darfst. Wenn du getrunken hast, fahre nicht – das ist die einzige Regel, bei der es keine Ausnahmen gibt.",
60
+ },
61
+ ];
62
+
63
+ const bibliography: AlcoholClearanceLocaleContent['bibliography'] = [
64
+ {
65
+ name: "Alkoholberechnungen und ihre Unsicherheit - PMC",
66
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC4361698/",
67
+ },
68
+ {
69
+ name: "Alkoholstoffwechsel: Wie der Körper Alkohol verarbeitet - NIH",
70
+ url: "https://www.niaaa.nih.gov/publications/alcohol-metabolism",
71
+ },
72
+ ];
73
+
74
+ const howTo: AlcoholClearanceLocaleContent['howTo'] = [
75
+ {
76
+ name: "Richte dein Profil ein",
77
+ text: "Wähle dein biologisches Geschlecht (beeinflusst den Körperwasseranteil) und dein aktuelles Gewicht.",
78
+ },
79
+ {
80
+ name: "Konsumierten Getränke hinzufügen",
81
+ text: "Klicke auf die Getränk-Icons, die du konsumiert hast. Sie werden sich in der Liste darunter ansammeln.",
82
+ },
83
+ {
84
+ name: "Sicherheitszeiten überprüfen",
85
+ text: "Achte auf den geschätzten BAK und, noch wichtiger, auf die Zeit, die die Leber braucht, um all den aufgenommenen Alkohol zu verarbeiten.",
86
+ },
87
+ ];
88
+
89
+ const seo: AlcoholClearanceLocaleContent['seo'] = [
90
+ {
91
+ type: 'title',
92
+ text: 'Alkoholstoffwechsel: Wissenschaft und Abbau',
93
+ level: 2
94
+ },
95
+ {
96
+ type: 'paragraph',
97
+ html: 'Das Verständnis dafür, wie unser Körper Ethanol verarbeitet, ist für die Sicherheit und zur Linderung von Kater wesentlich. Unser <strong>Alkoholabbau-Rechner</strong> nutzt die anerkannte <strong>Widmark-Formel</strong>, um dir einen klaren Überblick über deinen Stoffwechselzustand zu geben. Alkohol wird nicht durch Schwitzen, Trinken von Wasser oder Sport abgebaut – nur Zeit und der hepatische Stoffwechsel können deinen Blutalkoholspiegel senken.'
98
+ },
99
+ {
100
+ type: 'diagnostic',
101
+ title: 'Die Pharmakokenetik des BAK',
102
+ icon: 'mdi:gender-male-female',
103
+ variant: 'info',
104
+ badge: 'Biochemie',
105
+ html: 'Alkohol verteilt sich im Körperwasser. Faktoren wie Gewicht und der Widmark-Koeffizient r (0,68 bei Männern / 0,55 bei Frauen) bestimmen die anfängliche Verdünnung von Ethanol im Blutkreislauf. Darum können zwei Menschen mit gleichem Gewicht nach dem Konsum derselben Menge sehr unterschiedliche BAK-Werte haben.'
106
+ },
107
+ {
108
+ type: 'title',
109
+ text: 'Hepatische Oxidation und Enzyme',
110
+ level: 2
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Die Leber baut 95 % des Alkohols durch Alkoholdehydrogenase (ADH) ab. Dieser Prozess findet mit einer konstanten Rate statt (Kinetik nullter Ordnung), was bedeutet, dass er nicht durch Sport oder Kaffee beschleunigt werden kann. Die restlichen 5 % werden über Atem, Urin und Schweiß ausgeschieden – die Grundlage für Atemalkoholtests im Straßenverkehr.'
115
+ },
116
+ {
117
+ type: 'stats',
118
+ items: [
119
+ { label: 'Abbaurate', value: '0,15 g/L·h', icon: 'mdi:clock-fast' },
120
+ { label: 'Magen-Absorption', value: '20 % Ethanol', icon: 'mdi:stomach' },
121
+ { label: 'Empfohlen: Flüssigkeitszufuhr', value: '1:1 Wasser/Getränk', icon: 'mdi:water' }
122
+ ],
123
+ columns: 3
124
+ },
125
+ {
126
+ type: 'proscons',
127
+ title: 'Mythen vs. Realität',
128
+ items: [
129
+ { pro: 'Wasser und Elektrolyte vor dem Schlafengehen verringern die Katerintensität durch Gegensteuerung der Diurese.', con: '' },
130
+ { pro: '', con: 'Kalte Duschen: Sie beeinflussen den Blutalkoholspiegel gar nicht.' },
131
+ { pro: '', con: 'Kaffee: Maskiert Müdigkeit, stellt aber verlorene Reflexe oder kognitive Funktionen nicht wieder her.' }
132
+ ]
133
+ },
134
+ {
135
+ type: 'card',
136
+ title: 'Was verursacht einen Kater?',
137
+ icon: 'mdi:alert-decagram',
138
+ html: 'Wissenschaftlich als Veisalgia bekannt, wird ein Kater durch systemische Dehydration (Vasopressin-Suppression durch Ethanol), Ansammlung von Acetaldehyd (ein giftiger Metabolit) und eine zytokine entzündliche Immunreaktion verursacht. Der Glutamat-Rebound im Gehirn nach der Alkoholsuppression trägt auch zu Angst und Licht- und Lärmempfindlichkeit am nächsten Morgen bei.'
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Sicherheit geht vor: Kenne dein Limit',
143
+ html: 'Ein BAK von 0,05 % beeinträchtigt nachweislich das Urteilsvermögen, die Nachverfolgung und die Reaktionszeit. Die meisten Länder setzen die Grenzwerte für das Fahren zwischen 0,05 % und 0,08 %. Allerdings unterscheidet sich die individuelle Empfindlichkeit erheblich – Alter, Medikamente, Müdigkeit und genetische ADH-Enzym-Varianten beeinflussen alle, wie Alkohol dich persönlich beeinflusst. Im Zweifelsfall fahre nicht.'
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Die Rolle von Nahrung und Absorptionsgeschwindigkeit',
148
+ level: 2
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Das Essen vor oder während des Trinkens ändert die Alkoholaufnahme-Kinetik dramatisch. Nahrung im Magen – besonders Proteine und Fette – verlangsamt die Magenentleerung und reduziert die Spitzengeschwindigkeit, mit der Ethanol in den Blutkreislauf gelangt. Eine Person, die auf leeren Magen trinkt, kann einen Spitzen-BAK erreichen, der 50 % höher ist als die gleiche Person, die vor dem Konsum der gleichen Menge eine vollständige Mahlzeit zu sich genommen hat. Dies ist eine der stärksten Variablen, die die Widmark-Formel nicht vollständig erfasst, weshalb unser Rechner einen Disclaimer über theoretische Schätzung enthält.'
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Die Art des alkoholischen Getränks spielt auch eine Rolle, die über nur ABV und Volumen hinausgeht. Kohlensäurehaltige Mixer (Tonic Water, Schaumwein) beschleunigen die Magenentleerung und drücken Alkohol schneller in den Blutkreislauf. Getränke mit sehr hohem ABV (>25 %) können vorübergehend die Magenmotilität hemmen und die Aufnahme verlangsamen. Süße Getränke können die wahrgenommene Alkoholwirkung maskieren, was dazu führt, dass Menschen schneller trinken, als sie es merken. Diese Nuancen sind der Grund, warum der tatsächliche BAK von Modellvorhersagen um 20–30 % in beide Richtungen abweichen kann.'
157
+ }
158
+ ];
159
+
160
+ const schemas: AlcoholClearanceLocaleContent['schemas'] = [
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'FAQPage',
164
+ mainEntity: faq.map((item) => ({
165
+ '@type': 'Question',
166
+ name: item.question,
167
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
168
+ })),
169
+ } as WithContext<FAQPage>,
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'HowTo',
173
+ name: title,
174
+ description: description,
175
+ step: howTo.map((step, i) => ({
176
+ '@type': 'HowToStep',
177
+ position: i + 1,
178
+ name: step.name,
179
+ text: step.text,
180
+ })),
181
+ } as WithContext<HowTo>,
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'SoftwareApplication',
185
+ name: title,
186
+ description: description,
187
+ applicationCategory: 'HealthApplication',
188
+ operatingSystem: 'Web',
189
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
190
+ } as WithContext<SoftwareApplication>,
191
+ ];
192
+
193
+ export const content: AlcoholClearanceLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faqTitle,
200
+ faq,
201
+ bibliographyTitle,
202
+ bibliography,
203
+ howTo,
204
+ schemas,
205
+ };
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'alcohol-clearance-calculator';
@@ -158,6 +158,27 @@ const seo: AlcoholClearanceLocaleContent['seo'] = [
158
158
  ];
159
159
 
160
160
  const schemas: AlcoholClearanceLocaleContent['schemas'] = [
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'FAQPage',
164
+ mainEntity: faq.map((item) => ({
165
+ '@type': 'Question',
166
+ name: item.question,
167
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
168
+ })),
169
+ } as WithContext<FAQPage>,
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'HowTo',
173
+ name: title,
174
+ description: description,
175
+ step: howTo.map((step, i) => ({
176
+ '@type': 'HowToStep',
177
+ position: i + 1,
178
+ name: step.name,
179
+ text: step.text,
180
+ })),
181
+ } as WithContext<HowTo>,
161
182
  {
162
183
  '@context': 'https://schema.org',
163
184
  '@type': 'SoftwareApplication',
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'calculadora-alcohol-resaca';
@@ -167,6 +167,27 @@ const seo: AlcoholClearanceLocaleContent['seo'] = [
167
167
  ];
168
168
 
169
169
  const schemas: AlcoholClearanceLocaleContent['schemas'] = [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'FAQPage',
173
+ mainEntity: faq.map((item) => ({
174
+ '@type': 'Question',
175
+ name: item.question,
176
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
177
+ })),
178
+ } as WithContext<FAQPage>,
179
+ {
180
+ '@context': 'https://schema.org',
181
+ '@type': 'HowTo',
182
+ name: title,
183
+ description: description,
184
+ step: howTo.map((step, i) => ({
185
+ '@type': 'HowToStep',
186
+ position: i + 1,
187
+ name: step.name,
188
+ text: step.text,
189
+ })),
190
+ } as WithContext<HowTo>,
170
191
  {
171
192
  '@context': 'https://schema.org',
172
193
  '@type': 'SoftwareApplication',
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'calculateur-elimination-alcohol';
@@ -149,6 +149,27 @@ const seo: AlcoholClearanceLocaleContent['seo'] = [
149
149
  ];
150
150
 
151
151
  const schemas: AlcoholClearanceLocaleContent['schemas'] = [
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'FAQPage',
155
+ mainEntity: faq.map((item) => ({
156
+ '@type': 'Question',
157
+ name: item.question,
158
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
159
+ })),
160
+ } as WithContext<FAQPage>,
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'HowTo',
164
+ name: title,
165
+ description: description,
166
+ step: howTo.map((step, i) => ({
167
+ '@type': 'HowToStep',
168
+ position: i + 1,
169
+ name: step.name,
170
+ text: step.text,
171
+ })),
172
+ } as WithContext<HowTo>,
152
173
  {
153
174
  '@context': 'https://schema.org',
154
175
  '@type': 'SoftwareApplication',
@@ -0,0 +1,205 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
+
4
+ const slug = 'kalkulator-pembersihan-alkohol';
5
+ const title = 'Kalkulator Mabuk & BAC: Prediksi Pemulihan';
6
+ const description = 'Hitung Konten Alkohol dalam Darah (BAC) dan waktu untuk mencapai 0.0 menggunakan rumus Widmark. Rencanakan hidrasi sebelum tidur dan ketahui kapan Anda akan pulih sepenuhnya.';
7
+
8
+ const ui: AlcoholClearanceUI = {
9
+ biologicalSexLabel: 'Jenis Kelamin Biologis',
10
+ weightLabel: 'Berat Badan',
11
+ kgUnit: 'kg',
12
+ addDrinkLabel: 'Tambah Minuman',
13
+ beerLabel: 'Bir',
14
+ wineLabel: 'Wine',
15
+ spiritLabel: 'Minuman Campuran',
16
+ shotLabel: 'Shot',
17
+ accumulatedLabel: 'Minuman yang Dikonsumsi',
18
+ emptyListLabel: 'Daftar Anda kosong',
19
+ emptySubLabel: 'Pilih minuman untuk menghitung.',
20
+ estimatedBacLabel: 'BAC Estimasi',
21
+ bacUnit: 'BAC',
22
+ timeToZeroLabel: 'untuk mencapai 0.0',
23
+ waterAdviceLabel: 'Air (Sebelum tidur)',
24
+ pillAdviceLabel: 'Suplemen',
25
+ noneAdvice: 'Tidak diperlukan',
26
+ hydrationAdvice: 'Prioritas: Hidrasi',
27
+ electrolytesAdvice: 'Elektrolit + Vit. B',
28
+ disclaimerText: 'Kalkulator ini adalah estimasi teoritis. Metabolisme dan makanan dapat mempengaruhi hasil. Jangan minum dan berkendara.',
29
+ drinkUnit: 'minuman',
30
+ drinksUnit: 'minuman'
31
+ };
32
+
33
+ const faqTitle = 'Pertanyaan yang Sering Diajukan';
34
+ const bibliographyTitle = 'Bibliografi & Sumber';
35
+
36
+ const faq: AlcoholClearanceLocaleContent['faq'] = [
37
+ {
38
+ question: "Apa itu Unit Minuman Standar dan berapa banyak dalam setiap minuman?",
39
+ answer: "Satu Unit Minuman Standar mengandung sekitar 10 gram alkohol murni (definisi UK/EU; 14g di AS). Satu bir biasa (330ml pada 5%) mengandung ~1,3 unit, segelas wine (150ml pada 12%) ~1,4 unit, dan satu shot (40ml pada 40%) ~1,3 unit. Mengetahui unit dalam apa yang Anda minum sangat penting untuk menafsirkan hasil kalkulator dengan benar.",
40
+ },
41
+ {
42
+ question: "Mengapa jenis kelamin biologis mempengaruhi perhitungan BAC?",
43
+ answer: "Jenis kelamin biologis mempengaruhi faktor Widmark 'r', yang mewakili total air tubuh sebagai fraksi berat badan. Pria rata-rata memiliki r=0,68 karena mereka memiliki proporsi air tubuh yang lebih banyak. Wanita rata-rata r=0,55 karena persentase lemak tubuh yang lebih tinggi, yang menahan lebih sedikit alkohol. Ini berarti bahwa untuk minuman dan berat badan yang sama, wanita akan mencapai BAC yang lebih tinggi.",
44
+ },
45
+ {
46
+ question: "Bisakah kopi, air, atau olahraga mempercepat eliminasi alkohol?",
47
+ answer: "Tidak. Hati mengeliminasi alkohol dengan laju konstan sekitar 0,15 g/L per jam (kinetika orde nol). Kopi dapat menutupi kelelahan, air membantu dehidrasi, dan olahraga meningkatkan kesejahteraan umum — tetapi tidak satupun dari mereka mengurangi BAC aktual Anda. Hanya waktu yang mengeliminasi alkohol dari darah.",
48
+ },
49
+ {
50
+ question: "Apakah makan setelah minum membantu menurunkan BAC?",
51
+ answer: "Makan setelah minum tidak mengurangi alkohol yang sudah ada di aliran darah Anda. Tempat makanan membuat perbedaan besar adalah sebelum atau selama minum: makanan di perut — terutama protein dan lemak — memperlambat penyerapan gastrik dan dapat mengurangi BAC puncak Anda hingga 50%. Setelah alkohol diserap, hanya metabolisme hepatik yang dapat mengeliminasinya.",
52
+ },
53
+ {
54
+ question: "Berapa lama waktu untuk mencapai BAC 0,0?",
55
+ answer: "Tergantung pada BAC awal Anda. Bagi BAC estimasi Anda (dalam g/L) dengan 0,15 untuk mendapatkan jam perkiraan. Misalnya, BAC 1,5 g/L membutuhkan sekitar 10 jam. Hati tidak pernah berhenti: ia memproses alkohol bahkan saat Anda tidur. Tetapi perhatikan — alkohol masih bisa ada dalam darah Anda bahkan ketika Anda merasa sepenuhnya pulih.",
56
+ },
57
+ {
58
+ question: "Apakah kalkulator ini 100% andal untuk menentukan apakah harus berkendara?",
59
+ answer: "Tidak. Alat ini adalah estimasi teoritis berdasarkan rumus Widmark. Faktor-faktor seperti asupan makanan, obat-obatan, kelelahan, varian enzim ADH genetik, dan stres dapat menggeser BAC aktual Anda sebesar 20–30% di kedua arah. Jangan pernah gunakan kalkulator ini untuk menentukan apakah harus berkendara. Jika Anda telah minum, jangan berkendara — itulah satu-satunya aturan tanpa toleransi kesalahan.",
60
+ },
61
+ ];
62
+
63
+ const bibliography: AlcoholClearanceLocaleContent['bibliography'] = [
64
+ {
65
+ name: "Perhitungan alkohol dan ketidakpastiannya - PMC",
66
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC4361698/",
67
+ },
68
+ {
69
+ name: "Metabolisme Alkohol: Bagaimana tubuh memproses alkohol - NIH",
70
+ url: "https://www.niaaa.nih.gov/publications/alcohol-metabolism",
71
+ },
72
+ ];
73
+
74
+ const howTo: AlcoholClearanceLocaleContent['howTo'] = [
75
+ {
76
+ name: "Atur profil Anda",
77
+ text: "Pilih jenis kelamin biologis Anda (mempengaruhi persentase air tubuh) dan berat badan Anda saat ini.",
78
+ },
79
+ {
80
+ name: "Tambahkan minuman yang dikonsumsi",
81
+ text: "Klik pada ikon minuman yang telah Anda konsumsi. Mereka akan terkumpul di daftar di bawah.",
82
+ },
83
+ {
84
+ name: "Periksa waktu keamanan",
85
+ text: "Amati BAC yang diestimasi dan, yang paling penting, waktu yang diperlukan hati untuk memproses semua etanol yang dicerna.",
86
+ },
87
+ ];
88
+
89
+ const seo: AlcoholClearanceLocaleContent['seo'] = [
90
+ {
91
+ type: 'title',
92
+ text: 'Metabolisme Alkohol: Sains dan Eliminasi',
93
+ level: 2
94
+ },
95
+ {
96
+ type: 'paragraph',
97
+ html: 'Memahami bagaimana tubuh kita memproses etanol sangat penting untuk keselamatan dan untuk mengurangi mabuk. <strong>Kalkulator eliminasi alkohol</strong> kami menggunakan <strong>Rumus Widmark</strong> yang diakui untuk memberikan Anda peta jelas tentang keadaan metabolik Anda. Alkohol tidak dieliminasi dengan berkeringat, minum air, atau berolahraga — hanya waktu dan metabolisme hepatik yang dapat mengurangi konsentrasi alkohol dalam darah Anda.'
98
+ },
99
+ {
100
+ type: 'diagnostic',
101
+ title: 'Farmakokinetika BAC',
102
+ icon: 'mdi:gender-male-female',
103
+ variant: 'info',
104
+ badge: 'Biokimia',
105
+ html: 'Alkohol terdistribusi melalui air tubuh. Faktor-faktor seperti berat badan dan koefisien Widmark r (0,68 pada pria / 0,55 pada wanita) menentukan pengenceran etanol awal dalam aliran darah. Ini mengapa dua orang dengan berat badan sama dapat memiliki pembacaan BAC yang sangat berbeda setelah mengonsumsi minuman yang sama.'
106
+ },
107
+ {
108
+ type: 'title',
109
+ text: 'Oksidasi Hepatik dan Enzim',
110
+ level: 2
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Hati menguraikan 95% alkohol melalui Alkohol Dehidrogenase (ADH). Proses ini terjadi dengan laju konstan (kinetika orde nol), yang berarti tidak dapat dipercepat dengan olahraga atau kopi. 5% sisanya dieliminasi melalui napas, urin, dan keringat — yang merupakan dasar untuk pengujian napas dalam penegakan lalu lintas.'
115
+ },
116
+ {
117
+ type: 'stats',
118
+ items: [
119
+ { label: 'Laju Eliminasi', value: '0,15 g/L·j', icon: 'mdi:clock-fast' },
120
+ { label: 'Penyerapan Gastrik', value: '20% Etanol', icon: 'mdi:stomach' },
121
+ { label: 'Hidrasi yang Disarankan', value: '1:1 Air/Minuman', icon: 'mdi:water' }
122
+ ],
123
+ columns: 3
124
+ },
125
+ {
126
+ type: 'proscons',
127
+ title: 'Mitos vs Realitas',
128
+ items: [
129
+ { pro: 'Air dan elektrolit sebelum tidur mengurangi keparahan mabuk dengan mengatasi diuresis.', con: '' },
130
+ { pro: '', con: 'Mandi air dingin: Mereka tidak mempengaruhi konsentrasi alkohol dalam darah sama sekali.' },
131
+ { pro: '', con: 'Kopi: Menutupi kantuk tetapi tidak memulihkan refleks yang hilang atau fungsi kognitif.' }
132
+ ]
133
+ },
134
+ {
135
+ type: 'card',
136
+ title: 'Apa Penyebab Mabuk?',
137
+ icon: 'mdi:alert-decagram',
138
+ html: 'Dikenal secara ilmiah sebagai veisalgia, mabuk disebabkan oleh dehidrasi sistemik (penindasan vasopresin oleh etanol), akumulasi asetaldehid (metabolit beracun), dan respons kekebalan inflamasi sitokin. Rebound glutamat otak setelah penindasan alkohol juga berkontribusi pada kecemasan dan sensitivitas terhadap cahaya dan suara keesokan paginya.'
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: 'Keselamatan Pertama: Ketahui Batas Anda',
143
+ html: 'BAC 0,05% secara terukur mengganggu penilaian, pelacakan, dan waktu reaksi. Kebanyakan negara menetapkan batas berkendara hukum antara 0,05% dan 0,08%. Namun, sensitivitas individu bervariasi secara signifikan — usia, obat-obatan, kelelahan, dan varian enzim ADH genetik semuanya mengubah bagaimana alkohol mempengaruhi Anda secara pribadi. Jika ragu, jangan berkendara.'
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: 'Peran Makanan dan Laju Penyerapan',
148
+ level: 2
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: 'Makan sebelum atau selama minum secara dramatis mengubah kinetika penyerapan alkohol. Makanan di perut — terutama protein dan lemak — memperlambat pengosongan gastrik, mengurangi laju puncak di mana etanol memasuki aliran darah. Seseorang yang minum dengan perut kosong dapat mencapai BAC puncak 50% lebih tinggi daripada orang yang sama yang makan makanan lengkap sebelum minum jumlah yang sama. Ini adalah salah satu variabel paling kuat yang tidak dapat sepenuhnya ditangkap oleh rumus Widmark, itulah sebabnya kalkulator kami menyertakan penafian tentang estimasi teoritis.'
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: 'Jenis minuman beralkohol juga penting di luar hanya ABV dan volume. Mixer berkarbonasi (air tonik, wine bersoda) mempercepat pengosongan gastrik dan mendorong alkohol ke aliran darah lebih cepat. Minuman dengan ABV sangat tinggi (>25%) dapat sementara menghambat motilitas lambung, memperlambat penyerapan. Minuman manis dapat menutupi efek alkohol yang dirasakan, membuat orang minum lebih cepat dari yang mereka sadari. Nuansa ini mengapa BAC dunia nyata dapat menyimpang dari prediksi model sebesar 20-30% di kedua arah.'
157
+ }
158
+ ];
159
+
160
+ const schemas: AlcoholClearanceLocaleContent['schemas'] = [
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'FAQPage',
164
+ mainEntity: faq.map((item) => ({
165
+ '@type': 'Question',
166
+ name: item.question,
167
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
168
+ })),
169
+ } as WithContext<FAQPage>,
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'HowTo',
173
+ name: title,
174
+ description: description,
175
+ step: howTo.map((step, i) => ({
176
+ '@type': 'HowToStep',
177
+ position: i + 1,
178
+ name: step.name,
179
+ text: step.text,
180
+ })),
181
+ } as WithContext<HowTo>,
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'SoftwareApplication',
185
+ name: title,
186
+ description: description,
187
+ applicationCategory: 'HealthApplication',
188
+ operatingSystem: 'Web',
189
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
190
+ } as WithContext<SoftwareApplication>,
191
+ ];
192
+
193
+ export const content: AlcoholClearanceLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faqTitle,
200
+ faq,
201
+ bibliographyTitle,
202
+ bibliography,
203
+ howTo,
204
+ schemas,
205
+ };