@jjlmoya/utils-diy 1.9.0 → 1.10.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 (28) hide show
  1. package/package.json +5 -3
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/tool/balusterCalculator/baluster-calculator.css +320 -0
  4. package/src/tool/balusterCalculator/component.astro +0 -322
  5. package/src/tool/clayCalculator/clay-shrinkage-calculator.css +530 -0
  6. package/src/tool/clayCalculator/component.astro +0 -532
  7. package/src/tool/concreteCalculator/component.astro +0 -705
  8. package/src/tool/concreteCalculator/concrete-mortar-calculator.css +703 -0
  9. package/src/tool/cutOptimizer/component.astro +0 -477
  10. package/src/tool/cutOptimizer/cut-optimizer.css +475 -0
  11. package/src/tool/drillCalculator/component.astro +0 -815
  12. package/src/tool/drillCalculator/drill-rpm-calculator.css +813 -0
  13. package/src/tool/drillSharpener/component.astro +0 -393
  14. package/src/tool/drillSharpener/drill-sharpening-master.css +391 -0
  15. package/src/tool/epoxyCalculator/component.astro +0 -571
  16. package/src/tool/epoxyCalculator/epoxy-resin-calculator.css +569 -0
  17. package/src/tool/furnitureFit/component.astro +0 -345
  18. package/src/tool/furnitureFit/furniture-fit-calculator.css +343 -0
  19. package/src/tool/mortarCalculator/component.astro +0 -620
  20. package/src/tool/mortarCalculator/lime-mortar-calculator.css +618 -0
  21. package/src/tool/passepartoutCalculator/component.astro +0 -518
  22. package/src/tool/passepartoutCalculator/passepartout-calculator.css +516 -0
  23. package/src/tool/stairCalculator/component.astro +0 -480
  24. package/src/tool/stairCalculator/stair-calculator.css +478 -0
  25. package/src/tool/thermalExpansionCalculator/component.astro +0 -490
  26. package/src/tool/thermalExpansionCalculator/thermal-expansion-calculator.css +488 -0
  27. package/src/tool/voltageDropCalculator/component.astro +0 -729
  28. package/src/tool/voltageDropCalculator/voltage-drop-calculator.css +727 -0
@@ -382,708 +382,3 @@ const t = (ui ?? {}) as ConcreteCalculatorUI;
382
382
  document.querySelectorAll('[data-cc-root]').forEach(ccInit);
383
383
  </script>
384
384
 
385
- <style>
386
- .cc-root {
387
- max-width: 800px;
388
- margin: 0 auto;
389
- padding-bottom: 4rem;
390
- }
391
-
392
- .cc-card {
393
- background: rgba(255, 255, 255, 0.7);
394
- backdrop-filter: blur(16px);
395
- -webkit-backdrop-filter: blur(16px);
396
- border: 1px solid rgba(255, 255, 255, 0.4);
397
- border-radius: 2rem;
398
- padding: 2.5rem;
399
- box-shadow: 0 25px 60px rgba(0, 0, 0, 0.05);
400
- display: flex;
401
- flex-direction: column;
402
- gap: 2.5rem;
403
- animation: cc-slide-in 0.4s ease;
404
- }
405
-
406
- @keyframes cc-slide-in {
407
- from {
408
- opacity: 0;
409
- transform: translateY(1rem);
410
- }
411
- to {
412
- opacity: 1;
413
- transform: translateY(0);
414
- }
415
- }
416
-
417
- :global(.theme-dark) .cc-card {
418
- background: rgba(15, 23, 42, 0.7);
419
- border: 1px solid rgba(255, 255, 255, 0.05);
420
- }
421
-
422
- .cc-mix-selector {
423
- display: grid;
424
- grid-template-columns: repeat(3, 1fr);
425
- gap: 1rem;
426
- }
427
-
428
- .cc-mix-btn {
429
- padding: 1rem;
430
- border-radius: 1rem;
431
- border: 2px solid transparent;
432
- background: rgba(241, 245, 249, 0.5);
433
- cursor: pointer;
434
- transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
435
- display: flex;
436
- flex-direction: column;
437
- align-items: center;
438
- gap: 0.5rem;
439
- color: #64748b;
440
- }
441
-
442
- :global(.theme-dark) .cc-mix-btn {
443
- background: rgba(30, 41, 59, 0.5);
444
- }
445
-
446
- .cc-mix-btn svg {
447
- width: 2rem;
448
- height: 2rem;
449
- }
450
-
451
- .cc-mix-btn span {
452
- font-size: 0.875rem;
453
- font-weight: 700;
454
- }
455
-
456
- .cc-mix-btn.cc-active {
457
- background: #f0fdf4;
458
- border-color: #22c55e;
459
- color: #166534;
460
- box-shadow: 0 10px 20px rgba(34, 197, 94, 0.1);
461
- transform: translateY(-2px);
462
- }
463
-
464
- :global(.theme-dark) .cc-mix-btn.cc-active {
465
- background: rgba(34, 197, 94, 0.1);
466
- color: #4ade80;
467
- }
468
-
469
- .cc-volume-control {
470
- display: flex;
471
- flex-direction: column;
472
- gap: 1.5rem;
473
- }
474
-
475
- .cc-mode-selector {
476
- display: flex;
477
- gap: 0.5rem;
478
- background: rgba(241, 245, 249, 0.8);
479
- padding: 0.4rem;
480
- border-radius: 1rem;
481
- align-self: flex-start;
482
- }
483
-
484
- :global(.theme-dark) .cc-mode-selector {
485
- background: rgba(30, 41, 59, 0.8);
486
- }
487
-
488
- .cc-mode-btn {
489
- padding: 0.6rem 1.25rem;
490
- border-radius: 0.75rem;
491
- border: none;
492
- background: transparent;
493
- color: #64748b;
494
- font-size: 0.8125rem;
495
- font-weight: 700;
496
- cursor: pointer;
497
- transition: all 0.2s ease;
498
- display: flex;
499
- align-items: center;
500
- gap: 0.5rem;
501
- }
502
-
503
- .cc-mode-btn svg {
504
- width: 1rem;
505
- height: 1rem;
506
- }
507
-
508
- .cc-mode-btn.cc-active {
509
- background: #fff;
510
- color: #1e293b;
511
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
512
- }
513
-
514
- :global(.theme-dark) .cc-mode-btn.cc-active {
515
- background: #1e293b;
516
- color: #fff;
517
- }
518
-
519
- .cc-dims-panel,
520
- .cc-direct-panel {
521
- display: none;
522
- }
523
-
524
- .cc-dims-panel.cc-active {
525
- display: flex;
526
- background: rgba(241, 245, 249, 0.5);
527
- padding: 1.5rem;
528
- border-radius: 1.5rem;
529
- flex-direction: column;
530
- gap: 1rem;
531
- border: 1px dashed #cbd5e1;
532
- }
533
-
534
- .cc-direct-panel.cc-active {
535
- display: flex;
536
- flex-direction: column;
537
- }
538
-
539
- :global(.theme-dark) .cc-dims-panel.cc-active {
540
- background: rgba(30, 41, 59, 0.3);
541
- border-color: #334155;
542
- }
543
-
544
- .cc-dim-inputs {
545
- display: grid;
546
- grid-template-columns: repeat(3, 1fr);
547
- gap: 1rem;
548
- }
549
-
550
- .cc-dim-field {
551
- display: flex;
552
- flex-direction: column;
553
- gap: 0.5rem;
554
- }
555
-
556
- .cc-dim-field label {
557
- font-size: 0.7rem;
558
- font-weight: 700;
559
- color: #94a3b8;
560
- }
561
-
562
- .cc-dim-input-wrap {
563
- position: relative;
564
- display: flex;
565
- align-items: center;
566
- }
567
-
568
- .cc-dim-input-wrap input {
569
- width: 100%;
570
- padding: 0.75rem;
571
- padding-right: 2.5rem;
572
- border-radius: 0.75rem;
573
- border: 2px solid #e2e8f0;
574
- background: #fff;
575
- font-size: 1rem;
576
- font-weight: 700;
577
- color: #1e293b;
578
- outline: none;
579
- }
580
-
581
- :global(.theme-dark) .cc-dim-input-wrap input {
582
- background: #0f172a;
583
- border-color: #1e293b;
584
- color: #fff;
585
- }
586
-
587
- .cc-dim-unit {
588
- position: absolute;
589
- right: 0.75rem;
590
- font-size: 0.7rem;
591
- font-weight: 800;
592
- color: #94a3b8;
593
- }
594
-
595
- .cc-input-header {
596
- margin-bottom: 1rem;
597
- }
598
-
599
- .cc-input-header label {
600
- font-size: 0.75rem;
601
- font-weight: 800;
602
- color: #94a3b8;
603
- text-transform: uppercase;
604
- letter-spacing: 0.1em;
605
- }
606
-
607
- .cc-vol-input-wrap {
608
- position: relative;
609
- display: flex;
610
- align-items: center;
611
- }
612
-
613
- .cc-vol-input-wrap input {
614
- width: 100%;
615
- padding: 1rem 1.5rem;
616
- padding-right: 4rem;
617
- border-radius: 1rem;
618
- border: 2px solid #e2e8f0;
619
- background: #fff;
620
- font-size: 1.5rem;
621
- font-weight: 800;
622
- color: #1e293b;
623
- outline: none;
624
- transition: all 0.2s ease;
625
- }
626
-
627
- :global(.theme-dark) .cc-vol-input-wrap input {
628
- background: #0f172a;
629
- border-color: #1e293b;
630
- color: #fff;
631
- }
632
-
633
- .cc-vol-input-wrap input:focus {
634
- border-color: #22c55e;
635
- box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.1);
636
- }
637
-
638
- .cc-unit-tag {
639
- position: absolute;
640
- right: 1.5rem;
641
- font-weight: 900;
642
- color: #94a3b8;
643
- font-size: 1.25rem;
644
- }
645
-
646
- .cc-binder-selector {
647
- display: flex;
648
- justify-content: center;
649
- gap: 1rem;
650
- margin-bottom: 0.5rem;
651
- }
652
-
653
- .cc-binder-option {
654
- display: flex;
655
- align-items: center;
656
- gap: 0.75rem;
657
- cursor: pointer;
658
- padding: 0.6rem 1rem;
659
- border-radius: 1rem;
660
- background: rgba(241, 245, 249, 0.5);
661
- border: 2px solid transparent;
662
- transition: all 0.2s ease;
663
- }
664
-
665
- :global(.theme-dark) .cc-binder-option {
666
- background: rgba(30, 41, 59, 0.5);
667
- }
668
-
669
- .cc-binder-option.cc-active {
670
- background: #fff;
671
- border-color: #10b981;
672
- box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05);
673
- }
674
-
675
- :global(.theme-dark) .cc-binder-option.cc-active {
676
- background: #1e293b;
677
- border-color: #10b981;
678
- }
679
-
680
- .cc-binder-circle {
681
- width: 1rem;
682
- height: 1rem;
683
- border-radius: 50%;
684
- border: 2px solid #cbd5e1;
685
- display: flex;
686
- align-items: center;
687
- justify-content: center;
688
- transition: all 0.2s ease;
689
- }
690
-
691
- .cc-binder-option.cc-active .cc-binder-circle {
692
- border-color: #10b981;
693
- background: #10b981;
694
- }
695
-
696
- .cc-binder-inner {
697
- width: 0.4rem;
698
- height: 0.4rem;
699
- background: #fff;
700
- border-radius: 50%;
701
- transform: scale(0);
702
- transition: transform 0.2s ease;
703
- }
704
-
705
- .cc-binder-option.cc-active .cc-binder-inner {
706
- transform: scale(1);
707
- }
708
-
709
- .cc-binder-label {
710
- font-size: 0.8125rem;
711
- font-weight: 700;
712
- color: #64748b;
713
- }
714
-
715
- .cc-binder-option.cc-active .cc-binder-label {
716
- color: #1e293b;
717
- }
718
-
719
- :global(.theme-dark) .cc-binder-option.cc-active .cc-binder-label {
720
- color: #fff;
721
- }
722
-
723
- .cc-summary {
724
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
725
- padding: 2rem;
726
- border-radius: 1.5rem;
727
- display: flex;
728
- flex-direction: column;
729
- align-items: center;
730
- justify-content: center;
731
- color: #fff;
732
- text-align: center;
733
- box-shadow: 0 15px 30px rgba(16, 185, 129, 0.2);
734
- margin-top: 0.5rem;
735
- position: relative;
736
- overflow: hidden;
737
- }
738
-
739
- .cc-summary::before {
740
- content: '';
741
- position: absolute;
742
- top: -50%;
743
- left: -50%;
744
- width: 200%;
745
- height: 200%;
746
- background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%);
747
- pointer-events: none;
748
- }
749
-
750
- .cc-summary-label {
751
- font-size: 0.75rem;
752
- font-weight: 800;
753
- text-transform: uppercase;
754
- letter-spacing: 0.05em;
755
- opacity: 0.9;
756
- margin-bottom: 0.25rem;
757
- }
758
-
759
- .cc-summary-value-wrap {
760
- display: flex;
761
- align-items: baseline;
762
- gap: 0.5rem;
763
- }
764
-
765
- .cc-summary-value {
766
- font-size: 3rem;
767
- font-weight: 900;
768
- line-height: 1;
769
- }
770
-
771
- .cc-summary-unit {
772
- font-size: 1.25rem;
773
- font-weight: 700;
774
- opacity: 0.8;
775
- }
776
-
777
- .cc-results-grid {
778
- display: grid;
779
- grid-template-columns: repeat(3, 1fr);
780
- gap: 1.5rem;
781
- }
782
-
783
- .cc-result-card {
784
- background: #fff;
785
- padding: 1.5rem;
786
- border-radius: 1.5rem;
787
- border: 1px solid #e2e8f0;
788
- display: flex;
789
- flex-direction: column;
790
- align-items: center;
791
- gap: 0.75rem;
792
- text-align: center;
793
- transition: all 0.3s ease;
794
- }
795
-
796
- :global(.theme-dark) .cc-result-card {
797
- background: #1e293b;
798
- border-color: #334155;
799
- }
800
-
801
- .cc-result-card svg {
802
- width: 2rem;
803
- height: 2rem;
804
- color: #22c55e;
805
- }
806
-
807
- .cc-result-info {
808
- display: flex;
809
- flex-direction: column;
810
- }
811
-
812
- .cc-result-value {
813
- font-size: 2rem;
814
- font-weight: 900;
815
- color: #1e293b;
816
- line-height: 1;
817
- }
818
-
819
- :global(.theme-dark) .cc-result-value {
820
- color: #fff;
821
- }
822
-
823
- .cc-result-unit {
824
- font-size: 0.75rem;
825
- font-weight: 800;
826
- color: #64748b;
827
- text-transform: uppercase;
828
- margin-top: 0.25rem;
829
- }
830
-
831
- .cc-result-label {
832
- font-size: 0.875rem;
833
- font-weight: 600;
834
- color: #475569;
835
- }
836
-
837
- :global(.theme-dark) .cc-result-label {
838
- color: #94a3b8;
839
- }
840
-
841
- .cc-proportions-banner {
842
- background: #f8fafc;
843
- border-radius: 1.25rem;
844
- padding: 1.25rem;
845
- display: flex;
846
- flex-direction: column;
847
- gap: 0.75rem;
848
- }
849
-
850
- :global(.theme-dark) .cc-proportions-banner {
851
- background: rgba(30, 41, 59, 0.3);
852
- }
853
-
854
- .cc-proportion-header {
855
- font-size: 0.75rem;
856
- font-weight: 800;
857
- color: #64748b;
858
- text-transform: uppercase;
859
- display: flex;
860
- align-items: center;
861
- gap: 0.5rem;
862
- }
863
-
864
- .cc-proportion-header svg {
865
- width: 1rem;
866
- height: 1rem;
867
- }
868
-
869
- .cc-proportion-bar {
870
- height: 1.5rem;
871
- background: #e2e8f0;
872
- border-radius: 0.5rem;
873
- display: flex;
874
- overflow: hidden;
875
- }
876
-
877
- :global(.theme-dark) .cc-proportion-bar {
878
- background: #1e293b;
879
- }
880
-
881
- .cc-bar-segment {
882
- height: 100%;
883
- transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
884
- }
885
-
886
- .cc-seg-cement {
887
- background: #64748b;
888
- }
889
-
890
- .cc-seg-sand {
891
- background: #fbbf24;
892
- }
893
-
894
- .cc-seg-gravel {
895
- background: #94a3b8;
896
- }
897
-
898
- .cc-proportion-labels {
899
- display: flex;
900
- justify-content: center;
901
- gap: 1.5rem;
902
- }
903
-
904
- .cc-prop-label {
905
- display: flex;
906
- align-items: center;
907
- gap: 0.5rem;
908
- font-size: 0.75rem;
909
- font-weight: 600;
910
- color: #475569;
911
- }
912
-
913
- :global(.theme-dark) .cc-prop-label {
914
- color: #94a3b8;
915
- }
916
-
917
- .cc-dot {
918
- width: 0.5rem;
919
- height: 0.5rem;
920
- border-radius: 50%;
921
- }
922
-
923
- .cc-info-banner {
924
- display: flex;
925
- gap: 1rem;
926
- padding: 1.25rem;
927
- background: #f0fdf4;
928
- border-radius: 1.25rem;
929
- color: #166534;
930
- font-size: 0.875rem;
931
- line-height: 1.5;
932
- }
933
-
934
- :global(.theme-dark) .cc-info-banner {
935
- background: rgba(34, 197, 94, 0.1);
936
- color: #4ade80;
937
- }
938
-
939
- .cc-info-banner svg {
940
- width: 1.5rem;
941
- height: 1.5rem;
942
- flex-shrink: 0;
943
- }
944
-
945
- .cc-info-banner p {
946
- margin: 0;
947
- }
948
-
949
- .cc-price-card {
950
- background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
951
- padding: 2.5rem;
952
- border-radius: 2rem;
953
- display: flex;
954
- flex-direction: column;
955
- align-items: center;
956
- justify-content: center;
957
- color: #fff;
958
- text-align: center;
959
- box-shadow: 0 20px 40px rgba(59, 130, 246, 0.2);
960
- margin-top: 1.5rem;
961
- position: relative;
962
- overflow: hidden;
963
- }
964
-
965
- .cc-price-card::before {
966
- content: '';
967
- position: absolute;
968
- top: -50%;
969
- left: -50%;
970
- width: 200%;
971
- height: 200%;
972
- background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, transparent 70%);
973
- pointer-events: none;
974
- }
975
-
976
- .cc-price-label {
977
- font-size: 0.875rem;
978
- font-weight: 800;
979
- text-transform: uppercase;
980
- letter-spacing: 0.1em;
981
- opacity: 0.9;
982
- margin-bottom: 0.5rem;
983
- }
984
-
985
- .cc-price-value-wrap {
986
- display: flex;
987
- align-items: baseline;
988
- gap: 0.25rem;
989
- }
990
-
991
- .cc-price-value {
992
- font-size: 4rem;
993
- font-weight: 900;
994
- line-height: 1;
995
- }
996
-
997
- .cc-price-unit {
998
- font-size: 1.5rem;
999
- font-weight: 800;
1000
- opacity: 0.9;
1001
- }
1002
-
1003
- .cc-price-inputs-grid {
1004
- display: grid;
1005
- grid-template-columns: repeat(2, 1fr);
1006
- gap: 1.25rem;
1007
- margin-top: 2rem;
1008
- width: 100%;
1009
- }
1010
-
1011
- .cc-price-input-field {
1012
- display: flex;
1013
- flex-direction: column;
1014
- gap: 0.5rem;
1015
- text-align: left;
1016
- }
1017
-
1018
- .cc-price-input-field label {
1019
- font-size: 0.7rem;
1020
- font-weight: 800;
1021
- text-transform: uppercase;
1022
- opacity: 0.8;
1023
- }
1024
-
1025
- .cc-editable-price-wrap {
1026
- position: relative;
1027
- display: flex;
1028
- align-items: center;
1029
- }
1030
-
1031
- .cc-editable-price {
1032
- width: 100%;
1033
- background: rgba(255, 255, 255, 0.15);
1034
- border: 1px solid rgba(255, 255, 255, 0.3);
1035
- border-radius: 0.75rem;
1036
- padding: 0.6rem 0.75rem;
1037
- padding-right: 1.5rem;
1038
- color: #fff;
1039
- font-weight: 800;
1040
- font-size: 1rem;
1041
- outline: none;
1042
- transition: all 0.2s ease;
1043
- }
1044
-
1045
- .cc-editable-price:focus {
1046
- background: rgba(255, 255, 255, 0.25);
1047
- border-color: #fff;
1048
- }
1049
-
1050
- .cc-editable-unit {
1051
- position: absolute;
1052
- right: 0.75rem;
1053
- font-size: 0.75rem;
1054
- font-weight: 800;
1055
- opacity: 0.7;
1056
- }
1057
-
1058
- .cc-price-disclaimer {
1059
- margin-top: 1.5rem;
1060
- font-size: 0.7rem;
1061
- opacity: 0.6;
1062
- font-style: italic;
1063
- }
1064
-
1065
- @media (max-width: 640px) {
1066
- .cc-results-grid {
1067
- grid-template-columns: 1fr;
1068
- }
1069
-
1070
- .cc-mix-selector {
1071
- grid-template-columns: 1fr;
1072
- }
1073
-
1074
- .cc-card {
1075
- padding: 1.5rem;
1076
- }
1077
-
1078
- .cc-price-inputs-grid {
1079
- grid-template-columns: 1fr;
1080
- }
1081
- }
1082
-
1083
- @media (max-width: 480px) {
1084
- .cc-binder-selector {
1085
- flex-direction: column;
1086
- align-items: stretch;
1087
- }
1088
- }
1089
- </style>