@gem-sdk/components 2.1.13-staging.3 → 2.1.13-staging.30

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 (182) hide show
  1. package/dist/cjs/article/components/ArticleImage.js +2 -1
  2. package/dist/cjs/article/components/ArticleList.js +1 -1
  3. package/dist/cjs/banner/components/hero-banner/index.liquid.js +12 -13
  4. package/dist/cjs/banner/components/hero-banner/utils/index.js +5 -3
  5. package/dist/cjs/builder.js +21 -1
  6. package/dist/cjs/carousel/components/Carousel.liquid.js +3 -2
  7. package/dist/cjs/collection/components/CollectionDescription.js +101 -7
  8. package/dist/cjs/collection/components/CollectionDescription.liquid.js +102 -9
  9. package/dist/cjs/collection/setting/CollectionDescription.js +128 -0
  10. package/dist/cjs/form/components/textarea/TextArea.liquid.js +2 -2
  11. package/dist/cjs/image/components/AdaptiveImage.liquid.js +6 -5
  12. package/dist/cjs/image/components/Image.js +0 -1
  13. package/dist/cjs/image/components/Image.liquid.js +6 -5
  14. package/dist/cjs/image/components/NextImage.liquid.js +4 -3
  15. package/dist/cjs/image-comparison/components/CompareImage.liquid.js +7 -3
  16. package/dist/cjs/index.js +20 -0
  17. package/dist/cjs/index.liquid.js +22 -2
  18. package/dist/cjs/marquee/components/MarqueeBase.liquid.js +7 -26
  19. package/dist/cjs/product/components/Product.liquid.js +3 -2
  20. package/dist/cjs/product/components/ProductBadge/index.liquid.js +13 -4
  21. package/dist/cjs/product/components/ProductBadge/utils/generateLiquidContent.js +2 -2
  22. package/dist/cjs/product/components/ProductDescription.liquid.js +21 -5
  23. package/dist/cjs/product/components/ProductImagesV2/jsx/ProductImages.js +2 -9
  24. package/dist/cjs/product/components/ProductImagesV2/jsx/components/ProductFeaturedImageCarousel.js +12 -4
  25. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductFeaturedImageCarousel.liquid.js +6 -5
  26. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductGalleryCarousel.liquid.js +2 -2
  27. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductGalleryGrid.liquid.js +4 -4
  28. package/dist/cjs/product/components/ProductImagesV2/liquid/ProductImages.liquid.js +4 -4
  29. package/dist/cjs/product/components/ProductVariants/index.liquid.js +11 -18
  30. package/dist/cjs/product/components/ProductVariants/variants/Base.liquid.js +1 -0
  31. package/dist/cjs/product/components/ProductVariants/variants/Dropdown.liquid.js +26 -12
  32. package/dist/cjs/product/components/ProductVariants/variants/DropdownGroup.liquid.js +4 -37
  33. package/dist/cjs/product/components/ProductVariants/variants/combine/index.js +47 -0
  34. package/dist/cjs/product/components/Sku.js +2 -14
  35. package/dist/cjs/product/setting/ProductBadge.js +5 -0
  36. package/dist/cjs/product/setting/ProductDescription.js +5 -0
  37. package/dist/cjs/tab/hooks/useTabInteraction.js +13 -9
  38. package/dist/cjs/third-party/components/AlsoBoughtCbb.js +32 -0
  39. package/dist/cjs/third-party/components/AlsoBoughtCbb.liquid.js +21 -0
  40. package/dist/cjs/third-party/components/BfSizeChartSizeGuide.js +32 -0
  41. package/dist/cjs/third-party/components/BfSizeChartSizeGuide.liquid.js +12 -0
  42. package/dist/cjs/third-party/components/EssentialAnnouncementBar.js +32 -0
  43. package/dist/cjs/third-party/components/EssentialAnnouncementBar.liquid.js +12 -0
  44. package/dist/cjs/third-party/components/EssentialCountdownTimerBar.js +32 -0
  45. package/dist/cjs/third-party/components/EssentialCountdownTimerBar.liquid.js +12 -0
  46. package/dist/cjs/third-party/components/EstimatedDeliveryDatePlus.js +32 -0
  47. package/dist/cjs/third-party/components/EstimatedDeliveryDatePlus.liquid.js +12 -0
  48. package/dist/cjs/third-party/components/GloColorSwatchvariantImage.js +32 -0
  49. package/dist/cjs/third-party/components/GloColorSwatchvariantImage.liquid.js +12 -0
  50. package/dist/cjs/third-party/components/HextomFreeShippingBar.js +32 -0
  51. package/dist/cjs/third-party/components/HextomFreeShippingBar.liquid.js +12 -0
  52. package/dist/cjs/third-party/components/NotifyBackInStockPreOrder.js +1 -1
  53. package/dist/cjs/third-party/components/OkendoReviewsLoyalty.js +32 -0
  54. package/dist/cjs/third-party/components/OkendoReviewsLoyalty.liquid.js +12 -0
  55. package/dist/cjs/third-party/components/QikifyUpsell.js +22 -10
  56. package/dist/cjs/third-party/components/QikifyUpsell.liquid.js +3 -46
  57. package/dist/cjs/third-party/components/ShopifySubscriptions.liquid.js +3 -2
  58. package/dist/cjs/third-party/components/StellarDeliveryDatePickup.js +32 -0
  59. package/dist/cjs/third-party/components/StellarDeliveryDatePickup.liquid.js +21 -0
  60. package/dist/cjs/third-party/components/TrustedsiteTrustBadges.js +32 -0
  61. package/dist/cjs/third-party/components/TrustedsiteTrustBadges.liquid.js +12 -0
  62. package/dist/cjs/third-party/configs/AlsoBoughtCbb.js +12 -0
  63. package/dist/cjs/third-party/configs/BfSizeChartSizeGuide.js +12 -0
  64. package/dist/cjs/third-party/configs/EssentialAnnouncementBar.js +12 -0
  65. package/dist/cjs/third-party/configs/EssentialCountdownTimerBar.js +12 -0
  66. package/dist/cjs/third-party/configs/EstimatedDeliveryDatePlus.js +12 -0
  67. package/dist/cjs/third-party/configs/GloColorSwatchvariantImage.js +12 -0
  68. package/dist/cjs/third-party/configs/HextomFreeShippingBar.js +12 -0
  69. package/dist/cjs/third-party/configs/OkendoReviewsLoyalty.js +12 -0
  70. package/dist/cjs/third-party/configs/StellarDeliveryDatePickup.js +12 -0
  71. package/dist/cjs/third-party/configs/TrustedsiteTrustBadges.js +12 -0
  72. package/dist/cjs/third-party/helpers/thirdParty.js +1 -1
  73. package/dist/cjs/third-party/next.js +51 -1
  74. package/dist/cjs/third-party/setting/AlsoBoughtCbb.js +127 -0
  75. package/dist/cjs/third-party/setting/BfSizeChartSizeGuide.js +131 -0
  76. package/dist/cjs/third-party/setting/EssentialAnnouncementBar.js +142 -0
  77. package/dist/cjs/third-party/setting/EssentialCountdownTimerBar.js +142 -0
  78. package/dist/cjs/third-party/setting/EstimatedDeliveryDatePlus.js +128 -0
  79. package/dist/cjs/third-party/setting/GloColorSwatchvariantImage.js +152 -0
  80. package/dist/cjs/third-party/setting/HextomFreeShippingBar.js +128 -0
  81. package/dist/cjs/third-party/setting/NotifyBackInStockPreOrder.js +2 -2
  82. package/dist/cjs/third-party/setting/OkendoReviewsLoyalty.js +171 -0
  83. package/dist/cjs/third-party/setting/QikifyUpsell.js +11 -1
  84. package/dist/cjs/third-party/setting/ShopifySubscriptions.js +22 -0
  85. package/dist/cjs/third-party/setting/StellarDeliveryDatePickup.js +127 -0
  86. package/dist/cjs/third-party/setting/TrustedsiteTrustBadges.js +177 -0
  87. package/dist/cjs/third-party/setting/index.js +21 -1
  88. package/dist/cjs/video/components/HTML5Embed.js +2 -2
  89. package/dist/cjs/video/components/HTML5Embed.liquid.js +6 -3
  90. package/dist/cjs/video/components/LiteYouTubeEmbed.liquid.js +5 -3
  91. package/dist/esm/article/components/ArticleImage.js +2 -1
  92. package/dist/esm/article/components/ArticleList.js +1 -1
  93. package/dist/esm/banner/components/hero-banner/index.liquid.js +12 -13
  94. package/dist/esm/banner/components/hero-banner/utils/index.js +5 -3
  95. package/dist/esm/builder.js +21 -1
  96. package/dist/esm/carousel/components/Carousel.liquid.js +3 -2
  97. package/dist/esm/collection/components/CollectionDescription.js +103 -9
  98. package/dist/esm/collection/components/CollectionDescription.liquid.js +103 -10
  99. package/dist/esm/collection/setting/CollectionDescription.js +128 -0
  100. package/dist/esm/form/components/textarea/TextArea.liquid.js +2 -2
  101. package/dist/esm/image/components/AdaptiveImage.liquid.js +6 -5
  102. package/dist/esm/image/components/Image.js +0 -1
  103. package/dist/esm/image/components/Image.liquid.js +6 -5
  104. package/dist/esm/image/components/NextImage.liquid.js +4 -3
  105. package/dist/esm/image-comparison/components/CompareImage.liquid.js +7 -3
  106. package/dist/esm/index.js +10 -0
  107. package/dist/esm/index.liquid.js +11 -1
  108. package/dist/esm/marquee/components/MarqueeBase.liquid.js +7 -26
  109. package/dist/esm/product/components/Product.liquid.js +3 -2
  110. package/dist/esm/product/components/ProductBadge/index.liquid.js +14 -5
  111. package/dist/esm/product/components/ProductBadge/utils/generateLiquidContent.js +2 -2
  112. package/dist/esm/product/components/ProductDescription.liquid.js +22 -6
  113. package/dist/esm/product/components/ProductImagesV2/jsx/ProductImages.js +2 -9
  114. package/dist/esm/product/components/ProductImagesV2/jsx/components/ProductFeaturedImageCarousel.js +13 -5
  115. package/dist/esm/product/components/ProductImagesV2/liquid/ProductFeaturedImageCarousel.liquid.js +6 -5
  116. package/dist/esm/product/components/ProductImagesV2/liquid/ProductGalleryCarousel.liquid.js +2 -2
  117. package/dist/esm/product/components/ProductImagesV2/liquid/ProductGalleryGrid.liquid.js +4 -4
  118. package/dist/esm/product/components/ProductImagesV2/liquid/ProductImages.liquid.js +4 -4
  119. package/dist/esm/product/components/ProductVariants/index.liquid.js +12 -19
  120. package/dist/esm/product/components/ProductVariants/variants/Base.liquid.js +1 -0
  121. package/dist/esm/product/components/ProductVariants/variants/Dropdown.liquid.js +26 -12
  122. package/dist/esm/product/components/ProductVariants/variants/DropdownGroup.liquid.js +4 -37
  123. package/dist/esm/product/components/ProductVariants/variants/combine/index.js +44 -0
  124. package/dist/esm/product/components/Sku.js +3 -15
  125. package/dist/esm/product/setting/ProductBadge.js +5 -0
  126. package/dist/esm/product/setting/ProductDescription.js +5 -0
  127. package/dist/esm/tab/hooks/useTabInteraction.js +14 -10
  128. package/dist/esm/third-party/components/AlsoBoughtCbb.js +28 -0
  129. package/dist/esm/third-party/components/AlsoBoughtCbb.liquid.js +17 -0
  130. package/dist/esm/third-party/components/BfSizeChartSizeGuide.js +28 -0
  131. package/dist/esm/third-party/components/BfSizeChartSizeGuide.liquid.js +8 -0
  132. package/dist/esm/third-party/components/EssentialAnnouncementBar.js +28 -0
  133. package/dist/esm/third-party/components/EssentialAnnouncementBar.liquid.js +8 -0
  134. package/dist/esm/third-party/components/EssentialCountdownTimerBar.js +28 -0
  135. package/dist/esm/third-party/components/EssentialCountdownTimerBar.liquid.js +8 -0
  136. package/dist/esm/third-party/components/EstimatedDeliveryDatePlus.js +28 -0
  137. package/dist/esm/third-party/components/EstimatedDeliveryDatePlus.liquid.js +8 -0
  138. package/dist/esm/third-party/components/GloColorSwatchvariantImage.js +28 -0
  139. package/dist/esm/third-party/components/GloColorSwatchvariantImage.liquid.js +8 -0
  140. package/dist/esm/third-party/components/HextomFreeShippingBar.js +28 -0
  141. package/dist/esm/third-party/components/HextomFreeShippingBar.liquid.js +8 -0
  142. package/dist/esm/third-party/components/NotifyBackInStockPreOrder.js +1 -1
  143. package/dist/esm/third-party/components/OkendoReviewsLoyalty.js +28 -0
  144. package/dist/esm/third-party/components/OkendoReviewsLoyalty.liquid.js +8 -0
  145. package/dist/esm/third-party/components/QikifyUpsell.js +22 -10
  146. package/dist/esm/third-party/components/QikifyUpsell.liquid.js +3 -46
  147. package/dist/esm/third-party/components/ShopifySubscriptions.liquid.js +3 -2
  148. package/dist/esm/third-party/components/StellarDeliveryDatePickup.js +28 -0
  149. package/dist/esm/third-party/components/StellarDeliveryDatePickup.liquid.js +17 -0
  150. package/dist/esm/third-party/components/TrustedsiteTrustBadges.js +28 -0
  151. package/dist/esm/third-party/components/TrustedsiteTrustBadges.liquid.js +8 -0
  152. package/dist/esm/third-party/configs/AlsoBoughtCbb.js +8 -0
  153. package/dist/esm/third-party/configs/BfSizeChartSizeGuide.js +8 -0
  154. package/dist/esm/third-party/configs/EssentialAnnouncementBar.js +8 -0
  155. package/dist/esm/third-party/configs/EssentialCountdownTimerBar.js +8 -0
  156. package/dist/esm/third-party/configs/EstimatedDeliveryDatePlus.js +8 -0
  157. package/dist/esm/third-party/configs/GloColorSwatchvariantImage.js +8 -0
  158. package/dist/esm/third-party/configs/HextomFreeShippingBar.js +8 -0
  159. package/dist/esm/third-party/configs/OkendoReviewsLoyalty.js +8 -0
  160. package/dist/esm/third-party/configs/StellarDeliveryDatePickup.js +8 -0
  161. package/dist/esm/third-party/configs/TrustedsiteTrustBadges.js +8 -0
  162. package/dist/esm/third-party/helpers/thirdParty.js +1 -1
  163. package/dist/esm/third-party/next.js +51 -1
  164. package/dist/esm/third-party/setting/AlsoBoughtCbb.js +123 -0
  165. package/dist/esm/third-party/setting/BfSizeChartSizeGuide.js +127 -0
  166. package/dist/esm/third-party/setting/EssentialAnnouncementBar.js +138 -0
  167. package/dist/esm/third-party/setting/EssentialCountdownTimerBar.js +138 -0
  168. package/dist/esm/third-party/setting/EstimatedDeliveryDatePlus.js +124 -0
  169. package/dist/esm/third-party/setting/GloColorSwatchvariantImage.js +148 -0
  170. package/dist/esm/third-party/setting/HextomFreeShippingBar.js +124 -0
  171. package/dist/esm/third-party/setting/NotifyBackInStockPreOrder.js +2 -2
  172. package/dist/esm/third-party/setting/OkendoReviewsLoyalty.js +167 -0
  173. package/dist/esm/third-party/setting/QikifyUpsell.js +11 -1
  174. package/dist/esm/third-party/setting/ShopifySubscriptions.js +22 -0
  175. package/dist/esm/third-party/setting/StellarDeliveryDatePickup.js +123 -0
  176. package/dist/esm/third-party/setting/TrustedsiteTrustBadges.js +173 -0
  177. package/dist/esm/third-party/setting/index.js +224 -204
  178. package/dist/esm/video/components/HTML5Embed.js +2 -2
  179. package/dist/esm/video/components/HTML5Embed.liquid.js +6 -3
  180. package/dist/esm/video/components/LiteYouTubeEmbed.liquid.js +5 -3
  181. package/dist/types/index.d.ts +257 -36
  182. package/package.json +2 -2
@@ -103,11 +103,26 @@ var TrustreviewsProductReviews = require('./TrustreviewsProductReviews.js');
103
103
  var MyappgurusProductReviews = require('./MyappgurusProductReviews.js');
104
104
  var HulkProductOptions = require('./HulkProductOptions.js');
105
105
  var TrustshopProductReviews = require('./TrustshopProductReviews.js');
106
+ var StellarDeliveryDatePickup = require('./StellarDeliveryDatePickup.js');
107
+ var EssentialCountdownTimerBar = require('./EssentialCountdownTimerBar.js');
108
+ var EssentialAnnouncementBar = require('./EssentialAnnouncementBar.js');
109
+ var OkendoReviewsLoyalty = require('./OkendoReviewsLoyalty.js');
110
+ var EstimatedDeliveryDatePlus = require('./EstimatedDeliveryDatePlus.js');
106
111
  var HextomCountdownTimerBar = require('./HextomCountdownTimerBar.js');
107
112
  var TrustBadgesBear = require('./TrustBadgesBear.js');
113
+ var TrustedsiteTrustBadges = require('./TrustedsiteTrustBadges.js');
114
+ var GloColorSwatchvariantImage = require('./GloColorSwatchvariantImage.js');
115
+ var BfSizeChartSizeGuide = require('./BfSizeChartSizeGuide.js');
116
+ var AlsoBoughtCbb = require('./AlsoBoughtCbb.js');
117
+ var HextomFreeShippingBar = require('./HextomFreeShippingBar.js');
108
118
 
109
119
  var index = {
110
120
  HextomCountdownTimerBar: HextomCountdownTimerBar.default,
121
+ EstimatedDeliveryDatePlus: EstimatedDeliveryDatePlus.default,
122
+ OkendoReviewsLoyalty: OkendoReviewsLoyalty.default,
123
+ EssentialAnnouncementBar: EssentialAnnouncementBar.default,
124
+ EssentialCountdownTimerBar: EssentialCountdownTimerBar.default,
125
+ StellarDeliveryDatePickup: StellarDeliveryDatePickup.default,
111
126
  TrustshopProductReviews: TrustshopProductReviews.default,
112
127
  HulkProductOptions: HulkProductOptions.default,
113
128
  TrustreviewsProductReviews: TrustreviewsProductReviews.default,
@@ -209,7 +224,12 @@ var index = {
209
224
  RequestQuoteHidePrice: RequestQuoteHidePrice.default,
210
225
  BirdChime: BirdChime.default,
211
226
  FordeerProductLabels: FordeerProductLabels.default,
212
- TrustBadgesBear: TrustBadgesBear.default
227
+ TrustBadgesBear: TrustBadgesBear.default,
228
+ TrustedsiteTrustBadges: TrustedsiteTrustBadges.default,
229
+ GloColorSwatchvariantImage: GloColorSwatchvariantImage.default,
230
+ BfSizeChartSizeGuide: BfSizeChartSizeGuide.default,
231
+ AlsoBoughtCbb: AlsoBoughtCbb.default,
232
+ HextomFreeShippingBar: HextomFreeShippingBar.default
213
233
  };
214
234
 
215
235
  exports.default = index;
@@ -51,14 +51,14 @@ const HTML5Embed = (props)=>{
51
51
  }),
52
52
  props.thumbnail && showThumbnail && /*#__PURE__*/ jsxRuntime.jsxs("div", {
53
53
  role: "presentation",
54
- className: "gp-absolute gp-top-0 gp-left-0 gp-w-full",
54
+ className: "gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full",
55
55
  onClick: playVideoAndTurnOffThumbnail,
56
56
  style: props.style,
57
57
  children: [
58
58
  /*#__PURE__*/ jsxRuntime.jsx("img", {
59
59
  id: "video-thumbnail",
60
60
  src: props.thumbnail,
61
- className: "gp-w-full gp-h-full gp-object-cover gp-thumbnail-video",
61
+ className: "gp-w-full gp-h-full gp-object-contain gp-thumbnail-video",
62
62
  alt: "Video Thumbnail"
63
63
  }),
64
64
  /*#__PURE__*/ jsxRuntime.jsx("button", {
@@ -7,6 +7,7 @@ var NextImage_liquid = require('../../image/components/NextImage.liquid.js');
7
7
  var helpers = require('../../helpers.js');
8
8
 
9
9
  const HTML5Embed = (props)=>{
10
+ const { enableLazyLoadImage, pageContext } = props;
10
11
  const videoId = `gp-video-${props.uid}`;
11
12
  const preloadThumbnail = props.autoplay && props.thumbnail;
12
13
  const offLazyVideo = !props.lazy && props.isVideoComponent;
@@ -23,7 +24,9 @@ const HTML5Embed = (props)=>{
23
24
  '--op': 0,
24
25
  '--z': -1,
25
26
  display: 'none'
26
- }
27
+ },
28
+ enableLazyLoadImage,
29
+ pageContext
27
30
  })}
28
31
  ${core.RenderIf(props.autoplay, `<script>
29
32
  document.addEventListener("DOMContentLoaded", (event) => {
@@ -72,14 +75,14 @@ const HTML5Embed = (props)=>{
72
75
  </video>
73
76
  <div
74
77
  style="${props.style}"
75
- class="${core.cls('gp-absolute gp-top-0 gp-left-0 gp-w-full gp-thumbnail-video', {
78
+ class="${core.cls('gp-absolute gp-top-0 gp-left-0 gp-w-full gp-h-full gp-thumbnail-video', {
76
79
  'gp-hidden': !props.thumbnail || props.autoplay
77
80
  })}"
78
81
  >
79
82
  <img
80
83
  id="video-thumbnail"
81
84
  src="${props.thumbnail ?? ''}"
82
- class="gp-w-full gp-h-full gp-object-cover"
85
+ class="gp-w-full gp-h-full gp-object-contain"
83
86
  alt="Video Thumbnail"
84
87
  ></img>
85
88
  <button
@@ -7,7 +7,7 @@ var NextImage_liquid = require('../../image/components/NextImage.liquid.js');
7
7
  var helpers = require('../../helpers.js');
8
8
 
9
9
  const LiteYouTubeEmbed = (props)=>{
10
- const { style, lazy, preload } = props;
10
+ const { style, lazy, preload, enableLazyLoadImage, pageContext } = props;
11
11
  const videoUid = `gp-video-${props.uid}`;
12
12
  const videoId = encodeURIComponent(props.id);
13
13
  const videoTitle = props.title;
@@ -42,7 +42,7 @@ const LiteYouTubeEmbed = (props)=>{
42
42
  data-title="${videoTitle}"
43
43
  style="${{
44
44
  ...core.makeStyleResponsive('bgi', {
45
- desktop: preload ? `url('${posterUrl}')` : `url('${imagePlaceholder}')`
45
+ desktop: preload || !enableLazyLoadImage ? `url('${posterUrl}')` : `url('${imagePlaceholder}')`
46
46
  }),
47
47
  ...style
48
48
  }}"
@@ -52,7 +52,9 @@ const LiteYouTubeEmbed = (props)=>{
52
52
  src: posterUrl,
53
53
  alt: 'Poster',
54
54
  className: `gp-invisible gp-w-full gp-h-full gp_lazyforbg`,
55
- isDisableAspectStyle: true
55
+ isDisableAspectStyle: true,
56
+ enableLazyLoadImage,
57
+ pageContext
56
58
  })}
57
59
  <button
58
60
  type="button"
@@ -25,7 +25,8 @@ const ArticleImage = ({ className, setting = {}, styles = {}, advanced, builderP
25
25
  setting: {
26
26
  ...setting,
27
27
  alt: image.alt,
28
- image
28
+ image,
29
+ disableNoDataState: true
29
30
  },
30
31
  styles: styles,
31
32
  advanced: advanced
@@ -10,7 +10,7 @@ const ArticleList = ({ styles, setting, className, children, builderProps })=>{
10
10
  const { articleSetting, numberOfArticle } = setting ?? {};
11
11
  const { articleIds, articlePickType } = articleSetting ?? {};
12
12
  const articlesQuery = {
13
- first: 10,
13
+ first: articleIds?.length ?? 50,
14
14
  where: {
15
15
  baseIDIn: [
16
16
  ...articleSetting?.articleIds ?? []
@@ -10,7 +10,7 @@ import NextImage from '../../../image/components/NextImage.liquid.js';
10
10
  import { getImageSrc, DEVICES } from '../../../image/helpers/getSrcSet.js';
11
11
  import { createBlurDataURL } from '../../../image/components/helpers.js';
12
12
 
13
- const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, children, rawChildren, advanced, enableLazyloadImage = true })=>{
13
+ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, children, rawChildren, advanced, enableLazyLoadImage = true })=>{
14
14
  const { link, layout, verticalAlign, order, alignBanner, alt, title } = setting ?? {};
15
15
  const { background, overlayEnable, overlayColor, overlayOpacity, verticalGutter, contentWidth, hoverEffect, hoverEffectDuration, hoverEffectScale, cornerBg, borderBg, hasActiveShadow, shadowBg, sizeSetting, contentPadding } = styles ?? {};
16
16
  const enableParallax = setting?.enableParallax || false;
@@ -39,9 +39,6 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
39
39
  } else if (data.videoType === 'html5') {
40
40
  delete data.video;
41
41
  }
42
- if (data.type !== 'image') {
43
- delete data.image;
44
- }
45
42
  }
46
43
  return background;
47
44
  };
@@ -130,6 +127,7 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
130
127
  tablet: createBlurDataURL(srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.tablet?.height ?? srcSet?.desktop?.width ?? 0),
131
128
  mobile: createBlurDataURL(srcSet?.mobile?.width ?? srcSet?.tablet?.width ?? srcSet?.desktop?.width ?? 0, srcSet?.mobile?.height ?? srcSet?.tablet?.height ?? srcSet?.desktop?.width ?? 0)
132
129
  };
130
+ const enableLazyLoad = !setting?.preload && enableLazyLoadImage;
133
131
  const renderInnerHeroBanner = ()=>{
134
132
  return template /* liquid */ `
135
133
  <div
@@ -179,7 +177,7 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
179
177
  alt,
180
178
  title,
181
179
  imagePlaceholder,
182
- enableLazyloadImage
180
+ enableLazyLoadImage
183
181
  })}
184
182
  <div class="${cls('gp-absolute gp-w-full gp-h-full')}">
185
183
  <div
@@ -193,9 +191,10 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
193
191
  'clip-path': getClipPath(borderBg?.width, cornerBg)
194
192
  }}"
195
193
  >
196
- <div class="${cls('hero-banner-bg-parallax gp-hero-banner-image-background gp_lazybg', {
194
+ <div class="${cls('hero-banner-bg-parallax gp-hero-banner-image-background', {
197
195
  'gp-duration-[var(--duration)] group-hover/hero:gp-scale-[var(--scale)]': hoverEffect,
198
- 'gp-transition-transform': hoverEffect
196
+ 'gp-transition-transform': hoverEffect,
197
+ gp_lazybg: enableLazyLoad
199
198
  })}"
200
199
  style="${{
201
200
  ...getStyleBackgroundByDevice(background, {
@@ -204,9 +203,9 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
204
203
  liquid: true
205
204
  }),
206
205
  ...makeStyleResponsive('bgi', {
207
- desktop: `url('${bgiEnableByDevice['desktop'] ? setting?.preload || !enableLazyloadImage ? getImageSrc(getResponsiveValueByScreen(srcSet, 'desktop'), 'desktop') : imagePlaceholder['desktop'] : ''}')`,
208
- tablet: `url('${bgiEnableByDevice['tablet'] ? setting?.preload || !enableLazyloadImage ? getImageSrc(getResponsiveValueByScreen(srcSet, 'tablet'), 'tablet') : imagePlaceholder['tablet'] : ''}')`,
209
- mobile: `url('${bgiEnableByDevice['mobile'] ? setting?.preload || !enableLazyloadImage ? getImageSrc(getResponsiveValueByScreen(srcSet, 'mobile'), 'mobile') : imagePlaceholder['mobile'] : ''}')`
206
+ desktop: `url('${bgiEnableByDevice['desktop'] ? !enableLazyLoad ? getImageSrc(getResponsiveValueByScreen(srcSet, 'desktop'), 'desktop') : imagePlaceholder['desktop'] : ''}')`,
207
+ tablet: `url('${bgiEnableByDevice['tablet'] ? !enableLazyLoad ? getImageSrc(getResponsiveValueByScreen(srcSet, 'tablet'), 'tablet') : imagePlaceholder['tablet'] : ''}')`,
208
+ mobile: `url('${bgiEnableByDevice['mobile'] ? !enableLazyLoad ? getImageSrc(getResponsiveValueByScreen(srcSet, 'mobile'), 'mobile') : imagePlaceholder['mobile'] : ''}')`
210
209
  }),
211
210
  '--duration': `${hoverEffectDuration ?? 0}s`,
212
211
  '--scale': hoverEffectScale ?? 1,
@@ -214,17 +213,17 @@ const HeroBanner = ({ builderAttrs, builderProps, setting, styles, style, childr
214
213
  ...getStyleHeroBannerBg(backgroundResponsive || {}, enableParallax)
215
214
  }}"
216
215
  >
216
+ ${embed()}
217
217
  ${!setting?.preload ? DEVICES.map((device)=>{
218
218
  return RenderIf(getEnableBgImageByDevice(device), NextImage({
219
219
  src: getImageSrc(getResponsiveValueByScreen(srcSet, device), device),
220
220
  alt: `lazy image ${device}`,
221
221
  className: `gp-absolute gp-top-0 gp-invisible gp-w-full gp_lazyload gp-h-full gp_lazyforbg ${device === 'tablet' ? 'gp_lazybg_tl' : ''} ${device === 'mobile' ? 'gp_lazybg_mb' : ''}`,
222
222
  isDisableAspectStyle: true,
223
- enableLazyloadImage
223
+ enableLazyLoadImage
224
224
  }));
225
225
  }).join('') : ''}
226
- </div>
227
- ${embed()} </div>
226
+ </div></div>
228
227
  </div>
229
228
  ${RenderIf(overlayEnable, template`<div
230
229
  aria-label="Overlay"
@@ -25,13 +25,14 @@ const getHeightHeroBanner = (background, enableParallax)=>{
25
25
  'tablet'
26
26
  ];
27
27
  DEVICES.forEach((device)=>{
28
+ const enableParallaxDevice = background?.[device]?.type === 'image' ? enableParallax : false;
28
29
  const isScale = isScaleImage({
29
- enableParallax,
30
+ enableParallax: enableParallaxDevice,
30
31
  attachment: background[device]?.attachment
31
32
  });
32
33
  result = {
33
34
  ...result,
34
- [device]: enableParallax ? '150%' : isScale ? '100vh' : '100%'
35
+ [device]: enableParallaxDevice ? '150%' : isScale ? '100vh' : '100%'
35
36
  };
36
37
  });
37
38
  return makeStyleResponsive('h', result);
@@ -44,8 +45,9 @@ const getWidthHeroBanner = (background, enableParallax)=>{
44
45
  'tablet'
45
46
  ];
46
47
  DEVICES.forEach((device)=>{
48
+ const enableParallaxDevice = background?.[device]?.type === 'image' ? enableParallax : false;
47
49
  const isScale = isScaleImage({
48
- enableParallax,
50
+ enableParallax: enableParallaxDevice,
49
51
  attachment: background[device]?.attachment
50
52
  });
51
53
  result = {
@@ -107,8 +107,18 @@ import TrustreviewsProductReviews from './third-party/components/TrustreviewsPro
107
107
  import MyappgurusProductReviews from './third-party/components/MyappgurusProductReviews.js';
108
108
  import HulkProductOptions from './third-party/components/HulkProductOptions.js';
109
109
  import TrustshopProductReviews from './third-party/components/TrustshopProductReviews.js';
110
+ import StellarDeliveryDatePickup from './third-party/components/StellarDeliveryDatePickup.js';
111
+ import EssentialCountdownTimerBar from './third-party/components/EssentialCountdownTimerBar.js';
112
+ import EssentialAnnouncementBar from './third-party/components/EssentialAnnouncementBar.js';
113
+ import OkendoReviewsLoyalty from './third-party/components/OkendoReviewsLoyalty.js';
114
+ import EstimatedDeliveryDatePlus from './third-party/components/EstimatedDeliveryDatePlus.js';
110
115
  import HextomCountdownTimerBar from './third-party/components/HextomCountdownTimerBar.js';
111
116
  import TrustBadgesBear from './third-party/components/TrustBadgesBear.js';
117
+ import TrustedsiteTrustBadges from './third-party/components/TrustedsiteTrustBadges.js';
118
+ import GloColorSwatchvariantImage from './third-party/components/GloColorSwatchvariantImage.js';
119
+ import BfSizeChartSizeGuide from './third-party/components/BfSizeChartSizeGuide.js';
120
+ import AlsoBoughtCbb from './third-party/components/AlsoBoughtCbb.js';
121
+ import HextomFreeShippingBar from './third-party/components/HextomFreeShippingBar.js';
112
122
  import CartLineVariant from './cart/components/CartLineVariant.js';
113
123
  import Cart from './cart/components/Cart.js';
114
124
  import CartList from './cart/components/CartList.js';
@@ -243,6 +253,11 @@ import PostPurchaseCountdownTimer from './post-purchase/countdown-timer/componen
243
253
  import Text$1 from './post-purchase/text/Text.js';
244
254
 
245
255
  var builder = {
256
+ EstimatedDeliveryDatePlus,
257
+ OkendoReviewsLoyalty,
258
+ EssentialAnnouncementBar,
259
+ EssentialCountdownTimerBar,
260
+ StellarDeliveryDatePickup,
246
261
  TrustshopProductReviews,
247
262
  HulkProductOptions,
248
263
  TrustreviewsProductReviews,
@@ -479,7 +494,12 @@ var builder = {
479
494
  MarqueeItem,
480
495
  ProductBadge,
481
496
  HextomCountdownTimerBar,
482
- TrustBadgesBear
497
+ TrustBadgesBear,
498
+ TrustedsiteTrustBadges,
499
+ GloColorSwatchvariantImage,
500
+ BfSizeChartSizeGuide,
501
+ AlsoBoughtCbb,
502
+ HextomFreeShippingBar
483
503
  };
484
504
 
485
505
  export { builder as default };
@@ -9,7 +9,7 @@ const DEVICES = [
9
9
  'tablet',
10
10
  'desktop'
11
11
  ];
12
- const Carousel = ({ builderAttrs, builderProps, style, styles, moveToIdx, rootId, rootAttr, rootClass, wrapperClass, rootStyles, children, rawChildren, isHiddenArrowWhenDisabled = true, advanced, disableMarginAuto, conditionAppendJs, ...props })=>{
12
+ const Carousel = ({ builderAttrs, builderProps, style, styles, moveToIdx, rootId, rootAttr, rootClass, wrapperClass, rootStyles, children, rawChildren, isHiddenArrowWhenDisabled = true, advanced, disableMarginAuto, conditionAppendJs, ftShapeProductImage, ...props })=>{
13
13
  const setting = mappingNavigationCarousel(props.setting);
14
14
  const styleHeight = makeStyleResponsive('h', getHeightByShapeGlobalSize(styles?.sizeSetting));
15
15
  const styleWidth = makeStyleWithDefault('w', getWidthByShapeGlobalSize(styles?.sizeSetting, true), {
@@ -108,7 +108,8 @@ const Carousel = ({ builderAttrs, builderProps, style, styles, moveToIdx, rootId
108
108
  setting,
109
109
  styles,
110
110
  moveToIdx,
111
- isHiddenArrowWhenDisabled
111
+ isHiddenArrowWhenDisabled,
112
+ ftShapeProductImage
112
113
  }).replaceAll("'", '&#039;')}' style="${{
113
114
  ...makeStyleResponsive('jc', styles?.align),
114
115
  ...rootStyles
@@ -1,15 +1,109 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useCollection } from '@gem-sdk/core';
3
- import Text from '../../text/components/Text.js';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useCurrentDevice, useCollection, getResponsiveValueByScreen, composeTypographyClassName, composeTypographyStyle, isSafari, cls, getGlobalColorClass, getStyleShadow, makeStyleResponsive, makeStyle, getGlobalColorStyle } from '@gem-sdk/core';
3
+ import { useState, useRef, useEffect } from 'react';
4
4
 
5
- const CollectionDescription = ({ setting })=>{
5
+ const CollectionDescription = ({ setting, builderProps })=>{
6
+ const [open, setOpen] = useState(false);
7
+ const [isShowViewMore, allowShowViewMore] = useState(false);
8
+ const ref = useRef(null);
9
+ const currentDevice = useCurrentDevice();
6
10
  const collection = useCollection();
7
- return /*#__PURE__*/ jsx(Text, {
8
- styles: setting,
9
- setting: {
10
- text: collection?.descriptionHtml ?? 'Collection description',
11
- excludeFlex: true
11
+ const hasLineClamp = getResponsiveValueByScreen(setting?.hasLineClamp, currentDevice);
12
+ const lineClamp = getResponsiveValueByScreen(setting?.lineClamp, currentDevice);
13
+ const appendTypoClass = composeTypographyClassName(setting?.typo, setting?.typography);
14
+ const appendTypoStyle = composeTypographyStyle(setting?.typo, setting?.typography);
15
+ useEffect(()=>{
16
+ const dom = ref.current;
17
+ setOpen(false);
18
+ if (dom && hasLineClamp && collection?.description) {
19
+ const value = lineClamp;
20
+ setTimeout(()=>{
21
+ const scrollHeight = dom?.scrollHeight ?? 0;
22
+ const clientHeight = dom?.clientHeight ?? 0;
23
+ const lineHeight = window.getComputedStyle(dom).getPropertyValue('line-height');
24
+ const lineText = Math.round((scrollHeight ?? 0) / parseInt(lineHeight));
25
+ const conditionCheckLine = isSafari() ? value && value < lineText : clientHeight < scrollHeight;
26
+ if (value && conditionCheckLine) {
27
+ allowShowViewMore(()=>true);
28
+ } else {
29
+ allowShowViewMore(()=>false);
30
+ }
31
+ }, 100);
12
32
  }
33
+ }, [
34
+ hasLineClamp,
35
+ lineClamp,
36
+ collection?.description
37
+ ]);
38
+ const css = `
39
+ .gp-p-description-text > *:not(ol):not(ul):not(table):not(div) {
40
+ display: inline !important;
41
+ }
42
+ .gp-p-description-text > *:not(ol):not(ul):not(table):not(div)::after {
43
+ content: "\\A";
44
+ white-space: pre;
45
+ }
46
+ .gp-p-description-text > table {
47
+ box-shadow: none;
48
+ }
49
+ `;
50
+ const hasDescription = collection?.description && collection.description?.trim() != '';
51
+ return /*#__PURE__*/ jsxs("div", {
52
+ "data-id": builderProps?.uid,
53
+ children: [
54
+ !isSafari() && /*#__PURE__*/ jsx("style", {
55
+ children: css
56
+ }),
57
+ /*#__PURE__*/ jsx("div", {
58
+ ref: ref,
59
+ "data-gp-text": true,
60
+ className: cls('gp-p-description-text gp-break-words safari:[&_p]:gp-inline safari:[&_p]:after:gp-whitespace-pre', appendTypoClass, !hasDescription ? 'gp-p-2 gp-text-center gp-text-sm gp-font-semibold gp-text-gray-500 gp-py-2 !gp-text-center' : '', getGlobalColorClass('text', setting?.color)),
61
+ style: {
62
+ ...getStyleShadow({
63
+ styleAppliedFor: 'text-shadow'
64
+ }),
65
+ ...makeStyleResponsive('ta', setting?.textAlign),
66
+ ...hasLineClamp && !open ? makeStyleResponsive('line-clamp', setting?.lineClamp) : {},
67
+ ...makeStyle({
68
+ tt: setting?.transform
69
+ }),
70
+ ...appendTypoStyle
71
+ },
72
+ dangerouslySetInnerHTML: {
73
+ __html: collection?.descriptionHtml && hasDescription ? collection.descriptionHtml : ``
74
+ }
75
+ }),
76
+ hasLineClamp && isShowViewMore && /*#__PURE__*/ jsxs("button", {
77
+ className: cls(appendTypoClass, getGlobalColorClass('text', setting?.showMoreColor), 'gp-mt-4 gp-w-full gp-transition-all hover:gp-opacity-80'),
78
+ style: {
79
+ ...makeStyleResponsive('ta', setting?.textAlign),
80
+ ...makeStyle({
81
+ tt: setting?.transform
82
+ }),
83
+ ...appendTypoStyle,
84
+ ...getGlobalColorStyle(setting?.showMoreColor)
85
+ },
86
+ onClick: ()=>setOpen((prev)=>!prev),
87
+ children: [
88
+ !open ? setting?.viewMoreText : setting?.viewLessText,
89
+ setting?.enableViewMoreIcon && /*#__PURE__*/ jsx("svg", {
90
+ className: "gp-ml-1 gp-inline-block",
91
+ height: "1em",
92
+ width: "1em",
93
+ viewBox: "0 0 22 12",
94
+ fill: "none",
95
+ xmlns: "http://www.w3.org/2000/svg",
96
+ children: !open ? /*#__PURE__*/ jsx("path", {
97
+ d: "M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L1.70711 0.292893ZM11 11L10.2929 11.7071C10.6834 12.0976 11.3166 12.0976 11.7071 11.7071L11 11ZM21.7071 1.70711C22.0976 1.31658 22.0976 0.683417 21.7071 0.292893C21.3166 -0.0976311 20.6834 -0.0976311 20.2929 0.292893L21.7071 1.70711ZM0.292893 1.70711L10.2929 11.7071L11.7071 10.2929L1.70711 0.292893L0.292893 1.70711ZM11.7071 11.7071L21.7071 1.70711L20.2929 0.292893L10.2929 10.2929L11.7071 11.7071Z",
98
+ fill: "currentColor"
99
+ }) : /*#__PURE__*/ jsx("path", {
100
+ d: "M0.292893 10.2929C-0.0976311 10.6834 -0.0976311 11.3166 0.292893 11.7071C0.683417 12.0976 1.31658 12.0976 1.70711 11.7071L0.292893 10.2929ZM11 1L11.7071 0.292893C11.3166 -0.0976311 10.6834 -0.0976311 10.2929 0.292893L11 1ZM20.2929 11.7071C20.6834 12.0976 21.3166 12.0976 21.7071 11.7071C22.0976 11.3166 22.0976 10.6834 21.7071 10.2929L20.2929 11.7071ZM1.70711 11.7071L11.7071 1.70711L10.2929 0.292893L0.292893 10.2929L1.70711 11.7071ZM10.2929 1.70711L20.2929 11.7071L21.7071 10.2929L11.7071 0.292893L10.2929 1.70711Z",
101
+ fill: "currentColor"
102
+ })
103
+ })
104
+ ]
105
+ })
106
+ ]
13
107
  });
14
108
  };
15
109
 
@@ -1,16 +1,109 @@
1
- import { template } from '@gem-sdk/core';
2
- import Text from '../../text/components/Text.liquid.js';
1
+ import { composeTypographyStyle, composeTypographyClassName, getStyleShadow, makeStyleResponsive, getGlobalColorStyle, makeStyle, makeLineClamp, template, cls, getGlobalColorClass, RenderIf, isLocalEnv, baseAssetURL } from '@gem-sdk/core';
2
+ import { getDynamicSourceLocales, getSettingPreloadData } from '../../helpers.js';
3
+ import { getDisplayStyle } from '../../product/components/ProductImages/common/common.js';
3
4
 
4
- const CollectionDescription = ({ setting })=>{
5
+ const CollectionDescription = ({ setting, advanced, builderProps, pageContext })=>{
6
+ const appendTypoStyle = composeTypographyStyle(setting?.typo, setting?.typography);
7
+ const appendTypoClass = composeTypographyClassName(setting?.typo, setting?.typography);
8
+ const defaultStyle = {
9
+ ...getStyleShadow({
10
+ styleAppliedFor: 'text-shadow'
11
+ }),
12
+ ...makeStyleResponsive('ta', setting?.textAlign),
13
+ ...getGlobalColorStyle(setting?.color),
14
+ ...makeStyle({
15
+ tt: setting?.transform
16
+ }),
17
+ ...appendTypoStyle
18
+ };
19
+ const collapseStyle = {
20
+ ...defaultStyle,
21
+ ...makeStyleResponsive('line-clamp', makeLineClamp(setting?.lineClamp, setting?.hasLineClamp))
22
+ };
23
+ const getDisplayCollapse = ()=>{
24
+ return getDisplayStyle((device)=>!!setting?.hasLineClamp && setting.hasLineClamp[device] !== undefined && !setting.hasLineClamp[device], 'block');
25
+ };
26
+ const moreIcon = `<svg
27
+ class="gp-ml-1 gp-inline-block"
28
+ style="display: inline-block; margin-left: 1px;"
29
+ height="1em"
30
+ width="1em"
31
+ viewBox="0 0 22 12"
32
+ fill="none"
33
+ xmlns="http://www.w3.org/2000/svg"
34
+ >
35
+ <path
36
+ d="M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L1.70711 0.292893ZM11 11L10.2929 11.7071C10.6834 12.0976 11.3166 12.0976 11.7071 11.7071L11 11ZM21.7071 1.70711C22.0976 1.31658 22.0976 0.683417 21.7071 0.292893C21.3166 -0.0976311 20.6834 -0.0976311 20.2929 0.292893L21.7071 1.70711ZM0.292893 1.70711L10.2929 11.7071L11.7071 10.2929L1.70711 0.292893L0.292893 1.70711ZM11.7071 11.7071L21.7071 1.70711L20.2929 0.292893L10.2929 10.2929L11.7071 11.7071Z"
37
+ fill="currentColor"
38
+ />
39
+ </svg>`;
40
+ const viewMoreTextTranslate = getDynamicSourceLocales({
41
+ val: setting?.viewMoreText,
42
+ uid: builderProps?.uid,
43
+ settingId: 'viewMoreText',
44
+ isLiquid: true,
45
+ pageContext,
46
+ translate: setting?.translate
47
+ });
48
+ const viewLessTextTranslate = getDynamicSourceLocales({
49
+ val: setting?.viewLessText,
50
+ uid: builderProps?.uid,
51
+ settingId: 'viewLessText',
52
+ isLiquid: true,
53
+ pageContext,
54
+ translate: setting?.translate
55
+ });
5
56
  return template`
6
- ${Text({
7
- styles: setting,
57
+ <gp-collection-description data-id="${builderProps?.uid}" class="${advanced?.cssClass} gp-collection-description" gp-data='${JSON.stringify({
8
58
  setting: {
9
- ...setting,
10
- text: '{{ collection.description }}',
11
- excludeFlex: true
12
- }
13
- })}
59
+ lineClamp: setting?.lineClamp,
60
+ hasLineClamp: setting?.hasLineClamp,
61
+ viewMoreText: viewMoreTextTranslate,
62
+ viewLessText: viewLessTextTranslate,
63
+ enableViewMoreIcon: setting?.enableViewMoreIcon
64
+ },
65
+ defaultStyle,
66
+ collapseStyle
67
+ }).replaceAll("'", '&#039;')}'
68
+ view-more-text="${pageContext?.isPreviewing ? viewMoreTextTranslate : `{{${viewMoreTextTranslate}}}`}"
69
+ view-less-text="${pageContext?.isPreviewing ? viewLessTextTranslate : `{{${viewLessTextTranslate}}}`}"
70
+ >
71
+ <div></div>
72
+ <div
73
+ data-gp-text
74
+ class="${cls('gp-relative p-description-wrapper gp-p-description-text gp-break-words safari:[&_p]:gp-inline safari:[&_p]:after:gp-whitespace-pre', appendTypoClass, getGlobalColorClass('text', setting?.color), "data-[browser=safari]:after:gp-content-[' '] data-[browser=safari]:after:gp-absolute data-[browser=safari]:after:gp-left-0 data-[browser=safari]:after:gp-right-0 data-[browser=safari]:after:gp-bottom-0 data-[browser=safari]:after:gp-w-full data-[browser=safari]:after:gp-h-1/2 data-[browser=safari]:after:gp-bg-gradient-to-t data-[browser=safari]:after:gp-from-white")}"
75
+ data-gp-text
76
+ style="${collapseStyle}"
77
+ >
78
+ {{collection.description}}
79
+ </div>
80
+ {% if collection.description != blank -%}
81
+ <button
82
+ type="button"
83
+ class="p-description-show-more ${cls(appendTypoClass, getGlobalColorClass('text', setting?.showMoreColor), 'gp-mt-4 hover:gp-opacity-80 gp-transition-all gp-w-full')}"
84
+ style="${{
85
+ ...makeStyle({
86
+ tt: setting?.transform
87
+ }),
88
+ ...makeStyleResponsive('ta', setting?.textAlign),
89
+ ...appendTypoStyle,
90
+ ...getGlobalColorStyle(setting?.showMoreColor),
91
+ ...getDisplayCollapse(),
92
+ position: 'absolute',
93
+ visibility: 'hidden'
94
+ }}"
95
+ >
96
+ ${pageContext?.isPreviewing ? viewMoreTextTranslate : `{{${viewMoreTextTranslate}}}`}
97
+ ${setting?.enableViewMoreIcon ? moreIcon : ''}
98
+ </button>
99
+ {%- endif -%}
100
+ {% style %}
101
+ .p-description-wrapper.gp-p-description-text * {
102
+ color: inherit
103
+ }
104
+ {% endstyle %}
105
+ </gp-collection-description>
106
+ ${RenderIf(isLocalEnv, `<script ${getSettingPreloadData('class="gps-link" delay', 'src')}="{{ 'gp-collection-description.js' | asset_url }}" defer="defer"></script>`, `<script ${getSettingPreloadData('class="gps-link" delay', 'src')}="${baseAssetURL}/assets-v2/gp-collection-description.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`)}
14
107
  `;
15
108
  };
16
109