@jjlmoya/utils-textiles 1.11.0 → 1.13.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 (26) hide show
  1. package/package.json +5 -3
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/tool/burnTest/component.astro +0 -380
  4. package/src/tool/burnTest/textile-burn-test.css +378 -0
  5. package/src/tool/clothingSizeConverter/clothing-size-converter.css +717 -0
  6. package/src/tool/clothingSizeConverter/component.astro +0 -719
  7. package/src/tool/fabricProjectCalculator/component.astro +0 -540
  8. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +538 -0
  9. package/src/tool/fabricTruth/component.astro +0 -428
  10. package/src/tool/fabricTruth/fabric-truthfulness.css +426 -0
  11. package/src/tool/fiberPrep/component.astro +0 -652
  12. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +650 -0
  13. package/src/tool/knittingGauge/component.astro +0 -458
  14. package/src/tool/knittingGauge/knitting-gauge-calculator.css +456 -0
  15. package/src/tool/laundryGuide/component.astro +0 -317
  16. package/src/tool/laundryGuide/laundry-guide.css +315 -0
  17. package/src/tool/needleConverter/component.astro +0 -344
  18. package/src/tool/needleConverter/knitting-needle-converter.css +342 -0
  19. package/src/tool/sewingPatternScaler/component.astro +0 -314
  20. package/src/tool/sewingPatternScaler/sewing-pattern-scaler.css +313 -0
  21. package/src/tool/shoeSizeConverter/component.astro +0 -255
  22. package/src/tool/shoeSizeConverter/shoe-size-converter.css +253 -0
  23. package/src/tool/stainChemistry/component.astro +0 -479
  24. package/src/tool/stainChemistry/stain-chemical-protocol.css +477 -0
  25. package/src/tool/yarnCalculator/component.astro +0 -446
  26. package/src/tool/yarnCalculator/yarn-calculator.css +444 -0
@@ -180,258 +180,3 @@ const sizeUI = ui as ShoeSizeConverterUI;
180
180
  startInit();
181
181
  </script>
182
182
 
183
- <style>
184
- .shoe-converter {
185
- max-width: 800px;
186
- margin: 0 auto;
187
- padding: 1rem 1rem 4rem;
188
- }
189
-
190
- .converter-card {
191
- background: var(--bg-surface);
192
- border: 1px solid var(--border-color);
193
- border-radius: 2.5rem;
194
- padding: 3rem;
195
- box-shadow: 0 25px 60px rgba(0, 0, 0, 0.05);
196
- display: flex;
197
- flex-direction: column;
198
- gap: 3rem;
199
- }
200
-
201
- .theme-dark .converter-card {
202
- box-shadow: 0 25px 60px rgba(0, 0, 0, 0.3);
203
- }
204
-
205
- .gender-selector {
206
- display: flex;
207
- justify-content: center;
208
- gap: 2rem;
209
- }
210
-
211
- .gender-btn {
212
- width: 80px;
213
- height: 80px;
214
- border-radius: 2rem;
215
- border: 2px solid transparent;
216
- background: var(--bg-page);
217
- cursor: pointer;
218
- transition: all 0.3s;
219
- display: flex;
220
- align-items: center;
221
- justify-content: center;
222
- color: var(--text-muted);
223
- }
224
-
225
- .gender-btn svg {
226
- width: 2.5rem;
227
- height: 2.5rem;
228
- }
229
-
230
- .gender-btn-men.active {
231
- background: rgba(59, 130, 246, 0.08);
232
- border-color: #3b82f6;
233
- color: #3b82f6;
234
- box-shadow: 0 10px 25px rgba(59, 130, 246, 0.2);
235
- transform: translateY(-4px);
236
- }
237
-
238
- .gender-btn-women.active {
239
- background: rgba(244, 63, 94, 0.08);
240
- border-color: #f43f5e;
241
- color: #f43f5e;
242
- box-shadow: 0 10px 25px rgba(244, 63, 94, 0.2);
243
- transform: translateY(-4px);
244
- }
245
-
246
- .size-section {
247
- display: flex;
248
- flex-direction: column;
249
- gap: 1.5rem;
250
- }
251
-
252
- .field-group {
253
- display: flex;
254
- flex-direction: column;
255
- gap: 0.5rem;
256
- }
257
-
258
- .field-label {
259
- font-size: 0.75rem;
260
- font-weight: 800;
261
- color: var(--text-muted);
262
- text-transform: uppercase;
263
- letter-spacing: 0.1em;
264
- }
265
-
266
- .select-wrap {
267
- position: relative;
268
- }
269
-
270
- .select-wrap::after {
271
- content: '▾';
272
- position: absolute;
273
- right: 1.25rem;
274
- top: 50%;
275
- transform: translateY(-50%);
276
- pointer-events: none;
277
- color: var(--text-muted);
278
- font-size: 1rem;
279
- }
280
-
281
- .region-select {
282
- appearance: none;
283
- width: 100%;
284
- background: var(--bg-page);
285
- border: 1.5px solid var(--border-color);
286
- border-radius: 1rem;
287
- padding: 0.875rem 2.75rem 0.875rem 1.25rem;
288
- font-size: 1rem;
289
- font-weight: 600;
290
- color: var(--text-main);
291
- outline: none;
292
- cursor: pointer;
293
- transition: border-color 0.2s;
294
- }
295
-
296
- .region-select:focus {
297
- border-color: #3b82f6;
298
- }
299
-
300
- .size-grid-container {
301
- display: flex;
302
- flex-direction: column;
303
- gap: 1.5rem;
304
- }
305
-
306
- .grid-header {
307
- text-align: center;
308
- }
309
-
310
- .grid-header h3 {
311
- font-size: 1.25rem;
312
- font-weight: 800;
313
- color: var(--text-main);
314
- margin: 0 0 0.5rem;
315
- }
316
-
317
- .grid-header p {
318
- font-size: 0.875rem;
319
- color: var(--text-muted);
320
- margin: 0;
321
- }
322
-
323
- .size-grid {
324
- display: grid;
325
- grid-template-columns: repeat(auto-fill, minmax(65px, 1fr));
326
- gap: 0.75rem;
327
- }
328
-
329
- :global(.size-cell) {
330
- aspect-ratio: 1;
331
- display: flex;
332
- align-items: center;
333
- justify-content: center;
334
- border-radius: 1rem;
335
- background: var(--bg-surface);
336
- border: 1px solid var(--border-color);
337
- font-size: 1.125rem;
338
- font-weight: 700;
339
- color: var(--text-muted);
340
- cursor: pointer;
341
- transition: all 0.2s;
342
- }
343
-
344
- :global(.size-cell:hover) {
345
- border-color: #3b82f6;
346
- color: #3b82f6;
347
- transform: scale(1.05);
348
- }
349
-
350
- :global(.size-cell.active) {
351
- background: #3b82f6;
352
- border-color: #3b82f6;
353
- color: white;
354
- box-shadow: 0 10px 20px rgba(59, 130, 246, 0.25);
355
- }
356
-
357
- .results-container {
358
- display: grid;
359
- grid-template-columns: repeat(3, 1fr);
360
- gap: 1.5rem;
361
- background: var(--bg-page);
362
- padding: 2rem;
363
- border-radius: 2rem;
364
- border: 1px solid var(--border-color);
365
- }
366
-
367
- .result-card {
368
- text-align: center;
369
- display: flex;
370
- flex-direction: column;
371
- gap: 0.5rem;
372
- }
373
-
374
- .result-label {
375
- font-size: 0.75rem;
376
- font-weight: 800;
377
- color: var(--text-muted);
378
- text-transform: uppercase;
379
- letter-spacing: 0.05em;
380
- }
381
-
382
- .result-value {
383
- font-size: 2.5rem;
384
- font-weight: 900;
385
- color: var(--text-main);
386
- line-height: 1;
387
- }
388
-
389
- .result-unit {
390
- font-size: 0.875rem;
391
- font-weight: 700;
392
- color: #3b82f6;
393
- margin-top: 0.25rem;
394
- }
395
-
396
- .result-unit.hidden {
397
- display: none;
398
- }
399
-
400
- .info-banner {
401
- display: flex;
402
- align-items: center;
403
- gap: 1rem;
404
- padding: 1.25rem;
405
- background: rgba(3, 105, 161, 0.06);
406
- border-radius: 1.25rem;
407
- color: #0369a1;
408
- font-size: 0.875rem;
409
- line-height: 1.5;
410
- }
411
-
412
- .theme-dark .info-banner {
413
- background: rgba(3, 105, 161, 0.1);
414
- color: #7dd3fc;
415
- }
416
-
417
- .info-banner svg {
418
- width: 1.5rem;
419
- height: 1.5rem;
420
- flex-shrink: 0;
421
- }
422
-
423
- .info-banner p {
424
- margin: 0;
425
- }
426
-
427
- @media (max-width: 640px) {
428
- .converter-card {
429
- padding: 1.5rem;
430
- gap: 2rem;
431
- }
432
-
433
- .results-container {
434
- grid-template-columns: 1fr;
435
- }
436
- }
437
- </style>
@@ -0,0 +1,253 @@
1
+ .shoe-converter {
2
+ max-width: 800px;
3
+ margin: 0 auto;
4
+ padding: 1rem 1rem 4rem;
5
+ }
6
+
7
+ .converter-card {
8
+ background: var(--bg-surface);
9
+ border: 1px solid var(--border-color);
10
+ border-radius: 2.5rem;
11
+ padding: 3rem;
12
+ box-shadow: 0 25px 60px rgba(0, 0, 0, 0.05);
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: 3rem;
16
+ }
17
+
18
+ .theme-dark .converter-card {
19
+ box-shadow: 0 25px 60px rgba(0, 0, 0, 0.3);
20
+ }
21
+
22
+ .gender-selector {
23
+ display: flex;
24
+ justify-content: center;
25
+ gap: 2rem;
26
+ }
27
+
28
+ .gender-btn {
29
+ width: 80px;
30
+ height: 80px;
31
+ border-radius: 2rem;
32
+ border: 2px solid transparent;
33
+ background: var(--bg-page);
34
+ cursor: pointer;
35
+ transition: all 0.3s;
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ color: var(--text-muted);
40
+ }
41
+
42
+ .gender-btn svg {
43
+ width: 2.5rem;
44
+ height: 2.5rem;
45
+ }
46
+
47
+ .gender-btn-men.active {
48
+ background: rgba(59, 130, 246, 0.08);
49
+ border-color: #3b82f6;
50
+ color: #3b82f6;
51
+ box-shadow: 0 10px 25px rgba(59, 130, 246, 0.2);
52
+ transform: translateY(-4px);
53
+ }
54
+
55
+ .gender-btn-women.active {
56
+ background: rgba(244, 63, 94, 0.08);
57
+ border-color: #f43f5e;
58
+ color: #f43f5e;
59
+ box-shadow: 0 10px 25px rgba(244, 63, 94, 0.2);
60
+ transform: translateY(-4px);
61
+ }
62
+
63
+ .size-section {
64
+ display: flex;
65
+ flex-direction: column;
66
+ gap: 1.5rem;
67
+ }
68
+
69
+ .field-group {
70
+ display: flex;
71
+ flex-direction: column;
72
+ gap: 0.5rem;
73
+ }
74
+
75
+ .field-label {
76
+ font-size: 0.75rem;
77
+ font-weight: 800;
78
+ color: var(--text-muted);
79
+ text-transform: uppercase;
80
+ letter-spacing: 0.1em;
81
+ }
82
+
83
+ .select-wrap {
84
+ position: relative;
85
+ }
86
+
87
+ .select-wrap::after {
88
+ content: '▾';
89
+ position: absolute;
90
+ right: 1.25rem;
91
+ top: 50%;
92
+ transform: translateY(-50%);
93
+ pointer-events: none;
94
+ color: var(--text-muted);
95
+ font-size: 1rem;
96
+ }
97
+
98
+ .region-select {
99
+ appearance: none;
100
+ width: 100%;
101
+ background: var(--bg-page);
102
+ border: 1.5px solid var(--border-color);
103
+ border-radius: 1rem;
104
+ padding: 0.875rem 2.75rem 0.875rem 1.25rem;
105
+ font-size: 1rem;
106
+ font-weight: 600;
107
+ color: var(--text-main);
108
+ outline: none;
109
+ cursor: pointer;
110
+ transition: border-color 0.2s;
111
+ }
112
+
113
+ .region-select:focus {
114
+ border-color: #3b82f6;
115
+ }
116
+
117
+ .size-grid-container {
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 1.5rem;
121
+ }
122
+
123
+ .grid-header {
124
+ text-align: center;
125
+ }
126
+
127
+ .grid-header h3 {
128
+ font-size: 1.25rem;
129
+ font-weight: 800;
130
+ color: var(--text-main);
131
+ margin: 0 0 0.5rem;
132
+ }
133
+
134
+ .grid-header p {
135
+ font-size: 0.875rem;
136
+ color: var(--text-muted);
137
+ margin: 0;
138
+ }
139
+
140
+ .size-grid {
141
+ display: grid;
142
+ grid-template-columns: repeat(auto-fill, minmax(65px, 1fr));
143
+ gap: 0.75rem;
144
+ }
145
+
146
+ .size-cell {
147
+ aspect-ratio: 1;
148
+ display: flex;
149
+ align-items: center;
150
+ justify-content: center;
151
+ border-radius: 1rem;
152
+ background: var(--bg-surface);
153
+ border: 1px solid var(--border-color);
154
+ font-size: 1.125rem;
155
+ font-weight: 700;
156
+ color: var(--text-muted);
157
+ cursor: pointer;
158
+ transition: all 0.2s;
159
+ }
160
+
161
+ .size-cell:hover {
162
+ border-color: #3b82f6;
163
+ color: #3b82f6;
164
+ transform: scale(1.05);
165
+ }
166
+
167
+ .size-cell.active {
168
+ background: #3b82f6;
169
+ border-color: #3b82f6;
170
+ color: white;
171
+ box-shadow: 0 10px 20px rgba(59, 130, 246, 0.25);
172
+ }
173
+
174
+ .results-container {
175
+ display: grid;
176
+ grid-template-columns: repeat(3, 1fr);
177
+ gap: 1.5rem;
178
+ background: var(--bg-page);
179
+ padding: 2rem;
180
+ border-radius: 2rem;
181
+ border: 1px solid var(--border-color);
182
+ }
183
+
184
+ .result-card {
185
+ text-align: center;
186
+ display: flex;
187
+ flex-direction: column;
188
+ gap: 0.5rem;
189
+ }
190
+
191
+ .result-label {
192
+ font-size: 0.75rem;
193
+ font-weight: 800;
194
+ color: var(--text-muted);
195
+ text-transform: uppercase;
196
+ letter-spacing: 0.05em;
197
+ }
198
+
199
+ .result-value {
200
+ font-size: 2.5rem;
201
+ font-weight: 900;
202
+ color: var(--text-main);
203
+ line-height: 1;
204
+ }
205
+
206
+ .result-unit {
207
+ font-size: 0.875rem;
208
+ font-weight: 700;
209
+ color: #3b82f6;
210
+ margin-top: 0.25rem;
211
+ }
212
+
213
+ .result-unit.hidden {
214
+ display: none;
215
+ }
216
+
217
+ .info-banner {
218
+ display: flex;
219
+ align-items: center;
220
+ gap: 1rem;
221
+ padding: 1.25rem;
222
+ background: rgba(3, 105, 161, 0.06);
223
+ border-radius: 1.25rem;
224
+ color: #0369a1;
225
+ font-size: 0.875rem;
226
+ line-height: 1.5;
227
+ }
228
+
229
+ .theme-dark .info-banner {
230
+ background: rgba(3, 105, 161, 0.1);
231
+ color: #7dd3fc;
232
+ }
233
+
234
+ .info-banner svg {
235
+ width: 1.5rem;
236
+ height: 1.5rem;
237
+ flex-shrink: 0;
238
+ }
239
+
240
+ .info-banner p {
241
+ margin: 0;
242
+ }
243
+
244
+ @media (max-width: 640px) {
245
+ .converter-card {
246
+ padding: 1.5rem;
247
+ gap: 2rem;
248
+ }
249
+
250
+ .results-container {
251
+ grid-template-columns: 1fr;
252
+ }
253
+ }