@sc-360-v2/storefront-cms-library 0.5.52 → 0.5.53

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.
@@ -1,4 +1,4 @@
1
- @use "sass:map";
1
+ @use "sass:map";
2
2
  @use "sass:list";
3
3
  @use "./functions.scss" as *;
4
4
 
@@ -633,6 +633,22 @@ $resizeActive: '[data-cms-element-resizer="true"]';
633
633
  var(--_ctm-tab-dn-hr-tt-le-ht, var(--_ctm-dn-hr-tt-le-ht))
634
634
  );
635
635
 
636
+ // Header Text > Text Transform and the word wrap/break pair that the
637
+ // typography panel renders alongside it.
638
+ text-transform: prepareMediaVariable(--_ctm-dn-hr-tt-tt-tm, none);
639
+ word-wrap: prepareMediaVariable(--_ctm-dn-hr-tt-wd-wp, normal);
640
+ word-break: prepareMediaVariable(--_ctm-dn-hr-tt-wd-bk, normal);
641
+
642
+ // Header Text > Text Overflow. The renderer adds the class and
643
+ // publishes the line count, since the control is `controls`.
644
+ &.flex__overflow {
645
+ display: -webkit-box;
646
+ -webkit-box-orient: vertical;
647
+ -webkit-line-clamp: var(--_sf-line-clamp, 1);
648
+ overflow: hidden;
649
+ text-overflow: ellipsis;
650
+ }
651
+
636
652
  &:has(.est__dropdown__main) {
637
653
  max-width: 200px;
638
654
  }
@@ -641,11 +657,41 @@ $resizeActive: '[data-cms-element-resizer="true"]';
641
657
  }
642
658
  tbody {
643
659
  .tbody__row__divider {
660
+ // Set by CommonTable only when the caller passed onRowClick.
661
+ // The cells carry it too: a <td> establishes its own cursor context,
662
+ // so the pointer would stop at the row padding otherwise.
663
+ &[data-is-clickable="true"] {
664
+ cursor: pointer;
665
+
666
+ .td__col__divider,
667
+ .td__col__divider * {
668
+ cursor: pointer;
669
+ }
670
+ }
671
+
644
672
  background-color: var(
645
673
  --_ctm-mob-dn-te-rw-bd-cr,
646
674
  var(--_ctm-tab-dn-te-rw-bd-cr, var(--_ctm-dn-te-rw-bd-cr))
647
675
  );
648
676
 
677
+ // Table Row > Hover Background. Falls back to the default background
678
+ // so a row that has no hover colour set does not go transparent.
679
+ &:hover {
680
+ background-color: var(
681
+ --_ctm-mob-dn-te-rw-bd-cr-hr,
682
+ var(
683
+ --_ctm-tab-dn-te-rw-bd-cr-hr,
684
+ var(
685
+ --_ctm-dn-te-rw-bd-cr-hr,
686
+ var(
687
+ --_ctm-mob-dn-te-rw-bd-cr,
688
+ var(--_ctm-tab-dn-te-rw-bd-cr, var(--_ctm-dn-te-rw-bd-cr))
689
+ )
690
+ )
691
+ )
692
+ );
693
+ }
694
+
649
695
  height: var(--_ctm-mob-lt-rw-ht, var(--_ctm-tab-lt-rw-ht, var(--_ctm-lt-rw-ht)));
650
696
 
651
697
  .td__col__divider {
@@ -746,13 +792,101 @@ $resizeActive: '[data-cms-element-resizer="true"]';
746
792
  justify-content: var(justify-center);
747
793
  }
748
794
 
795
+ // Border, radius and shadow for the pagination bar. None of these existed,
796
+ // so the panel's new controls had nothing to paint.
797
+ border-color: prepareMediaVariable(--_ctm-dn-pn-dt-se-br-cr);
798
+ border-style: prepareMediaVariable(--_ctm-dn-pn-dt-se-br-se, none);
799
+ border-width: prepareMediaVariable(--_ctm-dn-pn-dt-se-br-wh, 0);
800
+ border-radius: prepareMediaVariable(--_ctm-dn-pn-dt-se-br-rs, 0);
801
+ box-shadow: var(
802
+ --_show-shadow,
803
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-sw-ae, 0)
804
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-sw-br, 0)
805
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-sw-sd, 0)
806
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-sw-cr, transparent)
807
+ );
808
+
809
+ &:hover {
810
+ background-color: var(
811
+ --_sf-bd-cr,
812
+ prepareMediaVariable(
813
+ --_ctm-dn-pn-hr-se-bd-cr,
814
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-bd-cr)
815
+ )
816
+ );
817
+ border-color: prepareMediaVariable(
818
+ --_ctm-dn-pn-hr-se-br-cr,
819
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-br-cr)
820
+ );
821
+ border-style: prepareMediaVariable(
822
+ --_ctm-dn-pn-hr-se-br-se,
823
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-br-se, none)
824
+ );
825
+ border-width: prepareMediaVariable(
826
+ --_ctm-dn-pn-hr-se-br-wh,
827
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-br-wh, 0)
828
+ );
829
+ border-radius: prepareMediaVariable(
830
+ --_ctm-dn-pn-hr-se-br-rs,
831
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-br-rs, 0)
832
+ );
833
+ box-shadow: var(
834
+ --_show-shadow,
835
+ prepareMediaVariable(--_ctm-dn-pn-hr-se-sw-ae, 0)
836
+ prepareMediaVariable(--_ctm-dn-pn-hr-se-sw-br, 0)
837
+ prepareMediaVariable(--_ctm-dn-pn-hr-se-sw-sd, 0)
838
+ prepareMediaVariable(--_ctm-dn-pn-hr-se-sw-cr, transparent)
839
+ );
840
+ }
841
+
749
842
  button {
843
+ // Default glyph shows, hover glyph waits. Both are in the DOM so the
844
+ // swap costs no re-render; when no hover icon is picked the renderer
845
+ // falls back to the default one, so the pair looks identical.
846
+ .pagination__icon {
847
+ display: flex;
848
+
849
+ &--hover {
850
+ display: none;
851
+ }
852
+ }
853
+
854
+ &:hover {
855
+ .pagination__icon {
856
+ display: none;
857
+
858
+ &--hover {
859
+ display: flex;
860
+ }
861
+ }
862
+ }
863
+
750
864
  svg {
751
- width: var(--_width-18);
752
- height: var(--_height-18);
865
+ // Icon Size and Icon Color live on the pagination section's states, so
866
+ // the variables carry a `dt-se` / `hr-se` segment. These read
867
+ // `--_ctm-dn-pn-in-*` — a path nothing writes — and the svg itself was
868
+ // pinned to a hardcoded 18px and grey, so neither control did anything.
869
+ width: prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se, 18px);
870
+ height: prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se, 18px);
871
+ path {
872
+ stroke: prepareMediaVariable(--_ctm-dn-pn-dt-se-in-c1, var(--_gray-500));
873
+ }
874
+ }
875
+
876
+ &:hover svg {
877
+ width: prepareMediaVariable(
878
+ --_ctm-dn-pn-hr-se-in-se,
879
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se, 18px)
880
+ );
881
+ height: prepareMediaVariable(
882
+ --_ctm-dn-pn-hr-se-in-se,
883
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se, 18px)
884
+ );
753
885
  path {
754
- stroke: var(--_gray-500);
755
- // stroke: var(--_ctm-dn-pn-in-c1, var(--_tst-dn-pn-in-c1));
886
+ stroke: prepareMediaVariable(
887
+ --_ctm-dn-pn-hr-se-in-c1,
888
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-in-c1, var(--_gray-500))
889
+ );
756
890
  }
757
891
  }
758
892
  }
@@ -857,16 +991,24 @@ $resizeActive: '[data-cms-element-resizer="true"]';
857
991
  );
858
992
  }
859
993
  }
994
+ // Same wrong path as the svg rule above: the icon variables carry the
995
+ // section's state segment. Only the "next" button has this class in the
996
+ // markup, so the svg rules are what actually style both arrows — these are
997
+ // kept for the text colour they contribute.
860
998
  .pagination__arrows {
861
- color: var(
862
- --_sf-hr-fc,
863
- var(--_ctm-mob-dn-pn-in-c1, var(--_ctm-tab-dn-pn-in-c1, var(--_ctm-dn-pn-in-c1)))
864
- );
999
+ color: prepareMediaVariable(--_ctm-dn-pn-dt-se-in-c1);
1000
+ font-size: prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se);
865
1001
 
866
- font-size: var(
867
- --_sf-hr-fs,
868
- var(--_ctm-mob-dn-pn-in-se, var(--_ctm-tab-dn-pn-in-se, var(--_ctm-dn-pn-in-se)))
869
- );
1002
+ &:hover {
1003
+ color: prepareMediaVariable(
1004
+ --_ctm-dn-pn-hr-se-in-c1,
1005
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-in-c1)
1006
+ );
1007
+ font-size: prepareMediaVariable(
1008
+ --_ctm-dn-pn-hr-se-in-se,
1009
+ prepareMediaVariable(--_ctm-dn-pn-dt-se-in-se)
1010
+ );
1011
+ }
870
1012
  }
871
1013
  }
872
1014
  }
@@ -1192,6 +1334,17 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1192
1334
  display: flex;
1193
1335
  align-items: center;
1194
1336
  gap: 12px;
1337
+ // Stands in for the profile dropdown when there is only one
1338
+ // profile. Matches the heading beside it so the row reads as one line.
1339
+ .allocation_single_profile_name {
1340
+ color: #475467;
1341
+ font-size: 14px;
1342
+ font-weight: 600;
1343
+ line-height: 20px;
1344
+ display: flex;
1345
+ align-items: center;
1346
+ }
1347
+
1195
1348
  .slider_heading {
1196
1349
  height: auto;
1197
1350
  }
@@ -1234,6 +1387,12 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1234
1387
  }
1235
1388
 
1236
1389
  .allocations_slider_slide_wrapper {
1390
+ // Clicking an allocation selects it and its profile (it replaced the
1391
+ // Redeem button), so the whole slide is the hit area.
1392
+ &[data-is-clickable="true"] {
1393
+ cursor: pointer;
1394
+ }
1395
+
1237
1396
  display: flex;
1238
1397
  align-items: center;
1239
1398
  gap: 12px;