@jjlmoya/utils-alcohol 1.11.0 → 1.13.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,7 +1,6 @@
1
1
  ---
2
2
  import { Icon } from "astro-icon/components";
3
3
  import type { PartyKegUI } from "./index";
4
- import './component.css';
5
4
 
6
5
  interface Props {
7
6
  ui: PartyKegUI;
@@ -267,3 +266,666 @@ const { ui } = Astro.props;
267
266
  }
268
267
  new PartyApp();
269
268
  </script>
269
+
270
+ <style>
271
+ .party-app {
272
+ width: 100%;
273
+ max-width: 72rem;
274
+ margin: 0 auto;
275
+ padding: 0.25rem;
276
+ user-select: none;
277
+ color: #1e293b;
278
+ }
279
+
280
+ .party-card {
281
+ position: relative;
282
+ border-radius: 1.5rem;
283
+ overflow: hidden;
284
+ background: rgba(255,255,255,0.9);
285
+ backdrop-filter: blur(12px);
286
+ border: 1px solid rgba(255,255,255,0.4);
287
+ box-shadow: 0 10px 30px rgba(0,0,0,0.1);
288
+ }
289
+
290
+ :global(.theme-dark) .party-card {
291
+ background: rgba(15,23,42,0.9);
292
+ border-color: rgba(255,255,255,0.1);
293
+ }
294
+
295
+ .party-deco {
296
+ position: absolute;
297
+ width: 24rem;
298
+ height: 24rem;
299
+ border-radius: 50%;
300
+ pointer-events: none;
301
+ filter: blur(3rem);
302
+ }
303
+
304
+ .party-deco-top {
305
+ top: 0;
306
+ right: 0;
307
+ transform: translate(50%, -50%);
308
+ background: rgba(251,191,36,0.3);
309
+ }
310
+
311
+ .party-deco-bottom {
312
+ bottom: 0;
313
+ left: 0;
314
+ transform: translate(-50%, 50%);
315
+ background: rgba(34,211,238,0.3);
316
+ }
317
+
318
+ .party-grid {
319
+ display: grid;
320
+ position: relative;
321
+ z-index: 1;
322
+ }
323
+
324
+ @media (min-width: 1280px) {
325
+ .party-grid {
326
+ grid-template-columns: 5fr 7fr;
327
+ }
328
+ }
329
+
330
+ .party-inputs {
331
+ padding: 2rem 2.5rem;
332
+ display: flex;
333
+ flex-direction: column;
334
+ gap: 2.5rem;
335
+ background: rgba(255,255,255,0.4);
336
+ }
337
+
338
+ @media (min-width: 1280px) {
339
+ .party-inputs {
340
+ border-right: 1px solid #e2e8f0;
341
+ }
342
+ }
343
+
344
+ :global(.theme-dark) .party-inputs {
345
+ background: rgba(255,255,255,0.03);
346
+ border-color: #1e293b;
347
+ }
348
+
349
+ .calc-header {
350
+ display: flex;
351
+ align-items: center;
352
+ gap: 0.75rem;
353
+ }
354
+
355
+ .calc-header-icon {
356
+ width: 2.5rem;
357
+ height: 2.5rem;
358
+ border-radius: 50%;
359
+ flex-shrink: 0;
360
+ background: linear-gradient(to bottom right, #fbbf24, #f97316);
361
+ display: flex;
362
+ align-items: center;
363
+ justify-content: center;
364
+ box-shadow: 0 4px 12px rgba(251,191,36,0.3);
365
+ color: #fff;
366
+ }
367
+
368
+ .calc-header-icon-svg {
369
+ width: 1.5rem;
370
+ height: 1.5rem;
371
+ }
372
+
373
+ .calc-title {
374
+ font-weight: 700;
375
+ font-size: 1.25rem;
376
+ margin: 0;
377
+ line-height: 1;
378
+ color: #1e293b;
379
+ }
380
+
381
+ :global(.theme-dark) .calc-title {
382
+ color: #f1f5f9;
383
+ }
384
+
385
+ .calc-subtitle {
386
+ color: #64748b;
387
+ font-size: 0.75rem;
388
+ text-transform: uppercase;
389
+ letter-spacing: 0.05em;
390
+ margin: 0.25rem 0 0;
391
+ }
392
+
393
+ .slider-section {
394
+ display: flex;
395
+ flex-direction: column;
396
+ gap: 1rem;
397
+ }
398
+
399
+ .slider-header {
400
+ display: flex;
401
+ justify-content: space-between;
402
+ align-items: flex-end;
403
+ }
404
+
405
+ .slider-lbl {
406
+ color: #475569;
407
+ font-size: 0.875rem;
408
+ font-weight: 700;
409
+ text-transform: uppercase;
410
+ letter-spacing: 0.05em;
411
+ }
412
+
413
+ .slider-val {
414
+ font-size: 1.875rem;
415
+ font-weight: 300;
416
+ color: #0f172a;
417
+ letter-spacing: -0.05em;
418
+ }
419
+
420
+ :global(.theme-dark) .slider-val {
421
+ color: #f1f5f9;
422
+ }
423
+
424
+ .slider-val-unit {
425
+ display: flex;
426
+ align-items: baseline;
427
+ gap: 0.25rem;
428
+ }
429
+
430
+ .slider-unit {
431
+ font-size: 0.875rem;
432
+ color: #64748b;
433
+ font-weight: 700;
434
+ text-transform: uppercase;
435
+ }
436
+
437
+ .custom-slider-wrap {
438
+ position: relative;
439
+ height: 3rem;
440
+ background: #f1f5f9;
441
+ border-radius: 0.75rem;
442
+ border: 1px solid #e2e8f0;
443
+ box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
444
+ display: flex;
445
+ align-items: center;
446
+ padding: 0 0.5rem;
447
+ cursor: pointer;
448
+ }
449
+
450
+ :global(.theme-dark) .custom-slider-wrap {
451
+ background: #1e293b;
452
+ border-color: #334155;
453
+ }
454
+
455
+ .custom-range {
456
+ position: absolute;
457
+ inset: 0;
458
+ width: 100%;
459
+ height: 100%;
460
+ opacity: 0;
461
+ z-index: 3;
462
+ cursor: pointer;
463
+ margin: 0;
464
+ }
465
+
466
+ .slider-track-fill {
467
+ position: absolute;
468
+ left: 0.5rem;
469
+ top: 0.5rem;
470
+ bottom: 0.5rem;
471
+ border-radius: 0.5rem;
472
+ z-index: 1;
473
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
474
+ transition: width 0.1s;
475
+ }
476
+
477
+ .slider-fill-amber {
478
+ background: linear-gradient(to right, #fbbf24, #f97316);
479
+ }
480
+
481
+ .slider-fill-blue {
482
+ background: linear-gradient(to right, #60a5fa, #6366f1);
483
+ }
484
+
485
+ .slider-fill-temp {
486
+ background: linear-gradient(to right, #22d3ee, #2dd4bf, #fb7185);
487
+ }
488
+
489
+ .slider-thumb {
490
+ position: absolute;
491
+ height: 2rem;
492
+ width: 4px;
493
+ background: #fff;
494
+ border-radius: 9999px;
495
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
496
+ border: 1px solid rgba(0,0,0,0.05);
497
+ z-index: 2;
498
+ pointer-events: none;
499
+ transform: translateX(-2px);
500
+ transition: left 0.1s;
501
+ }
502
+
503
+ .vibe-section {
504
+ display: flex;
505
+ flex-direction: column;
506
+ gap: 1rem;
507
+ }
508
+
509
+ .vibe-buttons {
510
+ display: grid;
511
+ grid-template-columns: repeat(3, 1fr);
512
+ gap: 0.5rem;
513
+ }
514
+
515
+ .vibe-btn {
516
+ position: relative;
517
+ padding: 0.75rem;
518
+ border-radius: 0.75rem;
519
+ border: 1px solid #e2e8f0;
520
+ background: #fff;
521
+ cursor: pointer;
522
+ overflow: hidden;
523
+ box-shadow: 0 1px 3px rgba(0,0,0,0.05);
524
+ transition: all 0.2s;
525
+ }
526
+
527
+ :global(.theme-dark) .vibe-btn {
528
+ border-color: #334155;
529
+ background: #0f172a;
530
+ }
531
+
532
+ .vibe-btn:hover {
533
+ background: #f8fafc;
534
+ }
535
+
536
+ .vibe-bg {
537
+ position: absolute;
538
+ inset: 0;
539
+ opacity: 0;
540
+ transition: opacity 0.2s;
541
+ }
542
+
543
+ .vibe-bg-green {
544
+ background: rgba(16,185,129,0.1);
545
+ }
546
+
547
+ .vibe-bg-amber {
548
+ background: rgba(245,158,11,0.1);
549
+ }
550
+
551
+ .vibe-bg-rose {
552
+ background: rgba(244,63,94,0.1);
553
+ }
554
+
555
+ .vibe-content {
556
+ position: relative;
557
+ z-index: 1;
558
+ display: flex;
559
+ flex-direction: column;
560
+ align-items: center;
561
+ gap: 0.5rem;
562
+ }
563
+
564
+ .vibe-icon {
565
+ width: 1.5rem;
566
+ height: 1.5rem;
567
+ color: #94a3b8;
568
+ transition: color 0.2s;
569
+ }
570
+
571
+ .vibe-label {
572
+ font-size: 0.75rem;
573
+ font-weight: 700;
574
+ color: #64748b;
575
+ transition: color 0.2s;
576
+ }
577
+
578
+ .vibe-bar {
579
+ position: absolute;
580
+ bottom: 0;
581
+ left: 0;
582
+ width: 100%;
583
+ height: 4px;
584
+ transform: scaleX(0);
585
+ transition: transform 0.2s;
586
+ }
587
+
588
+ .vibe-bar-green {
589
+ background: #10b981;
590
+ }
591
+
592
+ .vibe-bar-amber {
593
+ background: #f59e0b;
594
+ }
595
+
596
+ .vibe-bar-rose {
597
+ background: #f43f5e;
598
+ }
599
+
600
+ .vibe-btn.active .vibe-bg {
601
+ opacity: 1;
602
+ }
603
+
604
+ .vibe-btn.active .active-bar {
605
+ transform: scaleX(1);
606
+ }
607
+
608
+ .vibe-btn[data-mult="1"].active .icon-col {
609
+ color: #10b981;
610
+ }
611
+
612
+ .vibe-btn[data-mult="1.5"].active .icon-col {
613
+ color: #f59e0b;
614
+ }
615
+
616
+ .vibe-btn[data-mult="2.5"].active .icon-col {
617
+ color: #f43f5e;
618
+ }
619
+
620
+ .temp-section {
621
+ display: flex;
622
+ flex-direction: column;
623
+ gap: 1rem;
624
+ padding-top: 1rem;
625
+ border-top: 1px solid #e2e8f0;
626
+ }
627
+
628
+ :global(.theme-dark) .temp-section {
629
+ border-color: #334155;
630
+ }
631
+
632
+ .temp-lbl {
633
+ display: flex;
634
+ align-items: center;
635
+ gap: 0.5rem;
636
+ }
637
+
638
+ .temp-icon {
639
+ color: #94a3b8;
640
+ width: 1.25rem;
641
+ height: 1.25rem;
642
+ }
643
+
644
+ .party-results {
645
+ background: #f8fafc;
646
+ display: flex;
647
+ flex-direction: column;
648
+ position: relative;
649
+ }
650
+
651
+ :global(.theme-dark) .party-results {
652
+ background: rgba(0,0,0,0.2);
653
+ }
654
+
655
+ .stats-header {
656
+ display: grid;
657
+ grid-template-columns: 1fr 1fr;
658
+ border-bottom: 1px solid #e2e8f0;
659
+ background: rgba(255,255,255,0.4);
660
+ backdrop-filter: blur(4px);
661
+ }
662
+
663
+ :global(.theme-dark) .stats-header {
664
+ border-color: #1e293b;
665
+ background: rgba(255,255,255,0.03);
666
+ }
667
+
668
+ .stat-block {
669
+ padding: 2rem;
670
+ position: relative;
671
+ overflow: hidden;
672
+ }
673
+
674
+ .stat-block-left {
675
+ border-right: 1px solid #e2e8f0;
676
+ }
677
+
678
+ :global(.theme-dark) .stat-block-left {
679
+ border-color: #1e293b;
680
+ }
681
+
682
+ .stat-deco-icon {
683
+ position: absolute;
684
+ top: 0;
685
+ right: 0;
686
+ padding: 1rem;
687
+ opacity: 0.05;
688
+ }
689
+
690
+ .stat-block:hover .stat-deco-icon {
691
+ opacity: 0.1;
692
+ transition: opacity 0.2s;
693
+ }
694
+
695
+ .stat-deco-svg {
696
+ width: 6rem;
697
+ height: 6rem;
698
+ color: #0f172a;
699
+ transform: rotate(12deg);
700
+ }
701
+
702
+ .stat-block-right .stat-deco-svg {
703
+ transform: rotate(-12deg);
704
+ }
705
+
706
+ .stat-label {
707
+ font-size: 0.75rem;
708
+ font-weight: 700;
709
+ text-transform: uppercase;
710
+ letter-spacing: 0.1em;
711
+ color: #94a3b8;
712
+ display: block;
713
+ margin-bottom: 0.5rem;
714
+ }
715
+
716
+ .stat-value-row {
717
+ display: flex;
718
+ align-items: baseline;
719
+ gap: 0.5rem;
720
+ }
721
+
722
+ .stat-number {
723
+ font-size: 3rem;
724
+ font-weight: 300;
725
+ color: #0f172a;
726
+ letter-spacing: -0.05em;
727
+ }
728
+
729
+ :global(.theme-dark) .stat-number {
730
+ color: #f1f5f9;
731
+ }
732
+
733
+ .stat-unit {
734
+ font-size: 1.125rem;
735
+ color: #64748b;
736
+ font-weight: 700;
737
+ }
738
+
739
+ .stat-sub {
740
+ margin: 1rem 0 0;
741
+ font-size: 0.875rem;
742
+ font-weight: 500;
743
+ }
744
+
745
+ .stat-sub-amber {
746
+ color: #d97706;
747
+ }
748
+
749
+ .stat-sub-cyan {
750
+ color: #0891b2;
751
+ }
752
+
753
+ .visual-stage-wrap {
754
+ flex: 1;
755
+ min-height: 400px;
756
+ padding: 2rem;
757
+ position: relative;
758
+ overflow: hidden;
759
+ display: flex;
760
+ flex-direction: column;
761
+ justify-content: flex-end;
762
+ background: linear-gradient(to top, rgba(203,213,225,0.5) 0%, rgba(248,250,252,0) 100%);
763
+ }
764
+
765
+ :global(.theme-dark) .visual-stage-wrap {
766
+ background: linear-gradient(to top, rgba(15,23,42,0.5) 0%, transparent 100%);
767
+ }
768
+
769
+ .visual-stage-header {
770
+ position: absolute;
771
+ top: 1.5rem;
772
+ left: 2rem;
773
+ right: 2rem;
774
+ display: flex;
775
+ justify-content: space-between;
776
+ }
777
+
778
+ .visual-title {
779
+ font-size: 0.75rem;
780
+ color: #94a3b8;
781
+ font-weight: 700;
782
+ text-transform: uppercase;
783
+ letter-spacing: 0.1em;
784
+ }
785
+
786
+ .ice-hint {
787
+ font-size: 0.75rem;
788
+ color: #64748b;
789
+ }
790
+
791
+ .visual-stage {
792
+ display: flex;
793
+ justify-content: center;
794
+ align-items: flex-end;
795
+ gap: 3rem;
796
+ width: 100%;
797
+ }
798
+
799
+ .stage-baseline {
800
+ position: absolute;
801
+ bottom: 0;
802
+ left: 0;
803
+ right: 0;
804
+ height: 1px;
805
+ background: #cbd5e1;
806
+ }
807
+
808
+ :global(.theme-dark) .stage-baseline {
809
+ background: #334155;
810
+ }
811
+
812
+ @keyframes drop-in {
813
+ 0% {
814
+ transform: translateY(-50px);
815
+ opacity: 0;
816
+ }
817
+
818
+ 100% {
819
+ transform: translateY(0);
820
+ opacity: 1;
821
+ }
822
+ }
823
+
824
+ .animate-drop {
825
+ animation: drop-in 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
826
+ }
827
+
828
+ :global(.visual-container) {
829
+ display: flex;
830
+ align-items: flex-end;
831
+ justify-content: center;
832
+ width: 100%;
833
+ height: 100%;
834
+ gap: 2rem;
835
+ }
836
+
837
+ @media (min-width: 1024px) {
838
+ :global(.visual-container) {
839
+ gap: 4rem;
840
+ }
841
+ }
842
+
843
+ :global(.keg-stack) {
844
+ display: flex;
845
+ flex-direction: column-reverse;
846
+ align-items: center;
847
+ justify-content: flex-start;
848
+ height: 100%;
849
+ margin-bottom: -2rem;
850
+ min-width: 80px;
851
+ }
852
+
853
+ :global(.keg-item) {
854
+ position: relative;
855
+ transition: transform 0.3s;
856
+ transform-origin: bottom;
857
+ cursor: default;
858
+ }
859
+
860
+ :global(.keg-item:hover) {
861
+ transform: scale(1.05);
862
+ }
863
+
864
+ :global(.keg-plus) {
865
+ text-align: center;
866
+ font-weight: 900;
867
+ font-size: 1.25rem;
868
+ color: #b45309;
869
+ margin-bottom: 1rem;
870
+ background: rgba(251,191,36,0.8);
871
+ backdrop-filter: blur(4px);
872
+ border-radius: 9999px;
873
+ width: 3.5rem;
874
+ height: 3.5rem;
875
+ display: flex;
876
+ align-items: center;
877
+ justify-content: center;
878
+ border: 2px solid #fde68a;
879
+ box-shadow: 0 4px 20px rgba(0,0,0,0.1);
880
+ z-index: 50;
881
+ animation: bounce 1s infinite;
882
+ }
883
+
884
+ @keyframes bounce {
885
+ 0%, 100% {
886
+ transform: translateY(0);
887
+ }
888
+
889
+ 50% {
890
+ transform: translateY(-4px);
891
+ }
892
+ }
893
+
894
+ :global(.ice-pile) {
895
+ display: flex;
896
+ flex-wrap: wrap;
897
+ align-content: flex-end;
898
+ justify-content: center;
899
+ width: 15rem;
900
+ margin-left: -1.25rem;
901
+ padding: 1rem;
902
+ position: relative;
903
+ }
904
+
905
+ :global(.ice-bag) {
906
+ transition: transform 0.3s;
907
+ cursor: pointer;
908
+ }
909
+
910
+ :global(.ice-bag:hover) {
911
+ transform: scale(1.1);
912
+ z-index: 50;
913
+ }
914
+
915
+ :global(.bags-plus) {
916
+ position: absolute;
917
+ top: -3rem;
918
+ left: 50%;
919
+ transform: translateX(-50%);
920
+ z-index: 100;
921
+ font-weight: 900;
922
+ font-size: 1.25rem;
923
+ color: #0e7490;
924
+ background: rgba(236,254,255,0.9);
925
+ padding: 0.5rem 1rem;
926
+ border-radius: 9999px;
927
+ border: 2px solid #a5f3fc;
928
+ box-shadow: 0 4px 20px rgba(6,182,212,0.3);
929
+ animation: bounce 1s infinite;
930
+ }
931
+ </style>