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