@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
@@ -0,0 +1,727 @@
1
+ .vd-root {
2
+ max-width: 700px;
3
+ margin: 0 auto;
4
+ border-radius: 1.5rem;
5
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
6
+ border: 1px solid #e2e8f0;
7
+ overflow: hidden;
8
+ }
9
+
10
+ .theme-dark .vd-root {
11
+ border-color: #1e293b;
12
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
13
+ }
14
+
15
+ .vd-hero {
16
+ background: #0f172a;
17
+ color: #fff;
18
+ padding: 2rem;
19
+ position: relative;
20
+ overflow: hidden;
21
+ }
22
+
23
+ .vd-pulse {
24
+ position: absolute;
25
+ top: -125px;
26
+ right: -125px;
27
+ width: 350px;
28
+ height: 350px;
29
+ background: radial-gradient(circle, rgba(99, 102, 241, 0.25), transparent 70%);
30
+ border-radius: 50%;
31
+ pointer-events: none;
32
+ transition: background 0.7s ease;
33
+ }
34
+
35
+ .vd-pulse[data-vd-pulse-status="acceptable"] {
36
+ background: radial-gradient(circle, rgba(245, 158, 11, 0.2), transparent 70%);
37
+ }
38
+
39
+ .vd-pulse[data-vd-pulse-status="critical"] {
40
+ background: radial-gradient(circle, rgba(239, 68, 68, 0.25), transparent 70%);
41
+ }
42
+
43
+ .vd-hero-body {
44
+ position: relative;
45
+ z-index: 1;
46
+ display: flex;
47
+ justify-content: space-between;
48
+ align-items: flex-end;
49
+ gap: 1.5rem;
50
+ flex-wrap: wrap;
51
+ }
52
+
53
+ .vd-drop-label {
54
+ font-size: 0.65rem;
55
+ font-weight: 700;
56
+ letter-spacing: 0.1em;
57
+ text-transform: uppercase;
58
+ color: #94a3b8;
59
+ margin-bottom: 0.5rem;
60
+ }
61
+
62
+ .vd-drop-row {
63
+ display: flex;
64
+ align-items: baseline;
65
+ gap: 0.5rem;
66
+ }
67
+
68
+ .vd-drop-val {
69
+ font-size: 3.5rem;
70
+ font-weight: 900;
71
+ line-height: 1;
72
+ letter-spacing: -0.02em;
73
+ }
74
+
75
+ .vd-drop-unit {
76
+ font-size: 1.5rem;
77
+ font-weight: 500;
78
+ color: #64748b;
79
+ }
80
+
81
+ .vd-status-row {
82
+ display: flex;
83
+ align-items: center;
84
+ gap: 0.75rem;
85
+ margin-top: 1rem;
86
+ }
87
+
88
+ .vd-status-pill {
89
+ display: flex;
90
+ align-items: center;
91
+ gap: 0.375rem;
92
+ padding: 0.25rem 0.75rem;
93
+ border-radius: 999px;
94
+ font-size: 0.65rem;
95
+ font-weight: 700;
96
+ text-transform: uppercase;
97
+ letter-spacing: 0.05em;
98
+ background: rgba(34, 197, 94, 0.2);
99
+ border: 1px solid rgba(34, 197, 94, 0.5);
100
+ color: #4ade80;
101
+ transition: all 0.3s ease;
102
+ }
103
+
104
+ .vd-status-pill[data-vd-status="acceptable"] {
105
+ background: rgba(245, 158, 11, 0.2);
106
+ border-color: rgba(245, 158, 11, 0.5);
107
+ color: #fbbf24;
108
+ }
109
+
110
+ .vd-status-pill[data-vd-status="critical"] {
111
+ background: rgba(239, 68, 68, 0.2);
112
+ border-color: rgba(239, 68, 68, 0.5);
113
+ color: #f87171;
114
+ }
115
+
116
+ .vd-status-dot {
117
+ width: 6px;
118
+ height: 6px;
119
+ border-radius: 50%;
120
+ background: currentcolor;
121
+ }
122
+
123
+ .vd-status-pill[data-vd-status="critical"] .vd-status-dot {
124
+ animation: vd-blink 1s ease-in-out infinite;
125
+ }
126
+
127
+ @keyframes vd-blink {
128
+ 0% {
129
+ opacity: 1;
130
+ }
131
+ 50% {
132
+ opacity: 0.2;
133
+ }
134
+ 100% {
135
+ opacity: 1;
136
+ }
137
+ }
138
+
139
+ .vd-pct-wrap {
140
+ font-size: 0.875rem;
141
+ font-weight: 500;
142
+ color: #94a3b8;
143
+ }
144
+
145
+ .vd-eff-card {
146
+ background: rgba(255, 255, 255, 0.05);
147
+ border: 1px solid rgba(255, 255, 255, 0.1);
148
+ border-radius: 1rem;
149
+ padding: 1rem;
150
+ min-width: 150px;
151
+ }
152
+
153
+ .vd-eff-label {
154
+ font-size: 0.65rem;
155
+ font-weight: 700;
156
+ letter-spacing: 0.1em;
157
+ text-transform: uppercase;
158
+ color: #94a3b8;
159
+ margin-bottom: 0.5rem;
160
+ }
161
+
162
+ .vd-eff-val-row {
163
+ display: flex;
164
+ align-items: baseline;
165
+ gap: 0.25rem;
166
+ margin-bottom: 0.5rem;
167
+ }
168
+
169
+ .vd-eff-val {
170
+ font-size: 1.875rem;
171
+ font-weight: 700;
172
+ }
173
+
174
+ .vd-eff-pct {
175
+ font-size: 0.875rem;
176
+ color: #94a3b8;
177
+ }
178
+
179
+ .vd-eff-bar-wrap {
180
+ display: flex;
181
+ height: 8px;
182
+ background: rgba(51, 65, 85, 0.5);
183
+ border-radius: 4px;
184
+ overflow: hidden;
185
+ }
186
+
187
+ .vd-eff-bar-fill {
188
+ height: 100%;
189
+ background: #4ade80;
190
+ transition: width 0.5s ease;
191
+ }
192
+
193
+ .vd-eff-bar-loss {
194
+ height: 100%;
195
+ flex: 1;
196
+ background: rgba(239, 68, 68, 0.5);
197
+ }
198
+
199
+ .vd-body {
200
+ padding: 1.5rem 2rem;
201
+ background: #f8fafc;
202
+ display: flex;
203
+ flex-direction: column;
204
+ gap: 1.5rem;
205
+ }
206
+
207
+ .theme-dark .vd-body {
208
+ background: rgba(15, 23, 42, 0.5);
209
+ }
210
+
211
+ .vd-row-2 {
212
+ display: grid;
213
+ grid-template-columns: 1fr 1fr;
214
+ gap: 1.5rem;
215
+ }
216
+
217
+ .vd-card {
218
+ background: #fff;
219
+ border: 1px solid #e2e8f0;
220
+ border-radius: 1rem;
221
+ padding: 1.25rem;
222
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
223
+ }
224
+
225
+ .theme-dark .vd-card {
226
+ background: #1e293b;
227
+ border-color: #334155;
228
+ }
229
+
230
+ .vd-field-label {
231
+ display: block;
232
+ font-size: 0.65rem;
233
+ font-weight: 700;
234
+ text-transform: uppercase;
235
+ letter-spacing: 0.05em;
236
+ color: #94a3b8;
237
+ margin-bottom: 0.75rem;
238
+ }
239
+
240
+ .vd-toggle-wrap {
241
+ position: relative;
242
+ display: flex;
243
+ background: #f1f5f9;
244
+ padding: 4px;
245
+ border-radius: 0.75rem;
246
+ }
247
+
248
+ .theme-dark .vd-toggle-wrap {
249
+ background: rgba(15, 23, 42, 0.8);
250
+ }
251
+
252
+ .vd-volt-bg {
253
+ position: absolute;
254
+ top: 4px;
255
+ left: 1%;
256
+ width: 32.9%;
257
+ height: calc(100% - 8px);
258
+ background: #fff;
259
+ border-radius: 0.5rem;
260
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
261
+ transition: left 0.3s ease;
262
+ pointer-events: none;
263
+ }
264
+
265
+ .theme-dark .vd-volt-bg {
266
+ background: #334155;
267
+ }
268
+
269
+ .vd-volt-btn {
270
+ flex: 1;
271
+ position: relative;
272
+ z-index: 1;
273
+ padding: 0.375rem 0;
274
+ font-size: 0.8125rem;
275
+ font-weight: 700;
276
+ border: none;
277
+ background: transparent;
278
+ color: #6b7280;
279
+ cursor: pointer;
280
+ border-radius: 0.5rem;
281
+ transition: color 0.15s;
282
+ }
283
+
284
+ .vd-volt-btn.vd-active {
285
+ color: #1e293b;
286
+ }
287
+
288
+ .theme-dark .vd-volt-btn {
289
+ color: #94a3b8;
290
+ }
291
+
292
+ .theme-dark .vd-volt-btn.vd-active {
293
+ color: #fff;
294
+ }
295
+
296
+ .vd-material-wrap {
297
+ display: flex;
298
+ gap: 1rem;
299
+ }
300
+
301
+ .vd-material-item {
302
+ flex: 1;
303
+ cursor: pointer;
304
+ }
305
+
306
+ .vd-material-input {
307
+ position: absolute;
308
+ width: 1px;
309
+ height: 1px;
310
+ padding: 0;
311
+ margin: -1px;
312
+ overflow: hidden;
313
+ clip-path: inset(50%);
314
+ white-space: nowrap;
315
+ border-width: 0;
316
+ }
317
+
318
+ .vd-material-box {
319
+ height: 2.5rem;
320
+ display: flex;
321
+ align-items: center;
322
+ justify-content: center;
323
+ gap: 0.5rem;
324
+ border-radius: 0.75rem;
325
+ border: 1px solid #e2e8f0;
326
+ background: #f8fafc;
327
+ font-size: 0.875rem;
328
+ font-weight: 700;
329
+ color: #64748b;
330
+ transition: all 0.15s ease;
331
+ }
332
+
333
+ .theme-dark .vd-material-box {
334
+ background: #0f172a;
335
+ border-color: #334155;
336
+ color: #94a3b8;
337
+ }
338
+
339
+ .vd-material-copper .vd-material-input:checked + .vd-material-box {
340
+ border-color: #d97706;
341
+ background: #fffbeb;
342
+ color: #92400e;
343
+ }
344
+
345
+ .vd-material-alum .vd-material-input:checked + .vd-material-box {
346
+ border-color: #64748b;
347
+ background: #f1f5f9;
348
+ color: #1e293b;
349
+ }
350
+
351
+ .theme-dark .vd-material-copper .vd-material-input:checked + .vd-material-box {
352
+ background: rgba(180, 83, 9, 0.2);
353
+ border-color: #d97706;
354
+ color: #fbbf24;
355
+ }
356
+
357
+ .theme-dark .vd-material-alum .vd-material-input:checked + .vd-material-box {
358
+ background: rgba(51, 65, 85, 0.8);
359
+ border-color: #64748b;
360
+ color: #fff;
361
+ }
362
+
363
+ .vd-wire-dot {
364
+ width: 0.75rem;
365
+ height: 0.75rem;
366
+ border-radius: 50%;
367
+ }
368
+
369
+ .vd-wire-dot-copper {
370
+ background: linear-gradient(to bottom right, #fbbf24, #d97706);
371
+ }
372
+
373
+ .vd-wire-dot-alum {
374
+ background: linear-gradient(to bottom right, #cbd5e1, #64748b);
375
+ }
376
+
377
+ .vd-load-top {
378
+ display: flex;
379
+ align-items: center;
380
+ justify-content: space-between;
381
+ margin-bottom: 1rem;
382
+ }
383
+
384
+ .vd-load-top .vd-field-label {
385
+ margin-bottom: 0;
386
+ }
387
+
388
+ .vd-mode-wrap {
389
+ display: flex;
390
+ background: #f1f5f9;
391
+ padding: 4px;
392
+ border-radius: 0.5rem;
393
+ }
394
+
395
+ .theme-dark .vd-mode-wrap {
396
+ background: #0f172a;
397
+ }
398
+
399
+ .vd-mode-btn {
400
+ padding: 0.25rem 0.75rem;
401
+ font-size: 0.75rem;
402
+ font-weight: 700;
403
+ border: none;
404
+ background: transparent;
405
+ color: #6b7280;
406
+ cursor: pointer;
407
+ border-radius: 0.375rem;
408
+ transition: all 0.15s;
409
+ }
410
+
411
+ .vd-mode-btn.vd-active {
412
+ background: #fff;
413
+ color: #1e293b;
414
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
415
+ }
416
+
417
+ .theme-dark .vd-mode-btn.vd-active {
418
+ background: #334155;
419
+ color: #fff;
420
+ }
421
+
422
+ .vd-load-input-row {
423
+ display: flex;
424
+ align-items: center;
425
+ gap: 1rem;
426
+ }
427
+
428
+ .vd-load-input {
429
+ width: 5rem;
430
+ background: transparent;
431
+ font-size: 1.5rem;
432
+ font-weight: 900;
433
+ text-align: right;
434
+ border: none;
435
+ border-bottom: 2px solid #e2e8f0;
436
+ color: #1e293b;
437
+ outline: none;
438
+ padding: 0;
439
+ transition: border-color 0.15s;
440
+ }
441
+
442
+ .vd-load-input:focus {
443
+ border-color: #6366f1;
444
+ }
445
+
446
+ .theme-dark .vd-load-input {
447
+ color: #fff;
448
+ border-color: #334155;
449
+ }
450
+
451
+ .theme-dark .vd-load-input:focus {
452
+ border-color: #6366f1;
453
+ }
454
+
455
+ .vd-load-unit {
456
+ font-size: 0.875rem;
457
+ font-weight: 700;
458
+ color: #94a3b8;
459
+ margin-top: 0.5rem;
460
+ }
461
+
462
+ .vd-len-top {
463
+ display: flex;
464
+ justify-content: space-between;
465
+ align-items: center;
466
+ margin-bottom: 1rem;
467
+ }
468
+
469
+ .vd-len-top .vd-field-label {
470
+ margin-bottom: 0;
471
+ }
472
+
473
+ .vd-len-info {
474
+ font-size: 0.875rem;
475
+ font-weight: 700;
476
+ color: #6366f1;
477
+ }
478
+
479
+ .theme-dark .vd-len-info {
480
+ color: #a5b4fc;
481
+ }
482
+
483
+ .vd-slider-wrap {
484
+ position: relative;
485
+ height: 24px;
486
+ display: flex;
487
+ align-items: center;
488
+ }
489
+
490
+ .vd-slider-input {
491
+ position: absolute;
492
+ width: 100%;
493
+ height: 100%;
494
+ z-index: 2;
495
+ opacity: 0;
496
+ cursor: pointer;
497
+ }
498
+
499
+ .vd-slider-track {
500
+ width: 100%;
501
+ height: 8px;
502
+ background: #f1f5f9;
503
+ border-radius: 4px;
504
+ overflow: hidden;
505
+ }
506
+
507
+ .theme-dark .vd-slider-track {
508
+ background: #334155;
509
+ }
510
+
511
+ .vd-slider-fill {
512
+ height: 100%;
513
+ background: #6366f1;
514
+ transition: width 0.075s;
515
+ }
516
+
517
+ .vd-slider-thumb {
518
+ position: absolute;
519
+ width: 24px;
520
+ height: 24px;
521
+ background: #fff;
522
+ border: 2px solid #6366f1;
523
+ border-radius: 50%;
524
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
525
+ z-index: 1;
526
+ pointer-events: none;
527
+ transition: left 0.075s;
528
+ transform: translateX(-50%);
529
+ display: flex;
530
+ align-items: center;
531
+ justify-content: center;
532
+ }
533
+
534
+ .theme-dark .vd-slider-thumb {
535
+ background: #1e293b;
536
+ }
537
+
538
+ .vd-slider-knob {
539
+ width: 6px;
540
+ height: 6px;
541
+ background: #6366f1;
542
+ border-radius: 50%;
543
+ }
544
+
545
+ .vd-section-top {
546
+ display: flex;
547
+ justify-content: space-between;
548
+ align-items: center;
549
+ margin-bottom: 1rem;
550
+ }
551
+
552
+ .vd-section-top .vd-field-label {
553
+ margin-bottom: 0;
554
+ }
555
+
556
+ .vd-section-badge {
557
+ font-size: 0.75rem;
558
+ font-weight: 500;
559
+ color: #64748b;
560
+ background: #f1f5f9;
561
+ padding: 0.25rem 0.5rem;
562
+ border-radius: 0.375rem;
563
+ }
564
+
565
+ .theme-dark .vd-section-badge {
566
+ background: #0f172a;
567
+ color: #94a3b8;
568
+ }
569
+
570
+ .vd-gauge-outer {
571
+ position: relative;
572
+ }
573
+
574
+ .vd-gauge-fade-l,
575
+ .vd-gauge-fade-r {
576
+ position: absolute;
577
+ top: 0;
578
+ bottom: 0;
579
+ width: 3rem;
580
+ z-index: 2;
581
+ pointer-events: none;
582
+ }
583
+
584
+ .vd-gauge-fade-l {
585
+ left: 0;
586
+ background: linear-gradient(to right, #fff, transparent);
587
+ }
588
+
589
+ .vd-gauge-fade-r {
590
+ right: 0;
591
+ background: linear-gradient(to left, #fff, transparent);
592
+ }
593
+
594
+ .theme-dark .vd-gauge-fade-l {
595
+ background: linear-gradient(to right, #1e293b, transparent);
596
+ }
597
+
598
+ .theme-dark .vd-gauge-fade-r {
599
+ background: linear-gradient(to left, #1e293b, transparent);
600
+ }
601
+
602
+ .vd-gauge-scroll {
603
+ display: flex;
604
+ gap: 1rem;
605
+ overflow-x: auto;
606
+ padding: 1rem 3rem;
607
+ scrollbar-width: none;
608
+ cursor: grab;
609
+ }
610
+
611
+ .vd-gauge-scroll:active {
612
+ cursor: grabbing;
613
+ }
614
+
615
+ .vd-gauge-scroll::-webkit-scrollbar {
616
+ display: none;
617
+ }
618
+
619
+ .vd-gauge-item {
620
+ flex-shrink: 0;
621
+ cursor: pointer;
622
+ }
623
+
624
+ .vd-gauge-input {
625
+ position: absolute;
626
+ width: 1px;
627
+ height: 1px;
628
+ overflow: hidden;
629
+ clip-path: inset(50%);
630
+ white-space: nowrap;
631
+ border-width: 0;
632
+ }
633
+
634
+ .vd-gauge-box {
635
+ width: 4rem;
636
+ height: 6rem;
637
+ border-radius: 999px;
638
+ background: #f8fafc;
639
+ border: 2px solid #e2e8f0;
640
+ display: flex;
641
+ flex-direction: column;
642
+ align-items: center;
643
+ justify-content: flex-end;
644
+ padding-bottom: 0.75rem;
645
+ transition: all 0.2s ease;
646
+ cursor: pointer;
647
+ }
648
+
649
+ .theme-dark .vd-gauge-box {
650
+ background: #0f172a;
651
+ border-color: #334155;
652
+ }
653
+
654
+ .vd-gauge-input:checked + .vd-gauge-box {
655
+ border-color: #6366f1;
656
+ background: #fff;
657
+ box-shadow: 0 4px 16px rgba(99, 102, 241, 0.2);
658
+ transform: translateY(-8px);
659
+ }
660
+
661
+ .theme-dark .vd-gauge-input:checked + .vd-gauge-box {
662
+ background: #1e293b;
663
+ border-color: #6366f1;
664
+ }
665
+
666
+ .vd-wire-circle {
667
+ margin-top: auto;
668
+ margin-bottom: 0.5rem;
669
+ border-radius: 50%;
670
+ background: linear-gradient(to bottom right, #fbbf24, #d97706);
671
+ transition: background 0.3s ease;
672
+ }
673
+
674
+ .vd-root[data-vd-material="aluminum"] .vd-wire-circle {
675
+ background: linear-gradient(to bottom right, #cbd5e1, #64748b);
676
+ }
677
+
678
+ .vd-gauge-val {
679
+ font-size: 0.875rem;
680
+ font-weight: 700;
681
+ color: #64748b;
682
+ }
683
+
684
+ .vd-gauge-input:checked + .vd-gauge-box .vd-gauge-val {
685
+ color: #6366f1;
686
+ }
687
+
688
+ .theme-dark .vd-gauge-val {
689
+ color: #94a3b8;
690
+ }
691
+
692
+ .theme-dark .vd-gauge-input:checked + .vd-gauge-box .vd-gauge-val {
693
+ color: #a5b4fc;
694
+ }
695
+
696
+ .vd-gauge-unit {
697
+ font-size: 0.625rem;
698
+ color: #94a3b8;
699
+ }
700
+
701
+ @media (max-width: 640px) {
702
+ .vd-hero {
703
+ padding: 1.5rem;
704
+ }
705
+
706
+ .vd-hero-body {
707
+ flex-direction: column;
708
+ align-items: flex-start;
709
+ }
710
+
711
+ .vd-eff-card {
712
+ width: 100%;
713
+ min-width: unset;
714
+ }
715
+
716
+ .vd-body {
717
+ padding: 1rem;
718
+ }
719
+
720
+ .vd-row-2 {
721
+ grid-template-columns: 1fr;
722
+ }
723
+
724
+ .vd-drop-val {
725
+ font-size: 2.5rem;
726
+ }
727
+ }