@jjlmoya/utils-textiles 1.11.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 (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
@@ -236,482 +236,3 @@ const fibers = Object.entries(ui.fiberData)
236
236
  startInit();
237
237
  </script>
238
238
 
239
- <style>
240
- .stain-chemistry-container {
241
- width: 100%;
242
- padding: 1rem;
243
- }
244
-
245
- .card-wrapper {
246
- background: var(--bg-surface);
247
- border: 1px solid var(--border-color);
248
- border-radius: 1.5rem;
249
- overflow: hidden;
250
- box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
251
- }
252
-
253
-
254
- .selectors-section {
255
- padding: 2rem;
256
- border-bottom: 1px solid var(--border-color);
257
- background: var(--bg-surface);
258
- }
259
-
260
- .selectors-grid {
261
- display: grid;
262
- grid-template-columns: 1fr 1fr;
263
- gap: 1.5rem;
264
- }
265
-
266
- @media (max-width: 600px) {
267
- .selectors-grid {
268
- grid-template-columns: 1fr;
269
- }
270
- }
271
-
272
- .selector-group {
273
- display: flex;
274
- flex-direction: column;
275
- gap: 0.5rem;
276
- }
277
-
278
- .selector-label {
279
- display: flex;
280
- align-items: center;
281
- gap: 0.4rem;
282
- font-size: 0.65rem;
283
- font-weight: 900;
284
- color: #6366f1;
285
- text-transform: uppercase;
286
- letter-spacing: 0.12em;
287
- }
288
-
289
- .label-icon {
290
- width: 1rem;
291
- height: 1rem;
292
- }
293
-
294
- .select-wrapper {
295
- position: relative;
296
- }
297
-
298
- .selector-input {
299
- width: 100%;
300
- height: 3.5rem;
301
- padding: 0 2.5rem 0 1rem;
302
- background: var(--bg-page);
303
- border: 2px solid var(--border-color);
304
- border-radius: 0.875rem;
305
- appearance: none;
306
- font-size: 0.9rem;
307
- font-weight: 700;
308
- color: var(--text-main);
309
- cursor: pointer;
310
- transition: border-color 0.2s;
311
- outline: none;
312
- }
313
-
314
- .selector-input:focus {
315
- border-color: #6366f1;
316
- }
317
-
318
- .select-chevron {
319
- position: absolute;
320
- right: 0.75rem;
321
- top: 50%;
322
- transform: translateY(-50%);
323
- width: 1.25rem;
324
- height: 1.25rem;
325
- color: var(--text-muted);
326
- pointer-events: none;
327
- }
328
-
329
-
330
- .protocol-display {
331
- padding: 1.5rem 2rem 2rem;
332
- background: var(--bg-page);
333
- animation: fade-in 0.4s ease;
334
- }
335
-
336
- :global(.protocol-display.hidden) {
337
- display: none;
338
- }
339
-
340
- @keyframes fade-in {
341
- from {
342
- opacity: 0;
343
- transform: translateY(6px);
344
- }
345
- to {
346
- opacity: 1;
347
- transform: translateY(0);
348
- }
349
- }
350
-
351
- .protocol-card {
352
- background: var(--bg-surface);
353
- border: 1px solid var(--border-color);
354
- border-radius: 1.25rem;
355
- overflow: hidden;
356
- }
357
-
358
- .protocol-header {
359
- display: flex;
360
- align-items: center;
361
- gap: 1rem;
362
- padding: 1.25rem 1.5rem;
363
- background: var(--bg-page);
364
- border-bottom: 1px solid var(--border-color);
365
- }
366
-
367
- .protocol-icon-wrap {
368
- width: 2.75rem;
369
- height: 2.75rem;
370
- border-radius: 0.75rem;
371
- background: #6366f1;
372
- color: #fff;
373
- display: flex;
374
- align-items: center;
375
- justify-content: center;
376
- flex-shrink: 0;
377
- box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
378
- }
379
-
380
- .protocol-icon {
381
- width: 1.5rem;
382
- height: 1.5rem;
383
- }
384
-
385
- .protocol-meta {
386
- font-size: 0.65rem;
387
- font-weight: 900;
388
- text-transform: uppercase;
389
- letter-spacing: 0.12em;
390
- color: var(--text-muted);
391
- margin: 0 0 0.2rem;
392
- }
393
-
394
- .protocol-title {
395
- font-size: 1.35rem;
396
- font-weight: 900;
397
- color: var(--text-main);
398
- margin: 0;
399
- letter-spacing: -0.02em;
400
- }
401
-
402
- .protocol-body {
403
- padding: 1.5rem;
404
- display: flex;
405
- flex-direction: column;
406
- gap: 1rem;
407
- }
408
-
409
- .protocol-grid {
410
- display: grid;
411
- grid-template-columns: 1fr 1fr;
412
- gap: 1rem;
413
- }
414
-
415
- @media (max-width: 480px) {
416
- .protocol-grid {
417
- grid-template-columns: 1fr;
418
- }
419
- }
420
-
421
-
422
- .info-card {
423
- background: var(--bg-page);
424
- border: 1px solid var(--border-color);
425
- border-radius: 1rem;
426
- padding: 1.25rem;
427
- display: flex;
428
- flex-direction: column;
429
- align-items: center;
430
- text-align: center;
431
- gap: 0.4rem;
432
- transition: border-color 0.2s;
433
- }
434
-
435
- .info-card:hover {
436
- border-color: rgba(99, 102, 241, 0.3);
437
- }
438
-
439
- .info-card-icon-wrap {
440
- width: 3rem;
441
- height: 3rem;
442
- border-radius: 50%;
443
- display: flex;
444
- align-items: center;
445
- justify-content: center;
446
- margin-bottom: 0.5rem;
447
- }
448
-
449
- .agent-icon-wrap {
450
- background: rgba(99, 102, 241, 0.08);
451
- color: #6366f1;
452
- }
453
-
454
- .temp-icon-wrap {
455
- background: rgba(249, 115, 22, 0.08);
456
- color: #f97316;
457
- }
458
-
459
- .info-card-icon {
460
- width: 1.5rem;
461
- height: 1.5rem;
462
- }
463
-
464
- .info-card-meta {
465
- font-size: 0.6rem;
466
- font-weight: 900;
467
- text-transform: uppercase;
468
- letter-spacing: 0.18em;
469
- color: var(--text-muted);
470
- }
471
-
472
- .info-card-value {
473
- font-size: 1.15rem;
474
- font-weight: 900;
475
- color: var(--text-main);
476
- margin: 0;
477
- }
478
-
479
- .info-card-desc {
480
- font-size: 0.72rem;
481
- font-weight: 600;
482
- color: var(--text-muted);
483
- margin: 0;
484
- max-width: 14rem;
485
- line-height: 1.4;
486
- }
487
-
488
- .info-card-temp-value {
489
- font-size: 2rem;
490
- font-weight: 900;
491
- color: var(--text-main);
492
- margin: 0;
493
- letter-spacing: -0.03em;
494
- }
495
-
496
- .info-card-temp-label {
497
- font-size: 0.6rem;
498
- font-weight: 700;
499
- text-transform: uppercase;
500
- letter-spacing: 0.15em;
501
- color: var(--text-muted);
502
- }
503
-
504
-
505
- .method-card {
506
- background: #6366f1;
507
- border-radius: 1rem;
508
- padding: 1.5rem;
509
- position: relative;
510
- overflow: hidden;
511
- box-shadow: 0 8px 20px rgba(99, 102, 241, 0.2);
512
- }
513
-
514
- .method-card-overlay {
515
- position: absolute;
516
- top: 0;
517
- right: 0;
518
- padding: 1.5rem;
519
- opacity: 0.08;
520
- pointer-events: none;
521
- }
522
-
523
- .method-overlay-icon {
524
- width: 5rem;
525
- height: 5rem;
526
- color: #fff;
527
- }
528
-
529
- .method-card-content {
530
- position: relative;
531
- }
532
-
533
- .method-card-header {
534
- display: flex;
535
- align-items: center;
536
- gap: 0.75rem;
537
- margin-bottom: 1rem;
538
- }
539
-
540
- .method-icon-wrap {
541
- width: 2rem;
542
- height: 2rem;
543
- border-radius: 0.5rem;
544
- background: rgba(255, 255, 255, 0.2);
545
- display: flex;
546
- align-items: center;
547
- justify-content: center;
548
- color: #fff;
549
- }
550
-
551
- .method-icon {
552
- width: 1rem;
553
- height: 1rem;
554
- }
555
-
556
- .method-meta {
557
- font-size: 0.6rem;
558
- font-weight: 900;
559
- text-transform: uppercase;
560
- letter-spacing: 0.18em;
561
- color: rgba(255, 255, 255, 0.7);
562
- }
563
-
564
- .method-text {
565
- font-size: 1rem;
566
- font-weight: 700;
567
- color: #fff;
568
- line-height: 1.55;
569
- letter-spacing: -0.01em;
570
- }
571
-
572
-
573
- .warning-card {
574
- border-radius: 1rem;
575
- background: rgba(239, 68, 68, 0.06);
576
- border: 1px solid rgba(239, 68, 68, 0.2);
577
- padding: 1.25rem;
578
- animation: pulse-warning 4s ease infinite;
579
- }
580
-
581
- :global(.warning-card.hidden) {
582
- display: none;
583
- }
584
-
585
- @keyframes pulse-warning {
586
- 0%, 100% {
587
- opacity: 1;
588
- }
589
- 50% {
590
- opacity: 0.8;
591
- }
592
- }
593
-
594
- .warning-card-inner {
595
- display: flex;
596
- gap: 1rem;
597
- align-items: flex-start;
598
- }
599
-
600
- .warning-icon {
601
- width: 1.5rem;
602
- height: 1.5rem;
603
- color: #ef4444;
604
- flex-shrink: 0;
605
- margin-top: 0.1rem;
606
- }
607
-
608
- .warning-label {
609
- font-size: 0.6rem;
610
- font-weight: 900;
611
- text-transform: uppercase;
612
- letter-spacing: 0.15em;
613
- color: #ef4444;
614
- margin: 0 0 0.25rem;
615
- }
616
-
617
- .warning-text {
618
- font-size: 0.85rem;
619
- font-weight: 700;
620
- color: var(--text-main);
621
- margin: 0;
622
- line-height: 1.5;
623
- }
624
-
625
-
626
- .note-card {
627
- background: var(--bg-page);
628
- border: 1px solid var(--border-color);
629
- border-radius: 1rem;
630
- padding: 1.25rem;
631
- }
632
-
633
- .note-card-inner {
634
- display: flex;
635
- gap: 1rem;
636
- align-items: flex-start;
637
- }
638
-
639
- .note-badge {
640
- width: 1.5rem;
641
- height: 1.5rem;
642
- border-radius: 50%;
643
- background: var(--text-main);
644
- color: var(--bg-page);
645
- display: flex;
646
- align-items: center;
647
- justify-content: center;
648
- font-size: 0.65rem;
649
- font-weight: 900;
650
- flex-shrink: 0;
651
- margin-top: 0.1rem;
652
- }
653
-
654
- .note-label {
655
- font-size: 0.6rem;
656
- font-weight: 900;
657
- text-transform: uppercase;
658
- letter-spacing: 0.15em;
659
- color: var(--text-muted);
660
- margin: 0 0 0.25rem;
661
- }
662
-
663
- .note-text {
664
- font-size: 0.8rem;
665
- font-weight: 600;
666
- color: var(--text-muted);
667
- margin: 0;
668
- line-height: 1.5;
669
- }
670
-
671
-
672
- .empty-state {
673
- padding: 3rem 2rem;
674
- text-align: center;
675
- background: var(--bg-page);
676
- }
677
-
678
- :global(.empty-state.hidden) {
679
- display: none;
680
- }
681
-
682
- .empty-icon-wrap {
683
- width: 5rem;
684
- height: 5rem;
685
- background: var(--bg-surface);
686
- border-radius: 50%;
687
- display: flex;
688
- align-items: center;
689
- justify-content: center;
690
- margin: 0 auto 1.5rem;
691
- border: 1px solid var(--border-color);
692
- }
693
-
694
- .empty-icon {
695
- width: 2.5rem;
696
- height: 2.5rem;
697
- color: var(--border-color);
698
- }
699
-
700
- .empty-title {
701
- font-size: 1.1rem;
702
- font-weight: 900;
703
- color: var(--text-main);
704
- margin: 0 0 0.5rem;
705
- letter-spacing: -0.02em;
706
- }
707
-
708
- .empty-desc {
709
- font-size: 0.8rem;
710
- font-weight: 500;
711
- color: var(--text-muted);
712
- margin: 0;
713
- max-width: 18rem;
714
- margin-inline: auto;
715
- line-height: 1.5;
716
- }
717
- </style>