@jjlmoya/utils-diy 1.9.0 → 1.11.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
@@ -315,574 +315,3 @@ const t = (ui ?? {}) as EpoxyCalculatorUI;
315
315
  init();
316
316
  </script>
317
317
 
318
- <style>
319
- .ec-root {
320
- width: 100%;
321
- max-width: 72rem;
322
- margin: 0 auto;
323
- }
324
-
325
- .ec-grid {
326
- display: grid;
327
- grid-template-columns: 1fr;
328
- gap: 2rem;
329
- }
330
-
331
- @media (min-width: 1024px) {
332
- .ec-grid {
333
- grid-template-columns: 7fr 5fr;
334
- }
335
- }
336
-
337
- .ec-panel-left {
338
- background: rgba(255, 255, 255, 0.7);
339
- backdrop-filter: blur(12px);
340
- border: 1px solid rgba(255, 255, 255, 0.4);
341
- border-radius: 1.5rem;
342
- padding: 1.5rem;
343
- box-shadow: 0 8px 32px rgba(120, 60, 0, 0.06);
344
- display: flex;
345
- flex-direction: column;
346
- gap: 1.5rem;
347
- }
348
-
349
- .ec-tabs {
350
- display: flex;
351
- gap: 0.375rem;
352
- background: rgba(241, 245, 249, 0.5);
353
- padding: 0.375rem;
354
- border-radius: 1rem;
355
- }
356
-
357
- .ec-tab-btn {
358
- flex: 1;
359
- padding: 0.625rem 1rem;
360
- border-radius: 0.75rem;
361
- border: none;
362
- background: transparent;
363
- cursor: pointer;
364
- font-size: 0.875rem;
365
- font-weight: 600;
366
- color: #64748b;
367
- display: flex;
368
- align-items: center;
369
- justify-content: center;
370
- gap: 0.5rem;
371
- transition: all 0.2s;
372
- }
373
-
374
- .ec-tab-btn[data-ec-active="true"] {
375
- background: #1e293b;
376
- color: #fff;
377
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
378
- }
379
-
380
- .ec-tab-icon {
381
- font-size: 1.25rem;
382
- }
383
-
384
- .ec-inputs-grid {
385
- display: grid;
386
- grid-template-columns: 1fr 1fr;
387
- gap: 1.5rem;
388
- }
389
-
390
- .ec-input-group {
391
- display: flex;
392
- flex-direction: column;
393
- gap: 0.5rem;
394
- }
395
-
396
- .ec-label {
397
- font-size: 0.7rem;
398
- font-weight: 700;
399
- text-transform: uppercase;
400
- letter-spacing: 0.08em;
401
- color: #94a3b8;
402
- display: block;
403
- }
404
-
405
- .ec-input {
406
- width: 100%;
407
- background: #fff;
408
- border: 1px solid #e2e8f0;
409
- border-radius: 0.75rem;
410
- padding: 0.75rem 1rem;
411
- color: #334155;
412
- font-size: 1rem;
413
- outline: none;
414
- transition: border-color 0.2s, box-shadow 0.2s;
415
- box-sizing: border-box;
416
- }
417
-
418
- .ec-input:focus {
419
- border-color: #fbbf24;
420
- box-shadow: 0 0 0 3px rgba(251, 191, 36, 0.15);
421
- }
422
-
423
- .ec-input-sm {
424
- padding: 0.5rem 0.75rem;
425
- font-size: 0.875rem;
426
- }
427
-
428
- .ec-hidden {
429
- display: none;
430
- }
431
-
432
- .ec-divider {
433
- height: 1px;
434
- background: #f1f5f9;
435
- }
436
-
437
- .ec-ratio-section {
438
- display: flex;
439
- flex-direction: column;
440
- gap: 0.75rem;
441
- }
442
-
443
- .ec-ratio-header {
444
- display: flex;
445
- justify-content: space-between;
446
- align-items: center;
447
- }
448
-
449
- .ec-ratio-badge {
450
- font-size: 0.75rem;
451
- font-weight: 700;
452
- color: #d97706;
453
- background: #fef3c7;
454
- padding: 0.2rem 0.6rem;
455
- border-radius: 0.4rem;
456
- }
457
-
458
- .ec-slider-wrapper {
459
- display: flex;
460
- flex-direction: column;
461
- gap: 0.5rem;
462
- }
463
-
464
- .ec-slider-wrapper.ec-disabled {
465
- opacity: 0.4;
466
- pointer-events: none;
467
- }
468
-
469
- .ec-slider {
470
- width: 100%;
471
- height: 8px;
472
- background: #e2e8f0;
473
- border-radius: 999px;
474
- appearance: none;
475
- cursor: pointer;
476
- accent-color: #f59e0b;
477
- outline: none;
478
- }
479
-
480
- .ec-slider::-webkit-slider-thumb {
481
- appearance: none;
482
- width: 18px;
483
- height: 18px;
484
- background: #f59e0b;
485
- border-radius: 50%;
486
- cursor: pointer;
487
- border: 3px solid #fff;
488
- box-shadow: 0 0 6px rgba(245, 158, 11, 0.4);
489
- }
490
-
491
- .ec-ratio-marks {
492
- display: flex;
493
- justify-content: space-between;
494
- font-size: 0.625rem;
495
- color: #94a3b8;
496
- }
497
-
498
- .ec-custom-check-row {
499
- display: flex;
500
- align-items: center;
501
- gap: 0.5rem;
502
- font-size: 0.875rem;
503
- color: #475569;
504
- cursor: pointer;
505
- }
506
-
507
- .ec-checkbox {
508
- width: 16px;
509
- height: 16px;
510
- accent-color: #f59e0b;
511
- cursor: pointer;
512
- flex-shrink: 0;
513
- }
514
-
515
- .ec-custom-grid {
516
- display: grid;
517
- grid-template-columns: 1fr 1fr;
518
- gap: 1rem;
519
- }
520
-
521
- .ec-waste-row {
522
- display: flex;
523
- align-items: center;
524
- justify-content: space-between;
525
- background: #f8fafc;
526
- padding: 1rem;
527
- border-radius: 0.75rem;
528
- border: 1px solid #f1f5f9;
529
- }
530
-
531
- .ec-waste-info {
532
- display: flex;
533
- align-items: center;
534
- gap: 0.75rem;
535
- }
536
-
537
- .ec-waste-icon {
538
- padding: 0.5rem;
539
- background: #fff;
540
- border-radius: 0.5rem;
541
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
542
- color: #f59e0b;
543
- font-size: 1.25rem;
544
- display: flex;
545
- }
546
-
547
- .ec-waste-title {
548
- font-size: 0.875rem;
549
- font-weight: 600;
550
- color: #334155;
551
- margin: 0;
552
- }
553
-
554
- .ec-waste-desc {
555
- font-size: 0.75rem;
556
- color: #94a3b8;
557
- margin: 0;
558
- }
559
-
560
- .ec-toggle {
561
- position: relative;
562
- display: inline-flex;
563
- align-items: center;
564
- cursor: pointer;
565
- flex-shrink: 0;
566
- }
567
-
568
- .ec-toggle-input {
569
- position: absolute;
570
- opacity: 0;
571
- width: 0;
572
- height: 0;
573
- }
574
-
575
- .ec-toggle-track {
576
- width: 44px;
577
- height: 24px;
578
- background: #e2e8f0;
579
- border-radius: 12px;
580
- transition: background 0.2s;
581
- position: relative;
582
- }
583
-
584
- .ec-toggle-track::after {
585
- content: '';
586
- position: absolute;
587
- top: 2px;
588
- left: 2px;
589
- width: 20px;
590
- height: 20px;
591
- background: #fff;
592
- border-radius: 50%;
593
- transition: transform 0.2s;
594
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
595
- }
596
-
597
- .ec-toggle-input:checked ~ .ec-toggle-track {
598
- background: #f59e0b;
599
- }
600
-
601
- .ec-toggle-input:checked ~ .ec-toggle-track::after {
602
- transform: translateX(20px);
603
- }
604
-
605
- .ec-panel-right {
606
- display: flex;
607
- flex-direction: column;
608
- gap: 1.5rem;
609
- }
610
-
611
- .ec-result-card {
612
- background: linear-gradient(135deg, #f59e0b, #ea580c);
613
- border-radius: 1.5rem;
614
- padding: 0.25rem;
615
- box-shadow: 0 12px 40px rgba(234, 88, 12, 0.25);
616
- position: relative;
617
- overflow: hidden;
618
- color: #fff;
619
- }
620
-
621
- .ec-result-blob {
622
- position: absolute;
623
- top: 0;
624
- right: 0;
625
- width: 12rem;
626
- height: 12rem;
627
- background: rgba(255, 255, 255, 0.1);
628
- border-radius: 50%;
629
- filter: blur(40px);
630
- transform: translate(30%, -30%);
631
- pointer-events: none;
632
- }
633
-
634
- .ec-result-inner {
635
- background: rgba(255, 255, 255, 0.1);
636
- backdrop-filter: blur(4px);
637
- border-radius: 1.25rem;
638
- padding: 1.5rem;
639
- display: flex;
640
- flex-direction: column;
641
- gap: 2rem;
642
- position: relative;
643
- z-index: 1;
644
- }
645
-
646
- .ec-result-label {
647
- font-size: 0.75rem;
648
- font-weight: 700;
649
- text-transform: uppercase;
650
- letter-spacing: 0.08em;
651
- color: rgba(254, 243, 199, 0.9);
652
- margin: 0 0 0.25rem;
653
- }
654
-
655
- .ec-result-total {
656
- display: flex;
657
- align-items: baseline;
658
- gap: 0.5rem;
659
- }
660
-
661
- .ec-total-number {
662
- font-size: 3rem;
663
- font-weight: 700;
664
- line-height: 1;
665
- }
666
-
667
- .ec-total-unit {
668
- font-size: 1.25rem;
669
- color: rgba(254, 243, 199, 0.8);
670
- }
671
-
672
- .ec-parts-grid {
673
- display: grid;
674
- grid-template-columns: 1fr 1fr;
675
- gap: 1rem;
676
- }
677
-
678
- .ec-part-card {
679
- border-radius: 0.75rem;
680
- padding: 0.75rem;
681
- backdrop-filter: blur(8px);
682
- }
683
-
684
- .ec-part-a {
685
- background: rgba(0, 0, 0, 0.2);
686
- }
687
-
688
- .ec-part-b {
689
- background: rgba(255, 255, 255, 0.2);
690
- }
691
-
692
- .ec-part-label {
693
- font-size: 0.625rem;
694
- font-weight: 700;
695
- text-transform: uppercase;
696
- letter-spacing: 0.06em;
697
- color: rgba(254, 243, 199, 0.9);
698
- margin: 0 0 0.25rem;
699
- }
700
-
701
- .ec-part-value {
702
- font-size: 1.5rem;
703
- font-weight: 700;
704
- margin: 0;
705
- }
706
-
707
- .ec-viz-card {
708
- background: #fff;
709
- border-radius: 1.5rem;
710
- padding: 1.5rem;
711
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
712
- border: 1px solid #f1f5f9;
713
- display: flex;
714
- flex-direction: column;
715
- align-items: center;
716
- justify-content: center;
717
- min-height: 280px;
718
- position: relative;
719
- overflow: hidden;
720
- }
721
-
722
- .ec-viz-label {
723
- position: absolute;
724
- top: 1.5rem;
725
- left: 1.5rem;
726
- font-size: 0.625rem;
727
- font-weight: 700;
728
- text-transform: uppercase;
729
- letter-spacing: 0.1em;
730
- color: #cbd5e1;
731
- margin: 0;
732
- }
733
-
734
- .ec-visual-stage {
735
- display: flex;
736
- flex-direction: column;
737
- align-items: center;
738
- gap: 2.5rem;
739
- perspective: 1000px;
740
- }
741
-
742
- .ec-visual-shape {
743
- width: 8rem;
744
- height: 8rem;
745
- border: 4px solid rgba(30, 41, 59, 0.15);
746
- background: #f8fafc;
747
- overflow: hidden;
748
- position: relative;
749
- transition: all 0.5s ease;
750
- }
751
-
752
- .ec-shape-rect {
753
- border-radius: 4px;
754
- height: 5rem;
755
- transform: rotateX(10deg) rotateY(10deg);
756
- box-shadow: 10px 10px 30px rgba(0, 0, 0, 0.08);
757
- }
758
-
759
- .ec-shape-cylinder {
760
- border-radius: 4px 4px 20px 20px;
761
- width: 6rem;
762
- transform: rotateX(5deg);
763
- }
764
-
765
- .ec-shape-sphere {
766
- border-radius: 50%;
767
- transform: scale(1.1);
768
- box-shadow: inset -10px -10px 40px rgba(0, 0, 0, 0.08);
769
- }
770
-
771
- .ec-liquid-fill {
772
- position: absolute;
773
- bottom: 0;
774
- left: 0;
775
- width: 100%;
776
- height: 0;
777
- background: rgba(251, 191, 36, 0.8);
778
- transition: height 0.7s ease-in-out;
779
- box-shadow: 0 0 20px rgba(251, 191, 36, 0.4);
780
- }
781
-
782
- .ec-liquid-shimmer {
783
- position: absolute;
784
- top: 0;
785
- left: 0;
786
- width: 100%;
787
- height: 8px;
788
- background: rgba(255, 255, 255, 0.3);
789
- animation: ec-pulse 2s ease-in-out infinite;
790
- }
791
-
792
- .ec-bubble {
793
- position: absolute;
794
- background: rgba(255, 255, 255, 0.4);
795
- border-radius: 50%;
796
- }
797
-
798
- .ec-bubble-1 {
799
- bottom: 8px;
800
- left: 8px;
801
- width: 8px;
802
- height: 8px;
803
- animation: ec-bounce 1s ease-in-out infinite;
804
- }
805
-
806
- .ec-bubble-2 {
807
- bottom: 20px;
808
- right: 16px;
809
- width: 4px;
810
- height: 4px;
811
- animation: ec-pulse 1.5s ease-in-out infinite;
812
- }
813
-
814
- .ec-shape-label {
815
- font-size: 0.75rem;
816
- color: #94a3b8;
817
- text-align: center;
818
- }
819
-
820
- @keyframes ec-pulse {
821
- 0%, 100% { opacity: 1; }
822
- 50% { opacity: 0.4; }
823
- }
824
-
825
- @keyframes ec-bounce {
826
- 0%, 100% { transform: translateY(0); }
827
- 50% { transform: translateY(-4px); }
828
- }
829
-
830
- :global(.theme-dark) .ec-panel-left {
831
- background: rgba(15, 23, 42, 0.8);
832
- border-color: rgba(51, 65, 85, 0.6);
833
- }
834
-
835
- :global(.theme-dark) .ec-tabs {
836
- background: rgba(30, 41, 59, 0.6);
837
- }
838
-
839
- :global(.theme-dark) .ec-tab-btn {
840
- color: #94a3b8;
841
- }
842
-
843
- :global(.theme-dark) .ec-tab-btn[data-ec-active="true"] {
844
- background: #f59e0b;
845
- color: #0f172a;
846
- }
847
-
848
- :global(.theme-dark) .ec-input {
849
- background: #1e293b;
850
- border-color: #334155;
851
- color: #e2e8f0;
852
- }
853
-
854
- :global(.theme-dark) .ec-input:focus {
855
- border-color: #f59e0b;
856
- }
857
-
858
- :global(.theme-dark) .ec-slider {
859
- background: #334155;
860
- }
861
-
862
- :global(.theme-dark) .ec-custom-check-row {
863
- color: #94a3b8;
864
- }
865
-
866
- :global(.theme-dark) .ec-waste-row {
867
- background: rgba(30, 41, 59, 0.6);
868
- border-color: rgba(51, 65, 85, 0.4);
869
- }
870
-
871
- :global(.theme-dark) .ec-waste-icon {
872
- background: #1e293b;
873
- }
874
-
875
- :global(.theme-dark) .ec-waste-title {
876
- color: #e2e8f0;
877
- }
878
-
879
- :global(.theme-dark) .ec-viz-card {
880
- background: #1e293b;
881
- border-color: #334155;
882
- }
883
-
884
- :global(.theme-dark) .ec-visual-shape {
885
- background: #0f172a;
886
- border-color: rgba(148, 163, 184, 0.15);
887
- }
888
- </style>