@happyvertical/smrt-images 0.55.15 → 0.55.21

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.
@@ -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, #1a1a1a);
493
- color: var(--smrt-color-on-surface, #fff);
494
- border-radius: var(--smrt-radius-lg, 8px);
495
- border: 1px solid var(--smrt-color-outline-variant, #333);
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, #333);
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, #888);
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, #fff);
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, #242424);
530
- border-bottom: 1px solid var(--smrt-color-outline-variant, #333);
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, #333);
541
+ border-bottom: 2px solid var(--smrt-color-outline-variant);
540
542
  padding: 1rem;
541
- color: var(--smrt-color-outline, #888);
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, 0.5px);
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, #ccc);
552
- background: color-mix(in srgb, var(--smrt-color-on-surface, #fff) 2%, transparent);
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, #3b82f6);
557
- border-bottom: 2px solid var(--smrt-color-primary, #3b82f6);
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, #444);
588
- border-radius: var(--smrt-radius-lg, 8px);
589
- background: var(--smrt-color-surface-container-high, #242424);
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, #666);
596
- background: var(--smrt-color-surface-container-highest, #2a2a2a);
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, #3b82f6);
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, #3b82f6);
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, #666);
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, 9999px);
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, #ef4444);
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, #000);
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, #111);
656
- border-radius: var(--smrt-radius-md, 6px);
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, 9999px);
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, #444);
687
- color: var(--smrt-color-outline, #888);
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, #1a1a1a);
694
- border-radius: var(--smrt-radius-md, 6px);
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, #ef4444);
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, #242424);
707
+ background: var(--smrt-color-surface-container-high);
706
708
  color: white;
707
- border: 1px solid var(--smrt-color-outline-variant, #444);
709
+ border: 1px solid var(--smrt-color-outline-variant);
708
710
  padding: 0.5rem 1rem;
709
- border-radius: var(--smrt-radius-sm, 4px);
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, #888);
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, 6px);
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, #333);
752
- color: var(--smrt-color-outline, #666);
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, #3b82f6);
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, 4px);
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, 6px);
797
- border: 1px solid var(--smrt-color-outline-variant, #333);
798
- background-color: var(--smrt-color-surface-container-high, #242424);
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, #888);
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, #333);
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, 9999px);
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, #333);
845
- color: var(--smrt-color-on-surface-variant, #ccc);
846
- border: 1px solid var(--smrt-color-outline-variant, #444);
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, 9999px);
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, #3f3f3f);
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, #3b82f6);
859
- border-color: var(--smrt-color-primary, #3b82f6);
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, #242424);
871
- border-radius: var(--smrt-radius-md, 6px);
872
- border: 1px solid var(--smrt-color-outline-variant, #333);
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, #888);
879
+ color: var(--smrt-color-outline);
878
880
  margin: 0;
879
881
  }
880
882
 
881
883
  .variation-error {
882
- color: var(--smrt-color-error, #ef4444);
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, 4px);
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, 9999px);
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, 9999px);
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
- .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, #64748b); border-radius: var(--smrt-radius-xl, 12px); }
410
- .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, #475569); font-size: var(--smrt-typography-body-small-size, .875rem); }
411
- .steps li { padding-bottom: var(--smrt-spacing-1, .25rem); border-bottom: 2px solid var(--smrt-color-outline-variant, #64748b); }
412
- .steps .current { color: var(--smrt-color-primary, #1d4ed8); border-color: var(--smrt-color-primary, #1d4ed8); font-weight: var(--smrt-typography-weight-semibold, 600); }
413
- .steps .complete { color: var(--smrt-color-success, #166534); }
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, #475569); font-size: var(--smrt-typography-body-small-size, .875rem); }
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, #fff); background-image: linear-gradient(45deg, var(--smrt-color-surface-container-highest, #ddd) 25%, transparent 25%), linear-gradient(-45deg, var(--smrt-color-surface-container-highest, #ddd) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--smrt-color-surface-container-highest, #ddd) 75%), linear-gradient(-45deg, transparent 75%, var(--smrt-color-surface-container-highest, #ddd) 75%); background-size: 16px 16px; background-position: 0 0, 0 8px, 8px -8px, -8px 0; }
426
- .error { color: var(--smrt-color-error, #b91c1c); font-weight: var(--smrt-typography-weight-semibold, 600); }
427
- .success { color: var(--smrt-color-success, #166534); }
428
- .spinner { width: 1rem; height: 1rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: var(--smrt-radius-full, 9999px); animation: spin .7s linear infinite; }
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, #e2e8f0);
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, #020617);
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, #7dd3fc);
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, #cbd5e1);
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, #e0f2fe);
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.15",
3
+ "version": "0.55.21",
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",
@@ -39,15 +39,15 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@happyvertical/animation": "0.5.0",
42
- "@happyvertical/ai": "^0.103.4",
43
- "@happyvertical/images": "^0.103.4",
44
- "@happyvertical/smrt-assets": "0.55.15",
45
- "@happyvertical/smrt-core": "0.55.15",
46
- "@happyvertical/smrt-prompts": "0.55.15",
47
- "@happyvertical/smrt-tenancy": "0.55.15",
48
- "@happyvertical/smrt-types": "0.55.15",
49
- "@happyvertical/smrt-ui": "0.55.15",
50
- "@happyvertical/utils": "^0.103.4",
42
+ "@happyvertical/ai": "^0.103.5",
43
+ "@happyvertical/images": "^0.103.5",
44
+ "@happyvertical/smrt-assets": "0.55.21",
45
+ "@happyvertical/smrt-core": "0.55.21",
46
+ "@happyvertical/smrt-prompts": "0.55.21",
47
+ "@happyvertical/smrt-tenancy": "0.55.21",
48
+ "@happyvertical/smrt-types": "0.55.21",
49
+ "@happyvertical/smrt-ui": "0.55.21",
50
+ "@happyvertical/utils": "^0.103.5",
51
51
  "jimp": "^1.6.1",
52
52
  "sharp": "^0.35.5"
53
53
  },
@@ -55,10 +55,10 @@
55
55
  "svelte": "^5.57.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@happyvertical/smrt-playground": "0.55.15",
59
- "@happyvertical/smrt-profiles": "0.55.15",
60
- "@happyvertical/smrt-vitest": "0.55.15",
61
- "@happyvertical/sql": "^0.103.4",
58
+ "@happyvertical/smrt-playground": "0.55.21",
59
+ "@happyvertical/smrt-profiles": "0.55.21",
60
+ "@happyvertical/smrt-vitest": "0.55.21",
61
+ "@happyvertical/sql": "^0.103.5",
62
62
  "@sveltejs/kit": "2.69.1",
63
63
  "@sveltejs/package": "^2.5.8",
64
64
  "@sveltejs/vite-plugin-svelte": "^7.3.0",