@jjlmoya/utils-alcohol 1.24.0 → 1.26.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 (144) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +7 -1
  3. package/src/index.ts +1 -0
  4. package/src/pages/[locale]/[slug].astro +7 -3
  5. package/src/tests/locale_completeness.test.ts +4 -9
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/alcoholClearance/alcohol-clearance-calculator.css +23 -23
  8. package/src/tool/alcoholClearance/bibliography.ts +6 -0
  9. package/src/tool/alcoholClearance/entry.ts +1 -0
  10. package/src/tool/alcoholClearance/i18n/de.ts +1 -12
  11. package/src/tool/alcoholClearance/i18n/en.ts +1 -12
  12. package/src/tool/alcoholClearance/i18n/es.ts +1 -12
  13. package/src/tool/alcoholClearance/i18n/fr.ts +1 -12
  14. package/src/tool/alcoholClearance/i18n/id.ts +1 -12
  15. package/src/tool/alcoholClearance/i18n/it.ts +1 -12
  16. package/src/tool/alcoholClearance/i18n/ja.ts +1 -12
  17. package/src/tool/alcoholClearance/i18n/ko.ts +1 -12
  18. package/src/tool/alcoholClearance/i18n/nl.ts +1 -12
  19. package/src/tool/alcoholClearance/i18n/pl.ts +1 -12
  20. package/src/tool/alcoholClearance/i18n/pt.ts +1 -12
  21. package/src/tool/alcoholClearance/i18n/ru.ts +1 -12
  22. package/src/tool/alcoholClearance/i18n/sv.ts +1 -12
  23. package/src/tool/alcoholClearance/i18n/tr.ts +1 -12
  24. package/src/tool/alcoholClearance/i18n/zh.ts +1 -12
  25. package/src/tool/beerCooler/beer-cooler.css +22 -22
  26. package/src/tool/beerCooler/bibliography.ts +6 -0
  27. package/src/tool/beerCooler/entry.ts +1 -0
  28. package/src/tool/beerCooler/i18n/de.ts +1 -12
  29. package/src/tool/beerCooler/i18n/en.ts +1 -12
  30. package/src/tool/beerCooler/i18n/es.ts +1 -12
  31. package/src/tool/beerCooler/i18n/fr.ts +1 -12
  32. package/src/tool/beerCooler/i18n/id.ts +1 -12
  33. package/src/tool/beerCooler/i18n/it.ts +1 -12
  34. package/src/tool/beerCooler/i18n/ja.ts +1 -12
  35. package/src/tool/beerCooler/i18n/ko.ts +1 -12
  36. package/src/tool/beerCooler/i18n/nl.ts +1 -12
  37. package/src/tool/beerCooler/i18n/pl.ts +1 -12
  38. package/src/tool/beerCooler/i18n/pt.ts +1 -12
  39. package/src/tool/beerCooler/i18n/ru.ts +1 -12
  40. package/src/tool/beerCooler/i18n/sv.ts +1 -12
  41. package/src/tool/beerCooler/i18n/tr.ts +1 -12
  42. package/src/tool/beerCooler/i18n/zh.ts +1 -12
  43. package/src/tool/carbonationCalculator/beer-carbonation-calculator.css +19 -19
  44. package/src/tool/carbonationCalculator/bibliography.ts +6 -0
  45. package/src/tool/carbonationCalculator/entry.ts +1 -0
  46. package/src/tool/carbonationCalculator/i18n/de.ts +1 -12
  47. package/src/tool/carbonationCalculator/i18n/en.ts +1 -12
  48. package/src/tool/carbonationCalculator/i18n/es.ts +1 -12
  49. package/src/tool/carbonationCalculator/i18n/fr.ts +1 -12
  50. package/src/tool/carbonationCalculator/i18n/id.ts +1 -12
  51. package/src/tool/carbonationCalculator/i18n/it.ts +1 -12
  52. package/src/tool/carbonationCalculator/i18n/ja.ts +1 -12
  53. package/src/tool/carbonationCalculator/i18n/ko.ts +1 -12
  54. package/src/tool/carbonationCalculator/i18n/nl.ts +1 -12
  55. package/src/tool/carbonationCalculator/i18n/pl.ts +1 -12
  56. package/src/tool/carbonationCalculator/i18n/pt.ts +1 -12
  57. package/src/tool/carbonationCalculator/i18n/ru.ts +1 -12
  58. package/src/tool/carbonationCalculator/i18n/sv.ts +1 -12
  59. package/src/tool/carbonationCalculator/i18n/tr.ts +1 -12
  60. package/src/tool/carbonationCalculator/i18n/zh.ts +1 -12
  61. package/src/tool/cocktailBalancer/bibliography.ts +7 -0
  62. package/src/tool/cocktailBalancer/cocktail-balancer.css +59 -59
  63. package/src/tool/cocktailBalancer/entry.ts +1 -0
  64. package/src/tool/cocktailBalancer/i18n/de.ts +1 -16
  65. package/src/tool/cocktailBalancer/i18n/en.ts +1 -16
  66. package/src/tool/cocktailBalancer/i18n/es.ts +1 -16
  67. package/src/tool/cocktailBalancer/i18n/fr.ts +1 -16
  68. package/src/tool/cocktailBalancer/i18n/id.ts +1 -16
  69. package/src/tool/cocktailBalancer/i18n/it.ts +1 -16
  70. package/src/tool/cocktailBalancer/i18n/ja.ts +1 -16
  71. package/src/tool/cocktailBalancer/i18n/ko.ts +1 -16
  72. package/src/tool/cocktailBalancer/i18n/nl.ts +1 -16
  73. package/src/tool/cocktailBalancer/i18n/pl.ts +1 -16
  74. package/src/tool/cocktailBalancer/i18n/pt.ts +1 -16
  75. package/src/tool/cocktailBalancer/i18n/ru.ts +1 -16
  76. package/src/tool/cocktailBalancer/i18n/sv.ts +1 -16
  77. package/src/tool/cocktailBalancer/i18n/tr.ts +1 -16
  78. package/src/tool/cocktailBalancer/i18n/zh.ts +1 -16
  79. package/src/tool/fortifiedWine/bibliography.astro +14 -0
  80. package/src/tool/fortifiedWine/bibliography.ts +7 -0
  81. package/src/tool/fortifiedWine/component.astro +331 -0
  82. package/src/tool/fortifiedWine/entry.ts +62 -0
  83. package/src/tool/fortifiedWine/fortified-wine-builder.css +534 -0
  84. package/src/tool/fortifiedWine/i18n/de.ts +66 -0
  85. package/src/tool/fortifiedWine/i18n/en.ts +140 -0
  86. package/src/tool/fortifiedWine/i18n/es.ts +140 -0
  87. package/src/tool/fortifiedWine/i18n/fr.ts +91 -0
  88. package/src/tool/fortifiedWine/i18n/id.ts +91 -0
  89. package/src/tool/fortifiedWine/i18n/it.ts +91 -0
  90. package/src/tool/fortifiedWine/i18n/ja.ts +91 -0
  91. package/src/tool/fortifiedWine/i18n/ko.ts +91 -0
  92. package/src/tool/fortifiedWine/i18n/nl.ts +91 -0
  93. package/src/tool/fortifiedWine/i18n/pl.ts +91 -0
  94. package/src/tool/fortifiedWine/i18n/pt.ts +91 -0
  95. package/src/tool/fortifiedWine/i18n/ru.ts +91 -0
  96. package/src/tool/fortifiedWine/i18n/sv.ts +91 -0
  97. package/src/tool/fortifiedWine/i18n/tr.ts +91 -0
  98. package/src/tool/fortifiedWine/i18n/zh.ts +91 -0
  99. package/src/tool/fortifiedWine/index.ts +8 -0
  100. package/src/tool/fortifiedWine/logic.ts +46 -0
  101. package/src/tool/fortifiedWine/seo.astro +41 -0
  102. package/src/tool/jelloShotLab/bibliography.astro +14 -0
  103. package/src/tool/jelloShotLab/bibliography.ts +8 -0
  104. package/src/tool/jelloShotLab/component.astro +183 -0
  105. package/src/tool/jelloShotLab/entry.ts +62 -0
  106. package/src/tool/jelloShotLab/i18n/de.ts +156 -0
  107. package/src/tool/jelloShotLab/i18n/en.ts +156 -0
  108. package/src/tool/jelloShotLab/i18n/es.ts +156 -0
  109. package/src/tool/jelloShotLab/i18n/fr.ts +156 -0
  110. package/src/tool/jelloShotLab/i18n/id.ts +156 -0
  111. package/src/tool/jelloShotLab/i18n/it.ts +156 -0
  112. package/src/tool/jelloShotLab/i18n/ja.ts +156 -0
  113. package/src/tool/jelloShotLab/i18n/ko.ts +156 -0
  114. package/src/tool/jelloShotLab/i18n/nl.ts +156 -0
  115. package/src/tool/jelloShotLab/i18n/pl.ts +156 -0
  116. package/src/tool/jelloShotLab/i18n/pt.ts +156 -0
  117. package/src/tool/jelloShotLab/i18n/ru.ts +156 -0
  118. package/src/tool/jelloShotLab/i18n/sv.ts +156 -0
  119. package/src/tool/jelloShotLab/i18n/tr.ts +156 -0
  120. package/src/tool/jelloShotLab/i18n/zh.ts +156 -0
  121. package/src/tool/jelloShotLab/index.ts +11 -0
  122. package/src/tool/jelloShotLab/jello-shot-lab.css +229 -0
  123. package/src/tool/jelloShotLab/logic.ts +29 -0
  124. package/src/tool/jelloShotLab/seo.astro +53 -0
  125. package/src/tool/partyKeg/bibliography.ts +6 -0
  126. package/src/tool/partyKeg/entry.ts +1 -0
  127. package/src/tool/partyKeg/i18n/de.ts +1 -12
  128. package/src/tool/partyKeg/i18n/en.ts +1 -12
  129. package/src/tool/partyKeg/i18n/es.ts +1 -12
  130. package/src/tool/partyKeg/i18n/fr.ts +1 -12
  131. package/src/tool/partyKeg/i18n/id.ts +1 -12
  132. package/src/tool/partyKeg/i18n/it.ts +1 -12
  133. package/src/tool/partyKeg/i18n/ja.ts +1 -12
  134. package/src/tool/partyKeg/i18n/ko.ts +1 -12
  135. package/src/tool/partyKeg/i18n/nl.ts +1 -12
  136. package/src/tool/partyKeg/i18n/pl.ts +1 -12
  137. package/src/tool/partyKeg/i18n/pt.ts +1 -12
  138. package/src/tool/partyKeg/i18n/ru.ts +1 -12
  139. package/src/tool/partyKeg/i18n/sv.ts +1 -12
  140. package/src/tool/partyKeg/i18n/tr.ts +1 -12
  141. package/src/tool/partyKeg/i18n/zh.ts +1 -12
  142. package/src/tool/partyKeg/party-stock-calculator.css +23 -23
  143. package/src/tools.ts +5 -0
  144. package/src/types.ts +1 -1
@@ -0,0 +1,229 @@
1
+ :root {
2
+ /* Common Tokens */
3
+ --jsl-radius-xl: 32px;
4
+ --jsl-radius-lg: 20px;
5
+ --jsl-radius-md: 12px;
6
+ --jsl-transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
7
+ --jsl-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
8
+ }
9
+
10
+ .jsl-container {
11
+ display: flex;
12
+ justify-content: center;
13
+ align-items: center;
14
+ padding: 1.5rem;
15
+ min-height: 400px;
16
+ }
17
+
18
+ /* Light Theme */
19
+ .theme-light .jsl-container,
20
+ .jsl-container:not(.theme-dark) {
21
+ --jsl-card-bg: #fff;
22
+ --jsl-text-main: #0f172a;
23
+ --jsl-text-muted: #64748b;
24
+ --jsl-accent: #2563eb;
25
+ --jsl-accent-soft: #eff6ff;
26
+ --jsl-input-bg: #f8fafc;
27
+ --jsl-border: #e2e8f0;
28
+ }
29
+
30
+ /* Dark Theme */
31
+ .theme-dark .jsl-container {
32
+ --jsl-card-bg: #1e293b;
33
+ --jsl-text-main: #f8fafc;
34
+ --jsl-text-muted: #94a3b8;
35
+ --jsl-accent: #10b981;
36
+ --jsl-accent-soft: rgba(16, 185, 129, 0.1);
37
+ --jsl-input-bg: rgba(15, 23, 42, 0.4);
38
+ --jsl-border: rgba(255, 255, 255, 0.1);
39
+ --jsl-glass-blur: blur(16px);
40
+ }
41
+
42
+ .jsl-card {
43
+ width: 100%;
44
+ max-width: 900px;
45
+ background: var(--jsl-card-bg);
46
+ backdrop-filter: var(--jsl-glass-blur);
47
+ border: 1px solid var(--jsl-border);
48
+ border-radius: var(--jsl-radius-xl);
49
+ box-shadow: var(--jsl-shadow-xl);
50
+ overflow: hidden;
51
+ display: grid;
52
+ grid-template-columns: 1.2fr 0.8fr;
53
+ }
54
+
55
+ @media (max-width: 768px) {
56
+ .jsl-card {
57
+ grid-template-columns: 1fr;
58
+ }
59
+ }
60
+
61
+ .jsl-content-panel {
62
+ padding: 2.5rem;
63
+ display: flex;
64
+ flex-direction: column;
65
+ gap: 2rem;
66
+ }
67
+
68
+ .jsl-visual-panel {
69
+ padding: 2.5rem;
70
+ background: var(--jsl-accent-soft);
71
+ display: flex;
72
+ flex-direction: column;
73
+ align-items: center;
74
+ justify-content: center;
75
+ gap: 2rem;
76
+ border-left: 1px solid var(--jsl-border);
77
+ }
78
+
79
+ @media (max-width: 768px) {
80
+ .jsl-visual-panel {
81
+ border-left: none;
82
+ border-top: 1px solid var(--jsl-border);
83
+ }
84
+ }
85
+
86
+ .jsl-grid-inputs {
87
+ display: grid;
88
+ grid-template-columns: 1fr 1fr;
89
+ gap: 1.5rem;
90
+ }
91
+
92
+ @media (max-width: 480px) {
93
+ .jsl-grid-inputs {
94
+ grid-template-columns: 1fr;
95
+ }
96
+ }
97
+
98
+ .jsl-field {
99
+ display: flex;
100
+ flex-direction: column;
101
+ gap: 0.5rem;
102
+ }
103
+
104
+ .jsl-label {
105
+ font-size: 0.75rem;
106
+ font-weight: 700;
107
+ color: var(--jsl-text-muted);
108
+ text-transform: uppercase;
109
+ letter-spacing: 0.05em;
110
+ }
111
+
112
+ /* High-end Styled Input & Select */
113
+ .jsl-input, .jsl-select {
114
+ width: 100%;
115
+ padding: 0.875rem 1rem;
116
+ background: var(--jsl-input-bg);
117
+ border: 2px solid transparent;
118
+ border-radius: var(--jsl-radius-md);
119
+ color: var(--jsl-text-main);
120
+ font-size: 1rem;
121
+ font-weight: 600;
122
+ transition: var(--jsl-transition);
123
+ outline: none;
124
+ }
125
+
126
+ .jsl-select {
127
+ appearance: none;
128
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='Length 19 9l-7 7-7-7' /%3E%3C/svg%3E");
129
+ background-repeat: no-repeat;
130
+ background-position: right 1rem center;
131
+ background-size: 1.25rem;
132
+ padding-right: 3rem;
133
+ }
134
+
135
+ .jsl-input:focus, .jsl-select:focus {
136
+ border-color: var(--jsl-accent);
137
+ background: var(--jsl-card-bg);
138
+ }
139
+
140
+ /* Visualization */
141
+ .jsl-tank {
142
+ width: 140px;
143
+ height: 200px;
144
+ border: 3px solid var(--jsl-text-main);
145
+ border-top: none;
146
+ border-radius: 0 0 32px 32px;
147
+ position: relative;
148
+ overflow: hidden;
149
+ background: rgba(0, 0, 0, 0.05);
150
+ }
151
+
152
+ .jsl-liquid {
153
+ position: absolute;
154
+ bottom: 0;
155
+ left: 0;
156
+ width: 100%;
157
+ transition: height 1s cubic-bezier(0.34, 1.56, 0.64, 1);
158
+ }
159
+
160
+ .jsl-liquid-water {
161
+ background: #3b82f6;
162
+ opacity: 0.7;
163
+ }
164
+
165
+ .jsl-liquid-alcohol {
166
+ background: var(--jsl-accent);
167
+ }
168
+
169
+ .jsl-stats-compact {
170
+ display: flex;
171
+ flex-direction: column;
172
+ gap: 1rem;
173
+ width: 100%;
174
+ }
175
+
176
+ .jsl-stat-row {
177
+ display: flex;
178
+ justify-content: space-between;
179
+ align-items: center;
180
+ padding-bottom: 0.75rem;
181
+ border-bottom: 1px dashed var(--jsl-border);
182
+ }
183
+
184
+ .jsl-stat-l {
185
+ font-size: 0.875rem;
186
+ color: var(--jsl-text-muted);
187
+ font-weight: 500;
188
+ }
189
+
190
+ .jsl-stat-v {
191
+ font-size: 1.125rem;
192
+ font-weight: 800;
193
+ color: var(--jsl-accent);
194
+ }
195
+
196
+ /* Toggle repositioned inside card */
197
+ .jsl-card-header {
198
+ grid-column: 1 / -1;
199
+ padding: 1rem 2.5rem;
200
+ background: rgba(0,0,0,0.03);
201
+ display: flex;
202
+ justify-content: flex-end;
203
+ border-bottom: 1px solid var(--jsl-border);
204
+ }
205
+
206
+ .jsl-mini-toggle {
207
+ display: flex;
208
+ background: var(--jsl-input-bg);
209
+ padding: 0.25rem;
210
+ border-radius: 99px;
211
+ gap: 0.25rem;
212
+ }
213
+
214
+ .jsl-mini-btn {
215
+ padding: 0.4rem 0.8rem;
216
+ border-radius: 99px;
217
+ border: none;
218
+ background: transparent;
219
+ color: var(--jsl-text-muted);
220
+ cursor: pointer;
221
+ font-size: 0.75rem;
222
+ font-weight: 700;
223
+ transition: var(--jsl-transition);
224
+ }
225
+
226
+ .jsl-mini-btn.active {
227
+ background: var(--jsl-accent);
228
+ color: white;
229
+ }
@@ -0,0 +1,29 @@
1
+ export interface JelloOptions {
2
+ abv: number;
3
+ totalVolume: number;
4
+ intensity: 'light' | 'balanced' | 'limit';
5
+ }
6
+
7
+ export interface JelloResults {
8
+ boilingWaterVolume: number;
9
+ alcoholVolume: number;
10
+ packetsNeeded: number;
11
+ chillingTimeHours: number;
12
+ finalAbv: number;
13
+ }
14
+
15
+ export function calculateJelloShot(options: JelloOptions): JelloResults {
16
+ const { abv, totalVolume, intensity } = options;
17
+
18
+ let alcoholRatio = 0.45;
19
+ if (intensity === 'light') alcoholRatio = 0.30;
20
+ if (intensity === 'limit') alcoholRatio = Math.min(0.55, 35 / abv);
21
+
22
+ const alcoholVolume = totalVolume * alcoholRatio;
23
+ const boilingWaterVolume = totalVolume - alcoholVolume;
24
+ const packetsNeeded = totalVolume / 475;
25
+ const chillingTimeHours = 4 + (totalVolume > 1000 ? (totalVolume - 1000) / 1000 : 0);
26
+ const finalAbv = (alcoholVolume * abv) / totalVolume;
27
+
28
+ return { boilingWaterVolume, alcoholVolume, packetsNeeded, chillingTimeHours, finalAbv };
29
+ }
@@ -0,0 +1,53 @@
1
+ ---
2
+ import {
3
+ SEOTitle, SEOTable, SEOTip, SEOCard, SEOStats,
4
+ SEOGlossary, SEOProsCons, SEOSummary, SEODiagnostic, SEOArticle
5
+ } from '@jjlmoya/utils-shared';
6
+ import { jelloShotLab } from './index';
7
+ import type { KnownLocale } from '../../types';
8
+
9
+ interface Props {
10
+ locale?: KnownLocale;
11
+ }
12
+
13
+ const { locale = 'es' } = Astro.props;
14
+ const content = await jelloShotLab.i18n[locale]?.();
15
+ if (!content) return null;
16
+
17
+ const { seo } = content;
18
+ ---
19
+
20
+ <SEOArticle>
21
+ {seo.map((section: any) => {
22
+ switch (section.type) {
23
+ case 'summary':
24
+ return <SEOSummary title={section.title} items={section.items} />;
25
+ case 'title':
26
+ return <SEOTitle title={section.text} level={section.level || 2} />;
27
+ case 'paragraph':
28
+ return <p set:html={section.html} />;
29
+ case 'stats':
30
+ return <SEOStats stats={section.items} columns={section.columns} />;
31
+ case 'card':
32
+ return <SEOCard title={section.title} icon={section.icon}><Fragment set:html={section.html} /></SEOCard>;
33
+ case 'tip':
34
+ return <SEOTip title={section.title}><Fragment set:html={section.html} /></SEOTip>;
35
+ case 'table':
36
+ return (
37
+ <SEOTable headers={section.headers}>
38
+ {section.rows.map((row: string[]) => (
39
+ <tr>{row.map((cell: string) => <td set:html={cell} />)}</tr>
40
+ ))}
41
+ </SEOTable>
42
+ );
43
+ case 'proscons':
44
+ return <SEOProsCons title={section.title} items={section.items} />;
45
+ case 'diagnostic':
46
+ return <SEODiagnostic title={section.title} icon={section.icon} type={section.variant} badge={section.badge}><Fragment set:html={section.html} /></SEODiagnostic>;
47
+ case 'glossary':
48
+ return <SEOGlossary items={section.items} />;
49
+ default:
50
+ return null;
51
+ }
52
+ })}
53
+ </SEOArticle>
@@ -0,0 +1,6 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'Event Planning: Alcohol & Bar Calculations - Spruce Eats', url: 'https://www.thespruceeats.com/stock-your-bar-for-a-party-760394' },
5
+ { name: 'Thermodynamics of Ice Melting - Engineering Toolbox', url: 'https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html' },
6
+ ];
@@ -1,4 +1,5 @@
1
1
  import type { AlcoholToolEntry, ToolLocaleContent } from '../../types';
2
+ export { bibliography } from './bibliography';
2
3
 
3
4
  export interface PartyKegUI {
4
5
  [key: string]: string;
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Häufig gestellte Fragen';
30
- const bibliographyTitle = 'Bibliographie und Quellen';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Frequently Asked Questions';
30
- const bibliographyTitle = 'Bibliography & Sources';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Preguntas Frecuentes';
30
- const bibliographyTitle = 'Bibliografía y Fuentes';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -184,7 +174,6 @@ export const content: PartyKegLocaleContent = {
184
174
  seo,
185
175
  faqTitle,
186
176
  faq,
187
- bibliographyTitle,
188
177
  bibliography,
189
178
  howTo,
190
179
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Foire Aux Questions';
30
- const bibliographyTitle = 'Bibliographie & Sources';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Pertanyaan yang Sering Diajukan';
30
- const bibliographyTitle = 'Bibliografi & Sumber';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Domande Frequenti';
30
- const bibliographyTitle = 'Bibliografia e Fonti';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'よくある質問';
30
- const bibliographyTitle = '参考文献とソース';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = '자주 묻는 질문';
30
- const bibliographyTitle = '참고 문헌 및 소스';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Veelgestelde Vragen';
30
- const bibliographyTitle = 'Bibliografie en Bronnen';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
3
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
4
 
@@ -27,7 +28,6 @@ const ui: PartyKegUI = {
27
28
  };
28
29
 
29
30
  const faqTitle = 'Часто Задаваемые Вопросы';
30
- const bibliographyTitle = 'Bibliografia i Źródła';
31
31
 
32
32
  const faq: PartyKegLocaleContent['faq'] = [
33
33
  {
@@ -63,16 +63,6 @@ const howTo: PartyKegLocaleContent['howTo'] = [
63
63
  },
64
64
  ];
65
65
 
66
- const bibliography: PartyKegLocaleContent['bibliography'] = [
67
- {
68
- name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
- url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
- },
71
- {
72
- name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
- url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
- },
75
- ];
76
66
 
77
67
  const seo: PartyKegLocaleContent['seo'] = [
78
68
  {
@@ -180,7 +170,6 @@ export const content: PartyKegLocaleContent = {
180
170
  seo,
181
171
  faqTitle,
182
172
  faq,
183
- bibliographyTitle,
184
173
  bibliography,
185
174
  howTo,
186
175
  schemas,