@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,516 @@
1
+ .pp-root {
2
+ width: 100%;
3
+ max-width: 1100px;
4
+ margin: 0 auto;
5
+ background: #fff;
6
+ border: 1px solid #e2e8f0;
7
+ border-radius: 1.5rem;
8
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.1);
9
+ overflow: hidden;
10
+ }
11
+
12
+ :global(.theme-dark) .pp-root {
13
+ background: #1e1e2e;
14
+ border-color: #2d2d3f;
15
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
16
+ }
17
+
18
+ .pp-grid {
19
+ display: grid;
20
+ grid-template-columns: 1fr;
21
+ }
22
+
23
+ @media (min-width: 1024px) {
24
+ .pp-grid {
25
+ grid-template-columns: 5fr 8fr;
26
+ }
27
+ }
28
+
29
+ .pp-inputs {
30
+ padding: 2rem;
31
+ background: #f8fafc;
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 1.5rem;
35
+ border-right: 1px solid #e2e8f0;
36
+ }
37
+
38
+ :global(.theme-dark) .pp-inputs {
39
+ background: #16161e;
40
+ border-right-color: #2d2d3f;
41
+ }
42
+
43
+ .pp-section-header {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 0.25rem;
47
+ }
48
+
49
+ .pp-section-title {
50
+ font-size: 1.25rem;
51
+ font-weight: 700;
52
+ color: #0f172a;
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 0.5rem;
56
+ }
57
+
58
+ :global(.theme-dark) .pp-section-title {
59
+ color: #e2e8f0;
60
+ }
61
+
62
+ .pp-section-desc {
63
+ font-size: 0.875rem;
64
+ color: #64748b;
65
+ }
66
+
67
+ :global(.theme-dark) .pp-section-desc {
68
+ color: #94a3b8;
69
+ }
70
+
71
+ .pp-field-group {
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: 0.75rem;
75
+ }
76
+
77
+ .pp-group-label {
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 0.5rem;
81
+ font-size: 0.875rem;
82
+ font-weight: 600;
83
+ }
84
+
85
+ .pp-label-frame {
86
+ color: #4f46e5;
87
+ }
88
+
89
+ :global(.theme-dark) .pp-label-frame {
90
+ color: #818cf8;
91
+ }
92
+
93
+ .pp-label-art {
94
+ color: #db2777;
95
+ }
96
+
97
+ :global(.theme-dark) .pp-label-art {
98
+ color: #f472b6;
99
+ }
100
+
101
+ .pp-group-icon {
102
+ width: 1.25rem;
103
+ height: 1.25rem;
104
+ }
105
+
106
+ .pp-row {
107
+ display: grid;
108
+ grid-template-columns: 1fr 1fr;
109
+ gap: 1rem;
110
+ }
111
+
112
+ .pp-field {
113
+ display: flex;
114
+ flex-direction: column;
115
+ gap: 0.25rem;
116
+ }
117
+
118
+ .pp-label {
119
+ font-size: 0.75rem;
120
+ color: #64748b;
121
+ margin-left: 0.25rem;
122
+ }
123
+
124
+ :global(.theme-dark) .pp-label {
125
+ color: #94a3b8;
126
+ }
127
+
128
+ .pp-input {
129
+ width: 100%;
130
+ background: #fff;
131
+ border: 1px solid #cbd5e1;
132
+ border-radius: 0.75rem;
133
+ padding: 0.75rem 1rem;
134
+ color: #0f172a;
135
+ font-size: 1.125rem;
136
+ transition: border-color 0.2s, box-shadow 0.2s;
137
+ box-sizing: border-box;
138
+ }
139
+
140
+ .pp-input:focus {
141
+ outline: none;
142
+ border-color: #4f46e5;
143
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
144
+ }
145
+
146
+ :global(.theme-dark) .pp-input {
147
+ background: #1e1e2e;
148
+ border-color: #3d3d50;
149
+ color: #e2e8f0;
150
+ }
151
+
152
+ :global(.theme-dark) .pp-input:focus {
153
+ border-color: #818cf8;
154
+ box-shadow: 0 0 0 3px rgba(129, 140, 248, 0.15);
155
+ }
156
+
157
+ .pp-toggle-row {
158
+ padding-top: 1rem;
159
+ border-top: 1px solid #e2e8f0;
160
+ }
161
+
162
+ :global(.theme-dark) .pp-toggle-row {
163
+ border-top-color: #2d2d3f;
164
+ }
165
+
166
+ .pp-toggle-label {
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: space-between;
170
+ cursor: pointer;
171
+ gap: 1rem;
172
+ }
173
+
174
+ .pp-toggle-text {
175
+ display: flex;
176
+ flex-direction: column;
177
+ gap: 0.125rem;
178
+ }
179
+
180
+ .pp-toggle-name {
181
+ font-size: 0.9375rem;
182
+ font-weight: 600;
183
+ color: #0f172a;
184
+ }
185
+
186
+ :global(.theme-dark) .pp-toggle-name {
187
+ color: #e2e8f0;
188
+ }
189
+
190
+ .pp-toggle-desc {
191
+ font-size: 0.75rem;
192
+ color: #64748b;
193
+ }
194
+
195
+ :global(.theme-dark) .pp-toggle-desc {
196
+ color: #94a3b8;
197
+ }
198
+
199
+ .pp-checkbox {
200
+ width: 3rem;
201
+ height: 1.75rem;
202
+ appearance: none;
203
+ background: #cbd5e1;
204
+ border-radius: 9999px;
205
+ position: relative;
206
+ cursor: pointer;
207
+ transition: background 0.3s;
208
+ flex-shrink: 0;
209
+ }
210
+
211
+ .pp-checkbox:checked {
212
+ background: #4f46e5;
213
+ }
214
+
215
+ .pp-checkbox::after {
216
+ content: '';
217
+ position: absolute;
218
+ width: 1.375rem;
219
+ height: 1.375rem;
220
+ background: #fff;
221
+ border-radius: 50%;
222
+ top: 0.1875rem;
223
+ left: 0.1875rem;
224
+ transition: left 0.3s;
225
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
226
+ }
227
+
228
+ .pp-checkbox:checked::after {
229
+ left: 1.4375rem;
230
+ }
231
+
232
+ .pp-toggle-track {
233
+ display: none;
234
+ }
235
+
236
+ .pp-offset-ctrl {
237
+ display: none;
238
+ padding-top: 0.5rem;
239
+ border-top: 1px solid #e2e8f0;
240
+ }
241
+
242
+ :global(.theme-dark) .pp-offset-ctrl {
243
+ border-top-color: #2d2d3f;
244
+ }
245
+
246
+ .pp-offset-row {
247
+ display: flex;
248
+ align-items: center;
249
+ gap: 1rem;
250
+ margin-top: 0.5rem;
251
+ }
252
+
253
+ .pp-range {
254
+ flex: 1;
255
+ height: 0.5rem;
256
+ accent-color: #4f46e5;
257
+ cursor: pointer;
258
+ }
259
+
260
+ .pp-offset-val {
261
+ font-size: 0.875rem;
262
+ font-weight: 600;
263
+ color: #0f172a;
264
+ min-width: 2.5rem;
265
+ text-align: right;
266
+ }
267
+
268
+ :global(.theme-dark) .pp-offset-val {
269
+ color: #e2e8f0;
270
+ }
271
+
272
+ .pp-error {
273
+ display: none;
274
+ padding: 1rem;
275
+ background: #fef2f2;
276
+ border: 1px solid #fecaca;
277
+ border-radius: 0.75rem;
278
+ color: #dc2626;
279
+ font-size: 0.875rem;
280
+ align-items: flex-start;
281
+ gap: 0.75rem;
282
+ }
283
+
284
+ :global(.theme-dark) .pp-error {
285
+ background: #2d1515;
286
+ border-color: #7f1d1d;
287
+ color: #fca5a5;
288
+ }
289
+
290
+ .pp-error-icon {
291
+ width: 1.25rem;
292
+ height: 1.25rem;
293
+ flex-shrink: 0;
294
+ margin-top: 0.125rem;
295
+ }
296
+
297
+ .pp-preview {
298
+ background: #f1f5f9;
299
+ padding: 3rem;
300
+ position: relative;
301
+ display: flex;
302
+ align-items: center;
303
+ justify-content: center;
304
+ min-height: 500px;
305
+ }
306
+
307
+ :global(.theme-dark) .pp-preview {
308
+ background: #0f172a;
309
+ }
310
+
311
+ .pp-dots-bg {
312
+ position: absolute;
313
+ inset: 0;
314
+ background-image: radial-gradient(circle at 1px 1px, rgba(0, 0, 0, 0.15) 1px, transparent 0);
315
+ background-size: 20px 20px;
316
+ pointer-events: none;
317
+ opacity: 0.5;
318
+ }
319
+
320
+ :global(.theme-dark) .pp-dots-bg {
321
+ background-image: radial-gradient(circle at 1px 1px, rgba(255, 255, 255, 0.1) 1px, transparent 0);
322
+ }
323
+
324
+ .pp-frame-wrapper {
325
+ position: relative;
326
+ height: 100%;
327
+ max-height: 60vh;
328
+ display: flex;
329
+ align-items: center;
330
+ justify-content: center;
331
+ }
332
+
333
+ .pp-frame {
334
+ position: relative;
335
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.25);
336
+ background: #fff;
337
+ height: 100%;
338
+ max-height: 60vh;
339
+ transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
340
+ }
341
+
342
+ :global(.theme-dark) .pp-frame {
343
+ box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5);
344
+ }
345
+
346
+ .pp-mat {
347
+ position: absolute;
348
+ inset: 0;
349
+ background: #e2e2e2;
350
+ }
351
+
352
+ :global(.theme-dark) .pp-mat {
353
+ background: #334155;
354
+ }
355
+
356
+ .pp-art {
357
+ position: absolute;
358
+ background: #fff;
359
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
360
+ overflow: hidden;
361
+ display: flex;
362
+ align-items: center;
363
+ justify-content: center;
364
+ transition: all 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
365
+ }
366
+
367
+ :global(.theme-dark) .pp-art {
368
+ background: #1e293b;
369
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
370
+ }
371
+
372
+ .pp-art-placeholder {
373
+ font-style: italic;
374
+ color: #94a3b8;
375
+ font-size: clamp(0.75rem, 2vw, 1.25rem);
376
+ user-select: none;
377
+ position: relative;
378
+ z-index: 1;
379
+ }
380
+
381
+ :global(.theme-dark) .pp-art-placeholder {
382
+ color: #475569;
383
+ }
384
+
385
+ .pp-art-dim {
386
+ position: absolute;
387
+ pointer-events: none;
388
+ opacity: 0.5;
389
+ }
390
+
391
+ .pp-art-dim-w {
392
+ bottom: 0.5rem;
393
+ left: 0;
394
+ right: 0;
395
+ display: flex;
396
+ align-items: center;
397
+ justify-content: center;
398
+ flex-direction: column;
399
+ gap: 0.125rem;
400
+ }
401
+
402
+ .pp-art-dim-h {
403
+ top: 0;
404
+ bottom: 0;
405
+ right: 0.5rem;
406
+ display: flex;
407
+ align-items: center;
408
+ justify-content: center;
409
+ flex-direction: column;
410
+ gap: 0.125rem;
411
+ }
412
+
413
+ .pp-dim-line {
414
+ height: 1px;
415
+ width: 60%;
416
+ background: #0f172a;
417
+ }
418
+
419
+ :global(.theme-dark) .pp-dim-line {
420
+ background: #e2e8f0;
421
+ }
422
+
423
+ .pp-dim-line-v {
424
+ width: 1px;
425
+ height: 60%;
426
+ }
427
+
428
+ .pp-dim-label {
429
+ font-size: 0.5rem;
430
+ color: #0f172a;
431
+ }
432
+
433
+ :global(.theme-dark) .pp-dim-label {
434
+ color: #e2e8f0;
435
+ }
436
+
437
+ .pp-dim-label-v {
438
+ writing-mode: vertical-rl;
439
+ transform: rotate(180deg);
440
+ }
441
+
442
+ .pp-border-label {
443
+ position: absolute;
444
+ display: flex;
445
+ flex-direction: column;
446
+ align-items: center;
447
+ gap: 0.125rem;
448
+ color: #4f46e5;
449
+ z-index: 10;
450
+ }
451
+
452
+ :global(.theme-dark) .pp-border-label {
453
+ color: #818cf8;
454
+ }
455
+
456
+ .pp-border-top {
457
+ top: 0;
458
+ left: 50%;
459
+ transform: translate(-50%, -100%);
460
+ padding-bottom: 0.5rem;
461
+ }
462
+
463
+ .pp-border-bottom {
464
+ bottom: 0;
465
+ left: 50%;
466
+ transform: translate(-50%, 100%);
467
+ padding-top: 0.5rem;
468
+ }
469
+
470
+ .pp-border-left {
471
+ left: 0;
472
+ top: 50%;
473
+ transform: translate(-100%, -50%);
474
+ padding-right: 1rem;
475
+ color: #db2777;
476
+ }
477
+
478
+ :global(.theme-dark) .pp-border-left {
479
+ color: #f472b6;
480
+ }
481
+
482
+ .pp-border-right {
483
+ right: 0;
484
+ top: 50%;
485
+ transform: translate(100%, -50%);
486
+ padding-left: 1rem;
487
+ color: #db2777;
488
+ }
489
+
490
+ :global(.theme-dark) .pp-border-right {
491
+ color: #f472b6;
492
+ }
493
+
494
+ .pp-border-val {
495
+ font-size: 1.25rem;
496
+ font-weight: 700;
497
+ line-height: 1;
498
+ }
499
+
500
+ .pp-border-tag {
501
+ font-size: 0.65rem;
502
+ text-transform: uppercase;
503
+ letter-spacing: 0.1em;
504
+ opacity: 0.7;
505
+ }
506
+
507
+ .pp-border-unit {
508
+ font-size: 0.6rem;
509
+ opacity: 0.5;
510
+ }
511
+
512
+ @media (max-width: 1023px) {
513
+ .pp-preview {
514
+ padding: 4rem 3rem;
515
+ }
516
+ }