@jjlmoya/utils-cooking 1.2.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 (130) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +24 -0
  3. package/src/category/i18n/es.ts +208 -0
  4. package/src/category/i18n/fr.ts +24 -0
  5. package/src/category/index.ts +37 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +11 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +32 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/i18n-titles.test.ts +66 -0
  18. package/src/tests/locale_completeness.test.ts +42 -0
  19. package/src/tests/mocks/astro_mock.js +2 -0
  20. package/src/tests/no_h1_in_components.test.ts +48 -0
  21. package/src/tests/seo_length.test.ts +22 -0
  22. package/src/tests/tool_validation.test.ts +17 -0
  23. package/src/tool/american-kitchen-converter/AmericanKitchenEngine.ts +259 -0
  24. package/src/tool/american-kitchen-converter/bibliography.astro +6 -0
  25. package/src/tool/american-kitchen-converter/component.astro +838 -0
  26. package/src/tool/american-kitchen-converter/i18n/en.ts +282 -0
  27. package/src/tool/american-kitchen-converter/i18n/es.ts +281 -0
  28. package/src/tool/american-kitchen-converter/i18n/fr.ts +292 -0
  29. package/src/tool/american-kitchen-converter/index.ts +24 -0
  30. package/src/tool/american-kitchen-converter/seo.astro +8 -0
  31. package/src/tool/banana-ripeness/BananaCare.css +587 -0
  32. package/src/tool/banana-ripeness/BananaEngine.ts +79 -0
  33. package/src/tool/banana-ripeness/bibliography.astro +6 -0
  34. package/src/tool/banana-ripeness/component.astro +285 -0
  35. package/src/tool/banana-ripeness/i18n/en.ts +177 -0
  36. package/src/tool/banana-ripeness/i18n/es.ts +177 -0
  37. package/src/tool/banana-ripeness/i18n/fr.ts +177 -0
  38. package/src/tool/banana-ripeness/index.ts +24 -0
  39. package/src/tool/banana-ripeness/seo.astro +8 -0
  40. package/src/tool/brine/bibliography.astro +6 -0
  41. package/src/tool/brine/component.astro +884 -0
  42. package/src/tool/brine/i18n/en.ts +221 -0
  43. package/src/tool/brine/i18n/es.ts +222 -0
  44. package/src/tool/brine/i18n/fr.ts +221 -0
  45. package/src/tool/brine/index.ts +26 -0
  46. package/src/tool/brine/seo.astro +8 -0
  47. package/src/tool/cookware-guide/CookwareGuide.css +487 -0
  48. package/src/tool/cookware-guide/bibliography.astro +6 -0
  49. package/src/tool/cookware-guide/component.astro +164 -0
  50. package/src/tool/cookware-guide/i18n/en.ts +163 -0
  51. package/src/tool/cookware-guide/i18n/es.ts +163 -0
  52. package/src/tool/cookware-guide/i18n/fr.ts +164 -0
  53. package/src/tool/cookware-guide/index.ts +24 -0
  54. package/src/tool/cookware-guide/init.ts +174 -0
  55. package/src/tool/cookware-guide/seo.astro +8 -0
  56. package/src/tool/egg-timer/EggTimer.css +503 -0
  57. package/src/tool/egg-timer/bibliography.astro +14 -0
  58. package/src/tool/egg-timer/component.astro +281 -0
  59. package/src/tool/egg-timer/i18n/en.ts +230 -0
  60. package/src/tool/egg-timer/i18n/es.ts +222 -0
  61. package/src/tool/egg-timer/i18n/fr.ts +121 -0
  62. package/src/tool/egg-timer/index.ts +27 -0
  63. package/src/tool/egg-timer/seo.astro +39 -0
  64. package/src/tool/ingredient-rescaler/IngredientRescaler.css +308 -0
  65. package/src/tool/ingredient-rescaler/bibliography.astro +6 -0
  66. package/src/tool/ingredient-rescaler/component.astro +107 -0
  67. package/src/tool/ingredient-rescaler/i18n/en.ts +265 -0
  68. package/src/tool/ingredient-rescaler/i18n/es.ts +268 -0
  69. package/src/tool/ingredient-rescaler/i18n/fr.ts +207 -0
  70. package/src/tool/ingredient-rescaler/index.ts +24 -0
  71. package/src/tool/ingredient-rescaler/init.ts +200 -0
  72. package/src/tool/ingredient-rescaler/seo.astro +8 -0
  73. package/src/tool/kitchen-timer/KitchenTimer.css +325 -0
  74. package/src/tool/kitchen-timer/bibliography.astro +6 -0
  75. package/src/tool/kitchen-timer/component.astro +341 -0
  76. package/src/tool/kitchen-timer/i18n/en.ts +154 -0
  77. package/src/tool/kitchen-timer/i18n/es.ts +154 -0
  78. package/src/tool/kitchen-timer/i18n/fr.ts +154 -0
  79. package/src/tool/kitchen-timer/index.ts +26 -0
  80. package/src/tool/kitchen-timer/init.ts +55 -0
  81. package/src/tool/kitchen-timer/lib/AudioHelper.ts +27 -0
  82. package/src/tool/kitchen-timer/lib/DockManager.ts +97 -0
  83. package/src/tool/kitchen-timer/lib/KitchenTimer.ts +264 -0
  84. package/src/tool/kitchen-timer/seo.astro +8 -0
  85. package/src/tool/meringue-peak/MeringueCalculator.css +298 -0
  86. package/src/tool/meringue-peak/bibliography.astro +6 -0
  87. package/src/tool/meringue-peak/component.astro +169 -0
  88. package/src/tool/meringue-peak/i18n/en.ts +257 -0
  89. package/src/tool/meringue-peak/i18n/es.ts +234 -0
  90. package/src/tool/meringue-peak/i18n/fr.ts +234 -0
  91. package/src/tool/meringue-peak/index.ts +24 -0
  92. package/src/tool/meringue-peak/seo.astro +8 -0
  93. package/src/tool/mold-scaler/MoldScaler.css +406 -0
  94. package/src/tool/mold-scaler/bibliography.astro +6 -0
  95. package/src/tool/mold-scaler/component.astro +126 -0
  96. package/src/tool/mold-scaler/i18n/en.ts +268 -0
  97. package/src/tool/mold-scaler/i18n/es.ts +269 -0
  98. package/src/tool/mold-scaler/i18n/fr.ts +276 -0
  99. package/src/tool/mold-scaler/index.ts +26 -0
  100. package/src/tool/mold-scaler/init.ts +264 -0
  101. package/src/tool/mold-scaler/seo.astro +8 -0
  102. package/src/tool/pizza/Pizza.css +569 -0
  103. package/src/tool/pizza/bibliography.astro +6 -0
  104. package/src/tool/pizza/calculator.ts +143 -0
  105. package/src/tool/pizza/component.astro +237 -0
  106. package/src/tool/pizza/i18n/en.ts +288 -0
  107. package/src/tool/pizza/i18n/es.ts +289 -0
  108. package/src/tool/pizza/i18n/fr.ts +288 -0
  109. package/src/tool/pizza/index.ts +27 -0
  110. package/src/tool/pizza/seo.astro +8 -0
  111. package/src/tool/roux-guide/RouxGuide.css +483 -0
  112. package/src/tool/roux-guide/bibliography.astro +6 -0
  113. package/src/tool/roux-guide/component.astro +194 -0
  114. package/src/tool/roux-guide/i18n/en.ts +233 -0
  115. package/src/tool/roux-guide/i18n/es.ts +225 -0
  116. package/src/tool/roux-guide/i18n/fr.ts +225 -0
  117. package/src/tool/roux-guide/index.ts +24 -0
  118. package/src/tool/roux-guide/init.ts +187 -0
  119. package/src/tool/roux-guide/seo.astro +8 -0
  120. package/src/tool/sourdough-calculator/SourdoughCalculator.css +369 -0
  121. package/src/tool/sourdough-calculator/bibliography.astro +6 -0
  122. package/src/tool/sourdough-calculator/component.astro +198 -0
  123. package/src/tool/sourdough-calculator/i18n/en.ts +242 -0
  124. package/src/tool/sourdough-calculator/i18n/es.ts +243 -0
  125. package/src/tool/sourdough-calculator/i18n/fr.ts +248 -0
  126. package/src/tool/sourdough-calculator/index.ts +24 -0
  127. package/src/tool/sourdough-calculator/init.ts +131 -0
  128. package/src/tool/sourdough-calculator/seo.astro +8 -0
  129. package/src/tools.ts +29 -0
  130. package/src/types.ts +73 -0
@@ -0,0 +1,198 @@
1
+ ---
2
+ import { Icon } from 'astro-icon/components';
3
+ import './SourdoughCalculator.css';
4
+
5
+ interface Props {
6
+ ui: Record<string, string>;
7
+ }
8
+
9
+ const { ui } = Astro.props;
10
+ ---
11
+
12
+ <div class="sourdough-calculator">
13
+ <div class="sc-header"></div>
14
+
15
+ <div class="sc-grid">
16
+ <div class="sc-section">
17
+ <div class="sc-control-group">
18
+ <label for="total-amount" class="sc-label">
19
+ <Icon name="mdi:scale-balance" />
20
+ {ui.totalAmount}
21
+ </label>
22
+ <div style="position: relative; display: flex; align-items: center;">
23
+ <input
24
+ type="number"
25
+ id="total-amount"
26
+ value="300"
27
+ min="1"
28
+ class="sc-input"
29
+ style="padding-right: 2rem;"
30
+ />
31
+ <span style="position: absolute; right: 1rem; color: var(--sc-text-disabled); font-weight: 600;">
32
+ g
33
+ </span>
34
+ </div>
35
+ <p style="margin-top: 0.5rem; font-size: 0.75rem; color: var(--sc-text-muted); font-weight: 500;">
36
+ {ui.activeCulture}
37
+ </p>
38
+ </div>
39
+
40
+ <div class="sc-control-group">
41
+ <label class="sc-label">
42
+ <Icon name="mdi:tune" />
43
+ {ui.refreshRatio}
44
+ </label>
45
+
46
+ <div class="sc-ratio-buttons">
47
+ <button class="ratio-btn ratio-active" data-ratio="1:1:1">
48
+ <span class="sc-ratio-label">{ui.maintain}</span>
49
+ <span class="sc-ratio-value">1:1:1</span>
50
+ </button>
51
+
52
+ <button class="ratio-btn ratio-inactive" data-ratio="1:2:2">
53
+ <span class="sc-ratio-label">{ui.activate}</span>
54
+ <span class="sc-ratio-value">1:2:2</span>
55
+ </button>
56
+
57
+ <button class="ratio-btn ratio-inactive" data-ratio="1:3:3">
58
+ <span class="sc-ratio-label">{ui.retard}</span>
59
+ <span class="sc-ratio-value">1:3:3</span>
60
+ </button>
61
+
62
+ <button class="ratio-btn ratio-inactive" data-ratio="1:4:4">
63
+ <span class="sc-ratio-label">{ui.strong}</span>
64
+ <span class="sc-ratio-value">1:4:4</span>
65
+ </button>
66
+
67
+ <button class="ratio-btn ratio-inactive" data-ratio="1:5:5">
68
+ <span class="sc-ratio-label">{ui.sweetSpot}</span>
69
+ <span class="sc-ratio-value">1:5:5</span>
70
+ </button>
71
+
72
+ <button class="ratio-btn ratio-inactive" id="custom-ratio-btn">
73
+ <span class="sc-ratio-label">{ui.custom}</span>
74
+ <Icon name="mdi:cog" style="font-size: 1.25rem;" />
75
+ </button>
76
+ </div>
77
+
78
+ <div id="custom-ratio-inputs" class="sc-custom-inputs">
79
+ <div class="sc-custom-input-group">
80
+ <label class="sc-custom-label">{ui.mm}</label>
81
+ <input
82
+ type="number"
83
+ id="custom-s"
84
+ value="1"
85
+ min="1"
86
+ class="custom-input"
87
+ />
88
+ </div>
89
+
90
+ <div class="sc-custom-input-group">
91
+ <label class="sc-custom-label">{ui.flour}</label>
92
+ <input
93
+ type="number"
94
+ id="custom-f"
95
+ value="1"
96
+ min="1"
97
+ class="custom-input"
98
+ />
99
+ </div>
100
+
101
+ <div class="sc-custom-input-group">
102
+ <label class="sc-custom-label">{ui.water}</label>
103
+ <input
104
+ type="number"
105
+ id="custom-w"
106
+ value="1"
107
+ min="1"
108
+ class="custom-input"
109
+ />
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+
115
+ <div class="sc-section">
116
+ <div class="sc-results">
117
+ <div class="sc-results-header">
118
+ <h3 class="sc-results-title">{ui.todayFormula}</h3>
119
+ <span class="sc-hydration-badge">{ui.hydration}</span>
120
+ </div>
121
+
122
+ <div class="sc-result-rows">
123
+ <div class="sc-result-row">
124
+ <div class="sc-result-content">
125
+ <div class="sc-result-icon starter">
126
+ <Icon name="mdi:bacteria" />
127
+ </div>
128
+ <div>
129
+ <div class="sc-result-name">{ui.sourdough}</div>
130
+ <div class="sc-result-desc">{ui.activeCulture}</div>
131
+ </div>
132
+ </div>
133
+ <div class="sc-result-value">
134
+ <span class="sc-result-amount"><span id="val-starter">100</span></span>
135
+ <span class="sc-result-unit">g</span>
136
+ </div>
137
+ </div>
138
+
139
+ <div class="sc-result-row">
140
+ <div class="sc-result-content">
141
+ <div class="sc-result-icon flour">
142
+ <Icon name="mdi:barley" />
143
+ </div>
144
+ <div>
145
+ <div class="sc-result-name">{ui.flour}</div>
146
+ <div class="sc-result-desc">{ui.flourType}</div>
147
+ </div>
148
+ </div>
149
+ <div class="sc-result-value">
150
+ <span class="sc-result-amount"><span id="val-flour">100</span></span>
151
+ <span class="sc-result-unit">g</span>
152
+ </div>
153
+ </div>
154
+
155
+ <div class="sc-result-row">
156
+ <div class="sc-result-content">
157
+ <div class="sc-result-icon water">
158
+ <Icon name="mdi:water-outline" />
159
+ </div>
160
+ <div>
161
+ <div class="sc-result-name">{ui.water}</div>
162
+ <div class="sc-result-desc">{ui.chlorineFree}</div>
163
+ </div>
164
+ </div>
165
+ <div class="sc-result-value">
166
+ <span class="sc-result-amount"><span id="val-water">100</span></span>
167
+ <span class="sc-result-unit">g</span>
168
+ </div>
169
+ </div>
170
+ </div>
171
+
172
+ <div class="sc-total">
173
+ <span class="sc-total-label">{ui.totalDough}:</span>
174
+ <span class="sc-total-value" id="val-total">300 g</span>
175
+ </div>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+
181
+ <script>
182
+ import { initSourdoughCalculator } from './init';
183
+ window.__initSourdoughCalculator = initSourdoughCalculator;
184
+ </script>
185
+
186
+ <script define:vars={{ ui }}>
187
+ const init = () => {
188
+ if (window.__initSourdoughCalculator) {
189
+ window.__initSourdoughCalculator(ui);
190
+ }
191
+ };
192
+
193
+ if (document.readyState === 'loading') {
194
+ document.addEventListener('DOMContentLoaded', init);
195
+ } else {
196
+ init();
197
+ }
198
+ </script>
@@ -0,0 +1,242 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ export const content: ToolLocaleContent = {
4
+ slug: 'sourdough-starter-feeding-calculator-ratio-proportions',
5
+ title: 'Sourdough Starter Feeding Calculator',
6
+ description: 'Automatically calculate exact proportions of starter, flour, and water for your sourdough maintenance and feeding. Preset or custom ratios available.',
7
+ faqTitle: 'Frequently Asked Questions',
8
+ faq: [
9
+ {
10
+ question: 'What is a 1:1:1 ratio?',
11
+ answer: 'It\'s the most common ratio for maintaining sourdough starter at room temperature. It means 1 part starter, 1 part flour, and 1 part water. Best for daily feedings.',
12
+ },
13
+ {
14
+ question: 'When should I use a 1:2:2 ratio?',
15
+ answer: 'A 1:2:2 ratio is often used to reactive or wake up a starter. It provides a more predictable fermentation curve, ideal for reinvigorating a culture after refrigeration.',
16
+ },
17
+ {
18
+ question: 'Why use the 1:5:5 "sweet spot"?',
19
+ answer: 'The 1:5:5 ratio is a favorite for many bakers. It allows for an 8-12 hour fermentation window at room temperature before the starter peaks, balancing convenience with time control.',
20
+ },
21
+ {
22
+ question: 'Can I use custom ratios?',
23
+ answer: 'Absolutely. If you have a specific feeding protocol, you can enter your own ratios. Some bakers use 1:10:10 for very slow fermentation, others use 1:1:0.8 for a stiffer starter.',
24
+ },
25
+ {
26
+ question: 'Does the calculator round the grams?',
27
+ answer: 'Yes. It rounds to the nearest whole number for practicality. For maximum precision, use a digital scale; however, small rounding differences won\'t significantly impact fermentation.',
28
+ },
29
+ ],
30
+ bibliographyTitle: 'Bibliography & Resources',
31
+ bibliography: [
32
+ {
33
+ name: 'Tartine Bread - Chad Robertson',
34
+ url: 'https://www.penguinrandomhouse.com/books/310016/tartine-bread-by-chad-robertson/',
35
+ },
36
+ {
37
+ name: 'The Flavor Bible - Scaling and Ratios',
38
+ url: 'https://www.flavorprints.com/',
39
+ },
40
+ {
41
+ name: 'Full Proof Baking - Guides on Sourdough',
42
+ url: 'https://www.fullproofbaking.com/',
43
+ },
44
+ ],
45
+ howTo: [
46
+ {
47
+ name: 'Enter total amount needed',
48
+ text: 'Define the total weight of sourdough starter you need for your recipe (e.g., 300g for a typical loaf).',
49
+ },
50
+ {
51
+ name: 'Select feeding ratio',
52
+ text: 'Choose from preset ratios (Maintain, Activate, Retard, Strong, Sweet Spot) or create your own custom ratio.',
53
+ },
54
+ {
55
+ name: 'Get your exact measurements',
56
+ text: 'The calculator shows you exactly how much starter, flour, and water to mix. Combine and ferment according to your schedule.',
57
+ },
58
+ ],
59
+ seo: [
60
+ {
61
+ type: 'title',
62
+ text: 'Master Guide for Sourdough Starter Maintenance and Feeding',
63
+ level: 2,
64
+ },
65
+ {
66
+ type: 'paragraph',
67
+ html: '<strong>Sourdough starter</strong> isn\'t just an ingredient; it\'s a living ecosystem of wild yeasts and lactic acid bacteria (LAB). Exceptional bread starts with the health of this culture, managed through precise feeding ratios and temperature control.',
68
+ },
69
+ {
70
+ type: 'stats',
71
+ columns: 4,
72
+ items: [
73
+ {
74
+ value: '24-26°C',
75
+ label: 'Optimum Activity Temp',
76
+ icon: 'mdi:thermometer',
77
+ },
78
+ {
79
+ value: '3.8 - 4.2',
80
+ label: 'Ideal Culture pH',
81
+ icon: 'mdi:test-tube',
82
+ },
83
+ {
84
+ value: '100%',
85
+ label: 'Standard Hydration',
86
+ icon: 'mdi:water-percent',
87
+ },
88
+ {
89
+ value: 'x2 - x3',
90
+ label: 'Growth at Peak',
91
+ icon: 'mdi:trending-up',
92
+ },
93
+ ],
94
+ },
95
+ {
96
+ type: 'title',
97
+ text: 'Comparison of Sourdough Culture Types',
98
+ level: 3,
99
+ },
100
+ {
101
+ type: 'comparative',
102
+ columns: 2,
103
+ items: [
104
+ {
105
+ title: 'Liquid Starter (100% Hyd.)',
106
+ icon: 'mdi:water',
107
+ description: 'The most common choice in modern artisanal baking. Easy to mix and incorporate into final doughs.',
108
+ points: [
109
+ 'Faster fermentation speed',
110
+ 'More lactic flavor profile (mild)',
111
+ 'Easy to measure and refresh',
112
+ 'Ideal for baguettes and loaves',
113
+ ],
114
+ },
115
+ {
116
+ title: 'Stiff Starter (Pasta Madre)',
117
+ icon: 'mdi:bread-slice-outline',
118
+ description: 'Traditional in Italian baking. Hydration usually around 50%. Known for its strength.',
119
+ highlight: true,
120
+ points: [
121
+ 'Slower, more stable fermentation',
122
+ 'More acetic flavor profile',
123
+ 'Greater strength for enriched doughs',
124
+ 'Ideal for Panettone and Brioche',
125
+ ],
126
+ },
127
+ ],
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Understanding Mathematical Feeding Ratios',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'The ratio represents parts of Inoculum (old starter) relative to Flour and Water. For example, a 1:2:2 ratio means 1 part culture by 2 parts flour and 2 parts water.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Ratio', 'Recommended Use', 'Est. Time (24°C)', 'Key Advantage'],
141
+ rows: [
142
+ ['1:1:1', 'Daily feeding', '4-6 hours', 'Quick maintenance'],
143
+ ['1:2:2', 'Pre-bake activation', '6-8 hours', 'Acidity balance'],
144
+ ['1:5:5', 'Standard baking use', '8-12 hours', 'Predictable activity peak'],
145
+ ['1:10:10', 'Long-term retard', '16-24 hours', 'Flexible schedule management'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Flour Selection for Starter Feeding',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'comparative',
155
+ columns: 2,
156
+ items: [
157
+ {
158
+ title: 'Whole Rye Flour',
159
+ icon: 'mdi:grain',
160
+ description: 'A superfood for wild yeasts. Contains more nutrients and enzymes than wheat.',
161
+ points: [
162
+ 'Explosive fermentation activity',
163
+ 'Brings deep, earthy aromas',
164
+ 'Maintains acidity levels better',
165
+ ],
166
+ },
167
+ {
168
+ title: 'White Wheat Flour',
169
+ icon: 'mdi:shaker-outline',
170
+ description: 'Ideal for those seeking a milder flavor where the starter doesn\'t dominate the bread profile.',
171
+ points: [
172
+ 'More neutral and versatile flavor',
173
+ 'Very clear bubble observation',
174
+ 'Less prone to over-fermentation',
175
+ ],
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'diagnostic',
181
+ variant: 'warning',
182
+ title: 'Signs of a Hungry Starter',
183
+ html: 'If your culture has a dark liquid on the surface (hooch), smells intensely like vinegar or acetone, or collapses very quickly after peaking, it needs a higher feeding ratio (more food) or a lower storage temperature.',
184
+ },
185
+ {
186
+ type: 'title',
187
+ text: 'Technical Sourdough Glossary',
188
+ level: 3,
189
+ },
190
+ {
191
+ type: 'glossary',
192
+ items: [
193
+ {
194
+ term: 'Levain',
195
+ definition: 'An intermediate starter prepared from the mother culture intended for use in a specific bread recipe.',
196
+ },
197
+ {
198
+ term: 'Hooch',
199
+ definition: 'A layer of alcohol and water that accumulates when a starter has exhausted its food source. It\'s not harmful but indicates hunger.',
200
+ },
201
+ {
202
+ term: 'Activity Peak',
203
+ definition: 'The moment of maximum expansion and yeast population density. The ideal point for mixing your bread dough.',
204
+ },
205
+ {
206
+ term: 'Lactic Acid Bacteria (LAB)',
207
+ definition: 'Microorganisms responsible for producing organic acids that provide characteristic flavor and improve shelf life.',
208
+ },
209
+ ],
210
+ },
211
+ {
212
+ type: 'tip',
213
+ title: 'The Float Test',
214
+ html: 'To check if your starter is ready, drop a teaspoon into a glass of water. If it floats, it has trapped enough CO2 and yeasts are at their peak activity.',
215
+ },
216
+ {
217
+ type: 'paragraph',
218
+ html: 'Using our calculator allows you to standardize your baking process and better understand the biology of your bread. Consistency is the secret to artisanal excellence.',
219
+ },
220
+ ],
221
+ ui: {
222
+ totalAmount: 'Final Amount',
223
+ refreshRatio: 'Feeding Ratio',
224
+ maintain: 'Maintain',
225
+ activate: 'Activate',
226
+ retard: 'Retard',
227
+ strong: 'Strong',
228
+ sweetSpot: 'Sweet Spot',
229
+ custom: 'Custom',
230
+ sourdough: 'Starter',
231
+ activeCulture: 'Active culture',
232
+ flour: 'Flour',
233
+ flourType: 'Bread or Whole Wheat',
234
+ water: 'Water',
235
+ chlorineFree: 'Chlorine-free',
236
+ todayFormula: 'Today\'s Formula',
237
+ hydration: '100% Hydration',
238
+ totalDough: 'Total Dough',
239
+ mm: 'ST',
240
+ },
241
+ schemas: [],
242
+ };
@@ -0,0 +1,243 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+
3
+ export const content: ToolLocaleContent = {
4
+ slug: 'calculadora-masa-madre',
5
+ title: 'Calculadora de Masa Madre Ratios de Fermentación',
6
+ description: 'Calcula automáticamente las proporciones de masa madre, harina y agua para mantener tu cultivo. Ratios predefinidos o personalizados.',
7
+ faqTitle: 'Preguntas Frecuentes',
8
+ faq: [
9
+ {
10
+ question: '¿Qué es el ratio 1:1:1?',
11
+ answer: 'Es el ratio más común para mantener la masa madre a temperatura ambiente. Significa 1 parte de masa madre, 1 parte de harina y 1 parte de agua. Útil cuando refrescas diariamente.',
12
+ },
13
+ {
14
+ question: '¿Cuándo uso 1:2:2?',
15
+ answer: 'El ratio 1:2:2 es para activar la masa madre. Genera una fermentación más lenta pero predecible. Ideal si guardarás el cultivo en frío y quieres revigorarlo.',
16
+ },
17
+ {
18
+ question: '¿Cuál es el "sweet spot" 1:5:5?',
19
+ answer: 'El ratio 1:5:5 es el "sweet spot" para muchos panaderos. Permite 8-12 horas de fermentación a temperatura ambiente antes de que la masa madre esté lista. Equilibra comodidad con control de tiempo.',
20
+ },
21
+ {
22
+ question: '¿Puedo usar ratios personalizados?',
23
+ answer: 'Absolutamente. Si tienes un protocolo específico, puedes ingresar tus propios ratios. Algunos panaderos usan 1:10:10 para fermentación lentísima, otros 1:1:0.8 para menos agua.',
24
+ },
25
+ {
26
+ question: '¿La calculadora redondea los gramos?',
27
+ answer: 'Sí. Redondea al número entero más cercano para practicidad. Si necesitas máxima precisión, usa una báscula digital. Los pequeños redondeos no afectan significativamente la fermentación.',
28
+ },
29
+ ],
30
+ bibliographyTitle: 'Bibliografía',
31
+ bibliography: [
32
+ {
33
+ name: 'Tartine Bread - Chad Robertson',
34
+ url: 'https://www.penguinrandomhouse.com/books/310016/tartine-bread-by-chad-robertson/',
35
+ },
36
+ {
37
+ name: 'The Flavor Bible - Scaling and Ratios',
38
+ url: 'https://www.flavorprints.com/',
39
+ },
40
+ {
41
+ name: 'Full Proof Baking - Guides on Sourdough',
42
+ url: 'https://www.fullproofbaking.com/',
43
+ },
44
+ ],
45
+ howTo: [
46
+ {
47
+ name: 'Ingresa la cantidad total que necesitas',
48
+ text: 'Define el peso total de masa madre que requieres para tu receta (ej: 300g para un pan típico).',
49
+ },
50
+ {
51
+ name: 'Selecciona el ratio de refresco',
52
+ text: 'Elige entre los ratios predefinidos (Mantener, Activar, Retardar, Fuerte, Sweet Spot) o crea uno personalizado.',
53
+ },
54
+ {
55
+ name: 'Obtén las cantidades exactas',
56
+ text: 'La calculadora te muestra cuánto de masa madre, harina y agua necesitas. Mezcla estos ingredientes y deja fermentar según tu protocolo.',
57
+ },
58
+ ],
59
+ seo: [
60
+ {
61
+ type: 'title',
62
+ text: 'Guía Maestra para el Mantenimiento y Refresco de Masa Madre',
63
+ level: 2,
64
+ },
65
+ {
66
+ type: 'paragraph',
67
+ html: 'La <strong>masa madre</strong> no es solo un ingrediente, es un ecosistema vivo de levaduras salvajes y bacterias lácticas (LAB). La clave de un pan excepcional reside en la salud de este cultivo, la cual se gestiona mediante la precisión en los ratios de refresco y el control de la temperatura.',
68
+ },
69
+ {
70
+ type: 'stats',
71
+ columns: 4,
72
+ items: [
73
+ {
74
+ value: '24-26°C',
75
+ label: 'Temp. Actividad Óptima',
76
+ icon: 'mdi:thermometer',
77
+ },
78
+ {
79
+ value: '3.8 - 4.2',
80
+ label: 'pH Ideal del Cultivo',
81
+ icon: 'mdi:test-tube',
82
+ },
83
+ {
84
+ value: '100%',
85
+ label: 'Hidratación Estándar',
86
+ icon: 'mdi:water-percent',
87
+ },
88
+ {
89
+ value: 'x2 - x3',
90
+ label: 'Crecimiento en Pico',
91
+ icon: 'mdi:trending-up',
92
+ },
93
+ ],
94
+ },
95
+ {
96
+ type: 'title',
97
+ text: 'Comparativa de Tipos de Cultivo de Masa Madre',
98
+ level: 3,
99
+ },
100
+ {
101
+ type: 'comparative',
102
+ columns: 2,
103
+ items: [
104
+ {
105
+ title: 'Masa Madre Líquida (100% Hid.)',
106
+ icon: 'mdi:water',
107
+ description: 'La más común en la panadería artesanal moderna. Muy fácil de mezclar y de incorporar a las masas finales.',
108
+ points: [
109
+ 'Fermentación más rápida',
110
+ 'Perfil de sabor más láctico (suave)',
111
+ 'Fácil de medir y refrescar',
112
+ 'Ideal para baguettes y hogazas',
113
+ ],
114
+ },
115
+ {
116
+ title: 'Masa Madre Sólida o Pasta Madre',
117
+ icon: 'mdi:bread-slice-outline',
118
+ description: 'Tradicional en la panadería italiana (Lievito Madre). Hidratación en torno al 50%.',
119
+ highlight: true,
120
+ points: [
121
+ 'Fermentación más lenta y estable',
122
+ 'Perfil de sabor más acético',
123
+ 'Mayor fuerza para masas enriquecidas',
124
+ 'Ideal para Panettone y Brioche',
125
+ ],
126
+ },
127
+ ],
128
+ },
129
+ {
130
+ type: 'title',
131
+ text: 'Entendiendo los Ratios de Refresco Matemáticos',
132
+ level: 3,
133
+ },
134
+ {
135
+ type: 'paragraph',
136
+ html: 'El ratio representa las partes de Inóculo (masa madre vieja) respecto a la Harina y el Agua. Por ejemplo, un ratio 1:2:2 significa 1 parte de cultivo por 2 de harina y 2 de agua.',
137
+ },
138
+ {
139
+ type: 'table',
140
+ headers: ['Ratio', 'Uso Recomendado', 'Tiempo Estimado (24°C)', 'Ventaja Principal'],
141
+ rows: [
142
+ ['1:1:1', 'Refresco diario', '4-6 horas', 'Mantenimiento rápido'],
143
+ ['1:2:2', 'Activación previa', '6-8 horas', 'Balance de acidez'],
144
+ ['1:5:5', 'Uso en panadería', '8-12 horas', 'Pico de actividad predecible'],
145
+ ['1:10:10', 'Retardo largo', '16-24 horas', 'Gestión de horarios flexibles'],
146
+ ],
147
+ },
148
+ {
149
+ type: 'title',
150
+ text: 'Elección de Harinas para el Refresco',
151
+ level: 3,
152
+ },
153
+ {
154
+ type: 'comparative',
155
+ columns: 2,
156
+ items: [
157
+ {
158
+ title: 'Harina de Centeno Integral',
159
+ icon: 'mdi:grain',
160
+ description: 'El "superalimento" para las levaduras salvajes. Contiene más nutrientes y enzimas que el trigo.',
161
+ points: [
162
+ 'Actividad fermentativa explosiva',
163
+ 'Aporta aromas terrosos y profundos',
164
+ 'Mantiene mejor la acidez',
165
+ ],
166
+ },
167
+ {
168
+ title: 'Harina de Trigo Blanca',
169
+ icon: 'mdi:shaker-outline',
170
+ description: 'Ideal para quienes buscan un sabor más suave y una masa madre que no domine el perfil del pan.',
171
+ points: [
172
+ 'Sabor más neutro y versátil',
173
+ 'Observación visual de burbujas clara',
174
+ 'Menos propensa a la sobrefermentación',
175
+ ],
176
+ },
177
+ ],
178
+ },
179
+ {
180
+ type: 'diagnostic',
181
+ variant: 'warning',
182
+ title: 'Signos de una Masa Madre Hambrienta',
183
+ html: 'Si tu cultivo presenta un líquido oscuro en la superficie (hooch), huele intensamente a vinagre o acetona, o colapsa muy rápido después del pico, necesita un ratio de refresco mayor (más comida) o una temperatura más baja.',
184
+ },
185
+ {
186
+ type: 'title',
187
+ text: 'Glosario Técnico de Fermentación Natural',
188
+ level: 3,
189
+ },
190
+ {
191
+ type: 'glossary',
192
+ items: [
193
+ {
194
+ term: 'Levain',
195
+ definition: 'El prefermento preparado a partir de la masa madre madre (el cultivo básico) destinado a usarse en una receta específica.',
196
+ },
197
+ {
198
+ term: 'Hooch',
199
+ definition: 'La capa de alcohol y agua que se acumula cuando la masa madre ha agotado su alimento. No es malo, solo indica hambre.',
200
+ },
201
+ {
202
+ term: 'Pico de Actividad',
203
+ definition: 'El momento de máxima expansión y población de levaduras. Es el punto ideal para mezclar la masa del pan.',
204
+ },
205
+ {
206
+ term: 'Bacterias Lácticas (LAB)',
207
+ definition: 'Microorganismos responsables de la producción de ácidos orgánicos que dan el sabor característico y mejoran la conservación.',
208
+ },
209
+ ],
210
+ },
211
+ {
212
+ type: 'tip',
213
+ title: 'La Prueba del Flotado',
214
+ html: 'Para saber si tu masa madre está lista, pon una cucharadita en un vaso con agua. Si flota, significa que ha atrapado suficiente CO2 y las levaduras están en su pico de actividad.',
215
+ },
216
+ {
217
+ type: 'paragraph',
218
+ html: 'Usar nuestra calculadora te permite estandarizar tus procesos y entender mejor la biología de tu pan. La constancia es el secreto de la excelencia artesanal.',
219
+ },
220
+ ],
221
+
222
+ ui: {
223
+ totalAmount: 'Cantidad Final',
224
+ refreshRatio: 'Ratio de Refresco',
225
+ maintain: 'Mantener',
226
+ activate: 'Activar',
227
+ retard: 'Retardar',
228
+ strong: 'Fuerte',
229
+ sweetSpot: 'Sweet Spot',
230
+ custom: 'Custom',
231
+ sourdough: 'Masa Madre',
232
+ activeCulture: 'Cultivo activo',
233
+ flour: 'Harina',
234
+ flourType: 'Fuerza o Integral',
235
+ water: 'Agua',
236
+ chlorineFree: 'Sin cloro',
237
+ todayFormula: 'Formula de Hoy',
238
+ hydration: 'Hidratación 100 %',
239
+ totalDough: 'Total Masa',
240
+ mm: 'MM',
241
+ },
242
+ schemas: [],
243
+ };