@jjlmoya/utils-textiles 1.9.0 → 1.12.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 (53) hide show
  1. package/package.json +7 -4
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/index.ts +24 -25
  4. package/src/entries.ts +37 -0
  5. package/src/tool/burnTest/component.astro +0 -380
  6. package/src/tool/burnTest/entry.ts +30 -0
  7. package/src/tool/burnTest/index.ts +2 -32
  8. package/src/tool/burnTest/textile-burn-test.css +378 -0
  9. package/src/tool/clothingSizeConverter/clothing-size-converter.css +717 -0
  10. package/src/tool/clothingSizeConverter/component.astro +0 -719
  11. package/src/tool/clothingSizeConverter/entry.ts +30 -0
  12. package/src/tool/clothingSizeConverter/index.ts +2 -32
  13. package/src/tool/fabricProjectCalculator/component.astro +0 -540
  14. package/src/tool/fabricProjectCalculator/entry.ts +30 -0
  15. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +538 -0
  16. package/src/tool/fabricProjectCalculator/index.ts +2 -32
  17. package/src/tool/fabricTruth/component.astro +0 -428
  18. package/src/tool/fabricTruth/entry.ts +30 -0
  19. package/src/tool/fabricTruth/fabric-truthfulness.css +426 -0
  20. package/src/tool/fabricTruth/index.ts +2 -32
  21. package/src/tool/fiberPrep/component.astro +0 -652
  22. package/src/tool/fiberPrep/entry.ts +30 -0
  23. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +650 -0
  24. package/src/tool/fiberPrep/index.ts +2 -32
  25. package/src/tool/knittingGauge/component.astro +0 -458
  26. package/src/tool/knittingGauge/entry.ts +30 -0
  27. package/src/tool/knittingGauge/index.ts +2 -32
  28. package/src/tool/knittingGauge/knitting-gauge-calculator.css +456 -0
  29. package/src/tool/laundryGuide/component.astro +0 -317
  30. package/src/tool/laundryGuide/entry.ts +25 -0
  31. package/src/tool/laundryGuide/index.ts +2 -27
  32. package/src/tool/laundryGuide/laundry-guide.css +315 -0
  33. package/src/tool/needleConverter/component.astro +0 -344
  34. package/src/tool/needleConverter/entry.ts +30 -0
  35. package/src/tool/needleConverter/index.ts +2 -32
  36. package/src/tool/needleConverter/knitting-needle-converter.css +342 -0
  37. package/src/tool/sewingPatternScaler/component.astro +0 -314
  38. package/src/tool/sewingPatternScaler/entry.ts +30 -0
  39. package/src/tool/sewingPatternScaler/index.ts +2 -32
  40. package/src/tool/sewingPatternScaler/sewing-pattern-scaler.css +313 -0
  41. package/src/tool/shoeSizeConverter/component.astro +0 -255
  42. package/src/tool/shoeSizeConverter/entry.ts +30 -0
  43. package/src/tool/shoeSizeConverter/index.ts +2 -32
  44. package/src/tool/shoeSizeConverter/shoe-size-converter.css +253 -0
  45. package/src/tool/stainChemistry/component.astro +0 -479
  46. package/src/tool/stainChemistry/entry.ts +30 -0
  47. package/src/tool/stainChemistry/index.ts +2 -32
  48. package/src/tool/stainChemistry/stain-chemical-protocol.css +477 -0
  49. package/src/tool/yarnCalculator/component.astro +0 -446
  50. package/src/tool/yarnCalculator/entry.ts +30 -0
  51. package/src/tool/yarnCalculator/index.ts +2 -32
  52. package/src/tool/yarnCalculator/yarn-calculator.css +444 -0
  53. package/src/tools.ts +1 -1
@@ -0,0 +1,342 @@
1
+ .needle-wrapper {
2
+ padding: 1.5rem 0;
3
+ width: 100%;
4
+ }
5
+
6
+ .needle-card {
7
+ --nc-p: #3b82f6;
8
+ --nc-s: #0ea5e9;
9
+
10
+ background: var(--bg-surface);
11
+ color: var(--text-main);
12
+ width: calc(100% - 24px);
13
+ max-width: 1100px;
14
+ margin: 0 auto;
15
+ border-radius: 24px;
16
+ border: 1px solid var(--border-color);
17
+ display: flex;
18
+ flex-direction: column;
19
+ overflow: hidden;
20
+ }
21
+
22
+ @media (min-width: 1024px) {
23
+ .needle-card {
24
+ flex-direction: row;
25
+ }
26
+ }
27
+
28
+ .card-sidebar {
29
+ flex: 0 0 auto;
30
+ padding: 24px;
31
+ width: 100%;
32
+ background: var(--bg-surface);
33
+ }
34
+
35
+ @media (min-width: 1024px) {
36
+ .card-sidebar {
37
+ width: 400px;
38
+ padding: 40px;
39
+ border-right: 1px solid var(--border-color);
40
+ }
41
+ }
42
+
43
+ .card-main {
44
+ flex: 1 1 auto;
45
+ padding: 24px;
46
+ background: var(--bg-surface);
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 32px;
50
+ min-width: 0;
51
+ }
52
+
53
+ @media (min-width: 1024px) {
54
+ .card-main {
55
+ padding: 40px;
56
+ }
57
+ }
58
+
59
+ .label-tiny {
60
+ font-size: 10px;
61
+ font-weight: 700;
62
+ text-transform: uppercase;
63
+ letter-spacing: 0.12em;
64
+ color: var(--text-muted);
65
+ margin-bottom: 12px;
66
+ display: block;
67
+ }
68
+
69
+ .mode-toggle {
70
+ display: flex;
71
+ background: var(--bg-muted);
72
+ padding: 4px;
73
+ border-radius: 12px;
74
+ margin-bottom: 32px;
75
+ }
76
+
77
+ .toggle-btn {
78
+ flex: 1;
79
+ border: none;
80
+ background: transparent;
81
+ padding: 12px;
82
+ font-size: 10px;
83
+ font-weight: 800;
84
+ text-transform: uppercase;
85
+ letter-spacing: 0.05em;
86
+ color: var(--text-muted);
87
+ cursor: pointer;
88
+ border-radius: 8px;
89
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
90
+ }
91
+
92
+ .toggle-btn.active {
93
+ background: var(--bg-surface);
94
+ color: var(--text-main);
95
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
96
+ }
97
+
98
+ .calibration-area {
99
+ background: var(--bg-muted);
100
+ border-radius: 20px;
101
+ padding: 24px;
102
+ border: 1px solid var(--border-color);
103
+ margin-bottom: 24px;
104
+ position: relative;
105
+ overflow: hidden;
106
+ }
107
+
108
+ .hole-selector {
109
+ display: flex;
110
+ align-items: center;
111
+ gap: 24px;
112
+ overflow-x: auto;
113
+ padding: 30px 10px;
114
+ scrollbar-width: none;
115
+ scroll-snap-type: x mandatory;
116
+ }
117
+
118
+ .hole-selector::-webkit-scrollbar {
119
+ display: none;
120
+ }
121
+
122
+ :global(.needle-hole) {
123
+ flex: 0 0 auto;
124
+ width: 64px;
125
+ height: 64px;
126
+ background: var(--bg-surface);
127
+ border: 1.5px solid var(--border-color);
128
+ border-radius: 50%;
129
+ display: flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ cursor: pointer;
133
+ position: relative;
134
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
135
+ scroll-snap-align: center;
136
+ }
137
+
138
+ :global(.needle-hole::after) {
139
+ content: '';
140
+ position: absolute;
141
+ width: var(--size-px);
142
+ height: var(--size-px);
143
+ background: var(--text-main);
144
+ border-radius: 50%;
145
+ opacity: 0.1;
146
+ transition: transform 0.3s ease;
147
+ }
148
+
149
+ :global(.needle-hole.active) {
150
+ border-color: var(--nc-p);
151
+ background: rgba(59, 130, 246, 0.08);
152
+ transform: scale(1.15);
153
+ box-shadow: 0 10px 15px -3px rgba(59, 130, 246, 0.15);
154
+ }
155
+
156
+ :global(.needle-hole.active::after) {
157
+ opacity: 1;
158
+ background: var(--nc-p);
159
+ transform: scale(1.05);
160
+ }
161
+
162
+ :global(.hole-label) {
163
+ position: absolute;
164
+ bottom: -28px;
165
+ font-size: 11px;
166
+ font-weight: 800;
167
+ color: var(--text-muted);
168
+ transition: color 0.2s;
169
+ }
170
+
171
+ :global(.needle-hole.active .hole-label) {
172
+ color: var(--nc-p);
173
+ }
174
+
175
+ .calibrator-desc {
176
+ font-size: 12px;
177
+ color: var(--text-muted);
178
+ font-weight: 400;
179
+ line-height: 1.6;
180
+ }
181
+
182
+ .conversion-grid {
183
+ display: grid;
184
+ grid-template-columns: repeat(3, 1fr);
185
+ gap: 16px;
186
+ }
187
+
188
+ .system-card {
189
+ background: var(--bg-muted);
190
+ border-radius: 20px;
191
+ padding: 24px 16px;
192
+ text-align: center;
193
+ border: 1px solid var(--border-color);
194
+ transition: border-color 0.2s;
195
+ }
196
+
197
+ .val-large {
198
+ display: block;
199
+ font-size: 28px;
200
+ font-weight: 800;
201
+ color: var(--text-main);
202
+ line-height: 1;
203
+ margin-bottom: 8px;
204
+ letter-spacing: -0.02em;
205
+ }
206
+
207
+ .val-tag {
208
+ font-size: 10px;
209
+ font-weight: 700;
210
+ text-transform: uppercase;
211
+ color: var(--text-muted);
212
+ letter-spacing: 0.1em;
213
+ }
214
+
215
+ .yarn-box {
216
+ background: #f0f9ff;
217
+ border-left: 4px solid var(--nc-s);
218
+ padding: 28px;
219
+ border-radius: 16px;
220
+ display: flex;
221
+ gap: 20px;
222
+ align-items: center;
223
+ }
224
+
225
+ .theme-dark .yarn-box {
226
+ background: #082f49;
227
+ }
228
+
229
+ .yarn-icon {
230
+ width: 56px;
231
+ height: 56px;
232
+ background: var(--bg-surface);
233
+ border-radius: 16px;
234
+ display: flex;
235
+ align-items: center;
236
+ justify-content: center;
237
+ color: var(--nc-s);
238
+ flex-shrink: 0;
239
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
240
+ }
241
+
242
+ .yarn-content {
243
+ flex: 1;
244
+ }
245
+
246
+ .yarn-label {
247
+ font-size: 9px;
248
+ font-weight: 800;
249
+ color: #0284c7;
250
+ text-transform: uppercase;
251
+ letter-spacing: 0.1em;
252
+ display: block;
253
+ margin-bottom: 4px;
254
+ }
255
+
256
+ .theme-dark .yarn-label {
257
+ color: #7dd3fc;
258
+ }
259
+
260
+ .yarn-name {
261
+ display: block;
262
+ font-size: 17px;
263
+ font-weight: 800;
264
+ color: #075985;
265
+ }
266
+
267
+ .theme-dark .yarn-name {
268
+ color: #bae6fd;
269
+ }
270
+
271
+ .yarn-wpi {
272
+ display: block;
273
+ font-size: 12px;
274
+ color: #0369a1;
275
+ font-weight: 500;
276
+ margin-top: 4px;
277
+ }
278
+
279
+ .theme-dark .yarn-wpi {
280
+ color: #7dd3fc;
281
+ }
282
+
283
+ .table-section {
284
+ border-top: 1px solid var(--border-color);
285
+ padding-top: 40px;
286
+ }
287
+
288
+ .needle-table-wrapper {
289
+ overflow-x: auto;
290
+ border-radius: 16px;
291
+ border: 1px solid var(--border-color);
292
+ }
293
+
294
+ .needle-table {
295
+ width: 100%;
296
+ border-collapse: collapse;
297
+ font-size: 14px;
298
+ text-align: center;
299
+ }
300
+
301
+ .needle-table th {
302
+ background: var(--bg-muted);
303
+ padding: 16px;
304
+ font-size: 10px;
305
+ font-weight: 800;
306
+ text-transform: uppercase;
307
+ color: var(--text-muted);
308
+ border-bottom: 1px solid var(--border-color);
309
+ }
310
+
311
+ .needle-table :global(td) {
312
+ padding: 16px;
313
+ border-bottom: 1px solid var(--border-color);
314
+ color: var(--text-muted);
315
+ transition: all 0.2s;
316
+ }
317
+
318
+ .needle-table :global(tbody tr:nth-child(even) td) {
319
+ background: rgba(0, 0, 0, 0.02);
320
+ }
321
+
322
+ .theme-dark .needle-table :global(tbody tr:nth-child(even) td) {
323
+ background: rgba(255, 255, 255, 0.02);
324
+ }
325
+
326
+ .needle-table :global(tr:hover td) {
327
+ background: var(--bg-muted);
328
+ }
329
+
330
+ .needle-table :global(tr.active td) {
331
+ background: rgba(59, 130, 246, 0.05);
332
+ color: var(--nc-p);
333
+ font-weight: 700;
334
+ }
335
+
336
+ .needle-table :global(tr.active td:first-child) {
337
+ box-shadow: inset 4px 0 0 var(--nc-p);
338
+ }
339
+
340
+ .theme-dark .needle-table :global(tr.active td) {
341
+ background: rgba(59, 130, 246, 0.1);
342
+ }
@@ -233,318 +233,4 @@ const SIZES = ['36', '38', '40', '42', '44', '46'];
233
233
  init();
234
234
  </script>
235
235
 
236
- <style>
237
- .scaler-wrapper {
238
- padding: 1.5rem 0;
239
- width: 100%;
240
- }
241
-
242
- .scaler-card {
243
- --sp-p: #4f46e5;
244
-
245
- background: var(--bg-surface);
246
- color: var(--text-main);
247
- width: calc(100% - 24px);
248
- max-width: 1100px;
249
- margin: 0 auto;
250
- border-radius: 24px;
251
- border: 1px solid var(--border-color);
252
- display: flex;
253
- flex-direction: column;
254
- overflow: hidden;
255
- }
256
-
257
- @media (min-width: 1024px) {
258
- .scaler-card { flex-direction: row; }
259
- }
260
-
261
- .card-left {
262
- flex: 0 0 auto;
263
- padding: 24px;
264
- width: 100%;
265
- background: var(--bg-surface);
266
- }
267
-
268
- @media (min-width: 1024px) {
269
- .card-left {
270
- width: 380px;
271
- padding: 40px;
272
- border-right: 1px solid var(--border-color);
273
- }
274
- }
275
-
276
- .card-right {
277
- flex: 1 1 auto;
278
- padding: 24px;
279
- background: var(--bg-surface);
280
- display: flex;
281
- flex-direction: column;
282
- gap: 24px;
283
- min-width: 0;
284
- }
285
-
286
- @media (min-width: 1024px) {
287
- .card-right {
288
- padding: 40px;
289
- gap: 32px;
290
- }
291
- }
292
-
293
- .label-tiny {
294
- font-size: 10px;
295
- font-weight: 700;
296
- text-transform: uppercase;
297
- letter-spacing: 0.12em;
298
- color: var(--text-muted);
299
- margin-bottom: 10px;
300
- display: block;
301
- }
302
-
303
- .segmented-control {
304
- display: flex;
305
- background: var(--bg-muted);
306
- border-radius: 12px;
307
- padding: 4px;
308
- margin-bottom: 24px;
309
- }
310
-
311
- .segment-btn {
312
- flex: 1;
313
- background: transparent;
314
- border: none;
315
- padding: 10px 4px;
316
- font-size: 10px;
317
- font-weight: 700;
318
- text-transform: uppercase;
319
- letter-spacing: 0.05em;
320
- color: var(--text-muted);
321
- cursor: pointer;
322
- border-radius: 8px;
323
- transition: all 0.2s ease;
324
- }
325
-
326
- .segment-btn.active {
327
- color: var(--text-main);
328
- background: var(--bg-surface);
329
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
330
- }
331
-
332
- .input-grid {
333
- display: grid;
334
- grid-template-columns: repeat(2, 1fr);
335
- gap: 12px;
336
- margin-bottom: 16px;
337
- }
338
-
339
- .form-input {
340
- width: 100%;
341
- background: var(--bg-surface);
342
- border: 1px solid var(--border-color);
343
- border-radius: 8px;
344
- padding: 10px 12px;
345
- font-size: 14px;
346
- color: var(--text-main);
347
- }
348
-
349
- .form-input:focus {
350
- outline: none;
351
- border-color: var(--sp-p);
352
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.06);
353
- }
354
-
355
- .form-select {
356
- cursor: pointer;
357
- appearance: none;
358
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748b'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E");
359
- background-repeat: no-repeat;
360
- background-position: right 8px center;
361
- background-size: 12px;
362
- padding-right: 28px;
363
- }
364
-
365
- .target-lbl {
366
- margin-top: 16px;
367
- }
368
-
369
- .ease-group {
370
- margin-top: 24px;
371
- border-top: 1px solid var(--border-color);
372
- padding-top: 24px;
373
- }
374
-
375
- .viz-container {
376
- background: var(--bg-muted);
377
- background-image:
378
- linear-gradient(rgba(0, 0, 0, 0.02) 1px, transparent 1px),
379
- linear-gradient(90deg, rgba(0, 0, 0, 0.02) 1px, transparent 1px);
380
- background-size: 20px 20px;
381
- border-radius: 12px;
382
- aspect-ratio: 1/1;
383
- display: flex;
384
- align-items: center;
385
- justify-content: center;
386
- position: relative;
387
- border: 1px solid var(--border-color);
388
- }
389
-
390
- @media (min-width: 768px) {
391
- .viz-container { aspect-ratio: 16/9; }
392
- }
393
-
394
- .theme-dark .viz-container {
395
- background-image:
396
- linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
397
- linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
398
- }
399
236
 
400
- #scaler-canvas {
401
- position: absolute;
402
- inset: 0;
403
- width: 100%;
404
- height: 100%;
405
- }
406
-
407
- .legend-box {
408
- position: absolute;
409
- bottom: 12px;
410
- right: 12px;
411
- display: flex;
412
- gap: 12px;
413
- font-size: 9px;
414
- font-weight: 700;
415
- text-transform: uppercase;
416
- letter-spacing: 0.05em;
417
- color: var(--text-muted);
418
- }
419
-
420
- .legend-item {
421
- display: flex;
422
- align-items: center;
423
- gap: 4px;
424
- }
425
-
426
- .ln-o {
427
- width: 10px;
428
- height: 1px;
429
- border: 1px dashed var(--border-color);
430
- }
431
-
432
- .ln-s {
433
- width: 10px;
434
- height: 2px;
435
- background: var(--sp-p);
436
- }
437
-
438
- .action-strip {
439
- display: flex;
440
- flex-direction: column;
441
- gap: 12px;
442
- }
443
-
444
- :global(.action-pill) {
445
- background: var(--bg-surface);
446
- border: 1px solid var(--border-color);
447
- border-radius: 16px;
448
- padding: 16px 20px;
449
- display: flex;
450
- align-items: center;
451
- gap: 16px;
452
- }
453
-
454
- :global(.icon-box) {
455
- width: 44px;
456
- height: 44px;
457
- background: var(--bg-muted);
458
- border-radius: 12px;
459
- display: flex;
460
- align-items: center;
461
- justify-content: center;
462
- color: var(--sp-p);
463
- font-size: 20px;
464
- flex-shrink: 0;
465
- }
466
-
467
- :global(.action-content) { flex: 1; }
468
-
469
- :global(.action-text) {
470
- display: block;
471
- font-size: 14px;
472
- color: var(--text-muted);
473
- }
474
-
475
- :global(.action-text strong) { font-weight: 700; }
476
-
477
- :global(.action-val-pos) { color: var(--sp-p); }
478
-
479
- :global(.action-val-neg) { color: #f87171; }
480
-
481
- :global(.action-note) {
482
- display: block;
483
- font-size: 10px;
484
- color: var(--text-muted);
485
- margin-top: 2px;
486
- text-transform: uppercase;
487
- letter-spacing: 0.05em;
488
- }
489
-
490
- .totals-section {
491
- background: var(--bg-muted);
492
- border-radius: 10px;
493
- padding: 24px;
494
- }
495
-
496
- .totals-grid {
497
- display: grid;
498
- grid-template-columns: repeat(2, 1fr);
499
- gap: 16px;
500
- }
501
-
502
- @media (min-width: 640px) {
503
- .totals-grid { grid-template-columns: repeat(4, 1fr); }
504
- }
505
-
506
- .total-card {
507
- text-align: center;
508
- display: flex;
509
- flex-direction: column;
510
- gap: 4px;
511
- }
512
-
513
- .total-val {
514
- font-size: 16px;
515
- font-weight: 700;
516
- color: var(--text-main);
517
- }
518
-
519
- .total-tag {
520
- font-size: 10px;
521
- font-weight: 700;
522
- text-transform: uppercase;
523
- color: var(--text-muted);
524
- letter-spacing: 0.08em;
525
- }
526
-
527
- .warn-banner {
528
- background: #fefce8;
529
- border-left: 3px solid #ca8a04;
530
- color: #854d0e;
531
- padding: 16px 20px;
532
- border-radius: 8px;
533
- font-size: 11px;
534
- font-weight: 600;
535
- margin-bottom: 24px;
536
- display: flex;
537
- align-items: center;
538
- gap: 12px;
539
- }
540
-
541
- .theme-dark .warn-banner {
542
- background: #451a03;
543
- border-left-color: #fbbf24;
544
- color: #fbbf24;
545
- }
546
-
547
- .hidden {
548
- display: none;
549
- }
550
- </style>
@@ -0,0 +1,30 @@
1
+ import type { TextilesToolEntry, ToolLocaleContent } from '../../types';
2
+
3
+ import type { SewingPatternScalerUI } from './ui';
4
+
5
+ export type SewingPatternScalerLocaleContent = ToolLocaleContent<SewingPatternScalerUI>;
6
+
7
+ export const sewingPatternScaler: TextilesToolEntry<SewingPatternScalerUI> = {
8
+ id: 'sewing-pattern-scaler',
9
+ icons: {
10
+ bg: 'mdi:human-female',
11
+ fg: 'mdi:checkerboard',
12
+ },
13
+ i18n: {
14
+ es: () => import('./i18n/es').then((m) => m.content),
15
+ en: () => import('./i18n/en').then((m) => m.content),
16
+ fr: () => import('./i18n/fr').then((m) => m.content),
17
+ de: () => import('./i18n/de').then((m) => m.content),
18
+ id: () => import('./i18n/id').then((m) => m.content),
19
+ it: () => import('./i18n/it').then((m) => m.content),
20
+ ja: () => import('./i18n/ja').then((m) => m.content),
21
+ ko: () => import('./i18n/ko').then((m) => m.content),
22
+ nl: () => import('./i18n/nl').then((m) => m.content),
23
+ pl: () => import('./i18n/pl').then((m) => m.content),
24
+ pt: () => import('./i18n/pt').then((m) => m.content),
25
+ ru: () => import('./i18n/ru').then((m) => m.content),
26
+ sv: () => import('./i18n/sv').then((m) => m.content),
27
+ tr: () => import('./i18n/tr').then((m) => m.content),
28
+ zh: () => import('./i18n/zh').then((m) => m.content),
29
+ },
30
+ };
@@ -1,35 +1,5 @@
1
- import type { TextilesToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
-
3
- import type { SewingPatternScalerUI } from './ui';
4
-
5
- export type SewingPatternScalerLocaleContent = ToolLocaleContent<SewingPatternScalerUI>;
6
-
7
- export const sewingPatternScaler: TextilesToolEntry<SewingPatternScalerUI> = {
8
- id: 'sewing-pattern-scaler',
9
- icons: {
10
- bg: 'mdi:human-female',
11
- fg: 'mdi:checkerboard',
12
- },
13
- i18n: {
14
- es: () => import('./i18n/es').then((m) => m.content),
15
- en: () => import('./i18n/en').then((m) => m.content),
16
- fr: () => import('./i18n/fr').then((m) => m.content),
17
- de: () => import('./i18n/de').then((m) => m.content),
18
- id: () => import('./i18n/id').then((m) => m.content),
19
- it: () => import('./i18n/it').then((m) => m.content),
20
- ja: () => import('./i18n/ja').then((m) => m.content),
21
- ko: () => import('./i18n/ko').then((m) => m.content),
22
- nl: () => import('./i18n/nl').then((m) => m.content),
23
- pl: () => import('./i18n/pl').then((m) => m.content),
24
- pt: () => import('./i18n/pt').then((m) => m.content),
25
- ru: () => import('./i18n/ru').then((m) => m.content),
26
- sv: () => import('./i18n/sv').then((m) => m.content),
27
- tr: () => import('./i18n/tr').then((m) => m.content),
28
- zh: () => import('./i18n/zh').then((m) => m.content),
29
- },
30
- };
31
-
32
-
1
+ import { sewingPatternScaler } from './entry';
2
+ export * from './entry';
33
3
  export const SEWING_PATTERN_SCALER_TOOL: ToolDefinition = {
34
4
  entry: sewingPatternScaler,
35
5
  Component: () => import('./component.astro'),