@jjlmoya/utils-diy 1.8.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 (56) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/entries.ts +31 -0
  4. package/src/tool/balusterCalculator/baluster-calculator.css +320 -0
  5. package/src/tool/balusterCalculator/component.astro +0 -322
  6. package/src/tool/balusterCalculator/entry.ts +29 -0
  7. package/src/tool/balusterCalculator/index.ts +2 -31
  8. package/src/tool/clayCalculator/clay-shrinkage-calculator.css +530 -0
  9. package/src/tool/clayCalculator/component.astro +0 -532
  10. package/src/tool/clayCalculator/entry.ts +29 -0
  11. package/src/tool/clayCalculator/index.ts +2 -31
  12. package/src/tool/concreteCalculator/component.astro +0 -705
  13. package/src/tool/concreteCalculator/concrete-mortar-calculator.css +703 -0
  14. package/src/tool/concreteCalculator/entry.ts +25 -0
  15. package/src/tool/concreteCalculator/index.ts +2 -26
  16. package/src/tool/cutOptimizer/component.astro +0 -477
  17. package/src/tool/cutOptimizer/cut-optimizer.css +475 -0
  18. package/src/tool/cutOptimizer/entry.ts +25 -0
  19. package/src/tool/cutOptimizer/index.ts +2 -26
  20. package/src/tool/drillCalculator/component.astro +0 -815
  21. package/src/tool/drillCalculator/drill-rpm-calculator.css +813 -0
  22. package/src/tool/drillCalculator/entry.ts +25 -0
  23. package/src/tool/drillCalculator/index.ts +2 -26
  24. package/src/tool/drillSharpener/component.astro +0 -393
  25. package/src/tool/drillSharpener/drill-sharpening-master.css +391 -0
  26. package/src/tool/drillSharpener/entry.ts +25 -0
  27. package/src/tool/drillSharpener/index.ts +2 -27
  28. package/src/tool/epoxyCalculator/component.astro +0 -571
  29. package/src/tool/epoxyCalculator/entry.ts +29 -0
  30. package/src/tool/epoxyCalculator/epoxy-resin-calculator.css +569 -0
  31. package/src/tool/epoxyCalculator/index.ts +2 -31
  32. package/src/tool/furnitureFit/component.astro +0 -345
  33. package/src/tool/furnitureFit/entry.ts +25 -0
  34. package/src/tool/furnitureFit/furniture-fit-calculator.css +343 -0
  35. package/src/tool/furnitureFit/index.ts +2 -26
  36. package/src/tool/mortarCalculator/component.astro +0 -620
  37. package/src/tool/mortarCalculator/entry.ts +25 -0
  38. package/src/tool/mortarCalculator/index.ts +2 -26
  39. package/src/tool/mortarCalculator/lime-mortar-calculator.css +618 -0
  40. package/src/tool/passepartoutCalculator/component.astro +0 -518
  41. package/src/tool/passepartoutCalculator/entry.ts +25 -0
  42. package/src/tool/passepartoutCalculator/index.ts +2 -26
  43. package/src/tool/passepartoutCalculator/passepartout-calculator.css +516 -0
  44. package/src/tool/stairCalculator/component.astro +0 -480
  45. package/src/tool/stairCalculator/entry.ts +25 -0
  46. package/src/tool/stairCalculator/index.ts +2 -27
  47. package/src/tool/stairCalculator/stair-calculator.css +478 -0
  48. package/src/tool/thermalExpansionCalculator/component.astro +0 -490
  49. package/src/tool/thermalExpansionCalculator/entry.ts +25 -0
  50. package/src/tool/thermalExpansionCalculator/index.ts +2 -26
  51. package/src/tool/thermalExpansionCalculator/thermal-expansion-calculator.css +488 -0
  52. package/src/tool/voltageDropCalculator/component.astro +0 -729
  53. package/src/tool/voltageDropCalculator/entry.ts +25 -0
  54. package/src/tool/voltageDropCalculator/index.ts +2 -26
  55. package/src/tool/voltageDropCalculator/voltage-drop-calculator.css +727 -0
  56. package/src/tools.ts +1 -1
@@ -1,29 +1,5 @@
1
- import type { DiyToolEntry, ToolDefinition } from '../../types';
2
- import type { ConcreteCalculatorUI } from './ui';
3
-
4
-
5
- export const concreteCalculator: DiyToolEntry<ConcreteCalculatorUI> = {
6
- id: 'concrete-calculator',
7
- icons: { bg: 'mdi:bucket-outline', fg: 'mdi:shovel' },
8
- i18n: {
9
- de: () => import('./i18n/de').then((m) => m.content),
10
- en: () => import('./i18n/en').then((m) => m.content),
11
- es: () => import('./i18n/es').then((m) => m.content),
12
- fr: () => import('./i18n/fr').then((m) => m.content),
13
- id: () => import('./i18n/id').then((m) => m.content),
14
- it: () => import('./i18n/it').then((m) => m.content),
15
- ja: () => import('./i18n/ja').then((m) => m.content),
16
- ko: () => import('./i18n/ko').then((m) => m.content),
17
- nl: () => import('./i18n/nl').then((m) => m.content),
18
- pl: () => import('./i18n/pl').then((m) => m.content),
19
- pt: () => import('./i18n/pt').then((m) => m.content),
20
- ru: () => import('./i18n/ru').then((m) => m.content),
21
- sv: () => import('./i18n/sv').then((m) => m.content),
22
- tr: () => import('./i18n/tr').then((m) => m.content),
23
- zh: () => import('./i18n/zh').then((m) => m.content),
24
- },
25
- };
26
-
1
+ import { concreteCalculator } from './entry';
2
+ export * from './entry';
27
3
  export const CONCRETE_CALCULATOR_TOOL: ToolDefinition = {
28
4
  entry: concreteCalculator,
29
5
  Component: () => import('./component.astro'),
@@ -346,480 +346,3 @@ const t = (ui ?? {}) as CutOptimizerUI;
346
346
  document.querySelectorAll('[data-co-root]').forEach(coInit);
347
347
  </script>
348
348
 
349
- <style>
350
- .co-root {
351
- max-width: 1200px;
352
- margin: 0 auto;
353
- user-select: none;
354
- }
355
-
356
- .co-hidden {
357
- display: none;
358
- }
359
-
360
- .co-grid {
361
- display: grid;
362
- grid-template-columns: 1fr 2fr;
363
- gap: 2rem;
364
- }
365
-
366
- .co-sidebar {
367
- display: flex;
368
- flex-direction: column;
369
- gap: 1.5rem;
370
- }
371
-
372
- .co-main {
373
- display: flex;
374
- flex-direction: column;
375
- gap: 1.5rem;
376
- }
377
-
378
- .co-card {
379
- background: #fff;
380
- border-radius: 0.75rem;
381
- padding: 1.5rem;
382
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
383
- border: 1px solid #f1f5f9;
384
- }
385
-
386
- :global(.theme-dark) .co-card {
387
- background: #1e293b;
388
- border-color: #334155;
389
- }
390
-
391
- .co-card-title {
392
- font-size: 1rem;
393
- font-weight: 700;
394
- color: #1e293b;
395
- display: flex;
396
- align-items: center;
397
- gap: 0.5rem;
398
- margin: 0 0 1rem;
399
- }
400
-
401
- :global(.theme-dark) .co-card-title {
402
- color: #fff;
403
- }
404
-
405
- .co-card-title svg {
406
- width: 1.25rem;
407
- height: 1.25rem;
408
- color: #94a3b8;
409
- }
410
-
411
- .co-card-title-row {
412
- display: flex;
413
- align-items: center;
414
- justify-content: space-between;
415
- margin-bottom: 1rem;
416
- }
417
-
418
- .co-card-title-row .co-card-title {
419
- margin-bottom: 0;
420
- }
421
-
422
- .co-mode-toggle {
423
- display: flex;
424
- gap: 0;
425
- background: #f1f5f9;
426
- padding: 0.375rem;
427
- border-radius: 0.625rem;
428
- margin-bottom: 1.5rem;
429
- }
430
-
431
- :global(.theme-dark) .co-mode-toggle {
432
- background: rgba(30, 41, 59, 0.8);
433
- }
434
-
435
- .co-mode-btn {
436
- flex: 1;
437
- padding: 0.375rem 0;
438
- font-size: 0.8125rem;
439
- font-weight: 700;
440
- border-radius: 0.375rem;
441
- border: none;
442
- background: transparent;
443
- color: #6b7280;
444
- cursor: pointer;
445
- transition: all 0.15s ease;
446
- }
447
-
448
- .co-mode-btn.co-mode-active {
449
- background: #f97316;
450
- color: #fff;
451
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
452
- }
453
-
454
- :global(.theme-dark) .co-mode-btn {
455
- color: #94a3b8;
456
- }
457
-
458
- :global(.theme-dark) .co-mode-btn.co-mode-active {
459
- color: #fff;
460
- }
461
-
462
- .co-fields {
463
- display: flex;
464
- flex-direction: column;
465
- gap: 1rem;
466
- }
467
-
468
- .co-field {
469
- display: flex;
470
- flex-direction: column;
471
- gap: 0.25rem;
472
- }
473
-
474
- .co-field-label {
475
- font-size: 0.7rem;
476
- font-weight: 600;
477
- color: #94a3b8;
478
- text-transform: uppercase;
479
- letter-spacing: 0.05em;
480
- }
481
-
482
- .co-input {
483
- width: 100%;
484
- background: #f8fafc;
485
- border: 1px solid #e2e8f0;
486
- border-radius: 0.5rem;
487
- padding: 0.75rem 1rem;
488
- font-weight: 700;
489
- color: #1e293b;
490
- outline: none;
491
- transition: border-color 0.15s ease;
492
- box-sizing: border-box;
493
- }
494
-
495
- .co-input:focus {
496
- border-color: #f97316;
497
- box-shadow: 0 0 0 3px rgba(249, 115, 22, 0.1);
498
- }
499
-
500
- :global(.theme-dark) .co-input {
501
- background: #0f172a;
502
- border-color: #334155;
503
- color: #fff;
504
- }
505
-
506
- .co-btn-add {
507
- padding: 0.5rem;
508
- background: #fff7ed;
509
- color: #ea580c;
510
- border: none;
511
- border-radius: 0.5rem;
512
- cursor: pointer;
513
- transition: background 0.15s ease;
514
- display: flex;
515
- align-items: center;
516
- justify-content: center;
517
- }
518
-
519
- .co-btn-add:hover {
520
- background: #fed7aa;
521
- }
522
-
523
- .co-btn-add svg {
524
- width: 1.25rem;
525
- height: 1.25rem;
526
- }
527
-
528
- :global(.theme-dark) .co-btn-add {
529
- background: rgba(249, 115, 22, 0.15);
530
- color: #fb923c;
531
- }
532
-
533
- .co-cut-list {
534
- display: flex;
535
- flex-direction: column;
536
- gap: 0.75rem;
537
- max-height: 400px;
538
- overflow-y: auto;
539
- padding-right: 0.25rem;
540
- }
541
-
542
- .co-cut-list::-webkit-scrollbar {
543
- width: 4px;
544
- }
545
-
546
- .co-cut-list::-webkit-scrollbar-track {
547
- background: transparent;
548
- }
549
-
550
- .co-cut-list::-webkit-scrollbar-thumb {
551
- background: rgba(148, 163, 184, 0.4);
552
- border-radius: 20px;
553
- }
554
-
555
- .co-row {
556
- display: flex;
557
- align-items: center;
558
- gap: 0.5rem;
559
- }
560
-
561
- .co-row-len-wrap,
562
- .co-row-wid-wrap {
563
- position: relative;
564
- flex: 1;
565
- display: flex;
566
- align-items: center;
567
- }
568
-
569
- .co-row-qty-wrap {
570
- position: relative;
571
- width: 5rem;
572
- }
573
-
574
- .co-row-input {
575
- width: 100%;
576
- background: #f8fafc;
577
- border: 1px solid #e2e8f0;
578
- border-radius: 0.5rem;
579
- padding: 0.5rem 0.75rem;
580
- font-size: 0.875rem;
581
- font-weight: 600;
582
- color: #1e293b;
583
- outline: none;
584
- box-sizing: border-box;
585
- }
586
-
587
- .co-row-input:focus {
588
- border-color: #f97316;
589
- box-shadow: 0 0 0 2px rgba(249, 115, 22, 0.1);
590
- }
591
-
592
- .co-row-input-blue:focus {
593
- border-color: #3b82f6;
594
- box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
595
- }
596
-
597
- .co-row-input-qty {
598
- text-align: center;
599
- }
600
-
601
- :global(.theme-dark) .co-row-input {
602
- background: #0f172a;
603
- border-color: #334155;
604
- color: #fff;
605
- }
606
-
607
- .co-row-unit {
608
- position: absolute;
609
- right: 0.5rem;
610
- font-size: 0.65rem;
611
- font-weight: 700;
612
- color: #94a3b8;
613
- pointer-events: none;
614
- }
615
-
616
- .co-btn-rm {
617
- padding: 0.4rem;
618
- background: transparent;
619
- border: none;
620
- color: #94a3b8;
621
- cursor: pointer;
622
- border-radius: 0.375rem;
623
- transition: color 0.15s ease;
624
- flex-shrink: 0;
625
- display: flex;
626
- align-items: center;
627
- }
628
-
629
- .co-btn-rm:hover {
630
- color: #ef4444;
631
- }
632
-
633
- .co-btn-rm svg {
634
- width: 1rem;
635
- height: 1rem;
636
- }
637
-
638
- .co-stats-grid {
639
- display: grid;
640
- grid-template-columns: repeat(4, 1fr);
641
- gap: 1rem;
642
- }
643
-
644
- .co-stat-card {
645
- background: #fff;
646
- padding: 1rem;
647
- border-radius: 0.75rem;
648
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
649
- border: 1px solid #f1f5f9;
650
- }
651
-
652
- :global(.theme-dark) .co-stat-card {
653
- background: #1e293b;
654
- border-color: #334155;
655
- }
656
-
657
- .co-stat-label {
658
- font-size: 0.65rem;
659
- font-weight: 700;
660
- color: #94a3b8;
661
- text-transform: uppercase;
662
- letter-spacing: 0.05em;
663
- }
664
-
665
- .co-stat-value {
666
- font-size: 1.5rem;
667
- font-weight: 900;
668
- color: #1e293b;
669
- margin-top: 0.25rem;
670
- line-height: 1;
671
- }
672
-
673
- :global(.theme-dark) .co-stat-value {
674
- color: #fff;
675
- }
676
-
677
- .co-stat-red {
678
- color: #ef4444;
679
- }
680
-
681
- :global(.theme-dark) .co-stat-red {
682
- color: #f87171;
683
- }
684
-
685
- .co-stat-green {
686
- color: #22c55e;
687
- }
688
-
689
- :global(.theme-dark) .co-stat-green {
690
- color: #4ade80;
691
- }
692
-
693
- .co-viz-card {
694
- min-height: 400px;
695
- }
696
-
697
- .co-viz {
698
- display: flex;
699
- flex-direction: column;
700
- gap: 2rem;
701
- min-height: 16rem;
702
- }
703
-
704
- :global(.co-empty-state) {
705
- display: flex;
706
- align-items: center;
707
- justify-content: center;
708
- height: 16rem;
709
- color: #94a3b8;
710
- font-size: 0.875rem;
711
- font-style: italic;
712
- text-align: center;
713
- }
714
-
715
- :global(.co-bar-wrap) {
716
- background: #f8fafc;
717
- border-radius: 0.5rem;
718
- padding: 0.75rem;
719
- border: 1px solid #f1f5f9;
720
- }
721
-
722
- :global(.theme-dark .co-bar-wrap) {
723
- background: rgba(15, 23, 42, 0.5);
724
- border-color: #1e293b;
725
- }
726
-
727
- :global(.co-bar-hdr) {
728
- display: flex;
729
- justify-content: space-between;
730
- font-size: 0.7rem;
731
- font-weight: 700;
732
- color: #94a3b8;
733
- margin-bottom: 0.5rem;
734
- }
735
-
736
- :global(.co-bar) {
737
- height: 3rem;
738
- background: #e2e8f0;
739
- border-radius: 0.25rem;
740
- display: flex;
741
- overflow: hidden;
742
- position: relative;
743
- }
744
-
745
- :global(.theme-dark .co-bar) {
746
- background: #334155;
747
- }
748
-
749
- :global(.co-seg) {
750
- height: 100%;
751
- background: linear-gradient(to bottom, #fb923c, #ea580c);
752
- border-right: 1px solid rgba(255, 255, 255, 0.2);
753
- display: flex;
754
- align-items: center;
755
- justify-content: center;
756
- color: #fff;
757
- font-size: 0.75rem;
758
- font-weight: 700;
759
- overflow: hidden;
760
- cursor: default;
761
- }
762
-
763
- :global(.co-panel-wrap) {
764
- background: #f8fafc;
765
- border-radius: 0.5rem;
766
- padding: 0.75rem;
767
- border: 1px solid #f1f5f9;
768
- }
769
-
770
- :global(.theme-dark .co-panel-wrap) {
771
- background: rgba(15, 23, 42, 0.5);
772
- border-color: #1e293b;
773
- }
774
-
775
- :global(.co-sheet) {
776
- position: relative;
777
- background: #e2e8f0;
778
- width: 100%;
779
- border: 1px solid #cbd5e1;
780
- }
781
-
782
- :global(.theme-dark .co-sheet) {
783
- background: #334155;
784
- border-color: #475569;
785
- }
786
-
787
- :global(.co-rect) {
788
- position: absolute;
789
- background: linear-gradient(135deg, #3b82f6, #1d4ed8);
790
- border: 1px solid rgba(255, 255, 255, 0.4);
791
- display: flex;
792
- align-items: center;
793
- justify-content: center;
794
- color: #fff;
795
- font-size: 0.625rem;
796
- font-weight: 700;
797
- overflow: hidden;
798
- cursor: default;
799
- transition: filter 0.15s ease;
800
- }
801
-
802
- :global(.co-rect:hover) {
803
- filter: brightness(1.1);
804
- }
805
-
806
- @media (max-width: 1024px) {
807
- .co-grid {
808
- grid-template-columns: 1fr;
809
- }
810
-
811
- .co-stats-grid {
812
- grid-template-columns: repeat(2, 1fr);
813
- }
814
- }
815
-
816
- @media (max-width: 640px) {
817
- .co-stats-grid {
818
- grid-template-columns: repeat(2, 1fr);
819
- }
820
-
821
- .co-card {
822
- padding: 1rem;
823
- }
824
- }
825
- </style>