@jjlmoya/utils-cooking 1.19.0 → 1.21.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
@@ -151,542 +151,6 @@ const { ui } = Astro.props;
151
151
  </div>
152
152
  </div>
153
153
 
154
- <style>
155
- .brine-container {
156
- width: 100%;
157
- max-width: 64rem;
158
- margin: 0 auto;
159
-
160
- --bg-base: #fff;
161
- --bg-muted: #f8fafc;
162
- --text-base: #1e293b;
163
- --text-muted: #64748b;
164
- --border-color: #e2e8f0;
165
- --primary: #06b6d4;
166
- --primary-rgb: 6, 182, 212;
167
- --secondary: #a855f7;
168
- --accent: #f59e0b;
169
- }
170
-
171
- html.theme-dark .brine-container,
172
- body.theme-dark .brine-container,
173
- .theme-dark .brine-container {
174
- --bg-base: #1e293b;
175
- --bg-muted: #0f172a;
176
- --text-base: #f1f5f9;
177
- --text-muted: #94a3b8;
178
- --border-color: #334155;
179
- }
180
-
181
- .brine-grid {
182
- display: grid;
183
- grid-template-columns: 1fr;
184
- gap: 0;
185
- background: var(--bg-base);
186
- border: 1px solid var(--border-color);
187
- border-radius: 1.5rem;
188
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
189
- overflow: hidden;
190
- }
191
-
192
- @media (min-width: 1024px) {
193
- .brine-grid {
194
- grid-template-columns: 1fr 1fr;
195
- }
196
- }
197
-
198
- .brine-controls {
199
- padding: 2rem;
200
- display: flex;
201
- flex-direction: column;
202
- gap: 2rem;
203
- }
204
-
205
- @media (min-width: 1024px) {
206
- .brine-controls {
207
- padding: 2.5rem;
208
- }
209
- }
210
-
211
- .brine-header {
212
- display: flex;
213
- flex-direction: column;
214
- gap: 0.5rem;
215
- }
216
-
217
- .brine-title {
218
- font-size: 1.5rem;
219
- font-weight: 700;
220
- color: var(--text-base);
221
- }
222
-
223
- .brine-subtitle {
224
- font-size: 0.875rem;
225
- color: var(--text-muted);
226
- }
227
-
228
- .brine-inputs {
229
- display: flex;
230
- flex-direction: column;
231
- gap: 1.5rem;
232
- }
233
-
234
- .brine-input-group {
235
- display: flex;
236
- flex-direction: column;
237
- gap: 0.5rem;
238
- }
239
-
240
- .brine-label {
241
- font-size: 0.875rem;
242
- font-weight: 500;
243
- color: var(--text-muted);
244
- }
245
-
246
- .brine-input-wrapper {
247
- position: relative;
248
- }
249
-
250
- .brine-input {
251
- width: 100%;
252
- padding: 1rem;
253
- font-size: 1.25rem;
254
- background: var(--bg-muted);
255
- border: 1px solid var(--border-color);
256
- border-radius: 1rem;
257
- color: var(--text-base);
258
- transition: all 0.2s;
259
- }
260
-
261
- .brine-input:focus {
262
- outline: none;
263
- box-shadow: 0 0 0 2px var(--primary);
264
- border-color: var(--primary);
265
- }
266
-
267
- .brine-unit {
268
- position: absolute;
269
- right: 1rem;
270
- top: 50%;
271
- transform: translateY(-50%);
272
- color: var(--text-muted);
273
- font-weight: 500;
274
- }
275
-
276
- .brine-salinity-section {
277
- padding-top: 1rem;
278
- }
279
-
280
- .brine-salinity-header {
281
- display: flex;
282
- justify-content: space-between;
283
- align-items: flex-end;
284
- margin-bottom: 1rem;
285
- }
286
-
287
- .brine-salinity-display {
288
- display: flex;
289
- align-items: baseline;
290
- gap: 0.25rem;
291
- }
292
-
293
- .brine-salinity-value {
294
- font-size: 1.875rem;
295
- font-weight: 700;
296
- color: var(--primary);
297
- }
298
-
299
- .brine-salinity-unit {
300
- font-size: 1.125rem;
301
- font-weight: 700;
302
- color: var(--primary);
303
- opacity: 0.7;
304
- }
305
-
306
- .brine-slider {
307
- width: 100%;
308
- height: 0.75rem;
309
- background: var(--border-color);
310
- border-radius: 9999px;
311
- cursor: pointer;
312
- accent-color: var(--primary);
313
- }
314
-
315
- .brine-slider:hover {
316
- accent-color: var(--primary-hover);
317
- }
318
-
319
- .brine-presets {
320
- display: flex;
321
- flex-wrap: wrap;
322
- gap: 0.5rem;
323
- margin-top: 1rem;
324
- }
325
-
326
- .preset-btn {
327
- padding: 0.375rem 0.75rem;
328
- font-size: 0.75rem;
329
- font-weight: 700;
330
- background: var(--bg-muted);
331
- color: var(--text-muted);
332
- border: 1px solid transparent;
333
- border-radius: 0.5rem;
334
- cursor: pointer;
335
- transition: all 0.2s;
336
- }
337
-
338
- .preset-btn:hover {
339
- background: rgba(var(--primary-rgb), 0.1);
340
- color: var(--primary);
341
- border-color: var(--primary);
342
- }
343
-
344
- .preset-btn.active {
345
- background: rgba(var(--primary-rgb), 0.15);
346
- color: var(--primary);
347
- border-color: var(--primary);
348
- box-shadow: 0 0 0 2px var(--bg-base), 0 0 0 4px var(--primary);
349
- }
350
-
351
- .brine-sugar-toggle {
352
- display: flex;
353
- align-items: center;
354
- justify-content: space-between;
355
- padding: 1rem;
356
- background: var(--bg-muted);
357
- border-radius: 1rem;
358
- border: 1px solid var(--border-color);
359
- }
360
-
361
- .brine-toggle-content {
362
- display: flex;
363
- flex-direction: column;
364
- gap: 0.25rem;
365
- }
366
-
367
- .brine-toggle-label {
368
- font-weight: 500;
369
- color: var(--text-base);
370
- cursor: pointer;
371
- }
372
-
373
- .brine-toggle-hint {
374
- font-size: 0.75rem;
375
- color: var(--text-muted);
376
- }
377
-
378
- .brine-switch {
379
- position: relative;
380
- width: 3rem;
381
- height: 1.5rem;
382
- }
383
-
384
- .brine-switch-input {
385
- position: absolute;
386
- width: 100%;
387
- height: 100%;
388
- opacity: 0;
389
- cursor: pointer;
390
- z-index: 10;
391
- }
392
-
393
- .brine-switch-bg {
394
- position: absolute;
395
- width: 100%;
396
- height: 100%;
397
- background: var(--border-color);
398
- border-radius: 9999px;
399
- transition: background-color 0.2s;
400
- }
401
-
402
- .brine-switch-circle {
403
- position: absolute;
404
- top: 0.25rem;
405
- left: 0.25rem;
406
- width: 1rem;
407
- height: 1rem;
408
- background: white;
409
- border-radius: 50%;
410
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
411
- transition: transform 0.2s;
412
- }
413
-
414
- .brine-switch-input:checked ~ .brine-switch-bg {
415
- background: var(--primary);
416
- }
417
-
418
- .brine-switch-input:checked ~ .brine-switch-circle {
419
- transform: translateX(1.5rem);
420
- }
421
-
422
- .brine-results {
423
- background: var(--bg-muted);
424
- padding: 2rem;
425
- display: flex;
426
- flex-direction: column;
427
- justify-content: space-between;
428
- border-top: 1px solid var(--border-color);
429
- }
430
-
431
- @media (min-width: 1024px) {
432
- .brine-results {
433
- border-top: none;
434
- border-left: 1px solid var(--border-color);
435
- padding: 2.5rem;
436
- }
437
- }
438
-
439
- :global(.brine-visualization) {
440
- display: flex;
441
- flex-direction: column;
442
- align-items: center;
443
- justify-content: center;
444
- min-height: 300px;
445
- margin-bottom: 2rem;
446
- position: relative;
447
- }
448
-
449
- :global(.brine-jar) {
450
- position: relative;
451
- width: 12rem;
452
- height: 16rem;
453
- border: 4px solid var(--border-color);
454
- border-radius: 1rem;
455
- border-top: none;
456
- background: rgba(255, 255, 255, 0.1);
457
- backdrop-filter: blur(10px);
458
- overflow: hidden;
459
- }
460
-
461
- :global(.brine-jar-cap) {
462
- position: absolute;
463
- top: -0.25rem;
464
- left: 50%;
465
- transform: translateX(-50%);
466
- width: 13rem;
467
- height: 1rem;
468
- background: var(--border-color);
469
- border-radius: 0.5rem 0.5rem 0 0;
470
- }
471
-
472
- :global(.brine-water) {
473
- position: absolute;
474
- bottom: 0;
475
- left: 0;
476
- width: 100%;
477
- background: rgba(59, 130, 246, 0.2);
478
- transition: height 0.5s ease-out;
479
- height: 50%;
480
- }
481
-
482
- :global(.brine-water)::before {
483
- content: '';
484
- position: absolute;
485
- top: 0;
486
- left: 0;
487
- width: 100%;
488
- height: 100%;
489
- background: repeating-linear-gradient(
490
- 90deg,
491
- transparent,
492
- transparent 50%,
493
- rgba(59, 130, 246, 0.1) 50%,
494
- rgba(59, 130, 246, 0.1) 100%
495
- );
496
- animation: wave 10s linear infinite;
497
- opacity: 0.5;
498
- }
499
-
500
- @keyframes wave {
501
- 0% {
502
- transform: translateX(0) scaleY(1);
503
- }
504
- 50% {
505
- transform: translateX(-25%) scaleY(0.85);
506
- }
507
- 100% {
508
- transform: translateX(-50%) scaleY(1);
509
- }
510
- }
511
-
512
- :global(.brine-product) {
513
- position: absolute;
514
- bottom: 1rem;
515
- left: 50%;
516
- transform: translateX(-50%);
517
- background: rgba(0, 0, 0, 0.1);
518
- border-radius: 0.75rem;
519
- backdrop-filter: blur(10px);
520
- border: 1px solid rgba(0, 0, 0, 0.1);
521
- display: flex;
522
- align-items: center;
523
- justify-content: center;
524
- transition: all 0.5s ease-out;
525
- width: 60%;
526
- height: 40%;
527
- }
528
-
529
- :global(.brine-product-label) {
530
- font-size: 0.75rem;
531
- font-weight: 700;
532
- color: rgba(0, 0, 0, 0.3);
533
- text-transform: uppercase;
534
- letter-spacing: 0.05em;
535
- }
536
-
537
- :global(.brine-particles) {
538
- position: absolute;
539
- inset: 0;
540
- pointer-events: none;
541
- }
542
-
543
- .brine-vis-info {
544
- position: absolute;
545
- top: 1rem;
546
- right: 1rem;
547
- background: var(--bg-base);
548
- padding: 0.375rem 0.75rem;
549
- border-radius: 0.5rem;
550
- border: 1px solid var(--border-color);
551
- font-size: 0.75rem;
552
- color: var(--text-muted);
553
- }
554
-
555
- .brine-vis-label {
556
- font-weight: 500;
557
- }
558
-
559
- .brine-vis-value {
560
- font-weight: 700;
561
- color: var(--text-base);
562
- }
563
-
564
- .brine-output {
565
- display: flex;
566
- flex-direction: column;
567
- gap: 1rem;
568
- }
569
-
570
- .brine-result-panel {
571
- background: var(--bg-base);
572
- padding: 1.5rem;
573
- border-radius: 1rem;
574
- border: 1px solid var(--border-color);
575
- position: relative;
576
- overflow: hidden;
577
- display: flex;
578
- gap: 1rem;
579
- align-items: flex-start;
580
- }
581
-
582
- .brine-result-icon {
583
- width: 3rem;
584
- height: 3rem;
585
- background: var(--bg-muted);
586
- border-radius: 0.75rem;
587
- display: flex;
588
- align-items: center;
589
- justify-content: center;
590
- color: var(--primary);
591
- flex-shrink: 0;
592
- }
593
-
594
- .brine-salt-icon {
595
- color: var(--primary);
596
- }
597
-
598
- .brine-sugar-icon {
599
- color: var(--secondary);
600
- }
601
-
602
- .brine-time-icon {
603
- color: var(--accent);
604
- }
605
-
606
- .brine-result-content {
607
- flex: 1;
608
- }
609
-
610
- .brine-result-label {
611
- display: block;
612
- font-size: 0.875rem;
613
- font-weight: 700;
614
- text-transform: uppercase;
615
- letter-spacing: 0.05em;
616
- color: var(--text-muted);
617
- margin-bottom: 0.25rem;
618
- }
619
-
620
- .brine-sugar-label {
621
- color: var(--secondary);
622
- }
623
-
624
- .brine-time-label {
625
- color: var(--accent);
626
- }
627
-
628
- .brine-result-value {
629
- display: flex;
630
- align-items: baseline;
631
- gap: 0.5rem;
632
- }
633
-
634
- .brine-result-number {
635
- font-size: 2.5rem;
636
- font-weight: 900;
637
- color: var(--primary);
638
- }
639
-
640
- .brine-sugar-number {
641
- color: var(--secondary);
642
- }
643
-
644
- .brine-result-unit {
645
- font-size: 1rem;
646
- font-weight: 500;
647
- color: var(--text-muted);
648
- }
649
-
650
- .brine-result-time {
651
- font-size: 1.875rem;
652
- font-weight: 900;
653
- color: var(--accent);
654
- }
655
-
656
- .brine-salt-panel {
657
- border-color: color-mix(in srgb, var(--primary) 20%, transparent);
658
- }
659
-
660
- .brine-sugar-panel {
661
- border-color: color-mix(in srgb, var(--secondary) 20%, transparent);
662
- }
663
-
664
- .brine-time-panel {
665
- border-color: color-mix(in srgb, var(--accent) 20%, transparent);
666
- }
667
-
668
- .brine-hidden {
669
- display: none;
670
- }
671
-
672
- @media (max-width: 640px) {
673
- .brine-controls {
674
- padding: 1.5rem;
675
- }
676
-
677
- .brine-results {
678
- padding: 1.5rem;
679
- }
680
-
681
- .brine-result-number {
682
- font-size: 2rem;
683
- }
684
-
685
- .brine-result-time {
686
- font-size: 1.5rem;
687
- }
688
- }
689
- </style>
690
154
 
691
155
  <script is:inline define:vars={{ ui }}>
692
156
  const state = {