@sc-360-v2/storefront-cms-library 0.5.59 → 0.5.61

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 (156) hide show
  1. package/dist/add-order.scss +2 -8
  2. package/dist/allocation-header-quota-details.scss +9 -4
  3. package/dist/allocationDetails.scss +167 -164
  4. package/dist/allocations-quota-details.scss +9 -4
  5. package/dist/allocations.scss +1 -4
  6. package/dist/animation-control.scss +23 -23
  7. package/dist/builder.js +1 -1
  8. package/dist/builderLite.js +1 -1
  9. package/dist/bulk-variant-picker.scss +24 -26
  10. package/dist/bundle copy.scss +235 -0
  11. package/dist/bundle.scss +10 -10
  12. package/dist/bundleCategories.scss +301 -0
  13. package/dist/bundleDetails.scss +10 -1
  14. package/dist/button copy.scss +28 -0
  15. package/dist/buy-for-tabs-container-item.scss +80 -80
  16. package/dist/buyForHeaders.scss +3 -12
  17. package/dist/cart-details.scss +23 -4
  18. package/dist/cart-products-sidebar.scss +211 -211
  19. package/dist/cart-summary.scss +82 -10
  20. package/dist/cart-wrapper.scss +127 -127
  21. package/dist/cart.scss +2 -2
  22. package/dist/cartDropdownOverlay.scss +10 -1
  23. package/dist/cartGrouping.scss +89 -89
  24. package/dist/category-groups-product-grid.scss +143 -155
  25. package/dist/category-groups-product-image.scss +1372 -2010
  26. package/dist/category-groups-product-options.scss +680 -1054
  27. package/dist/category-groups-product-price.scss +2742 -4997
  28. package/dist/category-groups-quota-details.scss +7 -2
  29. package/dist/categoryDetails.scss +61 -61
  30. package/dist/categoryWidget.scss +34 -34
  31. package/dist/checkbox-radio.scss +124 -124
  32. package/dist/checkout.scss +1850 -4170
  33. package/dist/common-element.scss +35 -35
  34. package/dist/confirmationModal.scss +139 -139
  35. package/dist/coupon.scss +352 -714
  36. package/dist/custom-fonts.scss +100 -100
  37. package/dist/embroider-preview-element.scss +94 -94
  38. package/dist/emtpy-templates.scss +165 -165
  39. package/dist/faq.scss +7 -11
  40. package/dist/flex-text-editor.scss +271 -271
  41. package/dist/functions.scss +36 -0
  42. package/dist/gallery-slider-temp.scss +42 -5
  43. package/dist/hotspot.scss +1 -4
  44. package/dist/icon-list.scss +30 -59
  45. package/dist/image-for-product.scss +21 -21
  46. package/dist/image-temp.scss +18 -3
  47. package/dist/language-selector.scss +29 -21
  48. package/dist/last-x-orders.scss +6 -13
  49. package/dist/layouter-item.scss +3 -1
  50. package/dist/layouter.scss +164 -29
  51. package/dist/lightbox.scss +78 -78
  52. package/dist/line.scss +29 -70
  53. package/dist/loader.scss +37 -37
  54. package/dist/login.scss +49 -41
  55. package/dist/map.scss +23 -9
  56. package/dist/mega-menu.scss +1 -4
  57. package/dist/menu-item.scss +19 -19
  58. package/dist/myTemplates.scss +3 -0
  59. package/dist/order-processing.scss +61 -61
  60. package/dist/overflow-module.scss +63 -63
  61. package/dist/pickup-locations.scss +6 -3
  62. package/dist/position-module.scss +95 -95
  63. package/dist/prefix-list.scss +86 -86
  64. package/dist/product-actions.scss +6 -9
  65. package/dist/product-highlights.scss +40 -12
  66. package/dist/product-image-bundles.scss +12 -33
  67. package/dist/product-image.scss +341 -724
  68. package/dist/product-labels.scss +10 -8
  69. package/dist/product-options.scss +270 -125
  70. package/dist/product-price.scss +8 -2
  71. package/dist/productDetails.scss +2 -1
  72. package/dist/profile.scss +28 -0
  73. package/dist/quick-inventory-check.scss +6 -13
  74. package/dist/quick-links.scss +4 -0
  75. package/dist/quick-order-pad.scss +2 -2
  76. package/dist/quota-details.scss +11 -15
  77. package/dist/repeater copy.scss +24 -0
  78. package/dist/repeater-embla-controls.scss +13 -4
  79. package/dist/repeater.scss +161 -7
  80. package/dist/responsive-behaviour.scss +29 -29
  81. package/dist/scroll.scss +31 -1
  82. package/dist/shareCartSideBar.scss +254 -254
  83. package/dist/shipping-estimator.scss +41 -41
  84. package/dist/simple-list.scss +67 -0
  85. package/dist/social.scss +2 -2
  86. package/dist/sort.scss +89 -89
  87. package/dist/static-text.scss +52 -52
  88. package/dist/store-locations.scss +10 -8
  89. package/dist/sub-category.scss +74 -74
  90. package/dist/submit-quote.scss +275 -275
  91. package/dist/tab-container-item.scss +80 -80
  92. package/dist/tab-v2.scss +277 -604
  93. package/dist/table-common.scss +2 -2
  94. package/dist/table.scss +2 -2
  95. package/dist/text-temp-v2.scss +12 -23
  96. package/dist/text-temp.scss +109 -109
  97. package/dist/toggle-button.scss +32 -32
  98. package/dist/transform-properties-module.scss +20 -20
  99. package/dist/types/builder/elements/bundle-categories/index.d.ts +30 -0
  100. package/dist/types/builder/enums/index.d.ts +1 -0
  101. package/dist/types/builder/index.d.ts +2 -1
  102. package/dist/types/builder/tools/element-edit/addProductsTab.d.ts +108 -0
  103. package/dist/types/builder/tools/element-edit/breadcrumbs.d.ts +6 -0
  104. package/dist/types/builder/tools/element-edit/bundle.d.ts +22 -0
  105. package/dist/types/builder/tools/element-edit/bundleCategories.d.ts +115 -0
  106. package/dist/types/builder/tools/element-edit/bundleDetails.d.ts +64 -0
  107. package/dist/types/builder/tools/element-edit/button.d.ts +1 -0
  108. package/dist/types/builder/tools/element-edit/buttonInstance.d.ts +10 -0
  109. package/dist/types/builder/tools/element-edit/buyForWithTab.d.ts +84 -0
  110. package/dist/types/builder/tools/element-edit/cart.d.ts +6 -0
  111. package/dist/types/builder/tools/element-edit/cartAttributes.d.ts +60 -0
  112. package/dist/types/builder/tools/element-edit/cartDetails.d.ts +16 -0
  113. package/dist/types/builder/tools/element-edit/cartSummary.d.ts +1325 -74
  114. package/dist/types/builder/tools/element-edit/categoryGroups.d.ts +158 -0
  115. package/dist/types/builder/tools/element-edit/checkout.d.ts +172 -0
  116. package/dist/types/builder/tools/element-edit/common.d.ts +2 -0
  117. package/dist/types/builder/tools/element-edit/countdown.d.ts +44 -0
  118. package/dist/types/builder/tools/element-edit/coupon.d.ts +28 -0
  119. package/dist/types/builder/tools/element-edit/embroidery.d.ts +37 -0
  120. package/dist/types/builder/tools/element-edit/filterResults.d.ts +4 -0
  121. package/dist/types/builder/tools/element-edit/icon-list.d.ts +11 -0
  122. package/dist/types/builder/tools/element-edit/index.d.ts +2 -1
  123. package/dist/types/builder/tools/element-edit/itemStock.d.ts +2 -0
  124. package/dist/types/builder/tools/element-edit/kitDetails.d.ts +66 -0
  125. package/dist/types/builder/tools/element-edit/kits.d.ts +4 -0
  126. package/dist/types/builder/tools/element-edit/layouter.d.ts +33 -1
  127. package/dist/types/builder/tools/element-edit/map.d.ts +5 -1
  128. package/dist/types/builder/tools/element-edit/marchandiserSets.d.ts +2 -0
  129. package/dist/types/builder/tools/element-edit/orderStatus.d.ts +17 -0
  130. package/dist/types/builder/tools/element-edit/paymentMethods.d.ts +6 -0
  131. package/dist/types/builder/tools/element-edit/productCustomizations.d.ts +14 -0
  132. package/dist/types/builder/tools/element-edit/productOptions.d.ts +3 -1
  133. package/dist/types/builder/tools/element-edit/productPrice.d.ts +1 -0
  134. package/dist/types/builder/tools/element-edit/quickLinks.d.ts +26 -0
  135. package/dist/types/builder/tools/element-edit/repeater.d.ts +45 -1
  136. package/dist/types/builder/tools/element-edit/scroll.d.ts +8 -11
  137. package/dist/types/builder/tools/element-edit/search.d.ts +1 -0
  138. package/dist/types/builder/tools/element-edit/searchResultsHeading.d.ts +6 -0
  139. package/dist/types/builder/tools/element-edit/shipping-payments.d.ts +72 -0
  140. package/dist/types/builder/tools/element-edit/shippingEstimator.d.ts +4 -0
  141. package/dist/types/builder/tools/element-edit/social.d.ts +2 -0
  142. package/dist/types/builder/tools/element-edit/spotlight.d.ts +2 -0
  143. package/dist/types/builder/tools/element-edit/table.d.ts +10 -0
  144. package/dist/types/builder/tools/element-edit/tabs.d.ts +6 -0
  145. package/dist/types/builder/tools/element-edit/typographyInstance.d.ts +110 -0
  146. package/dist/types/builder/tools/element-edit/userElements.d.ts +62 -22
  147. package/dist/types/builder/tools/element-edit/variantPicker.d.ts +4 -0
  148. package/dist/types/builder/tools/element-edit/video.d.ts +22 -0
  149. package/dist/uom-selector.scss +8 -2
  150. package/dist/user-elements.scss +133 -104
  151. package/dist/variant-picker.scss +1 -4
  152. package/dist/video.scss +147 -325
  153. package/dist/volume-pricing.scss +2 -2
  154. package/dist/website.js +1 -1
  155. package/dist/wishlist-overlay.scss +48 -48
  156. package/package.json +131 -131
@@ -175,10 +175,7 @@
175
175
  // default-state values, which is why the Hover state's text properties appeared
176
176
  // dead. Publishing the hover values as those custom properties is what `.txt`
177
177
  // is written to consume, and matches how product-actions.scss does it.
178
- --_sf-hr-cr: var(
179
- --_ctm-mob-dn-hr-se-cr,
180
- var(--_ctm-tab-dn-hr-se-cr, var(--_ctm-dn-hr-se-cr))
181
- );
178
+ --_sf-hr-cr: var(--_ctm-mob-dn-hr-se-cr, var(--_ctm-tab-dn-hr-se-cr, var(--_ctm-dn-hr-se-cr)));
182
179
  --_sf-hr-ft-fy: var(
183
180
  --_ctm-mob-dn-hr-se-ft-fy,
184
181
  var(--_ctm-tab-dn-hr-se-ft-fy, var(--_ctm-dn-hr-se-ft-fy))
@@ -219,10 +216,7 @@
219
216
  --_ctm-mob-dn-hr-se-le-ht,
220
217
  var(--_ctm-tab-dn-hr-se-le-ht, var(--_ctm-dn-hr-se-le-ht))
221
218
  );
222
- --_sf-hr-ue: var(
223
- --_ctm-mob-dn-hr-se-ue,
224
- var(--_ctm-tab-dn-hr-se-ue, var(--_ctm-dn-hr-se-ue))
225
- );
219
+ --_sf-hr-ue: var(--_ctm-mob-dn-hr-se-ue, var(--_ctm-tab-dn-hr-se-ue, var(--_ctm-dn-hr-se-ue)));
226
220
 
227
221
  background-color: var(
228
222
  --_ctm-mob-dn-hr-se-bd-cr,
@@ -113,22 +113,27 @@ $overflowSelector: ".flex__overflow";
113
113
 
114
114
  .product__list__item {
115
115
  position: relative;
116
+ // The rule is a pseudo-element and takes no space of its own, so a wide one grew
117
+ // back over the item beside it — see dividerGapReserve in functions.scss.
118
+ &:not(:last-child) {
119
+ @include dividerGapReserve($shapeSize, right);
120
+ }
116
121
  &:not(:last-child)::after {
117
122
  content: "";
118
123
  width: $shapeSize;
119
124
  height: 100%;
120
125
  position: absolute;
121
- right: calc((-1 * var(--_sf-gp) / 2) - (#{$shapeSize} / 2));
126
+ right: dividerGapOffset(var(--_sf-gp, 0px), $shapeSize);
122
127
  background-color: $shapeColor;
123
128
  }
124
129
 
125
130
  // Divider item (Divider -> Item Style). Same geometry as the standalone
126
- // element: the rule's centre sits at -(gap/2) from the item's right edge,
127
- // so the marker is pinned there and translated half its own width back.
131
+ // element: the rule's centre sits at -(gap/2) - (width/2) from the item's right
132
+ // edge, so the marker is pinned there and translated half its own width back.
128
133
  .divider__marker {
129
134
  position: absolute;
130
135
  top: 50%;
131
- right: calc(-1 * var(--_sf-gp, 0px) / 2);
136
+ right: dividerMarkerOffset(var(--_sf-gp, 0px), $shapeSize);
132
137
  transform: translate(50%, -50%);
133
138
  display: flex;
134
139
  align-items: center;
@@ -726,184 +726,187 @@ $ad-slider-arrows: "--_ctm-dn-sr-pn-as"; // design.slider.paginationArrows
726
726
  display: flex;
727
727
  gap: 12px;
728
728
  margin-left: auto;
729
- // Grid View Control Style > Layout Style > Vertical Alignment. The
730
- // renderer publishes the stored word (top / center / bottom); those are
731
- // not align-self keywords, so the mapping is done here rather than
732
- // written into every saved element.
733
- align-self: center;
734
- &[data-vertical-align="top"] {
735
- align-self: flex-start;
736
- }
737
- &[data-vertical-align="center"] {
729
+ // Grid View Control Style > Layout Style > Vertical Alignment. The
730
+ // renderer publishes the stored word (top / center / bottom); those are
731
+ // not align-self keywords, so the mapping is done here rather than
732
+ // written into every saved element.
738
733
  align-self: center;
739
- }
740
- &[data-vertical-align="bottom"] {
741
- align-self: flex-end;
742
- }
743
- }
744
- .product__views {
745
- display: flex;
746
- // background-color: #fff;
747
- // border: 1px solid var(--_gray-300);
748
- border-radius: 4px;
749
- border-style: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-se, solid);
750
- border-width: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-wh, 1px);
751
- border-color: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-cr, var(--_gray-200));
752
- background-color: prepareMediaVariable(
753
- --_ctm-dn-gd-vw-cl-se-lt-se-bd-cr,
754
- var(--_base-white)
755
- );
756
- // height: 40px;
757
- // overflow: hidden;
758
-
759
- // Hoisted out of `.btn` so the "Icon + Text" rules further down can size
760
- // themselves off the same icon measurement.
761
- $size: #{var(
762
- --_sf-at-btn-size,
763
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-in-se, var(--_width-20))}
764
- )};
765
-
766
- .btn {
767
- // display: inline-block;
768
- // // padding: 8px;
769
- // display: flex;
770
- // align-items: center;
771
- // justify-content: center;
772
-
773
- display: var(--_d-flex);
774
- --_width-20: 20px;
775
- // $size: var(--_width-40);
776
- // The 2x cell is now a floor rather than a fixed size: Padding is
777
- // configurable, so the button grows past it once the padding needs more
778
- // room than the icon left over. Untouched elements have no padding and
779
- // stay exactly 2x, as they always were.
780
- min-width: calc(#{$size} * 2);
781
- min-height: calc(#{$size} * 2);
782
- box-sizing: border-box;
783
- padding: var(
784
- --_sf-at-btn-pg,
785
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-pg, 0)}
786
- );
787
- align-items: center;
788
- justify-content: center;
789
- background: var(
790
- --_sf-at-btn-bd,
791
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-bd-cr)}
792
- );
793
- box-shadow: var(
794
- --_sf-at-btn-sw,
795
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-ae, 0 0)}
796
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-br, 0)}
797
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-sd, 0)}
798
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-cr, transparent)}
799
- );
800
-
801
- // The renderer reads Show Shadow off whichever state the button is in,
802
- // so one attribute covers both.
803
- &[data-show-shadow="false"] {
804
- box-shadow: none;
734
+ &[data-vertical-align="top"] {
735
+ align-self: flex-start;
805
736
  }
806
-
807
- cursor: pointer;
808
- button {
809
- display: flex;
810
- // Until these are cleared the button keeps the browser's own
811
- // padding and border, which pushed the glyph off the centre of its
812
- // cell — that is what made the Grid and List icons sit unevenly
813
- // beside each other. Filling the cell and centring here keeps them
814
- // on one baseline at every icon size.
815
- align-items: center;
816
- justify-content: center;
817
- width: 100%;
818
- height: 100%;
819
- padding: 0;
820
- border: none;
821
- background: transparent;
737
+ &[data-vertical-align="center"] {
738
+ align-self: center;
739
+ }
740
+ &[data-vertical-align="bottom"] {
741
+ align-self: flex-end;
822
742
  }
743
+ }
744
+ .product__views {
745
+ display: flex;
746
+ // background-color: #fff;
747
+ // border: 1px solid var(--_gray-300);
748
+ border-radius: 4px;
749
+ border-style: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-se, solid);
750
+ border-width: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-wh, 1px);
751
+ border-color: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-lt-se-br-cr, var(--_gray-200));
752
+ background-color: prepareMediaVariable(
753
+ --_ctm-dn-gd-vw-cl-se-lt-se-bd-cr,
754
+ var(--_base-white)
755
+ );
756
+ // height: 40px;
757
+ // overflow: hidden;
758
+
759
+ // Hoisted out of `.btn` so the "Icon + Text" rules further down can size
760
+ // themselves off the same icon measurement.
761
+ $size: #{var(
762
+ --_sf-at-btn-size,
763
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-in-se, var(--_width-20))}
764
+ )};
823
765
 
824
- // The glyph gets its own flex box so the svg sits centred without the
825
- // inline-baseline gap a bare `dangerouslySetInnerHTML` span would add.
826
- .btn__icon {
827
- display: flex;
766
+ .btn {
767
+ // display: inline-block;
768
+ // // padding: 8px;
769
+ // display: flex;
770
+ // align-items: center;
771
+ // justify-content: center;
772
+
773
+ display: var(--_d-flex);
774
+ --_width-20: 20px;
775
+ // $size: var(--_width-40);
776
+ // The 2x cell is now a floor rather than a fixed size: Padding is
777
+ // configurable, so the button grows past it once the padding needs more
778
+ // room than the icon left over. Untouched elements have no padding and
779
+ // stay exactly 2x, as they always were.
780
+ min-width: calc(#{$size} * 2);
781
+ min-height: calc(#{$size} * 2);
782
+ box-sizing: border-box;
783
+ padding: var(--_sf-at-btn-pg, #{prepareMediaVariable(
784
+ --_ctm-dn-gd-vw-cl-se-bn-dt-se-pg,
785
+ 0
786
+ )});
828
787
  align-items: center;
829
788
  justify-content: center;
830
- flex-shrink: 0;
789
+ background: var(
790
+ --_sf-at-btn-bd,
791
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-bd-cr)}
792
+ );
793
+ box-shadow: var(
794
+ --_sf-at-btn-sw,
795
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-ae, 0 0)}
796
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-br, 0)}
797
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-sd, 0)}
798
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-sw-cr, transparent)}
799
+ );
831
800
 
832
- // An uploaded icon comes through as an <img> sized to its box, so the
833
- // box needs a size of its own — the svg rule further down only reaches
834
- // library icons, and a percentage inside a shrink-to-fit parent would
835
- // otherwise resolve to nothing.
836
- img {
837
- width: calc(#{$size} * 1);
838
- height: calc(#{$size} * 1);
839
- object-fit: contain;
801
+ // The renderer reads Show Shadow off whichever state the button is in,
802
+ // so one attribute covers both.
803
+ &[data-show-shadow="false"] {
804
+ box-shadow: none;
840
805
  }
841
- }
842
806
 
843
- // &:hover {
844
- // background-color: var(--_gray-100);
845
- // }
846
-
847
- &.active {
848
- // --_sf-at-pt-cl: var(--_gray-700);
849
- --_sf-at-btn-size: #{prepareMediaVariable(
850
- --_ctm-dn-gd-vw-cl-se-bn-sd-se-in-se,
851
- var(--_width-20)
852
- )};
853
- --_sf-at-pt-cl: #{prepareMediaVariable(
854
- --_ctm-dn-gd-vw-cl-se-bn-sd-se-in-c1,
855
- var(--_gray-700)
856
- )};
857
- --_sf-at-btn-bd: #{prepareMediaVariable(
858
- --_ctm-dn-gd-vw-cl-se-bn-sd-se-bd-cr,
859
- var(--_gray-200)
860
- )};
861
- // Same re-pointing trick as the icon vars above: the padding and
862
- // shadow declarations stay written once and simply re-resolve
863
- // against the selected state's values.
864
- --_sf-at-btn-pg: #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-pg, 0)};
865
- --_sf-at-btn-sw: #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-ae, 0 0)}
866
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-br, 0)}
867
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-sd, 0)}
868
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-cr, transparent)};
869
- // background: var(--_gray-200);
870
- }
871
- // &.active {
872
- // background-color: #ced4f6;
873
- // button {
874
- // svg {
875
- // path {
876
- // stroke: var(--_primary-500);
877
- // }
878
- // }
879
- // }
880
- // }
881
- // &:first-child {
882
- // border-right: 1px solid var(--_gray-200);
883
- // }
884
-
885
- svg {
886
- width: calc(#{$size} * 1);
887
- height: calc(#{$size} * 1);
807
+ cursor: pointer;
808
+ button {
809
+ display: flex;
810
+ // Until these are cleared the button keeps the browser's own
811
+ // padding and border, which pushed the glyph off the centre of its
812
+ // cell — that is what made the Grid and List icons sit unevenly
813
+ // beside each other. Filling the cell and centring here keeps them
814
+ // on one baseline at every icon size.
815
+ align-items: center;
816
+ justify-content: center;
817
+ width: 100%;
818
+ height: 100%;
819
+ padding: 0;
820
+ border: none;
821
+ background: transparent;
822
+ }
888
823
 
889
- path {
890
- stroke: var(
891
- --_sf-at-pt-cl,
892
- #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-in-c1, var(--_gray-500))}
893
- );
894
- // Overrides the stroke-width presentation attribute baked into the icon markup.
895
- stroke-width: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-se-wh, 1.25);
824
+ // The glyph gets its own flex box so the svg sits centred without the
825
+ // inline-baseline gap a bare `dangerouslySetInnerHTML` span would add.
826
+ .btn__icon {
827
+ display: flex;
828
+ align-items: center;
829
+ justify-content: center;
830
+ flex-shrink: 0;
831
+
832
+ // An uploaded icon comes through as an <img> sized to its box, so the
833
+ // box needs a size of its own — the svg rule further down only reaches
834
+ // library icons, and a percentage inside a shrink-to-fit parent would
835
+ // otherwise resolve to nothing.
836
+ img {
837
+ width: calc(#{$size} * 1);
838
+ height: calc(#{$size} * 1);
839
+ object-fit: contain;
840
+ }
896
841
  }
897
- }
898
842
 
899
- &:first-of-type {
900
- border-radius: 4px 0 0 4px;
901
- }
902
- &:last-of-type {
903
- border-radius: 0 4px 4px 0;
843
+ // &:hover {
844
+ // background-color: var(--_gray-100);
845
+ // }
846
+
847
+ &.active {
848
+ // --_sf-at-pt-cl: var(--_gray-700);
849
+ --_sf-at-btn-size: #{prepareMediaVariable(
850
+ --_ctm-dn-gd-vw-cl-se-bn-sd-se-in-se,
851
+ var(--_width-20)
852
+ )};
853
+ --_sf-at-pt-cl: #{prepareMediaVariable(
854
+ --_ctm-dn-gd-vw-cl-se-bn-sd-se-in-c1,
855
+ var(--_gray-700)
856
+ )};
857
+ --_sf-at-btn-bd: #{prepareMediaVariable(
858
+ --_ctm-dn-gd-vw-cl-se-bn-sd-se-bd-cr,
859
+ var(--_gray-200)
860
+ )};
861
+ // Same re-pointing trick as the icon vars above: the padding and
862
+ // shadow declarations stay written once and simply re-resolve
863
+ // against the selected state's values.
864
+ --_sf-at-btn-pg: #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-pg, 0)};
865
+ --_sf-at-btn-sw: #{prepareMediaVariable(
866
+ --_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-ae,
867
+ 0 0
868
+ )}
869
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-br, 0)}
870
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-sd, 0)}
871
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-sd-se-sw-cr, transparent)};
872
+ // background: var(--_gray-200);
873
+ }
874
+ // &.active {
875
+ // background-color: #ced4f6;
876
+ // button {
877
+ // svg {
878
+ // path {
879
+ // stroke: var(--_primary-500);
880
+ // }
881
+ // }
882
+ // }
883
+ // }
884
+ // &:first-child {
885
+ // border-right: 1px solid var(--_gray-200);
886
+ // }
887
+
888
+ svg {
889
+ width: calc(#{$size} * 1);
890
+ height: calc(#{$size} * 1);
891
+
892
+ path {
893
+ stroke: var(
894
+ --_sf-at-pt-cl,
895
+ #{prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-in-c1, var(--_gray-500))}
896
+ );
897
+ // Overrides the stroke-width presentation attribute baked into the icon markup.
898
+ stroke-width: prepareMediaVariable(--_ctm-dn-gd-vw-cl-se-bn-dt-se-se-wh, 1.25);
899
+ }
900
+ }
901
+
902
+ &:first-of-type {
903
+ border-radius: 4px 0 0 4px;
904
+ }
905
+ &:last-of-type {
906
+ border-radius: 0 4px 4px 0;
907
+ }
904
908
  }
905
909
  }
906
- }
907
910
  // products header styles
908
911
  .showcase__header {
909
912
  display: flex;
@@ -112,22 +112,27 @@ $overflowSelector: ".flex__overflow";
112
112
 
113
113
  .product__list__item {
114
114
  position: relative;
115
+ // The rule is a pseudo-element and takes no space of its own, so a wide one grew
116
+ // back over the item beside it — see dividerGapReserve in functions.scss.
117
+ &:not(:last-child) {
118
+ @include dividerGapReserve($shapeSize, right);
119
+ }
115
120
  &:not(:last-child)::after {
116
121
  content: "";
117
122
  width: $shapeSize;
118
123
  height: 100%;
119
124
  position: absolute;
120
- right: calc((-1 * var(--_sf-gp) / 2) - (#{$shapeSize} / 2));
125
+ right: dividerGapOffset(var(--_sf-gp, 0px), $shapeSize);
121
126
  background-color: $shapeColor;
122
127
  }
123
128
 
124
129
  // Divider item (Divider -> Item Style). Same geometry as the standalone
125
- // element: the rule's centre sits at -(gap/2) from the item's right edge,
126
- // so the marker is pinned there and translated half its own width back.
130
+ // element: the rule's centre sits at -(gap/2) - (width/2) from the item's right
131
+ // edge, so the marker is pinned there and translated half its own width back.
127
132
  .divider__marker {
128
133
  position: absolute;
129
134
  top: 50%;
130
- right: calc(-1 * var(--_sf-gp, 0px) / 2);
135
+ right: dividerMarkerOffset(var(--_sf-gp, 0px), $shapeSize);
131
136
  transform: translate(50%, -50%);
132
137
  display: flex;
133
138
  align-items: center;
@@ -1602,10 +1602,7 @@ $resizeActive: '[data-cms-element-resizer="true"]';
1602
1602
  background: transparent;
1603
1603
  color: var(--_sf-bmm-cr, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-cr));
1604
1604
  font-family: var(--_sf-bmm-ft-fy, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-ft-fy));
1605
- text-transform: var(
1606
- --_sf-bmm-tt-tm,
1607
- prepareMediaVariable(--_ctm-dn-dn-st-dt-se-tt-tm)
1608
- );
1605
+ text-transform: var(--_sf-bmm-tt-tm, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-tt-tm));
1609
1606
  word-wrap: var(--_sf-bmm-wd-wp, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-wd-wp));
1610
1607
  word-break: var(--_sf-bmm-wd-bk, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-wd-bk));
1611
1608
  font-size: var(--_sf-bmm-ft-se, prepareMediaVariable(--_ctm-dn-dn-st-dt-se-ft-se));
@@ -1,23 +1,23 @@
1
- @use "sass:map";
2
- @use "sass:list";
3
-
4
- $animSelector: ".animate__animated";
5
- $animCommonSelector: "[data-anim-id='flex-animation-element']";
6
-
7
- @mixin FlexAnimationModuleStyles() {
8
- @media (prefers-reduced-motion: reduce) {
9
- #{$animSelector} {
10
- animation: none !important;
11
- }
12
- }
13
- #{$animCommonSelector} {
14
- &:not(#{$animSelector}) {
15
- opacity: 0;
16
- }
17
-
18
- &#{$animSelector} {
19
- animation-fill-mode: backwards;
20
- animation-delay: calc(1ms * var(--_ctm-flex-anim-delay, 1));
21
- }
22
- }
23
- }
1
+ @use "sass:map";
2
+ @use "sass:list";
3
+
4
+ $animSelector: ".animate__animated";
5
+ $animCommonSelector: "[data-anim-id='flex-animation-element']";
6
+
7
+ @mixin FlexAnimationModuleStyles() {
8
+ @media (prefers-reduced-motion: reduce) {
9
+ #{$animSelector} {
10
+ animation: none !important;
11
+ }
12
+ }
13
+ #{$animCommonSelector} {
14
+ &:not(#{$animSelector}) {
15
+ opacity: 0;
16
+ }
17
+
18
+ &#{$animSelector} {
19
+ animation-fill-mode: backwards;
20
+ animation-delay: calc(1ms * var(--_ctm-flex-anim-delay, 1));
21
+ }
22
+ }
23
+ }