@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
@@ -0,0 +1,391 @@
1
+ :root {
2
+ --drillsharp-primary: #0284c7;
3
+ --drillsharp-accent: #0284c7;
4
+ --drillsharp-text: #0f172a;
5
+ --drillsharp-text-muted: #475569;
6
+ --drillsharp-bg-dark: #f1f5f9;
7
+ --drillsharp-bg-panel: #fff;
8
+ --drillsharp-border: #cbd5e1;
9
+ --drillsharp-button-bg: #e2e8f0;
10
+ --drillsharp-button-hover: #cbd5e1;
11
+ }
12
+
13
+ :global(.theme-dark) {
14
+ --drillsharp-primary: #38bdf8;
15
+ --drillsharp-accent: #38bdf8;
16
+ --drillsharp-text: #f8fafc;
17
+ --drillsharp-text-muted: #94a3b8;
18
+ --drillsharp-bg-dark: #000;
19
+ --drillsharp-bg-panel: #0a0f1d;
20
+ --drillsharp-border: #1e293b;
21
+ --drillsharp-button-bg: #1e293b;
22
+ --drillsharp-button-hover: #334155;
23
+ }
24
+
25
+ .drillsharp-root {
26
+ max-width: 1200px;
27
+ margin: 1rem auto;
28
+ padding: 0 1rem;
29
+ color: var(--drillsharp-text);
30
+ }
31
+
32
+ .drillsharp-layout {
33
+ display: grid;
34
+ grid-template-columns: minmax(0, 1fr) 340px;
35
+ gap: 1.5rem;
36
+ background: var(--drillsharp-bg-dark);
37
+ border-radius: 2.5rem;
38
+ padding: 2rem;
39
+ border: 1px solid var(--drillsharp-border);
40
+ box-shadow: 0 30px 60px -12px rgba(0, 0, 0, 0.1);
41
+ overflow: hidden;
42
+ }
43
+
44
+ .drillsharp-gauge {
45
+ position: relative;
46
+ display: flex;
47
+ flex-direction: column;
48
+ align-items: center;
49
+ justify-content: center;
50
+ background: radial-gradient(
51
+ circle at center,
52
+ var(--drillsharp-bg-panel) 0%,
53
+ var(--drillsharp-bg-dark) 100%
54
+ );
55
+ border-radius: 2rem;
56
+ min-height: 550px;
57
+ border: 1px solid var(--drillsharp-border);
58
+ transition: background 0.3s ease;
59
+ }
60
+
61
+ .drillsharp-svg {
62
+ width: 95%;
63
+ height: 95%;
64
+ max-height: 600px;
65
+ color: var(--drillsharp-text);
66
+ }
67
+
68
+ .drillsharp-gauge-lines {
69
+ filter: drop-shadow(0 0 2px var(--drillsharp-accent));
70
+ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
71
+ }
72
+
73
+ .drillsharp-instruction {
74
+ position: absolute;
75
+ bottom: 2rem;
76
+ text-align: center;
77
+ width: 100%;
78
+ pointer-events: none;
79
+ padding: 0 1rem;
80
+ }
81
+
82
+ .drillsharp-instruction span {
83
+ background: var(--drillsharp-bg-panel);
84
+ color: var(--drillsharp-accent);
85
+ padding: 0.6rem 2rem;
86
+ border-radius: 2rem;
87
+ font-size: 0.7rem;
88
+ font-weight: 800;
89
+ text-transform: uppercase;
90
+ letter-spacing: 0.15em;
91
+ border: 1px solid var(--drillsharp-border);
92
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
93
+ }
94
+
95
+ .drillsharp-controls {
96
+ display: flex;
97
+ flex-direction: column;
98
+ gap: 1.25rem;
99
+ }
100
+
101
+ .drillsharp-group {
102
+ background: var(--drillsharp-bg-panel);
103
+ padding: 1.5rem;
104
+ border-radius: 2rem;
105
+ border: 1px solid var(--drillsharp-border);
106
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
107
+ display: flex;
108
+ flex-direction: column;
109
+ }
110
+
111
+ .drillsharp-group h4 {
112
+ font-size: 0.7rem;
113
+ text-transform: uppercase;
114
+ color: var(--drillsharp-primary);
115
+ margin-bottom: 1.25rem;
116
+ font-weight: 900;
117
+ letter-spacing: 0.1em;
118
+ }
119
+
120
+ .drillsharp-material-grid {
121
+ display: flex;
122
+ flex-direction: column;
123
+ gap: 0.6rem;
124
+ }
125
+
126
+ .drillsharp-mat-btn {
127
+ background: var(--drillsharp-button-bg);
128
+ border: 1px solid var(--drillsharp-border);
129
+ border-radius: 1.25rem;
130
+ padding: 1rem 0.5rem;
131
+ color: var(--drillsharp-text-muted);
132
+ cursor: pointer;
133
+ font-weight: 800;
134
+ font-size: 0.8rem;
135
+ transition: all 0.2s;
136
+ text-transform: uppercase;
137
+ }
138
+
139
+ .drillsharp-mat-btn.active {
140
+ background: var(--drillsharp-accent);
141
+ color: var(--drillsharp-bg-dark);
142
+ border-color: var(--drillsharp-accent);
143
+ box-shadow: 0 0 20px rgba(56, 189, 248, 0.3);
144
+ }
145
+
146
+ .drillsharp-stepper {
147
+ display: flex;
148
+ align-items: center;
149
+ background: var(--drillsharp-bg-dark);
150
+ border-radius: 1.25rem;
151
+ padding: 0.4rem;
152
+ border: 1px solid var(--drillsharp-border);
153
+ }
154
+
155
+ .drillsharp-step-btn {
156
+ width: 54px;
157
+ height: 54px;
158
+ background: var(--drillsharp-button-bg);
159
+ border: none;
160
+ color: var(--drillsharp-text);
161
+ border-radius: 1rem;
162
+ cursor: pointer;
163
+ font-size: 1.5rem;
164
+ display: flex;
165
+ align-items: center;
166
+ justify-content: center;
167
+ transition: all 0.2s;
168
+ }
169
+
170
+ .drillsharp-step-btn:active {
171
+ transform: scale(0.95);
172
+ background: var(--drillsharp-button-hover);
173
+ }
174
+
175
+ .drillsharp-stepper input {
176
+ flex: 1;
177
+ background: transparent;
178
+ border: none;
179
+ color: var(--drillsharp-accent);
180
+ text-align: center;
181
+ font-size: 2rem;
182
+ font-weight: 950;
183
+ width: 80px;
184
+ outline: none;
185
+ }
186
+
187
+ .drillsharp-results {
188
+ display: grid;
189
+ grid-template-columns: 1fr;
190
+ gap: 0.75rem;
191
+ margin-top: 1.5rem;
192
+ }
193
+
194
+ .drillsharp-res-item {
195
+ background: var(--drillsharp-bg-dark);
196
+ padding: 1.25rem;
197
+ border-radius: 1.5rem;
198
+ border: 1px solid var(--drillsharp-border);
199
+ display: flex;
200
+ flex-direction: column;
201
+ gap: 0.5rem;
202
+ align-items: flex-start;
203
+ }
204
+
205
+ .drillsharp-res-label {
206
+ font-size: 0.65rem;
207
+ color: var(--drillsharp-text-muted);
208
+ font-weight: 700;
209
+ text-transform: uppercase;
210
+ }
211
+
212
+ .drillsharp-res-value-box {
213
+ display: flex;
214
+ align-items: baseline;
215
+ gap: 0.25rem;
216
+ }
217
+
218
+ .drillsharp-res-value {
219
+ font-size: 1.5rem;
220
+ font-weight: 900;
221
+ color: var(--drillsharp-text);
222
+ }
223
+
224
+ .drillsharp-res-unit {
225
+ font-size: 0.7rem;
226
+ color: var(--drillsharp-accent);
227
+ font-weight: 800;
228
+ }
229
+
230
+ .drillsharp-diag-btn {
231
+ width: 100%;
232
+ padding: 1.25rem;
233
+ background: rgba(239, 68, 68, 0.1);
234
+ border: 1px dashed rgba(239, 68, 68, 0.3);
235
+ color: #ef4444;
236
+ border-radius: 1.5rem;
237
+ font-weight: 800;
238
+ font-size: 0.85rem;
239
+ cursor: pointer;
240
+ transition: all 0.2s;
241
+ text-transform: uppercase;
242
+ }
243
+
244
+ .drillsharp-diag-btn:hover {
245
+ background: rgba(239, 68, 68, 0.2);
246
+ border-style: solid;
247
+ transform: translateY(-2px);
248
+ }
249
+ .drillsharp-diag-btn:active {
250
+ transform: translateY(0);
251
+ }
252
+
253
+ .drillsharp-modal {
254
+ position: fixed;
255
+ top: 50%;
256
+ left: 50%;
257
+ transform: translate(-50%, -50%);
258
+ background: var(--drillsharp-bg-panel);
259
+ border: 1px solid var(--drillsharp-border);
260
+ padding: 2.5rem;
261
+ border-radius: 2.5rem;
262
+ z-index: 1000;
263
+ display: none;
264
+ width: 90%;
265
+ max-width: 500px;
266
+ box-shadow: 0 0 100px rgba(0, 0, 0, 0.5);
267
+ }
268
+
269
+ .drillsharp-modal.active {
270
+ display: block;
271
+ animation: drillsharp-modal-in 0.3s ease-out;
272
+ }
273
+
274
+ @keyframes drillsharp-modal-in {
275
+ from {
276
+ opacity: 0;
277
+ transform: translate(-50%, -45%) scale(0.95);
278
+ }
279
+ to {
280
+ opacity: 1;
281
+ transform: translate(-50%, -50%) scale(1);
282
+ }
283
+ }
284
+
285
+ .drillsharp-modal-header {
286
+ display: flex;
287
+ justify-content: space-between;
288
+ align-items: center;
289
+ margin-bottom: 2rem;
290
+ border-bottom: 1px solid var(--drillsharp-border);
291
+ padding-bottom: 1rem;
292
+ }
293
+
294
+ .drillsharp-modal-header h3 {
295
+ font-size: 1rem;
296
+ color: #ef4444;
297
+ text-transform: uppercase;
298
+ font-weight: 900;
299
+ margin: 0;
300
+ }
301
+
302
+ .drillsharp-modal-close {
303
+ background: none;
304
+ border: none;
305
+ font-size: 2rem;
306
+ color: var(--drillsharp-text-muted);
307
+ cursor: pointer;
308
+ transition: color 0.2s;
309
+ padding: 0;
310
+ width: 40px;
311
+ height: 40px;
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: center;
315
+ }
316
+
317
+ .drillsharp-modal-close:hover {
318
+ color: var(--drillsharp-text);
319
+ }
320
+
321
+ .drillsharp-diag-item {
322
+ display: flex;
323
+ flex-direction: column;
324
+ gap: 0.75rem;
325
+ margin-bottom: 2rem;
326
+ }
327
+
328
+ .drillsharp-diag-item:last-child {
329
+ margin-bottom: 0;
330
+ }
331
+
332
+ .drillsharp-diag-item strong {
333
+ color: var(--drillsharp-accent);
334
+ font-size: 0.85rem;
335
+ text-transform: uppercase;
336
+ }
337
+
338
+ .drillsharp-diag-item p {
339
+ font-size: 0.75rem;
340
+ color: var(--drillsharp-text-muted);
341
+ line-height: 1.5;
342
+ margin: 0;
343
+ }
344
+
345
+ .drillsharp-diag-img {
346
+ background: var(--drillsharp-bg-dark);
347
+ border-radius: 1rem;
348
+ padding: 1rem;
349
+ border: 1px solid var(--drillsharp-border);
350
+ }
351
+
352
+ @media (max-width: 1000px) {
353
+ .drillsharp-layout {
354
+ grid-template-columns: 1fr;
355
+ padding: 1rem;
356
+ border-radius: 1.5rem;
357
+ }
358
+ .drillsharp-gauge {
359
+ min-height: 380px;
360
+ }
361
+ }
362
+
363
+ @media (max-width: 480px) {
364
+ .drillsharp-root {
365
+ padding: 0 0.5rem;
366
+ }
367
+ .drillsharp-layout {
368
+ padding: 0.75rem;
369
+ gap: 1rem;
370
+ }
371
+ .drillsharp-gauge {
372
+ min-height: 320px;
373
+ }
374
+ .drillsharp-mat-btn {
375
+ font-size: 0.75rem;
376
+ padding: 0.8rem 0.5rem;
377
+ }
378
+ .drillsharp-step-btn {
379
+ width: 48px;
380
+ height: 48px;
381
+ }
382
+ .drillsharp-group {
383
+ padding: 1.25rem;
384
+ }
385
+ .drillsharp-res-item {
386
+ padding: 1rem;
387
+ }
388
+ .drillsharp-res-value {
389
+ font-size: 1.25rem;
390
+ }
391
+ }
@@ -0,0 +1,25 @@
1
+ import type { DiyToolEntry } from '../../types';
2
+ import type { DrillSharpenerUI } from './ui';
3
+
4
+
5
+ export const drillSharpener: DiyToolEntry<DrillSharpenerUI> = {
6
+ id: 'drill-sharpener',
7
+ icons: { bg: 'mdi:tools', fg: 'mdi:speedometer' },
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
+ };
@@ -1,30 +1,5 @@
1
- import type { DiyToolEntry, ToolDefinition } from '../../types';
2
- import type { DrillSharpenerUI } from './ui';
3
- import { drillSharpenerUI } from './ui';
4
-
5
-
6
- export const drillSharpener: DiyToolEntry<DrillSharpenerUI> = {
7
- id: 'drill-sharpener',
8
- icons: { bg: 'mdi:tools', fg: 'mdi:speedometer' },
9
- i18n: {
10
- de: () => import('./i18n/de').then((m) => m.content),
11
- en: () => import('./i18n/en').then((m) => m.content),
12
- es: () => import('./i18n/es').then((m) => m.content),
13
- fr: () => import('./i18n/fr').then((m) => m.content),
14
- id: () => import('./i18n/id').then((m) => m.content),
15
- it: () => import('./i18n/it').then((m) => m.content),
16
- ja: () => import('./i18n/ja').then((m) => m.content),
17
- ko: () => import('./i18n/ko').then((m) => m.content),
18
- nl: () => import('./i18n/nl').then((m) => m.content),
19
- pl: () => import('./i18n/pl').then((m) => m.content),
20
- pt: () => import('./i18n/pt').then((m) => m.content),
21
- ru: () => import('./i18n/ru').then((m) => m.content),
22
- sv: () => import('./i18n/sv').then((m) => m.content),
23
- tr: () => import('./i18n/tr').then((m) => m.content),
24
- zh: () => import('./i18n/zh').then((m) => m.content),
25
- },
26
- };
27
-
1
+ import { drillSharpener } from './entry';
2
+ export * from './entry';
28
3
  export const DRILL_SHARPENER_TOOL: ToolDefinition = {
29
4
  entry: drillSharpener,
30
5
  Component: () => import('./component.astro'),