@jjlmoya/utils-cooking 1.7.0 → 1.9.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.
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  import { Icon } from "astro-icon/components";
3
- import "./KitchenTimer.css";
4
3
 
5
4
  interface Props {
6
5
  ui: Record<string, string>;
@@ -339,3 +338,329 @@ const { ui } = Astro.props;
339
338
  initKitchenTimers();
340
339
  }
341
340
  </script>
341
+
342
+ <style>
343
+ .kitchen-timer-wrapper {
344
+ --kt-primary: #ea580c;
345
+ --kt-secondary: #f97316;
346
+ --kt-bg: #fff;
347
+ --kt-bg-secondary: #f8fafc;
348
+ --kt-border: #e2e8f0;
349
+ --kt-text: #0f172a;
350
+ --kt-text-muted: #64748b;
351
+ --card-br: 1.5rem;
352
+ }
353
+
354
+ :global(.theme-dark) .kitchen-timer-wrapper {
355
+ --kt-primary: #fb923c;
356
+ --kt-secondary: #fdba74;
357
+ --kt-bg: #0f172a;
358
+ --kt-bg-secondary: #1e293b;
359
+ --kt-border: #334155;
360
+ --kt-text: #f8fafc;
361
+ --kt-text-muted: #94a3b8;
362
+ }
363
+
364
+ .kitchen-timer-master-card {
365
+ background: var(--kt-bg);
366
+ border: 1px solid var(--kt-border);
367
+ border-radius: var(--card-br);
368
+ box-shadow: var(--sc-shadow-lg);
369
+ overflow: hidden;
370
+ }
371
+
372
+ .timers-grid {
373
+ display: grid;
374
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
375
+ gap: 0;
376
+ }
377
+
378
+ .timer-card {
379
+ background: transparent;
380
+ border: none;
381
+ border-right: 1px solid var(--kt-border);
382
+ border-bottom: 1px solid var(--kt-border);
383
+ border-radius: 0;
384
+ position: relative;
385
+ overflow: hidden;
386
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
387
+ box-shadow: none;
388
+ }
389
+
390
+ .timer-card:hover {
391
+ transform: none;
392
+ background: var(--kt-bg-secondary);
393
+ }
394
+
395
+ .progress-bar {
396
+ position: absolute;
397
+ top: 0;
398
+ left: 0;
399
+ width: 100%;
400
+ height: 4px;
401
+ background: var(--kt-bg-secondary);
402
+ }
403
+
404
+ .progress-fill {
405
+ width: 100%;
406
+ height: 100%;
407
+ background: var(--kt-primary);
408
+ transform-origin: left;
409
+ transform: scaleX(0);
410
+ transition: transform 0.1s linear;
411
+ }
412
+
413
+ .timer-content {
414
+ padding: 1.5rem;
415
+ }
416
+
417
+ .timer-header {
418
+ display: flex;
419
+ justify-content: space-between;
420
+ align-items: center;
421
+ margin-bottom: 1.5rem;
422
+ }
423
+
424
+ .timer-name-wrapper {
425
+ flex: 1;
426
+ min-width: 0;
427
+ margin-right: 0.5rem;
428
+ }
429
+
430
+ .timer-name {
431
+ background: transparent;
432
+ border: none;
433
+ border-bottom: 2px solid transparent;
434
+ font-weight: 700;
435
+ font-size: 1.1rem;
436
+ color: var(--kt-text);
437
+ width: 100%;
438
+ outline: none;
439
+ transition: border-color 0.2s;
440
+ white-space: nowrap;
441
+ overflow: hidden;
442
+ text-overflow: ellipsis;
443
+ }
444
+
445
+ .timer-name:focus {
446
+ border-color: var(--kt-primary);
447
+ }
448
+
449
+ .status-badge {
450
+ padding: 0.25rem 0.75rem;
451
+ background: var(--kt-bg-secondary);
452
+ border-radius: 2rem;
453
+ font-size: 0.75rem;
454
+ font-weight: 700;
455
+ color: var(--kt-text-muted);
456
+ border: 1px solid var(--kt-border);
457
+ flex-shrink: 0;
458
+ }
459
+
460
+ .timer-display {
461
+ display: flex;
462
+ align-items: center;
463
+ justify-content: center;
464
+ gap: 1rem;
465
+ margin: 2rem 0;
466
+ }
467
+
468
+ .time-input-group {
469
+ display: flex;
470
+ flex-direction: column;
471
+ align-items: center;
472
+ gap: 0.5rem;
473
+ }
474
+
475
+ .time-input {
476
+ width: 80px;
477
+ background: var(--kt-bg-secondary);
478
+ border: 2px solid var(--kt-border);
479
+ border-radius: 1rem;
480
+ font-size: 2.5rem;
481
+ font-weight: 900;
482
+ text-align: center;
483
+ color: var(--kt-text);
484
+ padding: 0.5rem;
485
+ outline: none;
486
+ transition: all 0.2s;
487
+ }
488
+
489
+ .time-input:focus {
490
+ border-color: var(--kt-primary);
491
+ background: var(--kt-bg);
492
+ }
493
+
494
+ .time-label {
495
+ font-size: 0.65rem;
496
+ font-weight: 800;
497
+ text-transform: uppercase;
498
+ letter-spacing: 0.1em;
499
+ color: var(--kt-text-muted);
500
+ }
501
+
502
+ .time-separator {
503
+ font-size: 2rem;
504
+ font-weight: 900;
505
+ color: var(--kt-border);
506
+ margin-top: -1.5rem;
507
+ }
508
+
509
+ .timer-controls {
510
+ display: flex;
511
+ flex-direction: column;
512
+ gap: 1rem;
513
+ }
514
+
515
+ .timer-buttons {
516
+ display: grid;
517
+ grid-template-columns: 1fr 1fr;
518
+ gap: 0.75rem;
519
+ }
520
+
521
+ .btn-toggle, .btn-reset {
522
+ padding: 0.75rem;
523
+ border-radius: 1rem;
524
+ font-weight: 700;
525
+ cursor: pointer;
526
+ display: flex;
527
+ align-items: center;
528
+ justify-content: center;
529
+ gap: 0.5rem;
530
+ transition: all 0.2s;
531
+ border: none;
532
+ }
533
+
534
+ .btn-toggle {
535
+ background: var(--kt-primary);
536
+ color: var(--kt-bg);
537
+ }
538
+
539
+ .btn-toggle:hover:not(:disabled) {
540
+ background: var(--kt-secondary);
541
+ transform: scale(1.02);
542
+ }
543
+
544
+ .btn-toggle:disabled {
545
+ opacity: 0.5;
546
+ cursor: not-allowed;
547
+ }
548
+
549
+ .btn-reset {
550
+ background: var(--kt-bg-secondary);
551
+ color: var(--kt-text);
552
+ border: 1px solid var(--kt-border);
553
+ }
554
+
555
+ .btn-reset:hover {
556
+ border-color: var(--kt-primary);
557
+ }
558
+
559
+ .timer-quick-buttons {
560
+ display: flex;
561
+ gap: 0.5rem;
562
+ }
563
+
564
+ .timer-quick-buttons button {
565
+ flex: 1;
566
+ padding: 0.5rem;
567
+ border-radius: 0.75rem;
568
+ background: var(--kt-bg-secondary);
569
+ border: 1px solid var(--kt-border);
570
+ font-size: 0.8rem;
571
+ font-weight: 600;
572
+ color: var(--kt-text-muted);
573
+ cursor: pointer;
574
+ transition: all 0.2s;
575
+ }
576
+
577
+ .timer-quick-buttons button:hover {
578
+ color: var(--kt-primary);
579
+ border-color: var(--kt-primary);
580
+ }
581
+
582
+ .add-timer-container {
583
+ padding: 1.5rem 2.5rem;
584
+ display: flex;
585
+ align-items: center;
586
+ justify-content: space-between;
587
+ background: var(--kt-bg-secondary);
588
+ border-top: 1px solid var(--kt-border);
589
+ gap: 1.5rem;
590
+ }
591
+
592
+ .add-timer-btn {
593
+ background: var(--kt-primary);
594
+ border: none;
595
+ border-radius: 1rem;
596
+ width: auto;
597
+ padding: 0.75rem 2rem;
598
+ height: auto;
599
+ display: flex;
600
+ flex-direction: row;
601
+ align-items: center;
602
+ justify-content: center;
603
+ gap: 0.75rem;
604
+ color: var(--kt-bg);
605
+ font-weight: 700;
606
+ font-size: 1rem;
607
+ cursor: pointer;
608
+ transition: all 0.2s;
609
+ box-shadow: 0 4px 6px -1px rgba(234, 88, 12, 0.2);
610
+ }
611
+
612
+ .add-timer-btn:hover {
613
+ background: var(--kt-secondary);
614
+ transform: translateY(-2px);
615
+ box-shadow: 0 10px 15px -3px rgba(234, 88, 12, 0.3);
616
+ }
617
+
618
+ .add-timer-icon {
619
+ font-size: 1.25rem;
620
+ display: flex;
621
+ align-items: center;
622
+ }
623
+
624
+ .stop-all-container {
625
+ flex-shrink: 0;
626
+ }
627
+
628
+ .stop-all-btn {
629
+ background: #1e293b;
630
+ padding: 0.75rem 1.5rem;
631
+ border-radius: 1rem;
632
+ color: var(--kt-bg);
633
+ border: 1px solid rgba(255, 255, 255, 0.1);
634
+ font-weight: 700;
635
+ font-size: 0.9rem;
636
+ display: flex;
637
+ align-items: center;
638
+ gap: 0.5rem;
639
+ cursor: pointer;
640
+ transition: all 0.2s;
641
+ }
642
+
643
+ .stop-all-btn:hover {
644
+ background: #000;
645
+ transform: translateY(-2px);
646
+ }
647
+
648
+ .timer-card.finished {
649
+ animation: pulse-border 1.5s infinite;
650
+ }
651
+
652
+ @keyframes pulse-border {
653
+ 0% {
654
+ border-color: var(--kt-primary);
655
+ box-shadow: 0 0 0 0 rgba(234, 88, 12, 0.4);
656
+ }
657
+ 70% {
658
+ border-color: var(--kt-secondary);
659
+ box-shadow: 0 0 0 15px rgba(234, 88, 12, 0);
660
+ }
661
+ 100% {
662
+ border-color: var(--kt-primary);
663
+ box-shadow: 0 0 0 0 rgba(234, 88, 12, 0);
664
+ }
665
+ }
666
+ </style>