@jjlmoya/utils-cooking 1.18.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 (53) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/index.ts +12 -12
  4. package/src/entries.ts +26 -0
  5. package/src/tool/american-kitchen-converter/component.astro +0 -498
  6. package/src/tool/american-kitchen-converter/entry.ts +26 -0
  7. package/src/tool/american-kitchen-converter/index.ts +2 -27
  8. package/src/tool/american-kitchen-converter/us-cooking-conversion-calculator-cups-to-grams-fahrenheit.css +496 -0
  9. package/src/tool/banana-ripeness/banana-ripeness.css +587 -0
  10. package/src/tool/banana-ripeness/component.astro +0 -589
  11. package/src/tool/banana-ripeness/entry.ts +26 -0
  12. package/src/tool/banana-ripeness/index.ts +2 -27
  13. package/src/tool/brine/component.astro +0 -536
  14. package/src/tool/brine/entry.ts +29 -0
  15. package/src/tool/brine/equilibrium-brining-calculator-meat-fermentation-ratios.css +534 -0
  16. package/src/tool/brine/index.ts +2 -31
  17. package/src/tool/cookware-guide/component.astro +0 -24
  18. package/src/tool/cookware-guide/cookware-selector.css +22 -0
  19. package/src/tool/cookware-guide/entry.ts +26 -0
  20. package/src/tool/cookware-guide/index.ts +2 -27
  21. package/src/tool/egg-timer/component.astro +1 -505
  22. package/src/tool/egg-timer/entry.ts +30 -0
  23. package/src/tool/egg-timer/index.ts +2 -32
  24. package/src/tool/egg-timer/perfect-boiled-egg-timer-altitude-calculator.css +503 -0
  25. package/src/tool/ingredient-rescaler/component.astro +0 -22
  26. package/src/tool/ingredient-rescaler/entry.ts +26 -0
  27. package/src/tool/ingredient-rescaler/index.ts +2 -27
  28. package/src/tool/ingredient-rescaler/recipe-ingredient-scaler-converter-servings.css +20 -0
  29. package/src/tool/kitchen-timer/component.astro +0 -340
  30. package/src/tool/kitchen-timer/entry.ts +26 -0
  31. package/src/tool/kitchen-timer/index.ts +2 -28
  32. package/src/tool/kitchen-timer/kitchen-timer.css +338 -0
  33. package/src/tool/meringue-peak/component.astro +0 -300
  34. package/src/tool/meringue-peak/entry.ts +26 -0
  35. package/src/tool/meringue-peak/index.ts +2 -27
  36. package/src/tool/meringue-peak/meringue-sugar-ratio-calculator-stiff-peaks.css +298 -0
  37. package/src/tool/mold-scaler/cake-pan-size-converter-calculator.css +364 -0
  38. package/src/tool/mold-scaler/component.astro +0 -366
  39. package/src/tool/mold-scaler/entry.ts +26 -0
  40. package/src/tool/mold-scaler/index.ts +2 -28
  41. package/src/tool/pizza/component.astro +0 -570
  42. package/src/tool/pizza/entry.ts +30 -0
  43. package/src/tool/pizza/index.ts +2 -32
  44. package/src/tool/pizza/neapolitan-pizza-dough-calculator-authentic-recipe.css +569 -0
  45. package/src/tool/roux-guide/component.astro +0 -23
  46. package/src/tool/roux-guide/entry.ts +26 -0
  47. package/src/tool/roux-guide/index.ts +2 -27
  48. package/src/tool/roux-guide/roux-ratio-calculator-thickening-sauce-guide.css +21 -0
  49. package/src/tool/sourdough-calculator/component.astro +0 -371
  50. package/src/tool/sourdough-calculator/entry.ts +26 -0
  51. package/src/tool/sourdough-calculator/index.ts +2 -27
  52. package/src/tool/sourdough-calculator/sourdough-starter-feeding-calculator-ratio-proportions.css +369 -0
  53. package/src/tools.ts +1 -1
@@ -342,343 +342,3 @@ const { ui } = Astro.props;
342
342
  }
343
343
  </script>
344
344
 
345
- <style>
346
- .kitchen-timer-wrapper {
347
- --kt-primary: #ea580c;
348
- --kt-secondary: #f97316;
349
- --kt-bg: #fff;
350
- --kt-bg-secondary: #f8fafc;
351
- --kt-border: #e2e8f0;
352
- --kt-separator: #cbd5e1;
353
- --kt-text: #0f172a;
354
- --kt-text-muted: #64748b;
355
- --card-br: 1.5rem;
356
- }
357
-
358
- :global(.theme-dark) .kitchen-timer-wrapper {
359
- --kt-primary: #fb923c;
360
- --kt-secondary: #fdba74;
361
- --kt-bg: #0f172a;
362
- --kt-bg-secondary: #1e293b;
363
- --kt-border: #334155;
364
- --kt-separator: #64748b;
365
- --kt-text: #f8fafc;
366
- --kt-text-muted: #94a3b8;
367
- }
368
-
369
- .kitchen-timer-master-card {
370
- background: var(--kt-bg);
371
- border: 1px solid var(--kt-border);
372
- border-radius: var(--card-br);
373
- box-shadow: var(--sc-shadow-lg);
374
- overflow: hidden;
375
- }
376
-
377
- .timers-grid {
378
- display: grid;
379
- grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
380
- gap: 0;
381
- }
382
-
383
- .timer-card {
384
- background: transparent;
385
- border: none;
386
- border-right: 1px solid var(--kt-border);
387
- border-bottom: 1px solid var(--kt-border);
388
- border-radius: 0;
389
- position: relative;
390
- overflow: hidden;
391
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
392
- box-shadow: none;
393
- }
394
-
395
- .timer-card:hover {
396
- transform: none;
397
- background: var(--kt-bg-secondary);
398
- }
399
-
400
- .progress-bar {
401
- position: absolute;
402
- top: 0;
403
- left: 0;
404
- width: 100%;
405
- height: 4px;
406
- background: var(--kt-bg-secondary);
407
- }
408
-
409
- .progress-fill {
410
- width: 100%;
411
- height: 100%;
412
- background: var(--kt-primary);
413
- transform-origin: left;
414
- transform: scaleX(0);
415
- transition: transform 0.1s linear;
416
- }
417
-
418
- .timer-content {
419
- padding: 1.5rem;
420
- }
421
-
422
- .timer-header {
423
- display: flex;
424
- justify-content: space-between;
425
- align-items: center;
426
- margin-bottom: 1.5rem;
427
- }
428
-
429
- .timer-name-wrapper {
430
- flex: 1;
431
- min-width: 0;
432
- margin-right: 0.5rem;
433
- }
434
-
435
- .timer-name {
436
- background: transparent;
437
- border: none;
438
- border-bottom: 2px solid transparent;
439
- font-weight: 700;
440
- font-size: 1.1rem;
441
- color: var(--kt-text);
442
- width: 100%;
443
- outline: none;
444
- transition: border-color 0.2s;
445
- white-space: nowrap;
446
- overflow: hidden;
447
- text-overflow: ellipsis;
448
- }
449
-
450
- .timer-name:focus {
451
- border-color: var(--kt-primary);
452
- }
453
-
454
- .status-badge {
455
- padding: 0.25rem 0.75rem;
456
- background: var(--kt-bg-secondary);
457
- border-radius: 2rem;
458
- font-size: 0.75rem;
459
- font-weight: 700;
460
- color: var(--kt-text-muted);
461
- border: 1px solid var(--kt-border);
462
- flex-shrink: 0;
463
- }
464
-
465
- .timer-display {
466
- display: flex;
467
- align-items: center;
468
- justify-content: center;
469
- gap: 1rem;
470
- margin: 2rem 0;
471
- }
472
-
473
- .time-input-group {
474
- display: flex;
475
- flex-direction: column;
476
- align-items: center;
477
- gap: 0.5rem;
478
- }
479
-
480
- .time-input {
481
- width: 85px;
482
- aspect-ratio: 1;
483
- background: var(--kt-bg-secondary);
484
- border: 2px solid var(--kt-border);
485
- border-radius: 1.25rem;
486
- font-size: 2.75rem;
487
- font-weight: 900;
488
- text-align: center;
489
- color: var(--kt-text);
490
- padding: 0;
491
- display: flex;
492
- align-items: center;
493
- justify-content: center;
494
- outline: none;
495
- transition: all 0.2s;
496
- appearance: textfield;
497
- -moz-appearance: textfield;
498
- }
499
-
500
- .time-input::-webkit-outer-spin-button,
501
- .time-input::-webkit-inner-spin-button {
502
- -webkit-appearance: none;
503
- margin: 0;
504
- }
505
-
506
- .time-input:focus {
507
- border-color: var(--kt-primary);
508
- background: var(--kt-bg);
509
- box-shadow: 0 0 0 4px rgba(234, 88, 12, 0.1);
510
- }
511
-
512
- .time-label {
513
- font-size: 0.65rem;
514
- font-weight: 800;
515
- text-transform: uppercase;
516
- letter-spacing: 0.1em;
517
- color: var(--kt-text-muted);
518
- }
519
-
520
- .time-separator {
521
- font-size: 2rem;
522
- font-weight: 900;
523
- color: var(--kt-separator);
524
- margin-top: -1.4rem;
525
- }
526
-
527
- .timer-controls {
528
- display: flex;
529
- flex-direction: column;
530
- gap: 1rem;
531
- }
532
-
533
- .timer-buttons {
534
- display: grid;
535
- grid-template-columns: 1fr 1fr;
536
- gap: 0.75rem;
537
- }
538
-
539
- .btn-toggle, .btn-reset {
540
- padding: 0.75rem;
541
- border-radius: 1rem;
542
- font-weight: 700;
543
- cursor: pointer;
544
- display: flex;
545
- align-items: center;
546
- justify-content: center;
547
- gap: 0.5rem;
548
- transition: all 0.2s;
549
- border: none;
550
- }
551
-
552
- .btn-toggle {
553
- background: var(--kt-primary);
554
- color: var(--kt-bg);
555
- }
556
-
557
- .btn-toggle:hover:not(:disabled) {
558
- background: var(--kt-secondary);
559
- transform: scale(1.02);
560
- }
561
-
562
- .btn-toggle:disabled {
563
- opacity: 0.5;
564
- cursor: not-allowed;
565
- }
566
-
567
- .btn-reset {
568
- background: var(--kt-bg-secondary);
569
- color: var(--kt-text);
570
- border: 1px solid var(--kt-border);
571
- }
572
-
573
- .btn-reset:hover {
574
- border-color: var(--kt-primary);
575
- }
576
-
577
- .timer-quick-buttons {
578
- display: flex;
579
- gap: 0.5rem;
580
- }
581
-
582
- .timer-quick-buttons button {
583
- flex: 1;
584
- padding: 0.5rem;
585
- border-radius: 0.75rem;
586
- background: var(--kt-bg-secondary);
587
- border: 1px solid var(--kt-border);
588
- font-size: 0.8rem;
589
- font-weight: 600;
590
- color: var(--kt-text-muted);
591
- cursor: pointer;
592
- transition: all 0.2s;
593
- }
594
-
595
- .timer-quick-buttons button:hover {
596
- color: var(--kt-primary);
597
- border-color: var(--kt-primary);
598
- }
599
-
600
- .add-timer-container {
601
- padding: 1.5rem 2.5rem;
602
- display: flex;
603
- align-items: center;
604
- justify-content: space-between;
605
- background: var(--kt-bg-secondary);
606
- border-top: 1px solid var(--kt-border);
607
- gap: 1.5rem;
608
- }
609
-
610
- .add-timer-btn {
611
- background: var(--kt-primary);
612
- border: none;
613
- border-radius: 1rem;
614
- width: auto;
615
- padding: 0.75rem 2rem;
616
- height: auto;
617
- display: flex;
618
- flex-direction: row;
619
- align-items: center;
620
- justify-content: center;
621
- gap: 0.75rem;
622
- color: var(--kt-bg);
623
- font-weight: 700;
624
- font-size: 1rem;
625
- cursor: pointer;
626
- transition: all 0.2s;
627
- box-shadow: 0 4px 6px -1px rgba(234, 88, 12, 0.2);
628
- }
629
-
630
- .add-timer-btn:hover {
631
- background: var(--kt-secondary);
632
- transform: translateY(-2px);
633
- box-shadow: 0 10px 15px -3px rgba(234, 88, 12, 0.3);
634
- }
635
-
636
- .add-timer-icon {
637
- font-size: 1.25rem;
638
- display: flex;
639
- align-items: center;
640
- }
641
-
642
- .stop-all-container {
643
- flex-shrink: 0;
644
- }
645
-
646
- .stop-all-btn {
647
- background: #1e293b;
648
- padding: 0.75rem 1.5rem;
649
- border-radius: 1rem;
650
- color: var(--kt-bg);
651
- border: 1px solid rgba(255, 255, 255, 0.1);
652
- font-weight: 700;
653
- font-size: 0.9rem;
654
- display: flex;
655
- align-items: center;
656
- gap: 0.5rem;
657
- cursor: pointer;
658
- transition: all 0.2s;
659
- }
660
-
661
- .stop-all-btn:hover {
662
- background: #000;
663
- transform: translateY(-2px);
664
- }
665
-
666
- .timer-card.finished {
667
- animation: pulse-border 1.5s infinite;
668
- }
669
-
670
- @keyframes pulse-border {
671
- 0% {
672
- border-color: var(--kt-primary);
673
- box-shadow: 0 0 0 0 rgba(234, 88, 12, 0.4);
674
- }
675
- 70% {
676
- border-color: var(--kt-secondary);
677
- box-shadow: 0 0 0 15px rgba(234, 88, 12, 0);
678
- }
679
- 100% {
680
- border-color: var(--kt-primary);
681
- box-shadow: 0 0 0 0 rgba(234, 88, 12, 0);
682
- }
683
- }
684
- </style>
@@ -0,0 +1,26 @@
1
+ import type { CookingToolEntry } from '../../types';
2
+
3
+ export const kitchenTimer: CookingToolEntry = {
4
+ id: 'kitchen-timer',
5
+ icons: {
6
+ bg: 'mdi:clock-outline',
7
+ fg: 'mdi:fire',
8
+ },
9
+ i18n: {
10
+ es: () => import('./i18n/es').then((m) => m.content),
11
+ en: () => import('./i18n/en').then((m) => m.content),
12
+ fr: () => import('./i18n/fr').then((m) => m.content),
13
+ de: () => import('./i18n/de').then((m) => m.content),
14
+ it: () => import('./i18n/it').then((m) => m.content),
15
+ pt: () => import('./i18n/pt').then((m) => m.content),
16
+ nl: () => import('./i18n/nl').then((m) => m.content),
17
+ sv: () => import('./i18n/sv').then((m) => m.content),
18
+ ru: () => import('./i18n/ru').then((m) => m.content),
19
+ tr: () => import('./i18n/tr').then((m) => m.content),
20
+ pl: () => import('./i18n/pl').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ },
26
+ };
@@ -1,31 +1,5 @@
1
- import type { CookingToolEntry, ToolDefinition } from '../../types';
2
-
3
- export const kitchenTimer: CookingToolEntry = {
4
- id: 'kitchen-timer',
5
- icons: {
6
- bg: 'mdi:clock-outline',
7
- fg: 'mdi:fire',
8
- },
9
- i18n: {
10
- es: () => import('./i18n/es').then((m) => m.content),
11
- en: () => import('./i18n/en').then((m) => m.content),
12
- fr: () => import('./i18n/fr').then((m) => m.content),
13
- de: () => import('./i18n/de').then((m) => m.content),
14
- it: () => import('./i18n/it').then((m) => m.content),
15
- pt: () => import('./i18n/pt').then((m) => m.content),
16
- nl: () => import('./i18n/nl').then((m) => m.content),
17
- sv: () => import('./i18n/sv').then((m) => m.content),
18
- ru: () => import('./i18n/ru').then((m) => m.content),
19
- tr: () => import('./i18n/tr').then((m) => m.content),
20
- pl: () => import('./i18n/pl').then((m) => m.content),
21
- id: () => import('./i18n/id').then((m) => m.content),
22
- ja: () => import('./i18n/ja').then((m) => m.content),
23
- zh: () => import('./i18n/zh').then((m) => m.content),
24
- ko: () => import('./i18n/ko').then((m) => m.content),
25
- },
26
- };
27
-
28
-
1
+ import { kitchenTimer } from './entry';
2
+ export * from './entry';
29
3
  export const KITCHEN_TIMER_TOOL: ToolDefinition = {
30
4
  entry: kitchenTimer,
31
5
  Component: () => import('./component.astro'),