@jjlmoya/utils-creative 1.17.0 → 1.19.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.
@@ -377,512 +377,3 @@ const { ui } = Astro.props;
377
377
  focusNextBtn?.addEventListener("click", () => { currentRow = currentRow < totalRows-1 ? currentRow+1 : -1; if (focusDisplay) focusDisplay.textContent = currentRow===-1?"--":(currentRow+1).toString(); drawGrid(); });
378
378
  </script>
379
379
 
380
- <style>
381
- .bead-wrapper {
382
- width: 100%;
383
- max-width: 72rem;
384
- margin: 0 auto;
385
- padding: 1rem 2rem;
386
- }
387
-
388
- .bead-hidden {
389
- display: none;
390
- }
391
-
392
- .bead-card {
393
- position: relative;
394
- background: rgba(255,255,255,0.85);
395
- backdrop-filter: blur(16px);
396
- border-radius: 1.5rem;
397
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.15);
398
- overflow: hidden;
399
- border: 1px solid rgba(255,255,255,0.2);
400
- }
401
- :global(.theme-dark) .bead-card {
402
- background: rgba(17,24,39,0.85);
403
- border-color: rgba(55,65,81,0.3);
404
- }
405
-
406
- .bead-top-bar {
407
- position: absolute;
408
- top: 0;
409
- left: 0;
410
- width: 100%;
411
- height: 0.5rem;
412
- background: linear-gradient(to right, #ec4899, #a855f7, #6366f1);
413
- }
414
-
415
- .bead-inner {
416
- padding: 2.5rem;
417
- display: flex;
418
- flex-direction: column;
419
- gap: 2rem;
420
- }
421
-
422
- .bead-header {
423
- display: flex;
424
- flex-wrap: wrap;
425
- gap: 1.5rem;
426
- justify-content: space-between;
427
- align-items: flex-end;
428
- }
429
- .bead-header-title h2 {
430
- font-size: 1.5rem;
431
- font-weight: 700;
432
- color: #1f2937;
433
- margin: 0;
434
- }
435
-
436
- :global(.theme-dark) .bead-header-title h2 {
437
- color: #fff;
438
- }
439
-
440
- .bead-header-title p {
441
- font-size: 0.875rem;
442
- color: #6b7280;
443
- margin: 0.25rem 0 0;
444
- }
445
-
446
- :global(.theme-dark) .bead-header-title p {
447
- color: #9ca3af;
448
- }
449
-
450
- .bead-controls {
451
- display: flex;
452
- flex-wrap: wrap;
453
- gap: 1rem;
454
- align-items: flex-end;
455
- }
456
-
457
- .bead-control-group {
458
- display: flex;
459
- flex-direction: column;
460
- gap: 0.25rem;
461
- min-width: 9rem;
462
- }
463
-
464
- .bead-control-label {
465
- font-size: 0.7rem;
466
- font-weight: 700;
467
- text-transform: uppercase;
468
- color: #6b7280;
469
- }
470
-
471
- .bead-slider-row {
472
- display: flex;
473
- align-items: center;
474
- gap: 0.5rem;
475
- background: #f3f4f6;
476
- padding: 0.5rem;
477
- border-radius: 0.5rem;
478
- border: 1px solid #e5e7eb;
479
- }
480
-
481
- :global(.theme-dark) .bead-slider-row {
482
- background: #1f2937;
483
- border-color: #374151;
484
- }
485
-
486
- .bead-slider {
487
- flex: 1;
488
- height: 0.5rem;
489
- border-radius: 0.5rem;
490
- appearance: none;
491
- cursor: pointer;
492
- background: #d1d5db;
493
- }
494
-
495
- :global(.theme-dark) .bead-slider {
496
- background: #4b5563;
497
- }
498
-
499
- .bead-slider-pink {
500
- accent-color: #ec4899;
501
- }
502
-
503
- .bead-slider-purple {
504
- accent-color: #a855f7;
505
- }
506
-
507
- .bead-slider-val {
508
- font-size: 0.875rem;
509
- font-weight: 700;
510
- width: 2rem;
511
- text-align: center;
512
- }
513
- .bead-val-pink {
514
- color: #ec4899;
515
- }
516
-
517
- .bead-val-purple {
518
- color: #a855f7;
519
- }
520
-
521
- .bead-options-row {
522
- display: flex;
523
- align-items: center;
524
- gap: 1rem;
525
- height: 2.625rem;
526
- background: #f3f4f6;
527
- padding: 0.5rem 0.75rem;
528
- border-radius: 0.5rem;
529
- border: 1px solid #e5e7eb;
530
- }
531
-
532
- :global(.theme-dark) .bead-options-row {
533
- background: #1f2937;
534
- border-color: #374151;
535
- }
536
-
537
- .bead-checkbox-label {
538
- display: flex;
539
- align-items: center;
540
- gap: 0.5rem;
541
- cursor: pointer;
542
- font-size: 0.875rem;
543
- font-weight: 700;
544
- color: #374151;
545
- white-space: nowrap;
546
- }
547
-
548
- :global(.theme-dark) .bead-checkbox-label {
549
- color: #d1d5db;
550
- }
551
-
552
- .bead-checkbox {
553
- width: 1rem;
554
- height: 1rem;
555
- accent-color: #ec4899;
556
- cursor: pointer;
557
- }
558
-
559
- .bead-divider {
560
- width: 1px;
561
- height: 100%;
562
- background: #d1d5db;
563
- }
564
-
565
- :global(.theme-dark) .bead-divider {
566
- background: #4b5563;
567
- }
568
-
569
- .bead-download-btn {
570
- display: flex;
571
- align-items: center;
572
- gap: 0.5rem;
573
- padding: 0.75rem 1.5rem;
574
- background: #4f46e5;
575
- color: #fff;
576
- border: none;
577
- border-radius: 0.75rem;
578
- font-weight: 700;
579
- cursor: pointer;
580
- box-shadow: 0 4px 14px rgba(79,70,229,0.3);
581
- transition: background 0.2s, box-shadow 0.2s;
582
- white-space: nowrap;
583
- }
584
-
585
- .bead-download-btn:hover {
586
- background: #4338ca;
587
- }
588
-
589
- .bead-download-btn:disabled {
590
- opacity: 0.5;
591
- box-shadow: none;
592
- cursor: not-allowed;
593
- }
594
-
595
- .bead-canvas-area {
596
- position: relative;
597
- min-height: 25rem;
598
- display: flex;
599
- flex-direction: column;
600
- gap: 3rem;
601
- }
602
-
603
- .bead-drop-zone {
604
- position: relative;
605
- display: flex;
606
- flex-direction: column;
607
- align-items: center;
608
- justify-content: center;
609
- border: 3px dashed #d1d5db;
610
- border-radius: 1rem;
611
- min-height: 25rem;
612
- background: rgba(255,255,255,0.5);
613
- backdrop-filter: blur(4px);
614
- transition: border-color 0.2s, background 0.2s, transform 0.2s;
615
- cursor: pointer;
616
- }
617
- :global(.theme-dark) .bead-drop-zone {
618
- border-color: #374151;
619
- background: rgba(31,41,55,0.5);
620
- }
621
-
622
- .bead-drop-zone:hover,
623
- .bead-drop-active {
624
- border-color: #ec4899;
625
- background: rgba(236,72,153,0.04);
626
- transform: scale(1.01);
627
- }
628
-
629
- .bead-file-input {
630
- position: absolute;
631
- inset: 0;
632
- width: 100%;
633
- height: 100%;
634
- opacity: 0;
635
- cursor: pointer;
636
- z-index: 1;
637
- }
638
-
639
- .bead-drop-content {
640
- text-align: center;
641
- display: flex;
642
- flex-direction: column;
643
- align-items: center;
644
- gap: 1rem;
645
- pointer-events: none;
646
- }
647
-
648
- .bead-upload-icon {
649
- display: flex;
650
- align-items: center;
651
- justify-content: center;
652
- width: 5rem;
653
- height: 5rem;
654
- background: linear-gradient(135deg, #f472b6, #a855f7);
655
- border-radius: 50%;
656
- box-shadow: 0 8px 20px rgba(168,85,247,0.3);
657
- color: #fff;
658
- }
659
-
660
- .bead-drop-content h3 {
661
- font-size: 1.25rem;
662
- font-weight: 700;
663
- color: #374151;
664
- margin: 0;
665
- }
666
-
667
- :global(.theme-dark) .bead-drop-content h3 {
668
- color: #e5e7eb;
669
- }
670
-
671
- .bead-drop-content p {
672
- color: #6b7280;
673
- margin: 0;
674
- }
675
-
676
- .bead-result {
677
- display: flex;
678
- flex-direction: column;
679
- gap: 2rem;
680
- animation: bead-fade-in 0.5s ease;
681
- }
682
-
683
- @keyframes bead-fade-in {
684
- from {
685
- opacity: 0;
686
- transform: scale(0.98);
687
- }
688
-
689
- to {
690
- opacity: 1;
691
- transform: scale(1);
692
- }
693
- }
694
-
695
- .bead-result-inner {
696
- display: flex;
697
- gap: 2rem;
698
- align-items: flex-start;
699
- }
700
-
701
- @media (max-width: 640px) {
702
- .bead-result-inner {
703
- flex-direction: column;
704
- }
705
- }
706
-
707
- .bead-palette-col {
708
- width: 12rem;
709
- flex-shrink: 0;
710
- }
711
-
712
- .bead-palette-title {
713
- font-size: 0.7rem;
714
- font-weight: 700;
715
- text-transform: uppercase;
716
- letter-spacing: 0.05em;
717
- color: #6b7280;
718
- margin: 0 0 0.75rem;
719
- }
720
-
721
- .bead-palette-grid {
722
- display: grid;
723
- grid-template-columns: repeat(4, 1fr);
724
- gap: 0.5rem;
725
- }
726
-
727
- :global(.bead-palette-item) {
728
- display: flex;
729
- flex-direction: column;
730
- align-items: center;
731
- }
732
-
733
- :global(.bead-color-swatch) {
734
- width: 100%;
735
- aspect-ratio: 1;
736
- border-radius: 50%;
737
- box-shadow: 0 2px 6px rgba(0,0,0,0.15);
738
- border: 2px solid #fff;
739
- outline: 1px solid #e5e7eb;
740
- display: flex;
741
- align-items: center;
742
- justify-content: center;
743
- }
744
-
745
- :global(.theme-dark .bead-color-swatch) {
746
- border-color: #1f2937;
747
- outline-color: #374151;
748
- }
749
-
750
- :global(.bead-symbol) {
751
- font-size: 0.75rem;
752
- font-weight: 700;
753
- user-select: none;
754
- }
755
- :global(.bead-symbol-dark) {
756
- color: #000;
757
- }
758
-
759
- :global(.bead-symbol-light) {
760
- color: #fff;
761
- }
762
-
763
- .bead-reupload-btn {
764
- margin-top: 1.5rem;
765
- width: 100%;
766
- padding: 0.5rem;
767
- font-size: 0.875rem;
768
- font-weight: 700;
769
- color: #6b7280;
770
- border: 1px solid #e5e7eb;
771
- border-radius: 0.5rem;
772
- background: transparent;
773
- cursor: pointer;
774
- display: flex;
775
- align-items: center;
776
- justify-content: center;
777
- gap: 0.5rem;
778
- transition: color 0.2s, border-color 0.2s;
779
- }
780
-
781
- .bead-reupload-btn:hover {
782
- color: #ec4899;
783
- border-color: #f9a8d4;
784
- }
785
-
786
- .bead-canvas-col {
787
- flex: 1;
788
- background: #f3f4f6;
789
- padding: 1rem;
790
- border-radius: 0.75rem;
791
- border: 2px solid #e5e7eb;
792
- box-shadow: inset 0 2px 8px rgba(0,0,0,0.06);
793
- overflow-x: auto;
794
- text-align: center;
795
- }
796
-
797
- :global(.theme-dark) .bead-canvas-col {
798
- background: #030712;
799
- border-color: #1f2937;
800
- }
801
-
802
- .bead-canvas {
803
- display: inline-block;
804
- max-width: 100%;
805
- box-shadow: 0 20px 40px rgba(0,0,0,0.2);
806
- cursor: crosshair;
807
- image-rendering: pixelated;
808
- }
809
-
810
- .bead-tunnel-bar {
811
- display: flex;
812
- align-items: center;
813
- justify-content: space-between;
814
- flex-wrap: wrap;
815
- gap: 1rem;
816
- padding: 1rem;
817
- background: #eef2ff;
818
- border: 1px solid #c7d2fe;
819
- border-radius: 0.75rem;
820
- }
821
-
822
- :global(.theme-dark) .bead-tunnel-bar {
823
- background: rgba(79,70,229,0.1);
824
- border-color: rgba(99,102,241,0.3);
825
- }
826
-
827
- .bead-tunnel-title {
828
- font-weight: 700;
829
- color: #312e81;
830
- margin: 0;
831
- }
832
-
833
- :global(.theme-dark) .bead-tunnel-title {
834
- color: #c7d2fe;
835
- }
836
-
837
- .bead-tunnel-sub {
838
- font-size: 0.875rem;
839
- color: #4338ca;
840
- margin: 0.25rem 0 0;
841
- }
842
-
843
- :global(.theme-dark) .bead-tunnel-sub {
844
- color: #818cf8;
845
- }
846
-
847
- .bead-tunnel-controls {
848
- display: flex;
849
- gap: 0.5rem;
850
- align-items: center;
851
- }
852
-
853
- .bead-tunnel-btn {
854
- padding: 0.5rem;
855
- border-radius: 0.5rem;
856
- border: none;
857
- background: #fff;
858
- color: #4f46e5;
859
- cursor: pointer;
860
- transition: background 0.15s;
861
- }
862
-
863
- .bead-tunnel-btn:hover {
864
- background: #e0e7ff;
865
- }
866
-
867
- :global(.theme-dark) .bead-tunnel-btn {
868
- background: #1f2937;
869
- color: #818cf8;
870
- }
871
-
872
- .bead-tunnel-display {
873
- padding: 0.5rem 1rem;
874
- background: #fff;
875
- border-radius: 0.5rem;
876
- font-weight: 700;
877
- color: #4f46e5;
878
- border: 1px solid #c7d2fe;
879
- min-width: 3rem;
880
- text-align: center;
881
- }
882
-
883
- :global(.theme-dark) .bead-tunnel-display {
884
- background: #1f2937;
885
- color: #818cf8;
886
- border-color: rgba(99,102,241,0.3);
887
- }
888
- </style>