@happyvertical/smrt-images 0.55.16 → 0.55.17
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.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/dist/svelte/components/AssetsGallery.svelte +27 -24
- package/dist/svelte/components/ImageEditor.svelte +30 -27
- package/dist/svelte/components/ImageUploader.svelte +69 -66
- package/dist/svelte/components/PhotoCutoutSetup.svelte +14 -11
- package/dist/svelte/routes/ImageStudioRoute.svelte +8 -5
- package/package.json +10 -10
|
@@ -276,7 +276,7 @@ onDestroy(() => {
|
|
|
276
276
|
});
|
|
277
277
|
</script>
|
|
278
278
|
|
|
279
|
-
<div class="smrt-image-uploader">
|
|
279
|
+
<div class="smrt-image-uploader" data-smrt-component="ImageUploader">
|
|
280
280
|
{#if selectedImage}
|
|
281
281
|
<!-- Gallery Confirmation Step -->
|
|
282
282
|
<div class="header">
|
|
@@ -486,13 +486,15 @@ onDestroy(() => {
|
|
|
486
486
|
</div>
|
|
487
487
|
|
|
488
488
|
<style>
|
|
489
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
490
|
+
@layer smrt.theme {
|
|
489
491
|
.smrt-image-uploader {
|
|
490
492
|
display: flex;
|
|
491
493
|
flex-direction: column;
|
|
492
|
-
background: var(--smrt-color-surface-container
|
|
493
|
-
color: var(--smrt-color-on-surface
|
|
494
|
-
border-radius: var(--smrt-radius-lg
|
|
495
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
494
|
+
background: var(--smrt-color-surface-container);
|
|
495
|
+
color: var(--smrt-color-on-surface);
|
|
496
|
+
border-radius: var(--smrt-radius-lg);
|
|
497
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
496
498
|
overflow: hidden;
|
|
497
499
|
height: 100%;
|
|
498
500
|
min-height: 500px;
|
|
@@ -503,7 +505,7 @@ onDestroy(() => {
|
|
|
503
505
|
justify-content: space-between;
|
|
504
506
|
align-items: center;
|
|
505
507
|
padding: 1rem 1.5rem;
|
|
506
|
-
border-bottom: 1px solid var(--smrt-color-outline-variant
|
|
508
|
+
border-bottom: 1px solid var(--smrt-color-outline-variant);
|
|
507
509
|
}
|
|
508
510
|
|
|
509
511
|
.header h3 {
|
|
@@ -515,19 +517,19 @@ onDestroy(() => {
|
|
|
515
517
|
is custom. :global() pierces into the Button child's rendered <button>
|
|
516
518
|
(see #1589 scoping rule). */
|
|
517
519
|
.header :global(.close-btn--x) {
|
|
518
|
-
color: var(--smrt-color-outline
|
|
520
|
+
color: var(--smrt-color-outline);
|
|
519
521
|
font-size: var(--smrt-typography-headline-small-size, 1.5rem);
|
|
520
522
|
line-height: 1;
|
|
521
523
|
}
|
|
522
524
|
|
|
523
525
|
.header :global(.close-btn--x:hover) {
|
|
524
|
-
color: var(--smrt-color-on-surface
|
|
526
|
+
color: var(--smrt-color-on-surface);
|
|
525
527
|
}
|
|
526
528
|
|
|
527
529
|
.tabs {
|
|
528
530
|
display: flex;
|
|
529
|
-
background: var(--smrt-color-surface-container-high
|
|
530
|
-
border-bottom: 1px solid var(--smrt-color-outline-variant
|
|
531
|
+
background: var(--smrt-color-surface-container-high);
|
|
532
|
+
border-bottom: 1px solid var(--smrt-color-outline-variant);
|
|
531
533
|
}
|
|
532
534
|
|
|
533
535
|
/* The tab strip is migrated to ghost Buttons; the active state is the bottom
|
|
@@ -536,25 +538,25 @@ onDestroy(() => {
|
|
|
536
538
|
.tabs :global(.uploader-tab) {
|
|
537
539
|
flex: 1;
|
|
538
540
|
border: none;
|
|
539
|
-
border-bottom: 2px solid var(--smrt-color-outline-variant
|
|
541
|
+
border-bottom: 2px solid var(--smrt-color-outline-variant);
|
|
540
542
|
padding: 1rem;
|
|
541
|
-
color: var(--smrt-color-outline
|
|
543
|
+
color: var(--smrt-color-outline);
|
|
542
544
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
543
545
|
border-radius: 0;
|
|
544
546
|
transition: all 0.2s;
|
|
545
547
|
text-transform: uppercase;
|
|
546
548
|
font-size: var(--smrt-typography-label-large-size, 0.85rem);
|
|
547
|
-
letter-spacing: var(--smrt-typography-label-large-tracking
|
|
549
|
+
letter-spacing: var(--smrt-typography-label-large-tracking);
|
|
548
550
|
}
|
|
549
551
|
|
|
550
552
|
.tabs :global(.uploader-tab:hover) {
|
|
551
|
-
color: var(--smrt-color-on-surface-variant
|
|
552
|
-
background: color-mix(in srgb, var(--smrt-color-on-surface
|
|
553
|
+
color: var(--smrt-color-on-surface-variant);
|
|
554
|
+
background: color-mix(in srgb, var(--smrt-color-on-surface) 2%, transparent);
|
|
553
555
|
}
|
|
554
556
|
|
|
555
557
|
.tabs :global(.uploader-tab--active) {
|
|
556
|
-
color: var(--smrt-color-primary
|
|
557
|
-
border-bottom: 2px solid var(--smrt-color-primary
|
|
558
|
+
color: var(--smrt-color-primary);
|
|
559
|
+
border-bottom: 2px solid var(--smrt-color-primary);
|
|
558
560
|
background: transparent;
|
|
559
561
|
}
|
|
560
562
|
|
|
@@ -584,27 +586,27 @@ onDestroy(() => {
|
|
|
584
586
|
justify-content: center;
|
|
585
587
|
padding: 3rem;
|
|
586
588
|
margin: 1.5rem;
|
|
587
|
-
border: 2px dashed var(--smrt-color-outline-variant
|
|
588
|
-
border-radius: var(--smrt-radius-lg
|
|
589
|
-
background: var(--smrt-color-surface-container-high
|
|
589
|
+
border: 2px dashed var(--smrt-color-outline-variant);
|
|
590
|
+
border-radius: var(--smrt-radius-lg);
|
|
591
|
+
background: var(--smrt-color-surface-container-high);
|
|
590
592
|
cursor: pointer;
|
|
591
593
|
transition: all 0.2s;
|
|
592
594
|
}
|
|
593
595
|
|
|
594
596
|
.upload-area:hover, .upload-area:focus {
|
|
595
|
-
border-color: var(--smrt-color-outline
|
|
596
|
-
background: var(--smrt-color-surface-container-highest
|
|
597
|
+
border-color: var(--smrt-color-outline);
|
|
598
|
+
background: var(--smrt-color-surface-container-highest);
|
|
597
599
|
outline: none;
|
|
598
600
|
}
|
|
599
601
|
|
|
600
602
|
.upload-area.dragging {
|
|
601
|
-
border-color: var(--smrt-color-primary
|
|
603
|
+
border-color: var(--smrt-color-primary);
|
|
602
604
|
background: color-mix(in srgb, var(--smrt-color-primary) 5%, transparent);
|
|
603
605
|
transform: scale(1.02);
|
|
604
606
|
}
|
|
605
607
|
|
|
606
608
|
.upload-icon {
|
|
607
|
-
color: var(--smrt-color-primary
|
|
609
|
+
color: var(--smrt-color-primary);
|
|
608
610
|
margin-bottom: 1rem;
|
|
609
611
|
}
|
|
610
612
|
|
|
@@ -615,7 +617,7 @@ onDestroy(() => {
|
|
|
615
617
|
|
|
616
618
|
.divider {
|
|
617
619
|
font-size: var(--smrt-typography-label-large-size, 0.85rem);
|
|
618
|
-
color: var(--smrt-color-outline
|
|
620
|
+
color: var(--smrt-color-outline);
|
|
619
621
|
margin-bottom: 1rem;
|
|
620
622
|
}
|
|
621
623
|
|
|
@@ -624,14 +626,14 @@ onDestroy(() => {
|
|
|
624
626
|
Button child's rendered <button> (see #1589 scoping rule). */
|
|
625
627
|
.upload-area :global(.browse-btn--decorative) {
|
|
626
628
|
padding: 0.5rem 1.5rem;
|
|
627
|
-
border-radius: var(--smrt-radius-full
|
|
629
|
+
border-radius: var(--smrt-radius-full);
|
|
628
630
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
629
631
|
pointer-events: none; /* Let parent handle clicks */
|
|
630
632
|
}
|
|
631
633
|
|
|
632
634
|
.error {
|
|
633
635
|
margin-top: 1rem;
|
|
634
|
-
color: var(--smrt-color-error
|
|
636
|
+
color: var(--smrt-color-error);
|
|
635
637
|
font-size: var(--smrt-typography-body-medium-size, 0.9rem);
|
|
636
638
|
}
|
|
637
639
|
|
|
@@ -644,7 +646,7 @@ onDestroy(() => {
|
|
|
644
646
|
gap: 1.5rem;
|
|
645
647
|
align-items: center;
|
|
646
648
|
justify-content: center;
|
|
647
|
-
background: var(--smrt-color-surface-dim
|
|
649
|
+
background: var(--smrt-color-surface-dim);
|
|
648
650
|
}
|
|
649
651
|
|
|
650
652
|
.video-container {
|
|
@@ -652,8 +654,8 @@ onDestroy(() => {
|
|
|
652
654
|
width: 100%;
|
|
653
655
|
max-width: 600px;
|
|
654
656
|
aspect-ratio: 4/3;
|
|
655
|
-
background: var(--smrt-color-surface-container-lowest
|
|
656
|
-
border-radius: var(--smrt-radius-md
|
|
657
|
+
background: var(--smrt-color-surface-container-lowest);
|
|
658
|
+
border-radius: var(--smrt-radius-md);
|
|
657
659
|
overflow: hidden;
|
|
658
660
|
}
|
|
659
661
|
|
|
@@ -677,36 +679,36 @@ onDestroy(() => {
|
|
|
677
679
|
primary variant. :global() pierces into the Button child (see #1589). */
|
|
678
680
|
.camera-area :global(.capture-btn--pill) {
|
|
679
681
|
padding: 1rem 3rem;
|
|
680
|
-
border-radius: var(--smrt-radius-full
|
|
682
|
+
border-radius: var(--smrt-radius-full);
|
|
681
683
|
font-size: var(--smrt-typography-body-large-size, 1.1rem);
|
|
682
684
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
683
685
|
}
|
|
684
686
|
|
|
685
687
|
.camera-area :global(.capture-btn--pill:disabled) {
|
|
686
|
-
background: var(--smrt-color-outline-variant
|
|
687
|
-
color: var(--smrt-color-outline
|
|
688
|
+
background: var(--smrt-color-outline-variant);
|
|
689
|
+
color: var(--smrt-color-outline);
|
|
688
690
|
}
|
|
689
691
|
|
|
690
692
|
.error-panel {
|
|
691
693
|
text-align: center;
|
|
692
694
|
padding: 2rem;
|
|
693
|
-
background: var(--smrt-color-surface-container
|
|
694
|
-
border-radius: var(--smrt-radius-md
|
|
695
|
+
background: var(--smrt-color-surface-container);
|
|
696
|
+
border-radius: var(--smrt-radius-md);
|
|
695
697
|
}
|
|
696
698
|
|
|
697
699
|
.error-panel p {
|
|
698
|
-
color: var(--smrt-color-error
|
|
700
|
+
color: var(--smrt-color-error);
|
|
699
701
|
margin-bottom: 1rem;
|
|
700
702
|
}
|
|
701
703
|
|
|
702
704
|
/* Migrated "try again" Button keeps its surface-tinted look over the
|
|
703
705
|
secondary variant. :global() pierces into the Button child (see #1589). */
|
|
704
706
|
.error-panel :global(.try-again-btn) {
|
|
705
|
-
background: var(--smrt-color-surface-container-high
|
|
707
|
+
background: var(--smrt-color-surface-container-high);
|
|
706
708
|
color: white;
|
|
707
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
709
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
708
710
|
padding: 0.5rem 1rem;
|
|
709
|
-
border-radius: var(--smrt-radius-sm
|
|
711
|
+
border-radius: var(--smrt-radius-sm);
|
|
710
712
|
}
|
|
711
713
|
|
|
712
714
|
/* External Tab */
|
|
@@ -719,7 +721,7 @@ onDestroy(() => {
|
|
|
719
721
|
}
|
|
720
722
|
|
|
721
723
|
.hint {
|
|
722
|
-
color: var(--smrt-color-outline
|
|
724
|
+
color: var(--smrt-color-outline);
|
|
723
725
|
margin-bottom: 2rem;
|
|
724
726
|
text-align: center;
|
|
725
727
|
}
|
|
@@ -743,13 +745,13 @@ onDestroy(() => {
|
|
|
743
745
|
(see #1589 scoping rule). */
|
|
744
746
|
.input-group :global(.submit-btn--inline) {
|
|
745
747
|
padding: 0 1.5rem;
|
|
746
|
-
border-radius: var(--smrt-radius-md
|
|
748
|
+
border-radius: var(--smrt-radius-md);
|
|
747
749
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
748
750
|
}
|
|
749
751
|
|
|
750
752
|
.input-group :global(.submit-btn--inline:disabled) {
|
|
751
|
-
background: var(--smrt-color-surface-container-highest
|
|
752
|
-
color: var(--smrt-color-outline
|
|
753
|
+
background: var(--smrt-color-surface-container-highest);
|
|
754
|
+
color: var(--smrt-color-outline);
|
|
753
755
|
}
|
|
754
756
|
|
|
755
757
|
/* --- Back Button --- */
|
|
@@ -759,10 +761,10 @@ onDestroy(() => {
|
|
|
759
761
|
display: flex;
|
|
760
762
|
align-items: center;
|
|
761
763
|
gap: 0.35rem;
|
|
762
|
-
color: var(--smrt-color-primary
|
|
764
|
+
color: var(--smrt-color-primary);
|
|
763
765
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
764
766
|
padding: 0.25rem 0.5rem;
|
|
765
|
-
border-radius: var(--smrt-radius-sm
|
|
767
|
+
border-radius: var(--smrt-radius-sm);
|
|
766
768
|
transition: background 0.15s;
|
|
767
769
|
}
|
|
768
770
|
|
|
@@ -793,9 +795,9 @@ onDestroy(() => {
|
|
|
793
795
|
max-width: 100%;
|
|
794
796
|
max-height: 400px;
|
|
795
797
|
object-fit: contain;
|
|
796
|
-
border-radius: var(--smrt-radius-md
|
|
797
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
798
|
-
background-color: var(--smrt-color-surface-container-high
|
|
798
|
+
border-radius: var(--smrt-radius-md);
|
|
799
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
800
|
+
background-color: var(--smrt-color-surface-container-high);
|
|
799
801
|
}
|
|
800
802
|
|
|
801
803
|
.confirm-info {
|
|
@@ -812,7 +814,7 @@ onDestroy(() => {
|
|
|
812
814
|
|
|
813
815
|
.confirm-meta {
|
|
814
816
|
font-size: var(--smrt-typography-label-large-size, 0.85rem);
|
|
815
|
-
color: var(--smrt-color-outline
|
|
817
|
+
color: var(--smrt-color-outline);
|
|
816
818
|
}
|
|
817
819
|
|
|
818
820
|
.confirm-actions {
|
|
@@ -820,7 +822,7 @@ onDestroy(() => {
|
|
|
820
822
|
display: flex;
|
|
821
823
|
gap: 0.75rem;
|
|
822
824
|
flex-wrap: wrap;
|
|
823
|
-
border-top: 1px solid var(--smrt-color-outline-variant
|
|
825
|
+
border-top: 1px solid var(--smrt-color-outline-variant);
|
|
824
826
|
margin-top: 0.5rem;
|
|
825
827
|
}
|
|
826
828
|
|
|
@@ -828,7 +830,7 @@ onDestroy(() => {
|
|
|
828
830
|
pierces into each Button's rendered <button> (see #1589 scoping rule). */
|
|
829
831
|
.confirm-actions :global(.primary-btn--pill) {
|
|
830
832
|
padding: 0.65rem 1.5rem;
|
|
831
|
-
border-radius: var(--smrt-radius-full
|
|
833
|
+
border-radius: var(--smrt-radius-full);
|
|
832
834
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
833
835
|
transition: filter 0.15s;
|
|
834
836
|
}
|
|
@@ -841,22 +843,22 @@ onDestroy(() => {
|
|
|
841
843
|
display: flex;
|
|
842
844
|
align-items: center;
|
|
843
845
|
gap: 0.4rem;
|
|
844
|
-
background: var(--smrt-color-surface-container-highest
|
|
845
|
-
color: var(--smrt-color-on-surface-variant
|
|
846
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
846
|
+
background: var(--smrt-color-surface-container-highest);
|
|
847
|
+
color: var(--smrt-color-on-surface-variant);
|
|
848
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
847
849
|
padding: 0.65rem 1.25rem;
|
|
848
|
-
border-radius: var(--smrt-radius-full
|
|
850
|
+
border-radius: var(--smrt-radius-full);
|
|
849
851
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
850
852
|
transition: all 0.2s;
|
|
851
853
|
}
|
|
852
854
|
|
|
853
855
|
.confirm-actions :global(.variation-toggle--chip:hover) {
|
|
854
|
-
background: var(--smrt-color-surface-container-high
|
|
856
|
+
background: var(--smrt-color-surface-container-high);
|
|
855
857
|
}
|
|
856
858
|
|
|
857
859
|
.confirm-actions :global(.variation-toggle--active) {
|
|
858
|
-
color: var(--smrt-color-primary
|
|
859
|
-
border-color: var(--smrt-color-primary
|
|
860
|
+
color: var(--smrt-color-primary);
|
|
861
|
+
border-color: var(--smrt-color-primary);
|
|
860
862
|
background: color-mix(in srgb, var(--smrt-color-primary) 8%, transparent);
|
|
861
863
|
}
|
|
862
864
|
|
|
@@ -867,22 +869,22 @@ onDestroy(() => {
|
|
|
867
869
|
gap: 0.75rem;
|
|
868
870
|
padding: 1.25rem;
|
|
869
871
|
margin: 0 1.5rem 1.5rem;
|
|
870
|
-
background: var(--smrt-color-surface-container-high
|
|
871
|
-
border-radius: var(--smrt-radius-md
|
|
872
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
872
|
+
background: var(--smrt-color-surface-container-high);
|
|
873
|
+
border-radius: var(--smrt-radius-md);
|
|
874
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
873
875
|
}
|
|
874
876
|
|
|
875
877
|
.variation-hint {
|
|
876
878
|
font-size: var(--smrt-typography-body-medium-size, 0.85rem);
|
|
877
|
-
color: var(--smrt-color-outline
|
|
879
|
+
color: var(--smrt-color-outline);
|
|
878
880
|
margin: 0;
|
|
879
881
|
}
|
|
880
882
|
|
|
881
883
|
.variation-error {
|
|
882
|
-
color: var(--smrt-color-error
|
|
884
|
+
color: var(--smrt-color-error);
|
|
883
885
|
background: color-mix(in srgb, var(--smrt-color-error) 10%, transparent);
|
|
884
886
|
padding: 0.5rem 0.75rem;
|
|
885
|
-
border-radius: var(--smrt-radius-sm
|
|
887
|
+
border-radius: var(--smrt-radius-sm);
|
|
886
888
|
font-size: var(--smrt-typography-body-medium-size, 0.85rem);
|
|
887
889
|
}
|
|
888
890
|
|
|
@@ -891,7 +893,7 @@ onDestroy(() => {
|
|
|
891
893
|
.variation-form :global(.generate-btn--pill) {
|
|
892
894
|
align-self: flex-start;
|
|
893
895
|
padding: 0.65rem 1.5rem;
|
|
894
|
-
border-radius: var(--smrt-radius-full
|
|
896
|
+
border-radius: var(--smrt-radius-full);
|
|
895
897
|
font-weight: var(--smrt-typography-weight-medium, 500);
|
|
896
898
|
transition: filter 0.15s, opacity 0.15s;
|
|
897
899
|
}
|
|
@@ -910,7 +912,8 @@ onDestroy(() => {
|
|
|
910
912
|
height: 14px;
|
|
911
913
|
border: 2px solid color-mix(in srgb, var(--smrt-color-on-primary) 30%, transparent);
|
|
912
914
|
border-top-color: white;
|
|
913
|
-
border-radius: var(--smrt-radius-full
|
|
915
|
+
border-radius: var(--smrt-radius-full);
|
|
914
916
|
animation: spin 0.6s linear infinite;
|
|
915
917
|
}
|
|
918
|
+
}
|
|
916
919
|
</style>
|
|
@@ -370,7 +370,7 @@ async function playSpeech() {
|
|
|
370
370
|
}
|
|
371
371
|
</script>
|
|
372
372
|
|
|
373
|
-
<section class="setup" aria-busy={busy !== null} aria-labelledby="cutout-title">
|
|
373
|
+
<section class="setup" aria-busy={busy !== null} aria-labelledby="cutout-title" data-smrt-component="PhotoCutoutSetup">
|
|
374
374
|
<h2 id="cutout-title">{t(M['images.photo_cutout_setup.title'])}</h2>
|
|
375
375
|
<ol class="steps" aria-label={t(M['images.photo_cutout_setup.steps_label'])}>
|
|
376
376
|
<li class:current={!source && !ready} class:complete={source !== null || ready} aria-current={!source && !ready ? 'step' : undefined}>{t(M['images.photo_cutout_setup.step_choose'])}</li>
|
|
@@ -406,15 +406,17 @@ async function playSpeech() {
|
|
|
406
406
|
</section>
|
|
407
407
|
|
|
408
408
|
<style>
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
.
|
|
412
|
-
.steps .
|
|
413
|
-
.steps
|
|
409
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
410
|
+
@layer smrt.theme {
|
|
411
|
+
.setup { max-width: 42rem; margin: var(--smrt-spacing-6, 1.5rem) auto; padding: var(--smrt-spacing-5, 1.25rem); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-xl); }
|
|
412
|
+
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--smrt-spacing-2, .5rem); padding: 0; margin: var(--smrt-spacing-4, 1rem) 0; list-style: none; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-small-size, .875rem); }
|
|
413
|
+
.steps li { padding-bottom: var(--smrt-spacing-1, .25rem); border-bottom: 2px solid var(--smrt-color-outline-variant); }
|
|
414
|
+
.steps .current { color: var(--smrt-color-primary); border-color: var(--smrt-color-primary); font-weight: var(--smrt-typography-weight-semibold, 600); }
|
|
415
|
+
.steps .complete { color: var(--smrt-color-success); }
|
|
414
416
|
.workflow-actions { margin: var(--smrt-spacing-4, 1rem) 0; }
|
|
415
417
|
.primary-action, .secondary-actions, .speech { display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-3, .75rem); }
|
|
416
418
|
.secondary-actions { margin-top: var(--smrt-spacing-3, .75rem); }
|
|
417
|
-
.save-hint { margin: var(--smrt-spacing-2, .5rem) 0 0; color: var(--smrt-color-on-surface-variant
|
|
419
|
+
.save-hint { margin: var(--smrt-spacing-2, .5rem) 0 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-small-size, .875rem); }
|
|
418
420
|
.speech { margin-top: var(--smrt-spacing-4, 1rem); }
|
|
419
421
|
.previews { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--smrt-spacing-4, 1rem); align-items: start; }
|
|
420
422
|
figure { margin: 0; }
|
|
@@ -422,11 +424,12 @@ figure figcaption { margin-bottom: var(--smrt-spacing-2, .5rem); font-size: var(
|
|
|
422
424
|
.setup img, .preview :global(svg) { display: block; width: 100%; height: auto; max-height: 18rem; object-fit: contain; }
|
|
423
425
|
.preview, .preview-target { min-width: 0; }
|
|
424
426
|
.preview-target:not(.preview) { display: none; }
|
|
425
|
-
.checkerboard { background-color: var(--smrt-color-surface
|
|
426
|
-
.error { color: var(--smrt-color-error
|
|
427
|
-
.success { color: var(--smrt-color-success
|
|
428
|
-
.spinner { width: 1rem; height: 1rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: var(--smrt-radius-full
|
|
427
|
+
.checkerboard { background-color: var(--smrt-color-surface); background-image: linear-gradient(45deg, var(--smrt-color-surface-container-highest) 25%, transparent 25%), linear-gradient(-45deg, var(--smrt-color-surface-container-highest) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--smrt-color-surface-container-highest) 75%), linear-gradient(-45deg, transparent 75%, var(--smrt-color-surface-container-highest) 75%); background-size: 16px 16px; background-position: 0 0, 0 8px, 8px -8px, -8px 0; }
|
|
428
|
+
.error { color: var(--smrt-color-error); font-weight: var(--smrt-typography-weight-semibold, 600); }
|
|
429
|
+
.success { color: var(--smrt-color-success); }
|
|
430
|
+
.spinner { width: 1rem; height: 1rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: var(--smrt-radius-full); animation: spin .7s linear infinite; }
|
|
429
431
|
@keyframes spin { to { transform: rotate(360deg); } }
|
|
430
432
|
@media (prefers-reduced-motion: reduce) { .spinner { animation: none; border-right-color: currentColor; } }
|
|
431
433
|
@media (max-width: 40rem) { .steps { grid-template-columns: repeat(2, 1fr); } .previews { grid-template-columns: 1fr; } }
|
|
434
|
+
}
|
|
432
435
|
</style>
|
|
@@ -138,6 +138,8 @@ function handleEditorSave(image: StudioImage) {
|
|
|
138
138
|
</div>
|
|
139
139
|
|
|
140
140
|
<style>
|
|
141
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
142
|
+
@layer smrt.theme {
|
|
141
143
|
.images-route {
|
|
142
144
|
max-width: 1440px;
|
|
143
145
|
margin: 0 auto;
|
|
@@ -145,16 +147,16 @@ function handleEditorSave(image: StudioImage) {
|
|
|
145
147
|
display: flex;
|
|
146
148
|
flex-direction: column;
|
|
147
149
|
gap: 1.75rem;
|
|
148
|
-
color: var(--smrt-color-on-surface
|
|
150
|
+
color: var(--smrt-color-on-surface);
|
|
149
151
|
background:
|
|
150
152
|
radial-gradient(circle at top, color-mix(in srgb, var(--smrt-color-primary) 22%, transparent), transparent 40%),
|
|
151
|
-
var(--smrt-color-background
|
|
153
|
+
var(--smrt-color-background);
|
|
152
154
|
min-height: 100vh;
|
|
153
155
|
}
|
|
154
156
|
|
|
155
157
|
.images-route__eyebrow {
|
|
156
158
|
margin: 0 0 0.5rem;
|
|
157
|
-
color: var(--smrt-color-primary
|
|
159
|
+
color: var(--smrt-color-primary);
|
|
158
160
|
font-size: var(--smrt-typography-label-medium-size, 0.75rem);
|
|
159
161
|
font-weight: var(--smrt-typography-weight-bold, 700);
|
|
160
162
|
letter-spacing: var(--smrt-typography-label-medium-tracking, 0.08em);
|
|
@@ -173,7 +175,7 @@ function handleEditorSave(image: StudioImage) {
|
|
|
173
175
|
.images-route__lede,
|
|
174
176
|
.images-route__section-copy p {
|
|
175
177
|
margin: 0.75rem 0 0;
|
|
176
|
-
color: var(--smrt-color-on-surface-variant
|
|
178
|
+
color: var(--smrt-color-on-surface-variant);
|
|
177
179
|
line-height: 1.6;
|
|
178
180
|
max-width: 60rem;
|
|
179
181
|
}
|
|
@@ -191,7 +193,7 @@ function handleEditorSave(image: StudioImage) {
|
|
|
191
193
|
border-radius: 0.85rem;
|
|
192
194
|
background: color-mix(in srgb, var(--smrt-color-surface-container) 72%, transparent);
|
|
193
195
|
border: 1px solid color-mix(in srgb, var(--smrt-color-primary) 20%, transparent);
|
|
194
|
-
color: var(--smrt-color-on-surface
|
|
196
|
+
color: var(--smrt-color-on-surface);
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
.images-route__workspace-grid {
|
|
@@ -231,4 +233,5 @@ function handleEditorSave(image: StudioImage) {
|
|
|
231
233
|
min-height: 560px;
|
|
232
234
|
}
|
|
233
235
|
}
|
|
236
|
+
}
|
|
234
237
|
</style>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-images",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.17",
|
|
4
4
|
"description": "Image asset management with AI-powered categorization, search, editing, and metadata extraction for SMRT framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"smrtRawPrimitives": "strict",
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
"@happyvertical/animation": "0.5.0",
|
|
42
42
|
"@happyvertical/ai": "^0.103.4",
|
|
43
43
|
"@happyvertical/images": "^0.103.4",
|
|
44
|
-
"@happyvertical/smrt-assets": "0.55.
|
|
45
|
-
"@happyvertical/smrt-core": "0.55.
|
|
46
|
-
"@happyvertical/smrt-prompts": "0.55.
|
|
47
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
48
|
-
"@happyvertical/smrt-types": "0.55.
|
|
49
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
44
|
+
"@happyvertical/smrt-assets": "0.55.17",
|
|
45
|
+
"@happyvertical/smrt-core": "0.55.17",
|
|
46
|
+
"@happyvertical/smrt-prompts": "0.55.17",
|
|
47
|
+
"@happyvertical/smrt-tenancy": "0.55.17",
|
|
48
|
+
"@happyvertical/smrt-types": "0.55.17",
|
|
49
|
+
"@happyvertical/smrt-ui": "0.55.17",
|
|
50
50
|
"@happyvertical/utils": "^0.103.4",
|
|
51
51
|
"jimp": "^1.6.1",
|
|
52
52
|
"sharp": "^0.35.5"
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
"svelte": "^5.57.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@happyvertical/smrt-playground": "0.55.
|
|
59
|
-
"@happyvertical/smrt-profiles": "0.55.
|
|
60
|
-
"@happyvertical/smrt-vitest": "0.55.
|
|
58
|
+
"@happyvertical/smrt-playground": "0.55.17",
|
|
59
|
+
"@happyvertical/smrt-profiles": "0.55.17",
|
|
60
|
+
"@happyvertical/smrt-vitest": "0.55.17",
|
|
61
61
|
"@happyvertical/sql": "^0.103.4",
|
|
62
62
|
"@sveltejs/kit": "2.69.1",
|
|
63
63
|
"@sveltejs/package": "^2.5.8",
|