@jjlmoya/utils-cooking 1.19.0 → 1.20.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 (26) hide show
  1. package/package.json +5 -3
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/tool/american-kitchen-converter/component.astro +0 -498
  4. package/src/tool/american-kitchen-converter/us-cooking-conversion-calculator-cups-to-grams-fahrenheit.css +496 -0
  5. package/src/tool/banana-ripeness/banana-ripeness.css +587 -0
  6. package/src/tool/banana-ripeness/component.astro +0 -589
  7. package/src/tool/brine/component.astro +0 -536
  8. package/src/tool/brine/equilibrium-brining-calculator-meat-fermentation-ratios.css +534 -0
  9. package/src/tool/cookware-guide/component.astro +0 -24
  10. package/src/tool/cookware-guide/cookware-selector.css +22 -0
  11. package/src/tool/egg-timer/component.astro +1 -505
  12. package/src/tool/egg-timer/perfect-boiled-egg-timer-altitude-calculator.css +503 -0
  13. package/src/tool/ingredient-rescaler/component.astro +0 -22
  14. package/src/tool/ingredient-rescaler/recipe-ingredient-scaler-converter-servings.css +20 -0
  15. package/src/tool/kitchen-timer/component.astro +0 -340
  16. package/src/tool/kitchen-timer/kitchen-timer.css +338 -0
  17. package/src/tool/meringue-peak/component.astro +0 -300
  18. package/src/tool/meringue-peak/meringue-sugar-ratio-calculator-stiff-peaks.css +298 -0
  19. package/src/tool/mold-scaler/cake-pan-size-converter-calculator.css +364 -0
  20. package/src/tool/mold-scaler/component.astro +0 -366
  21. package/src/tool/pizza/component.astro +0 -570
  22. package/src/tool/pizza/neapolitan-pizza-dough-calculator-authentic-recipe.css +569 -0
  23. package/src/tool/roux-guide/component.astro +0 -23
  24. package/src/tool/roux-guide/roux-ratio-calculator-thickening-sauce-guide.css +21 -0
  25. package/src/tool/sourdough-calculator/component.astro +0 -371
  26. package/src/tool/sourdough-calculator/sourdough-starter-feeding-calculator-ratio-proportions.css +369 -0
@@ -166,303 +166,3 @@ const { ui } = Astro.props;
166
166
  calculate();
167
167
  </script>
168
168
 
169
- <style>
170
- .meringue-calculator-container {
171
- --primary: #f472b6;
172
- --primary-dark: #db2777;
173
- --text-dark: #1e293b;
174
- --text-muted: #64748b;
175
- --text-light: #cbd5e1;
176
- --bg-light: #f1f5f9;
177
- --border-dark: #334155;
178
- --border-muted: #e2e8f0;
179
- --pink-light: #f472b6;
180
- --card-bg: #fff;
181
- --card-border: #e2e8f0;
182
- --card-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.1);
183
- --card-hover-shadow: 0 12px 40px 0 rgba(31, 38, 135, 0.15);
184
- --input-bg: #fff;
185
- --input-border: #e2e8f0;
186
- --input-dark-bg: #334155;
187
- --input-dark-border: #475569;
188
- --time-bg: #f1f5f9;
189
- --pro-tip-bg: #fdf2f8;
190
- --pro-tip-border: #f472b6;
191
-
192
- max-width: 800px;
193
- margin: 2rem auto;
194
- padding: 1rem;
195
- display: flex;
196
- flex-direction: column;
197
- gap: 2rem;
198
- }
199
-
200
- :global(.theme-dark) .meringue-calculator-container {
201
- --text-dark: #f1f5f9;
202
- --text-muted: #94a3b8;
203
- --text-light: #cbd5e1;
204
- --bg-light: #1e293b;
205
- --border-dark: #475569;
206
- --border-muted: #334155;
207
- --card-bg: #1e293b;
208
- --card-border: #334155;
209
- --card-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.5);
210
- --card-hover-shadow: 0 12px 40px 0 rgba(0, 0, 0, 0.3);
211
- --input-bg: #334155;
212
- --input-border: #475569;
213
- --input-dark-bg: #1e293b;
214
- --input-dark-border: #475569;
215
- --time-bg: #1e293b;
216
- --pro-tip-bg: #4c1d3a;
217
- --pro-tip-border: #db2777;
218
- }
219
-
220
- .meringue-card {
221
- background: var(--card-bg);
222
- backdrop-filter: blur(12px);
223
- -webkit-backdrop-filter: blur(12px);
224
- border: 1px solid var(--card-border);
225
- border-radius: 24px;
226
- padding: 2.5rem;
227
- box-shadow: var(--card-shadow);
228
- transition: transform 0.3s ease, box-shadow 0.3s ease;
229
- }
230
-
231
- .meringue-card:hover {
232
- transform: translateY(-4px);
233
- box-shadow: var(--card-hover-shadow);
234
- }
235
-
236
- .meringue-input-section {
237
- display: grid;
238
- grid-template-columns: 1fr 1fr;
239
- gap: 2rem;
240
- margin-bottom: 2.5rem;
241
- }
242
-
243
- @media (max-width: 640px) {
244
- .meringue-input-section {
245
- grid-template-columns: 1fr;
246
- }
247
- }
248
-
249
- .meringue-input-group {
250
- display: flex;
251
- flex-direction: column;
252
- gap: 0.75rem;
253
- }
254
-
255
- .meringue-input-group label {
256
- font-size: 0.875rem;
257
- font-weight: 700;
258
- color: var(--text-muted);
259
- text-transform: uppercase;
260
- letter-spacing: 0.05em;
261
- }
262
-
263
- .meringue-input-wrapper {
264
- position: relative;
265
- display: flex;
266
- align-items: center;
267
- }
268
-
269
- .meringue-input-wrapper input {
270
- width: 100%;
271
- padding: 1rem 1.25rem;
272
- padding-right: 3rem;
273
- border-radius: 16px;
274
- border: 2px solid var(--input-border);
275
- background: var(--input-bg);
276
- font-size: 1.125rem;
277
- font-weight: 600;
278
- color: var(--text-dark);
279
- transition: all 0.2s ease;
280
- outline: none;
281
- }
282
-
283
- .meringue-input-wrapper input:focus {
284
- border-color: var(--primary);
285
- box-shadow: 0 0 0 4px rgba(244, 114, 182, 0.1);
286
- }
287
-
288
- :global(.theme-dark) .meringue-input-wrapper input:focus {
289
- box-shadow: 0 0 0 4px rgba(244, 114, 182, 0.2);
290
- }
291
-
292
- .meringue-input-unit {
293
- position: absolute;
294
- right: 1.25rem;
295
- font-weight: 700;
296
- color: var(--text-light);
297
- pointer-events: none;
298
- }
299
-
300
- .meringue-type-selector {
301
- display: flex;
302
- background: var(--bg-light);
303
- padding: 0.5rem;
304
- border-radius: 16px;
305
- gap: 0.25rem;
306
- }
307
-
308
- .meringue-type-btn {
309
- flex: 1;
310
- padding: 0.75rem;
311
- border: none;
312
- background: transparent;
313
- border-radius: 12px;
314
- font-size: 0.875rem;
315
- font-weight: 600;
316
- color: var(--text-muted);
317
- cursor: pointer;
318
- transition: all 0.2s ease;
319
- }
320
-
321
- .meringue-type-btn.active {
322
- background: var(--card-bg);
323
- color: var(--primary-dark);
324
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
325
- }
326
-
327
- :global(.theme-dark) .meringue-type-btn.active {
328
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
329
- }
330
-
331
- .meringue-results-grid {
332
- display: grid;
333
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
334
- gap: 1.5rem;
335
- }
336
-
337
- :global(.meringue-result-item) {
338
- background: var(--time-bg);
339
- border: 1px solid var(--card-border);
340
- border-radius: 20px;
341
- padding: 1.5rem;
342
- display: flex;
343
- flex-direction: column;
344
- gap: 0.5rem;
345
- transition: all 0.2s ease;
346
- }
347
-
348
- :global(.meringue-result-item):hover {
349
- background: var(--card-bg);
350
- transform: scale(1.02);
351
- }
352
-
353
- .meringue-result-label {
354
- font-size: 0.75rem;
355
- font-weight: 700;
356
- color: var(--text-light);
357
- text-transform: uppercase;
358
- }
359
-
360
- .meringue-result-value {
361
- font-size: 1.5rem;
362
- font-weight: 800;
363
- color: var(--text-dark);
364
- display: flex;
365
- align-items: baseline;
366
- gap: 0.25rem;
367
- }
368
-
369
- .meringue-result-unit {
370
- font-size: 0.875rem;
371
- font-weight: 600;
372
- color: var(--text-light);
373
- }
374
-
375
- .meringue-time-section {
376
- margin-top: 2.5rem;
377
- padding-top: 2.5rem;
378
- border-top: 1px solid var(--card-border);
379
- }
380
-
381
- .meringue-time-grid {
382
- display: flex;
383
- flex-direction: column;
384
- gap: 1rem;
385
- }
386
-
387
- :global(.meringue-time-row) {
388
- display: flex;
389
- align-items: center;
390
- justify-content: space-between;
391
- padding: 1rem 1.5rem;
392
- border-radius: 16px;
393
- background: var(--time-bg);
394
- transition: all 0.2s ease;
395
- }
396
-
397
- .meringue-time-info {
398
- display: flex;
399
- flex-direction: column;
400
- }
401
-
402
- .meringue-time-stage {
403
- font-weight: 700;
404
- color: var(--border-dark);
405
- }
406
-
407
- .meringue-time-desc {
408
- font-size: 0.75rem;
409
- color: var(--text-muted);
410
- }
411
-
412
- .meringue-time-val {
413
- font-weight: 800;
414
- color: var(--primary-dark);
415
- font-size: 1.125rem;
416
- }
417
-
418
- :global(.theme-dark) .meringue-time-val {
419
- color: var(--primary);
420
- }
421
-
422
- .meringue-pro-tip {
423
- margin-top: 2rem;
424
- padding: 1.25rem;
425
- border-radius: 16px;
426
- background: var(--pro-tip-bg);
427
- border: 1px dashed var(--pro-tip-border);
428
- display: flex;
429
- gap: 1rem;
430
- align-items: center;
431
- }
432
-
433
- .meringue-pro-tip svg {
434
- color: var(--primary-dark);
435
- flex-shrink: 0;
436
- }
437
-
438
- :global(.theme-dark) .meringue-pro-tip svg {
439
- color: var(--primary);
440
- }
441
-
442
- .meringue-pro-tip p {
443
- font-size: 0.875rem;
444
- color: var(--primary-dark);
445
- line-height: 1.5;
446
- margin: 0;
447
- }
448
-
449
- :global(.theme-dark) .meringue-pro-tip p {
450
- color: var(--pink-light);
451
- }
452
-
453
- :global(.meringue-fade-in) {
454
- animation: meringue-fade-in 0.5s ease forwards;
455
- }
456
-
457
- @keyframes meringue-fade-in {
458
- from {
459
- opacity: 0;
460
- transform: translateY(10px);
461
- }
462
-
463
- to {
464
- opacity: 1;
465
- transform: translateY(0);
466
- }
467
- }
468
- </style>
@@ -0,0 +1,298 @@
1
+ .meringue-calculator-container {
2
+ --primary: #f472b6;
3
+ --primary-dark: #db2777;
4
+ --text-dark: #1e293b;
5
+ --text-muted: #64748b;
6
+ --text-light: #cbd5e1;
7
+ --bg-light: #f1f5f9;
8
+ --border-dark: #334155;
9
+ --border-muted: #e2e8f0;
10
+ --pink-light: #f472b6;
11
+ --card-bg: #fff;
12
+ --card-border: #e2e8f0;
13
+ --card-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.1);
14
+ --card-hover-shadow: 0 12px 40px 0 rgba(31, 38, 135, 0.15);
15
+ --input-bg: #fff;
16
+ --input-border: #e2e8f0;
17
+ --input-dark-bg: #334155;
18
+ --input-dark-border: #475569;
19
+ --time-bg: #f1f5f9;
20
+ --pro-tip-bg: #fdf2f8;
21
+ --pro-tip-border: #f472b6;
22
+
23
+ max-width: 800px;
24
+ margin: 2rem auto;
25
+ padding: 1rem;
26
+ display: flex;
27
+ flex-direction: column;
28
+ gap: 2rem;
29
+ }
30
+
31
+ :global(.theme-dark) .meringue-calculator-container {
32
+ --text-dark: #f1f5f9;
33
+ --text-muted: #94a3b8;
34
+ --text-light: #cbd5e1;
35
+ --bg-light: #1e293b;
36
+ --border-dark: #475569;
37
+ --border-muted: #334155;
38
+ --card-bg: #1e293b;
39
+ --card-border: #334155;
40
+ --card-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.5);
41
+ --card-hover-shadow: 0 12px 40px 0 rgba(0, 0, 0, 0.3);
42
+ --input-bg: #334155;
43
+ --input-border: #475569;
44
+ --input-dark-bg: #1e293b;
45
+ --input-dark-border: #475569;
46
+ --time-bg: #1e293b;
47
+ --pro-tip-bg: #4c1d3a;
48
+ --pro-tip-border: #db2777;
49
+ }
50
+
51
+ .meringue-card {
52
+ background: var(--card-bg);
53
+ backdrop-filter: blur(12px);
54
+ -webkit-backdrop-filter: blur(12px);
55
+ border: 1px solid var(--card-border);
56
+ border-radius: 24px;
57
+ padding: 2.5rem;
58
+ box-shadow: var(--card-shadow);
59
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
60
+ }
61
+
62
+ .meringue-card:hover {
63
+ transform: translateY(-4px);
64
+ box-shadow: var(--card-hover-shadow);
65
+ }
66
+
67
+ .meringue-input-section {
68
+ display: grid;
69
+ grid-template-columns: 1fr 1fr;
70
+ gap: 2rem;
71
+ margin-bottom: 2.5rem;
72
+ }
73
+
74
+ @media (max-width: 640px) {
75
+ .meringue-input-section {
76
+ grid-template-columns: 1fr;
77
+ }
78
+ }
79
+
80
+ .meringue-input-group {
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: 0.75rem;
84
+ }
85
+
86
+ .meringue-input-group label {
87
+ font-size: 0.875rem;
88
+ font-weight: 700;
89
+ color: var(--text-muted);
90
+ text-transform: uppercase;
91
+ letter-spacing: 0.05em;
92
+ }
93
+
94
+ .meringue-input-wrapper {
95
+ position: relative;
96
+ display: flex;
97
+ align-items: center;
98
+ }
99
+
100
+ .meringue-input-wrapper input {
101
+ width: 100%;
102
+ padding: 1rem 1.25rem;
103
+ padding-right: 3rem;
104
+ border-radius: 16px;
105
+ border: 2px solid var(--input-border);
106
+ background: var(--input-bg);
107
+ font-size: 1.125rem;
108
+ font-weight: 600;
109
+ color: var(--text-dark);
110
+ transition: all 0.2s ease;
111
+ outline: none;
112
+ }
113
+
114
+ .meringue-input-wrapper input:focus {
115
+ border-color: var(--primary);
116
+ box-shadow: 0 0 0 4px rgba(244, 114, 182, 0.1);
117
+ }
118
+
119
+ :global(.theme-dark) .meringue-input-wrapper input:focus {
120
+ box-shadow: 0 0 0 4px rgba(244, 114, 182, 0.2);
121
+ }
122
+
123
+ .meringue-input-unit {
124
+ position: absolute;
125
+ right: 1.25rem;
126
+ font-weight: 700;
127
+ color: var(--text-light);
128
+ pointer-events: none;
129
+ }
130
+
131
+ .meringue-type-selector {
132
+ display: flex;
133
+ background: var(--bg-light);
134
+ padding: 0.5rem;
135
+ border-radius: 16px;
136
+ gap: 0.25rem;
137
+ }
138
+
139
+ .meringue-type-btn {
140
+ flex: 1;
141
+ padding: 0.75rem;
142
+ border: none;
143
+ background: transparent;
144
+ border-radius: 12px;
145
+ font-size: 0.875rem;
146
+ font-weight: 600;
147
+ color: var(--text-muted);
148
+ cursor: pointer;
149
+ transition: all 0.2s ease;
150
+ }
151
+
152
+ .meringue-type-btn.active {
153
+ background: var(--card-bg);
154
+ color: var(--primary-dark);
155
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
156
+ }
157
+
158
+ :global(.theme-dark) .meringue-type-btn.active {
159
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
160
+ }
161
+
162
+ .meringue-results-grid {
163
+ display: grid;
164
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
165
+ gap: 1.5rem;
166
+ }
167
+
168
+ :global(.meringue-result-item) {
169
+ background: var(--time-bg);
170
+ border: 1px solid var(--card-border);
171
+ border-radius: 20px;
172
+ padding: 1.5rem;
173
+ display: flex;
174
+ flex-direction: column;
175
+ gap: 0.5rem;
176
+ transition: all 0.2s ease;
177
+ }
178
+
179
+ :global(.meringue-result-item):hover {
180
+ background: var(--card-bg);
181
+ transform: scale(1.02);
182
+ }
183
+
184
+ .meringue-result-label {
185
+ font-size: 0.75rem;
186
+ font-weight: 700;
187
+ color: var(--text-light);
188
+ text-transform: uppercase;
189
+ }
190
+
191
+ .meringue-result-value {
192
+ font-size: 1.5rem;
193
+ font-weight: 800;
194
+ color: var(--text-dark);
195
+ display: flex;
196
+ align-items: baseline;
197
+ gap: 0.25rem;
198
+ }
199
+
200
+ .meringue-result-unit {
201
+ font-size: 0.875rem;
202
+ font-weight: 600;
203
+ color: var(--text-light);
204
+ }
205
+
206
+ .meringue-time-section {
207
+ margin-top: 2.5rem;
208
+ padding-top: 2.5rem;
209
+ border-top: 1px solid var(--card-border);
210
+ }
211
+
212
+ .meringue-time-grid {
213
+ display: flex;
214
+ flex-direction: column;
215
+ gap: 1rem;
216
+ }
217
+
218
+ :global(.meringue-time-row) {
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: space-between;
222
+ padding: 1rem 1.5rem;
223
+ border-radius: 16px;
224
+ background: var(--time-bg);
225
+ transition: all 0.2s ease;
226
+ }
227
+
228
+ .meringue-time-info {
229
+ display: flex;
230
+ flex-direction: column;
231
+ }
232
+
233
+ .meringue-time-stage {
234
+ font-weight: 700;
235
+ color: var(--border-dark);
236
+ }
237
+
238
+ .meringue-time-desc {
239
+ font-size: 0.75rem;
240
+ color: var(--text-muted);
241
+ }
242
+
243
+ .meringue-time-val {
244
+ font-weight: 800;
245
+ color: var(--primary-dark);
246
+ font-size: 1.125rem;
247
+ }
248
+
249
+ :global(.theme-dark) .meringue-time-val {
250
+ color: var(--primary);
251
+ }
252
+
253
+ .meringue-pro-tip {
254
+ margin-top: 2rem;
255
+ padding: 1.25rem;
256
+ border-radius: 16px;
257
+ background: var(--pro-tip-bg);
258
+ border: 1px dashed var(--pro-tip-border);
259
+ display: flex;
260
+ gap: 1rem;
261
+ align-items: center;
262
+ }
263
+
264
+ .meringue-pro-tip svg {
265
+ color: var(--primary-dark);
266
+ flex-shrink: 0;
267
+ }
268
+
269
+ :global(.theme-dark) .meringue-pro-tip svg {
270
+ color: var(--primary);
271
+ }
272
+
273
+ .meringue-pro-tip p {
274
+ font-size: 0.875rem;
275
+ color: var(--primary-dark);
276
+ line-height: 1.5;
277
+ margin: 0;
278
+ }
279
+
280
+ :global(.theme-dark) .meringue-pro-tip p {
281
+ color: var(--pink-light);
282
+ }
283
+
284
+ :global(.meringue-fade-in) {
285
+ animation: meringue-fade-in 0.5s ease forwards;
286
+ }
287
+
288
+ @keyframes meringue-fade-in {
289
+ from {
290
+ opacity: 0;
291
+ transform: translateY(10px);
292
+ }
293
+
294
+ to {
295
+ opacity: 1;
296
+ transform: translateY(0);
297
+ }
298
+ }