@salesforce/retail-react-app 1.0.0-preview.0

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 (425) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc.js +25 -0
  3. package/.prettierignore +4 -0
  4. package/.prettierrc.yaml +7 -0
  5. package/CHANGELOG.md +173 -0
  6. package/LICENSE +14 -0
  7. package/README.md +48 -0
  8. package/app/assets/svg/account.svg +3 -0
  9. package/app/assets/svg/alert.svg +3 -0
  10. package/app/assets/svg/basket.svg +3 -0
  11. package/app/assets/svg/brand-logo.svg +10 -0
  12. package/app/assets/svg/cc-amex.svg +7 -0
  13. package/app/assets/svg/cc-cvv.svg +8 -0
  14. package/app/assets/svg/cc-discover.svg +14 -0
  15. package/app/assets/svg/cc-mastercard.svg +8 -0
  16. package/app/assets/svg/cc-visa.svg +11 -0
  17. package/app/assets/svg/check-circle.svg +3 -0
  18. package/app/assets/svg/check.svg +3 -0
  19. package/app/assets/svg/chevron-down.svg +3 -0
  20. package/app/assets/svg/chevron-left.svg +3 -0
  21. package/app/assets/svg/chevron-right.svg +3 -0
  22. package/app/assets/svg/chevron-up.svg +3 -0
  23. package/app/assets/svg/close.svg +3 -0
  24. package/app/assets/svg/dashboard.svg +4 -0
  25. package/app/assets/svg/figma-logo.svg +14 -0
  26. package/app/assets/svg/file.svg +3 -0
  27. package/app/assets/svg/filter.svg +3 -0
  28. package/app/assets/svg/flag-ca.svg +5 -0
  29. package/app/assets/svg/flag-cn.svg +19 -0
  30. package/app/assets/svg/flag-fr.svg +19 -0
  31. package/app/assets/svg/flag-gb.svg +16 -0
  32. package/app/assets/svg/flag-it.svg +29 -0
  33. package/app/assets/svg/flag-jp.svg +10 -0
  34. package/app/assets/svg/flag-us.svg +7 -0
  35. package/app/assets/svg/github-logo.svg +40 -0
  36. package/app/assets/svg/hamburger.svg +8 -0
  37. package/app/assets/svg/heart-solid.svg +7 -0
  38. package/app/assets/svg/heart.svg +3 -0
  39. package/app/assets/svg/info.svg +3 -0
  40. package/app/assets/svg/like.svg +4 -0
  41. package/app/assets/svg/location.svg +3 -0
  42. package/app/assets/svg/lock.svg +3 -0
  43. package/app/assets/svg/paypal.svg +19 -0
  44. package/app/assets/svg/plug.svg +3 -0
  45. package/app/assets/svg/plus.svg +3 -0
  46. package/app/assets/svg/receipt.svg +3 -0
  47. package/app/assets/svg/search.svg +8 -0
  48. package/app/assets/svg/signout.svg +3 -0
  49. package/app/assets/svg/social-facebook.svg +3 -0
  50. package/app/assets/svg/social-instagram.svg +3 -0
  51. package/app/assets/svg/social-pinterest.svg +4 -0
  52. package/app/assets/svg/social-twitter.svg +3 -0
  53. package/app/assets/svg/social-youtube.svg +3 -0
  54. package/app/assets/svg/user.svg +3 -0
  55. package/app/assets/svg/visibility-off.svg +5 -0
  56. package/app/assets/svg/visibility.svg +3 -0
  57. package/app/components/_app/index.jsx +401 -0
  58. package/app/components/_app/index.test.js +85 -0
  59. package/app/components/_app/partials/above-header.jsx +10 -0
  60. package/app/components/_app-config/index.jsx +125 -0
  61. package/app/components/_app-config/index.test.js +77 -0
  62. package/app/components/_error/index.jsx +142 -0
  63. package/app/components/_error/index.test.js +25 -0
  64. package/app/components/action-card/index.jsx +75 -0
  65. package/app/components/address-display/index.jsx +30 -0
  66. package/app/components/basic-tile/index.jsx +65 -0
  67. package/app/components/basic-tile/index.test.js +23 -0
  68. package/app/components/breadcrumb/index.jsx +67 -0
  69. package/app/components/breadcrumb/index.test.js +30 -0
  70. package/app/components/confirmation-modal/index.jsx +111 -0
  71. package/app/components/confirmation-modal/index.test.js +98 -0
  72. package/app/components/drawer-menu/index.jsx +405 -0
  73. package/app/components/drawer-menu/index.test.js +33 -0
  74. package/app/components/dynamic-image/index.jsx +56 -0
  75. package/app/components/field/index.jsx +161 -0
  76. package/app/components/footer/index.jsx +269 -0
  77. package/app/components/footer/index.test.js +22 -0
  78. package/app/components/forms/address-fields.jsx +49 -0
  79. package/app/components/forms/credit-card-fields.jsx +149 -0
  80. package/app/components/forms/form-action-buttons.jsx +55 -0
  81. package/app/components/forms/login-fields.jsx +31 -0
  82. package/app/components/forms/password-requirements.jsx +99 -0
  83. package/app/components/forms/post-checkout-registration-fields.jsx +43 -0
  84. package/app/components/forms/profile-fields.jsx +36 -0
  85. package/app/components/forms/promo-code-fields.jsx +43 -0
  86. package/app/components/forms/registration-fields.jsx +42 -0
  87. package/app/components/forms/reset-password-fields.jsx +31 -0
  88. package/app/components/forms/state-province-options.jsx +75 -0
  89. package/app/components/forms/update-password-fields.jsx +49 -0
  90. package/app/components/forms/useAddressFields.jsx +196 -0
  91. package/app/components/forms/useCreditCardFields.jsx +146 -0
  92. package/app/components/forms/useLoginFields.jsx +52 -0
  93. package/app/components/forms/useProfileFields.jsx +95 -0
  94. package/app/components/forms/usePromoCodeFields.jsx +39 -0
  95. package/app/components/forms/useRegistrationFields.jsx +136 -0
  96. package/app/components/forms/useResetPasswordFields.jsx +40 -0
  97. package/app/components/forms/useUpdatePasswordFields.jsx +89 -0
  98. package/app/components/header/index.jsx +290 -0
  99. package/app/components/header/index.test.js +217 -0
  100. package/app/components/hero/index.jsx +84 -0
  101. package/app/components/hero/index.test.js +40 -0
  102. package/app/components/icons/index.jsx +158 -0
  103. package/app/components/icons/index.test.js +20 -0
  104. package/app/components/image-gallery/index.jsx +176 -0
  105. package/app/components/image-gallery/index.test.js +485 -0
  106. package/app/components/item-variant/index.jsx +33 -0
  107. package/app/components/item-variant/item-attributes.jsx +107 -0
  108. package/app/components/item-variant/item-image.jsx +73 -0
  109. package/app/components/item-variant/item-name.jsx +28 -0
  110. package/app/components/item-variant/item-price.jsx +117 -0
  111. package/app/components/link/index.jsx +32 -0
  112. package/app/components/link/index.test.js +72 -0
  113. package/app/components/links-list/index.jsx +89 -0
  114. package/app/components/links-list/index.test.js +62 -0
  115. package/app/components/list-menu/index.jsx +280 -0
  116. package/app/components/list-menu/index.test.js +44 -0
  117. package/app/components/loading-spinner/index.jsx +46 -0
  118. package/app/components/locale-selector/index.jsx +124 -0
  119. package/app/components/locale-selector/index.test.js +37 -0
  120. package/app/components/locale-text/index.jsx +97 -0
  121. package/app/components/locale-text/index.test.js +36 -0
  122. package/app/components/login/index.jsx +96 -0
  123. package/app/components/nested-accordion/index.jsx +185 -0
  124. package/app/components/nested-accordion/index.test.js +98 -0
  125. package/app/components/offline-banner/index.jsx +40 -0
  126. package/app/components/offline-banner/index.test.js +15 -0
  127. package/app/components/offline-boundary/index.jsx +104 -0
  128. package/app/components/offline-boundary/index.test.js +123 -0
  129. package/app/components/order-summary/index.jsx +331 -0
  130. package/app/components/page-action-placeholder/index.jsx +50 -0
  131. package/app/components/pagination/index.jsx +134 -0
  132. package/app/components/pagination/index.test.js +25 -0
  133. package/app/components/product-item/index.jsx +146 -0
  134. package/app/components/product-item/index.test.js +38 -0
  135. package/app/components/product-scroller/index.jsx +172 -0
  136. package/app/components/product-scroller/index.test.js +98 -0
  137. package/app/components/product-tile/index.jsx +195 -0
  138. package/app/components/product-tile/index.test.js +96 -0
  139. package/app/components/product-view/index.jsx +538 -0
  140. package/app/components/product-view/index.test.js +224 -0
  141. package/app/components/product-view-modal/index.jsx +48 -0
  142. package/app/components/product-view-modal/index.test.js +72 -0
  143. package/app/components/promo-code/index.jsx +162 -0
  144. package/app/components/promo-popover/index.jsx +83 -0
  145. package/app/components/quantity-picker/index.jsx +58 -0
  146. package/app/components/radio-card/index.jsx +75 -0
  147. package/app/components/recommended-products/index.jsx +227 -0
  148. package/app/components/register/index.jsx +114 -0
  149. package/app/components/reset-password/index.jsx +87 -0
  150. package/app/components/responsive/index.jsx +29 -0
  151. package/app/components/scroll-to-top/index.jsx +24 -0
  152. package/app/components/scroll-to-top/index.test.js +46 -0
  153. package/app/components/search/index.jsx +279 -0
  154. package/app/components/search/index.test.js +127 -0
  155. package/app/components/search/partials/recent-searches.jsx +76 -0
  156. package/app/components/search/partials/search-suggestions.jsx +45 -0
  157. package/app/components/search/partials/suggestions.jsx +43 -0
  158. package/app/components/section/index.jsx +68 -0
  159. package/app/components/seo/index.jsx +33 -0
  160. package/app/components/social-icons/index.jsx +101 -0
  161. package/app/components/social-icons/index.test.js +30 -0
  162. package/app/components/swatch-group/index.jsx +77 -0
  163. package/app/components/swatch-group/index.test.js +136 -0
  164. package/app/components/swatch-group/swatch.jsx +94 -0
  165. package/app/components/toggle-card/index.jsx +97 -0
  166. package/app/components/with-registration/index.jsx +58 -0
  167. package/app/components/with-registration/index.test.js +85 -0
  168. package/app/constants.js +109 -0
  169. package/app/contexts/index.js +92 -0
  170. package/app/hooks/einstein-mock-data.js +916 -0
  171. package/app/hooks/index.js +17 -0
  172. package/app/hooks/use-add-to-cart-modal.js +344 -0
  173. package/app/hooks/use-add-to-cart-modal.test.js +625 -0
  174. package/app/hooks/use-auth-modal.js +337 -0
  175. package/app/hooks/use-auth-modal.test.js +365 -0
  176. package/app/hooks/use-currency.js +20 -0
  177. package/app/hooks/use-currency.test.js +41 -0
  178. package/app/hooks/use-current-basket.js +39 -0
  179. package/app/hooks/use-current-customer.js +29 -0
  180. package/app/hooks/use-derived-product.js +77 -0
  181. package/app/hooks/use-derived-product.test.js +69 -0
  182. package/app/hooks/use-einstein.js +512 -0
  183. package/app/hooks/use-einstein.test.js +224 -0
  184. package/app/hooks/use-intersection-observer.js +64 -0
  185. package/app/hooks/use-limit-urls.js +31 -0
  186. package/app/hooks/use-limit-urls.test.js +40 -0
  187. package/app/hooks/use-multi-site.js +36 -0
  188. package/app/hooks/use-multi-site.test.js +53 -0
  189. package/app/hooks/use-navigation.js +37 -0
  190. package/app/hooks/use-navigation.test.js +109 -0
  191. package/app/hooks/use-page-urls.js +35 -0
  192. package/app/hooks/use-page-urls.test.js +39 -0
  193. package/app/hooks/use-pdp-search-params.js +16 -0
  194. package/app/hooks/use-pdp-search-params.test.js +52 -0
  195. package/app/hooks/use-previous.js +17 -0
  196. package/app/hooks/use-product-view-modal.js +93 -0
  197. package/app/hooks/use-product-view-modal.test.js +172 -0
  198. package/app/hooks/use-search-params.js +96 -0
  199. package/app/hooks/use-search-params.test.js +91 -0
  200. package/app/hooks/use-sort-urls.js +33 -0
  201. package/app/hooks/use-sort-urls.test.js +42 -0
  202. package/app/hooks/use-toast.js +68 -0
  203. package/app/hooks/use-toast.test.js +58 -0
  204. package/app/hooks/use-variant.js +32 -0
  205. package/app/hooks/use-variant.test.js +81 -0
  206. package/app/hooks/use-variation-attributes.js +138 -0
  207. package/app/hooks/use-variation-attributes.test.js +119 -0
  208. package/app/hooks/use-variation-params.js +31 -0
  209. package/app/hooks/use-variation-params.test.js +73 -0
  210. package/app/hooks/use-wish-list.js +42 -0
  211. package/app/main.jsx +14 -0
  212. package/app/mocks/basket-with-suit.js +146 -0
  213. package/app/mocks/empty-basket.js +39 -0
  214. package/app/mocks/mock-data.js +5632 -0
  215. package/app/mocks/product-set-winter-lookM.js +1224 -0
  216. package/app/mocks/searchResults.js +144 -0
  217. package/app/mocks/variant-750518699578M.js +434 -0
  218. package/app/page-designer/README.md +102 -0
  219. package/app/page-designer/assets/image-tile/index.jsx +51 -0
  220. package/app/page-designer/assets/image-tile/index.test.js +30 -0
  221. package/app/page-designer/assets/image-with-text/index.jsx +140 -0
  222. package/app/page-designer/assets/image-with-text/index.test.js +38 -0
  223. package/app/page-designer/assets/index.js +9 -0
  224. package/app/page-designer/index.js +10 -0
  225. package/app/page-designer/layouts/carousel/index.jsx +222 -0
  226. package/app/page-designer/layouts/carousel/index.test.js +43 -0
  227. package/app/page-designer/layouts/index.js +14 -0
  228. package/app/page-designer/layouts/mobileGrid1r1c/index.jsx +36 -0
  229. package/app/page-designer/layouts/mobileGrid1r1c/index.test.js +35 -0
  230. package/app/page-designer/layouts/mobileGrid2r1c/index.jsx +37 -0
  231. package/app/page-designer/layouts/mobileGrid2r1c/index.test.js +47 -0
  232. package/app/page-designer/layouts/mobileGrid2r2c/index.jsx +37 -0
  233. package/app/page-designer/layouts/mobileGrid2r2c/index.test.js +71 -0
  234. package/app/page-designer/layouts/mobileGrid2r3c/index.jsx +37 -0
  235. package/app/page-designer/layouts/mobileGrid2r3c/index.test.js +95 -0
  236. package/app/page-designer/layouts/mobileGrid3r1c/index.jsx +37 -0
  237. package/app/page-designer/layouts/mobileGrid3r1c/index.test.js +59 -0
  238. package/app/page-designer/layouts/mobileGrid3r2c/index.jsx +37 -0
  239. package/app/page-designer/layouts/mobileGrid3r2c/index.test.js +95 -0
  240. package/app/page-designer/utils.js +14 -0
  241. package/app/pages/account/addresses.jsx +382 -0
  242. package/app/pages/account/addresses.test.js +120 -0
  243. package/app/pages/account/constant.js +57 -0
  244. package/app/pages/account/index.jsx +237 -0
  245. package/app/pages/account/index.test.js +188 -0
  246. package/app/pages/account/order-detail.jsx +397 -0
  247. package/app/pages/account/order-history.jsx +264 -0
  248. package/app/pages/account/orders.jsx +30 -0
  249. package/app/pages/account/orders.test.js +95 -0
  250. package/app/pages/account/profile.jsx +357 -0
  251. package/app/pages/account/wishlist/index.jsx +195 -0
  252. package/app/pages/account/wishlist/index.mock.js +1481 -0
  253. package/app/pages/account/wishlist/index.test.js +56 -0
  254. package/app/pages/account/wishlist/partials/wishlist-primary-action.jsx +170 -0
  255. package/app/pages/account/wishlist/partials/wishlist-primary-action.mock.js +1623 -0
  256. package/app/pages/account/wishlist/partials/wishlist-primary-action.test.js +99 -0
  257. package/app/pages/account/wishlist/partials/wishlist-secondary-button-group.jsx +120 -0
  258. package/app/pages/account/wishlist/partials/wishlist-secondary-button-group.test.js +391 -0
  259. package/app/pages/cart/index.jsx +476 -0
  260. package/app/pages/cart/index.test.js +481 -0
  261. package/app/pages/cart/partials/cart-cta.jsx +46 -0
  262. package/app/pages/cart/partials/cart-secondary-button-group.jsx +135 -0
  263. package/app/pages/cart/partials/cart-secondary-button-group.test.js +103 -0
  264. package/app/pages/cart/partials/cart-skeleton.jsx +93 -0
  265. package/app/pages/cart/partials/cart-title.jsx +27 -0
  266. package/app/pages/cart/partials/empty-cart.jsx +86 -0
  267. package/app/pages/checkout/confirmation.jsx +541 -0
  268. package/app/pages/checkout/confirmation.mock.js +450 -0
  269. package/app/pages/checkout/confirmation.test.js +114 -0
  270. package/app/pages/checkout/index.jsx +169 -0
  271. package/app/pages/checkout/index.test.js +582 -0
  272. package/app/pages/checkout/partials/cc-radio-group.jsx +122 -0
  273. package/app/pages/checkout/partials/checkout-footer.jsx +140 -0
  274. package/app/pages/checkout/partials/checkout-footer.test.js +16 -0
  275. package/app/pages/checkout/partials/checkout-header.jsx +54 -0
  276. package/app/pages/checkout/partials/checkout-header.test.js +16 -0
  277. package/app/pages/checkout/partials/checkout-skeleton.jsx +52 -0
  278. package/app/pages/checkout/partials/contact-info.jsx +251 -0
  279. package/app/pages/checkout/partials/contact-info.test.js +43 -0
  280. package/app/pages/checkout/partials/payment-form.jsx +97 -0
  281. package/app/pages/checkout/partials/payment.jsx +276 -0
  282. package/app/pages/checkout/partials/shipping-address-selection.jsx +377 -0
  283. package/app/pages/checkout/partials/shipping-address.jsx +132 -0
  284. package/app/pages/checkout/partials/shipping-options.jsx +232 -0
  285. package/app/pages/checkout/util/checkout-context.js +94 -0
  286. package/app/pages/home/data.js +134 -0
  287. package/app/pages/home/index.jsx +301 -0
  288. package/app/pages/home/index.test.js +23 -0
  289. package/app/pages/login/index.jsx +123 -0
  290. package/app/pages/login/index.test.js +229 -0
  291. package/app/pages/login-redirect/index.jsx +23 -0
  292. package/app/pages/login-redirect/index.test.js +16 -0
  293. package/app/pages/page-not-found/index.jsx +90 -0
  294. package/app/pages/page-not-found/index.test.js +31 -0
  295. package/app/pages/product-detail/index.jsx +394 -0
  296. package/app/pages/product-detail/index.mock.js +197 -0
  297. package/app/pages/product-detail/index.test.js +162 -0
  298. package/app/pages/product-detail/partials/information-accordion.jsx +121 -0
  299. package/app/pages/product-list/index.jsx +735 -0
  300. package/app/pages/product-list/index.test.js +180 -0
  301. package/app/pages/product-list/partials/above-page-header.jsx +10 -0
  302. package/app/pages/product-list/partials/checkbox-refinements.jsx +41 -0
  303. package/app/pages/product-list/partials/checkbox-refinements.test.js +53 -0
  304. package/app/pages/product-list/partials/color-refinements.jsx +88 -0
  305. package/app/pages/product-list/partials/empty-results.jsx +118 -0
  306. package/app/pages/product-list/partials/link-refinements.jsx +38 -0
  307. package/app/pages/product-list/partials/page-header.jsx +42 -0
  308. package/app/pages/product-list/partials/radio-refinements.jsx +60 -0
  309. package/app/pages/product-list/partials/refinements.jsx +144 -0
  310. package/app/pages/product-list/partials/selected-refinements.jsx +100 -0
  311. package/app/pages/product-list/partials/size-refinements.jsx +55 -0
  312. package/app/pages/registration/index.jsx +87 -0
  313. package/app/pages/registration/index.test.jsx +132 -0
  314. package/app/pages/reset-password/index.jsx +112 -0
  315. package/app/pages/reset-password/index.test.jsx +141 -0
  316. package/app/request-processor.js +118 -0
  317. package/app/request-processor.test.js +23 -0
  318. package/app/routes.jsx +111 -0
  319. package/app/routes.test.js +13 -0
  320. package/app/ssr.js +70 -0
  321. package/app/static/ico/favicon.ico +0 -0
  322. package/app/static/img/global/app-icon-192.png +0 -0
  323. package/app/static/img/global/app-icon-512.png +0 -0
  324. package/app/static/img/global/apple-touch-icon.png +0 -0
  325. package/app/static/img/hero.png +0 -0
  326. package/app/static/manifest.json +19 -0
  327. package/app/static/robots.txt +2 -0
  328. package/app/theme/components/base/accordion.js +21 -0
  329. package/app/theme/components/base/alert.js +17 -0
  330. package/app/theme/components/base/badge.js +25 -0
  331. package/app/theme/components/base/button.js +77 -0
  332. package/app/theme/components/base/checkbox.js +30 -0
  333. package/app/theme/components/base/container.js +17 -0
  334. package/app/theme/components/base/drawer.js +26 -0
  335. package/app/theme/components/base/formLabel.js +13 -0
  336. package/app/theme/components/base/icon.js +13 -0
  337. package/app/theme/components/base/input.js +44 -0
  338. package/app/theme/components/base/modal.js +11 -0
  339. package/app/theme/components/base/popover.js +61 -0
  340. package/app/theme/components/base/radio.js +33 -0
  341. package/app/theme/components/base/select.js +15 -0
  342. package/app/theme/components/base/skeleton.js +12 -0
  343. package/app/theme/components/base/tooltip.js +19 -0
  344. package/app/theme/components/project/_app.js +25 -0
  345. package/app/theme/components/project/breadcrumb.js +25 -0
  346. package/app/theme/components/project/checkout-footer.js +35 -0
  347. package/app/theme/components/project/drawer-menu.js +66 -0
  348. package/app/theme/components/project/footer.js +84 -0
  349. package/app/theme/components/project/header.js +84 -0
  350. package/app/theme/components/project/image-gallery.js +59 -0
  351. package/app/theme/components/project/links-list.js +43 -0
  352. package/app/theme/components/project/list-menu.js +91 -0
  353. package/app/theme/components/project/locale-selector.js +42 -0
  354. package/app/theme/components/project/nested-accordion.js +26 -0
  355. package/app/theme/components/project/offline-banner.js +25 -0
  356. package/app/theme/components/project/pagination.js +22 -0
  357. package/app/theme/components/project/product-tile.js +32 -0
  358. package/app/theme/components/project/social-icons.js +52 -0
  359. package/app/theme/components/project/swatch-group.js +115 -0
  360. package/app/theme/foundations/colors.js +170 -0
  361. package/app/theme/foundations/gradients.js +9 -0
  362. package/app/theme/foundations/layerStyles.js +41 -0
  363. package/app/theme/foundations/shadows.js +9 -0
  364. package/app/theme/foundations/sizes.js +18 -0
  365. package/app/theme/foundations/space.js +9 -0
  366. package/app/theme/foundations/styles.js +21 -0
  367. package/app/theme/index.js +104 -0
  368. package/app/utils/cc-utils.js +112 -0
  369. package/app/utils/cc-utils.test.js +41 -0
  370. package/app/utils/image-groups-utils.js +62 -0
  371. package/app/utils/image-groups-utils.test.js +65 -0
  372. package/app/utils/locale.js +78 -0
  373. package/app/utils/locale.test.js +112 -0
  374. package/app/utils/password-utils.js +21 -0
  375. package/app/utils/phone-utils.js +22 -0
  376. package/app/utils/phone-utils.test.js +15 -0
  377. package/app/utils/product-utils.js +35 -0
  378. package/app/utils/product-utils.test.js +51 -0
  379. package/app/utils/responsive-image.js +198 -0
  380. package/app/utils/responsive-image.test.js +170 -0
  381. package/app/utils/routes-utils.js +111 -0
  382. package/app/utils/routes-utils.test.js +291 -0
  383. package/app/utils/site-utils.js +222 -0
  384. package/app/utils/site-utils.test.js +376 -0
  385. package/app/utils/test-utils.js +257 -0
  386. package/app/utils/url.js +291 -0
  387. package/app/utils/url.test.js +421 -0
  388. package/app/utils/utils.js +201 -0
  389. package/app/utils/utils.test.js +182 -0
  390. package/babel.config.js +7 -0
  391. package/cache-hash-config.json +8 -0
  392. package/config/default.js +64 -0
  393. package/config/mocks/default.js +131 -0
  394. package/config/sites.js +78 -0
  395. package/jest-setup.js +191 -0
  396. package/jest.config.js +50 -0
  397. package/jsconfig.json +13 -0
  398. package/package.json +105 -0
  399. package/scripts/extract-default-messages.js +92 -0
  400. package/tests/lighthouserc.js +37 -0
  401. package/translations/README.md +127 -0
  402. package/translations/compiled/de-DE.json +3212 -0
  403. package/translations/compiled/en-GB.json +3212 -0
  404. package/translations/compiled/en-US.json +3212 -0
  405. package/translations/compiled/en-XA.json +6948 -0
  406. package/translations/compiled/es-MX.json +3216 -0
  407. package/translations/compiled/fr-FR.json +3216 -0
  408. package/translations/compiled/it-IT.json +3188 -0
  409. package/translations/compiled/ja-JP.json +3200 -0
  410. package/translations/compiled/ko-KR.json +3180 -0
  411. package/translations/compiled/pt-BR.json +3220 -0
  412. package/translations/compiled/zh-CN.json +3212 -0
  413. package/translations/compiled/zh-TW.json +3208 -0
  414. package/translations/de-DE.json +1417 -0
  415. package/translations/en-GB.json +1417 -0
  416. package/translations/en-US.json +1417 -0
  417. package/translations/es-MX.json +1417 -0
  418. package/translations/fr-FR.json +1417 -0
  419. package/translations/it-IT.json +1417 -0
  420. package/translations/ja-JP.json +1417 -0
  421. package/translations/ko-KR.json +1417 -0
  422. package/translations/pt-BR.json +1417 -0
  423. package/translations/zh-CN.json +1417 -0
  424. package/translations/zh-TW.json +1417 -0
  425. package/worker/main.js +36 -0
@@ -0,0 +1,1623 @@
1
+ /*
2
+ * Copyright (c) 2023, Salesforce, Inc.
3
+ * All rights reserved.
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
6
+ */
7
+ export const mockWishListDetails = {
8
+ limit: 4,
9
+ data: [
10
+ {
11
+ currency: 'GBP',
12
+ id: 'winter-lookM',
13
+ imageGroups: [
14
+ {
15
+ images: [
16
+ {
17
+ alt: 'Winter Look, , large',
18
+ disBaseLink:
19
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe6b93900/images/large/PG.10205921.JJ5FUXX.PZ.jpg',
20
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe6b93900/images/large/PG.10205921.JJ5FUXX.PZ.jpg',
21
+ title: 'Winter Look, '
22
+ }
23
+ ],
24
+ viewType: 'large'
25
+ },
26
+ {
27
+ images: [
28
+ {
29
+ alt: 'Winter Look, , medium',
30
+ disBaseLink:
31
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwfce3ae7f/images/medium/PG.10205921.JJ5FUXX.PZ.jpg',
32
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwfce3ae7f/images/medium/PG.10205921.JJ5FUXX.PZ.jpg',
33
+ title: 'Winter Look, '
34
+ }
35
+ ],
36
+ viewType: 'medium'
37
+ },
38
+ {
39
+ images: [
40
+ {
41
+ alt: 'Winter Look, , small',
42
+ disBaseLink:
43
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw97ad16fc/images/small/PG.10205921.JJ5FUXX.PZ.jpg',
44
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw97ad16fc/images/small/PG.10205921.JJ5FUXX.PZ.jpg',
45
+ title: 'Winter Look, '
46
+ }
47
+ ],
48
+ viewType: 'small'
49
+ }
50
+ ],
51
+ longDescription: '<p>Jacket</p>\r\n<p>Pant</p>\r\n<p>Shoes</p>',
52
+ minOrderQuantity: 1,
53
+ name: 'Winter Look',
54
+ price: 44.16,
55
+ priceMax: 71.03,
56
+ pricePerUnit: 44.16,
57
+ pricePerUnitMax: 71.03,
58
+ primaryCategoryId: 'womens-outfits',
59
+ shortDescription: 'Look for Winter',
60
+ setProducts: [
61
+ {
62
+ currency: 'GBP',
63
+ id: '25518447M',
64
+ imageGroups: [
65
+ {
66
+ images: [
67
+ {
68
+ alt: 'Quilted Jacket, , large',
69
+ disBaseLink:
70
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe6b93900/images/large/PG.10205921.JJ5FUXX.PZ.jpg',
71
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe6b93900/images/large/PG.10205921.JJ5FUXX.PZ.jpg',
72
+ title: 'Quilted Jacket, '
73
+ },
74
+ {
75
+ alt: 'Quilted Jacket, , large',
76
+ disBaseLink:
77
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw3f3cfaa8/images/large/PG.10205921.JJ5FUXX.BZ.jpg',
78
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw3f3cfaa8/images/large/PG.10205921.JJ5FUXX.BZ.jpg',
79
+ title: 'Quilted Jacket, '
80
+ }
81
+ ],
82
+ viewType: 'large'
83
+ },
84
+ {
85
+ images: [
86
+ {
87
+ alt: 'Quilted Jacket, , medium',
88
+ disBaseLink:
89
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwfce3ae7f/images/medium/PG.10205921.JJ5FUXX.PZ.jpg',
90
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwfce3ae7f/images/medium/PG.10205921.JJ5FUXX.PZ.jpg',
91
+ title: 'Quilted Jacket, '
92
+ },
93
+ {
94
+ alt: 'Quilted Jacket, , medium',
95
+ disBaseLink:
96
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5d0b1941/images/medium/PG.10205921.JJ5FUXX.BZ.jpg',
97
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5d0b1941/images/medium/PG.10205921.JJ5FUXX.BZ.jpg',
98
+ title: 'Quilted Jacket, '
99
+ }
100
+ ],
101
+ viewType: 'medium'
102
+ },
103
+ {
104
+ images: [
105
+ {
106
+ alt: 'Quilted Jacket, , small',
107
+ disBaseLink:
108
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw97ad16fc/images/small/PG.10205921.JJ5FUXX.PZ.jpg',
109
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw97ad16fc/images/small/PG.10205921.JJ5FUXX.PZ.jpg',
110
+ title: 'Quilted Jacket, '
111
+ },
112
+ {
113
+ alt: 'Quilted Jacket, , small',
114
+ disBaseLink:
115
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw764f0594/images/small/PG.10205921.JJ5FUXX.BZ.jpg',
116
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw764f0594/images/small/PG.10205921.JJ5FUXX.BZ.jpg',
117
+ title: 'Quilted Jacket, '
118
+ }
119
+ ],
120
+ viewType: 'small'
121
+ }
122
+ ],
123
+ inventory: {
124
+ ats: 400,
125
+ backorderable: false,
126
+ id: 'inventory_m',
127
+ orderable: true,
128
+ preorderable: false,
129
+ stockLevel: 400
130
+ },
131
+ longDescription:
132
+ 'A classic quilted car coat looks new again. Add a great Commerce Cloud Store top for a perfect look.',
133
+ master: {
134
+ masterId: '25518447M',
135
+ orderable: true,
136
+ price: 71.03
137
+ },
138
+ minOrderQuantity: 1,
139
+ name: 'Quilted Jacket',
140
+ pageDescription:
141
+ 'A classic quilted car coat looks new again. Add a great Commerce Cloud Store top for a perfect look.',
142
+ pageTitle: 'Quilted Jacket',
143
+ price: 71.03,
144
+ pricePerUnit: 71.03,
145
+ primaryCategoryId: 'womens-clothing-jackets',
146
+ recommendations: [
147
+ {
148
+ recommendationType: {
149
+ displayValue: 'Product Detail Page - Cross Sell',
150
+ value: 1
151
+ },
152
+ recommendedItemId: '22951021M'
153
+ },
154
+ {
155
+ recommendationType: {
156
+ displayValue: 'Product Detail Page - Cross Sell',
157
+ value: 1
158
+ },
159
+ recommendedItemId: '25518397M'
160
+ }
161
+ ],
162
+ shortDescription:
163
+ 'A classic quilted car coat looks new again. Add a great Commerce Cloud Store top for a perfect look.',
164
+ stepQuantity: 1,
165
+ type: {
166
+ master: true
167
+ },
168
+ validFrom: {
169
+ default: '2010-10-21T04:00:00.000Z'
170
+ },
171
+ variants: [
172
+ {
173
+ orderable: true,
174
+ price: 71.03,
175
+ productId: '701642853695M',
176
+ variationValues: {
177
+ color: 'JJ5FUXX',
178
+ size: '9LG'
179
+ }
180
+ },
181
+ {
182
+ orderable: true,
183
+ price: 71.03,
184
+ productId: '701642853718M',
185
+ variationValues: {
186
+ color: 'JJ5FUXX',
187
+ size: '9SM'
188
+ }
189
+ },
190
+ {
191
+ orderable: true,
192
+ price: 71.03,
193
+ productId: '701642853725M',
194
+ variationValues: {
195
+ color: 'JJ5FUXX',
196
+ size: '9XL'
197
+ }
198
+ },
199
+ {
200
+ orderable: true,
201
+ price: 71.03,
202
+ productId: '701642853701M',
203
+ variationValues: {
204
+ color: 'JJ5FUXX',
205
+ size: '9MD'
206
+ }
207
+ }
208
+ ],
209
+ variationAttributes: [
210
+ {
211
+ id: 'color',
212
+ name: 'Colour',
213
+ values: [
214
+ {
215
+ name: 'royal',
216
+ orderable: true,
217
+ value: 'JJ5FUXX'
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ id: 'size',
223
+ name: 'Size',
224
+ values: [
225
+ {
226
+ name: 'S',
227
+ orderable: true,
228
+ value: '9SM'
229
+ },
230
+ {
231
+ name: 'M',
232
+ orderable: true,
233
+ value: '9MD'
234
+ },
235
+ {
236
+ name: 'L',
237
+ orderable: true,
238
+ value: '9LG'
239
+ },
240
+ {
241
+ name: 'XL',
242
+ orderable: true,
243
+ value: '9XL'
244
+ }
245
+ ]
246
+ }
247
+ ],
248
+ c_isNewtest: true,
249
+ c_isSale: true
250
+ },
251
+ {
252
+ currency: 'GBP',
253
+ id: '25518704M',
254
+ imageGroups: [
255
+ {
256
+ images: [
257
+ {
258
+ alt: 'Pull On Pant, , large',
259
+ disBaseLink:
260
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf7f4a945/images/large/PG.10218785.JJ2XNXX.PZ.jpg',
261
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf7f4a945/images/large/PG.10218785.JJ2XNXX.PZ.jpg',
262
+ title: 'Pull On Pant, '
263
+ },
264
+ {
265
+ alt: 'Pull On Pant, , large',
266
+ disBaseLink:
267
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwb6df46d9/images/large/PG.10218785.JJ2XNXX.BZ.jpg',
268
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwb6df46d9/images/large/PG.10218785.JJ2XNXX.BZ.jpg',
269
+ title: 'Pull On Pant, '
270
+ }
271
+ ],
272
+ viewType: 'large'
273
+ },
274
+ {
275
+ images: [
276
+ {
277
+ alt: 'Pull On Pant, , medium',
278
+ disBaseLink:
279
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe1f27107/images/medium/PG.10218785.JJ2XNXX.PZ.jpg',
280
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe1f27107/images/medium/PG.10218785.JJ2XNXX.PZ.jpg',
281
+ title: 'Pull On Pant, '
282
+ },
283
+ {
284
+ alt: 'Pull On Pant, , medium',
285
+ disBaseLink:
286
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwb0628c49/images/medium/PG.10218785.JJ2XNXX.BZ.jpg',
287
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwb0628c49/images/medium/PG.10218785.JJ2XNXX.BZ.jpg',
288
+ title: 'Pull On Pant, '
289
+ }
290
+ ],
291
+ viewType: 'medium'
292
+ },
293
+ {
294
+ images: [
295
+ {
296
+ alt: 'Pull On Pant, , small',
297
+ disBaseLink:
298
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe180ef4e/images/small/PG.10218785.JJ2XNXX.PZ.jpg',
299
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwe180ef4e/images/small/PG.10218785.JJ2XNXX.PZ.jpg',
300
+ title: 'Pull On Pant, '
301
+ },
302
+ {
303
+ alt: 'Pull On Pant, , small',
304
+ disBaseLink:
305
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf7fe8cc7/images/small/PG.10218785.JJ2XNXX.BZ.jpg',
306
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf7fe8cc7/images/small/PG.10218785.JJ2XNXX.BZ.jpg',
307
+ title: 'Pull On Pant, '
308
+ }
309
+ ],
310
+ viewType: 'small'
311
+ }
312
+ ],
313
+ inventory: {
314
+ ats: 500,
315
+ backorderable: false,
316
+ id: 'inventory_m',
317
+ orderable: true,
318
+ preorderable: false,
319
+ stockLevel: 500
320
+ },
321
+ longDescription:
322
+ 'Meet a Commerce Cloud Store new wardrobe favorite - a knit pant that works perfectly 12 months a year!',
323
+ master: {
324
+ masterId: '25518704M',
325
+ orderable: true,
326
+ price: 44.16
327
+ },
328
+ minOrderQuantity: 1,
329
+ name: 'Pull On Pant',
330
+ pageDescription:
331
+ 'Meet a Commerce Cloud Store new wardrobe favorite - a knit pant that works perfectly 12 months a year!',
332
+ pageTitle: 'Pull On Pant',
333
+ price: 44.16,
334
+ pricePerUnit: 44.16,
335
+ primaryCategoryId: 'womens-clothing-bottoms',
336
+ shortDescription:
337
+ 'Meet a Commerce Cloud Store new wardrobe favorite - a knit pant that works perfectly 12 months a year!',
338
+ stepQuantity: 1,
339
+ type: {
340
+ master: true
341
+ },
342
+ validFrom: {
343
+ default: '2010-10-21T04:00:00.000Z'
344
+ },
345
+ variants: [
346
+ {
347
+ orderable: true,
348
+ price: 44.16,
349
+ productId: '701642867098M',
350
+ variationValues: {
351
+ color: 'JJ2XNXX',
352
+ size: '9LG'
353
+ }
354
+ },
355
+ {
356
+ orderable: true,
357
+ price: 44.16,
358
+ productId: '701642867111M',
359
+ variationValues: {
360
+ color: 'JJ2XNXX',
361
+ size: '9SM'
362
+ }
363
+ },
364
+ {
365
+ orderable: true,
366
+ price: 44.16,
367
+ productId: '701642867104M',
368
+ variationValues: {
369
+ color: 'JJ2XNXX',
370
+ size: '9MD'
371
+ }
372
+ },
373
+ {
374
+ orderable: true,
375
+ price: 44.16,
376
+ productId: '701642867128M',
377
+ variationValues: {
378
+ color: 'JJ2XNXX',
379
+ size: '9XL'
380
+ }
381
+ },
382
+ {
383
+ orderable: true,
384
+ price: 44.16,
385
+ productId: '701642867135M',
386
+ variationValues: {
387
+ color: 'JJ2XNXX',
388
+ size: '9XS'
389
+ }
390
+ }
391
+ ],
392
+ variationAttributes: [
393
+ {
394
+ id: 'color',
395
+ name: 'Colour',
396
+ values: [
397
+ {
398
+ name: 'Grey Heather',
399
+ orderable: true,
400
+ value: 'JJ2XNXX'
401
+ }
402
+ ]
403
+ },
404
+ {
405
+ id: 'size',
406
+ name: 'Size',
407
+ values: [
408
+ {
409
+ name: 'XS',
410
+ orderable: true,
411
+ value: '9XS'
412
+ },
413
+ {
414
+ name: 'S',
415
+ orderable: true,
416
+ value: '9SM'
417
+ },
418
+ {
419
+ name: 'M',
420
+ orderable: true,
421
+ value: '9MD'
422
+ },
423
+ {
424
+ name: 'L',
425
+ orderable: true,
426
+ value: '9LG'
427
+ },
428
+ {
429
+ name: 'XL',
430
+ orderable: true,
431
+ value: '9XL'
432
+ }
433
+ ]
434
+ }
435
+ ],
436
+ c_isNewtest: true
437
+ },
438
+ {
439
+ currency: 'GBP',
440
+ id: '25772717M',
441
+ imageGroups: [
442
+ {
443
+ images: [
444
+ {
445
+ alt: 'Zerrick, , large',
446
+ disBaseLink:
447
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwbf4dd593/images/large/PG.CJZERRICK.BLACKLE.PZ.jpg',
448
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwbf4dd593/images/large/PG.CJZERRICK.BLACKLE.PZ.jpg',
449
+ title: 'Zerrick, '
450
+ },
451
+ {
452
+ alt: 'Zerrick, , large',
453
+ disBaseLink:
454
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwcc515695/images/large/PG.CJZERRICK.BLACKLE.BZ.jpg',
455
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwcc515695/images/large/PG.CJZERRICK.BLACKLE.BZ.jpg',
456
+ title: 'Zerrick, '
457
+ }
458
+ ],
459
+ viewType: 'large'
460
+ },
461
+ {
462
+ images: [
463
+ {
464
+ alt: 'Zerrick, , medium',
465
+ disBaseLink:
466
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw44a22aa5/images/medium/PG.CJZERRICK.BLACKLE.PZ.jpg',
467
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw44a22aa5/images/medium/PG.CJZERRICK.BLACKLE.PZ.jpg',
468
+ title: 'Zerrick, '
469
+ },
470
+ {
471
+ alt: 'Zerrick, , medium',
472
+ disBaseLink:
473
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw18ebc5f7/images/medium/PG.CJZERRICK.BLACKLE.BZ.jpg',
474
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw18ebc5f7/images/medium/PG.CJZERRICK.BLACKLE.BZ.jpg',
475
+ title: 'Zerrick, '
476
+ }
477
+ ],
478
+ viewType: 'medium'
479
+ },
480
+ {
481
+ images: [
482
+ {
483
+ alt: 'Zerrick, , small',
484
+ disBaseLink:
485
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9248ea6e/images/small/PG.CJZERRICK.BLACKLE.PZ.jpg',
486
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9248ea6e/images/small/PG.CJZERRICK.BLACKLE.PZ.jpg',
487
+ title: 'Zerrick, '
488
+ },
489
+ {
490
+ alt: 'Zerrick, , small',
491
+ disBaseLink:
492
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwc38f297b/images/small/PG.CJZERRICK.BLACKLE.BZ.jpg',
493
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwc38f297b/images/small/PG.CJZERRICK.BLACKLE.BZ.jpg',
494
+ title: 'Zerrick, '
495
+ }
496
+ ],
497
+ viewType: 'small'
498
+ }
499
+ ],
500
+ inventory: {
501
+ ats: 1500,
502
+ backorderable: false,
503
+ id: 'inventory_m',
504
+ orderable: true,
505
+ preorderable: false,
506
+ stockLevel: 1500
507
+ },
508
+ longDescription: 'The perfect pump for any outfit!',
509
+ master: {
510
+ masterId: '25772717M',
511
+ orderable: true,
512
+ price: 63.36
513
+ },
514
+ minOrderQuantity: 1,
515
+ name: 'Zerrick',
516
+ pageDescription: 'The perfect pump for any outfit!',
517
+ pageTitle: 'Zerrick',
518
+ price: 63.36,
519
+ pricePerUnit: 63.36,
520
+ primaryCategoryId: 'womens-accessories-shoes',
521
+ recommendations: [
522
+ {
523
+ recommendationType: {
524
+ displayValue: 'Product Detail Page - Cross Sell',
525
+ value: 1
526
+ },
527
+ recommendedItemId: '25593254M'
528
+ },
529
+ {
530
+ recommendationType: {
531
+ displayValue: 'Product Detail Page - Cross Sell',
532
+ value: 1
533
+ },
534
+ recommendedItemId: '25720050M'
535
+ }
536
+ ],
537
+ shortDescription: 'The perfect pump for any outfit!',
538
+ stepQuantity: 1,
539
+ type: {
540
+ master: true
541
+ },
542
+ validFrom: {
543
+ default: '2011-03-01T05:00:00.000Z'
544
+ },
545
+ variants: [
546
+ {
547
+ orderable: true,
548
+ price: 63.36,
549
+ productId: '740357357531M',
550
+ variationValues: {
551
+ color: 'BLACKLE',
552
+ size: '065',
553
+ width: 'M'
554
+ }
555
+ },
556
+ {
557
+ orderable: true,
558
+ price: 63.36,
559
+ productId: '740357358095M',
560
+ variationValues: {
561
+ color: 'TAUPETX',
562
+ size: '065',
563
+ width: 'M'
564
+ }
565
+ },
566
+ {
567
+ orderable: true,
568
+ price: 63.36,
569
+ productId: '740357357623M',
570
+ variationValues: {
571
+ color: 'BLACKLE',
572
+ size: '110',
573
+ width: 'M'
574
+ }
575
+ },
576
+ {
577
+ orderable: true,
578
+ price: 63.36,
579
+ productId: '740357357609M',
580
+ variationValues: {
581
+ color: 'BLACKLE',
582
+ size: '100',
583
+ width: 'M'
584
+ }
585
+ },
586
+ {
587
+ orderable: true,
588
+ price: 63.36,
589
+ productId: '740357358156M',
590
+ variationValues: {
591
+ color: 'TAUPETX',
592
+ size: '095',
593
+ width: 'M'
594
+ }
595
+ },
596
+ {
597
+ orderable: true,
598
+ price: 63.36,
599
+ productId: '740357358132M',
600
+ variationValues: {
601
+ color: 'TAUPETX',
602
+ size: '085',
603
+ width: 'M'
604
+ }
605
+ },
606
+ {
607
+ orderable: true,
608
+ price: 63.36,
609
+ productId: '740357358101M',
610
+ variationValues: {
611
+ color: 'TAUPETX',
612
+ size: '070',
613
+ width: 'M'
614
+ }
615
+ },
616
+ {
617
+ orderable: true,
618
+ price: 63.36,
619
+ productId: '740357357562M',
620
+ variationValues: {
621
+ color: 'BLACKLE',
622
+ size: '080',
623
+ width: 'M'
624
+ }
625
+ },
626
+ {
627
+ orderable: true,
628
+ price: 63.36,
629
+ productId: '740357357548M',
630
+ variationValues: {
631
+ color: 'BLACKLE',
632
+ size: '070',
633
+ width: 'M'
634
+ }
635
+ },
636
+ {
637
+ orderable: true,
638
+ price: 63.36,
639
+ productId: '740357358187M',
640
+ variationValues: {
641
+ color: 'TAUPETX',
642
+ size: '110',
643
+ width: 'M'
644
+ }
645
+ },
646
+ {
647
+ orderable: true,
648
+ price: 63.36,
649
+ productId: '740357357593M',
650
+ variationValues: {
651
+ color: 'BLACKLE',
652
+ size: '095',
653
+ width: 'M'
654
+ }
655
+ },
656
+ {
657
+ orderable: true,
658
+ price: 63.36,
659
+ productId: '740357357555M',
660
+ variationValues: {
661
+ color: 'BLACKLE',
662
+ size: '075',
663
+ width: 'M'
664
+ }
665
+ },
666
+ {
667
+ orderable: true,
668
+ price: 63.36,
669
+ productId: '740357357524M',
670
+ variationValues: {
671
+ color: 'BLACKLE',
672
+ size: '060',
673
+ width: 'M'
674
+ }
675
+ },
676
+ {
677
+ orderable: true,
678
+ price: 63.36,
679
+ productId: '740357358149M',
680
+ variationValues: {
681
+ color: 'TAUPETX',
682
+ size: '090',
683
+ width: 'M'
684
+ }
685
+ },
686
+ {
687
+ orderable: true,
688
+ price: 63.36,
689
+ productId: '740357358088M',
690
+ variationValues: {
691
+ color: 'TAUPETX',
692
+ size: '060',
693
+ width: 'M'
694
+ }
695
+ }
696
+ ],
697
+ variationAttributes: [
698
+ {
699
+ id: 'color',
700
+ name: 'Colour',
701
+ values: [
702
+ {
703
+ name: 'Black',
704
+ orderable: true,
705
+ value: 'BLACKLE'
706
+ },
707
+ {
708
+ name: 'Taupe',
709
+ orderable: true,
710
+ value: 'TAUPETX'
711
+ }
712
+ ]
713
+ },
714
+ {
715
+ id: 'size',
716
+ name: 'Size',
717
+ values: [
718
+ {
719
+ name: '6',
720
+ orderable: true,
721
+ value: '060'
722
+ },
723
+ {
724
+ name: '6.5',
725
+ orderable: true,
726
+ value: '065'
727
+ },
728
+ {
729
+ name: '7',
730
+ orderable: true,
731
+ value: '070'
732
+ },
733
+ {
734
+ name: '7.5',
735
+ orderable: true,
736
+ value: '075'
737
+ },
738
+ {
739
+ name: '8',
740
+ orderable: true,
741
+ value: '080'
742
+ },
743
+ {
744
+ name: '8.5',
745
+ orderable: true,
746
+ value: '085'
747
+ },
748
+ {
749
+ name: '9',
750
+ orderable: true,
751
+ value: '090'
752
+ },
753
+ {
754
+ name: '9.5',
755
+ orderable: true,
756
+ value: '095'
757
+ },
758
+ {
759
+ name: '10',
760
+ orderable: true,
761
+ value: '100'
762
+ },
763
+ {
764
+ name: '11',
765
+ orderable: true,
766
+ value: '110'
767
+ }
768
+ ]
769
+ },
770
+ {
771
+ id: 'width',
772
+ name: 'Width',
773
+ values: [
774
+ {
775
+ name: 'M',
776
+ orderable: true,
777
+ value: 'M'
778
+ }
779
+ ]
780
+ }
781
+ ]
782
+ }
783
+ ],
784
+ slugUrl:
785
+ 'https://zzrf-009.dx.commercecloud.salesforce.com/s/RefArchGlobal/womens/clothing/outfits/winter-lookM.html?lang=en_GB',
786
+ stepQuantity: 1,
787
+ type: {
788
+ set: true
789
+ },
790
+ quantity: 1
791
+ },
792
+ {
793
+ currency: 'GBP',
794
+ id: 'some-outfit',
795
+ minOrderQuantity: 1,
796
+ name: 'Some Outfit',
797
+ price: 63.99,
798
+ pricePerUnit: 63.99,
799
+ primaryCategoryId: 'womens-outfits',
800
+ setProducts: [
801
+ {
802
+ currency: 'GBP',
803
+ id: 'P0150M',
804
+ imageGroups: [
805
+ {
806
+ images: [
807
+ {
808
+ alt: 'Upright Case (33L - 3.7Kg), , large',
809
+ disBaseLink:
810
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7cc6a969/images/large/P0150_001.jpg',
811
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7cc6a969/images/large/P0150_001.jpg',
812
+ title: 'Upright Case (33L - 3.7Kg), '
813
+ }
814
+ ],
815
+ viewType: 'large'
816
+ },
817
+ {
818
+ images: [
819
+ {
820
+ alt: 'Upright Case (33L - 3.7Kg), , medium',
821
+ disBaseLink:
822
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwcb7fa07a/images/medium/P0150_001.jpg',
823
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwcb7fa07a/images/medium/P0150_001.jpg',
824
+ title: 'Upright Case (33L - 3.7Kg), '
825
+ }
826
+ ],
827
+ viewType: 'medium'
828
+ },
829
+ {
830
+ images: [
831
+ {
832
+ alt: 'Upright Case (33L - 3.7Kg), , small',
833
+ disBaseLink:
834
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5630e983/images/small/P0150_001.jpg',
835
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5630e983/images/small/P0150_001.jpg',
836
+ title: 'Upright Case (33L - 3.7Kg), '
837
+ }
838
+ ],
839
+ viewType: 'small'
840
+ }
841
+ ],
842
+ inventory: {
843
+ ats: 2,
844
+ backorderable: false,
845
+ id: 'inventory_m',
846
+ orderable: true,
847
+ preorderable: false,
848
+ stockLevel: 2
849
+ },
850
+ longDescription:
851
+ '1682 ballistic nylon and genuine leather inserts |Pull-out metallic handle for wheeling|Top and side handles|Cabin size for convenient travelling|TSA lock for security',
852
+ minOrderQuantity: 1,
853
+ name: 'Upright Case (33L - 3.7Kg)',
854
+ pageDescription:
855
+ 'This practical case is perfect for business – with no need to check in as luggage due to its cabin size dimensions – or for any no-fuss travel.',
856
+ pageKeywords:
857
+ 'Commerce Cloud, P0150, T10 150 Upright 50, General Accessories, Accessories, Packs and Gear',
858
+ pageTitle: 'Commerce Cloud - Upright Case (33L - 3.7Kg)',
859
+ price: 63.99,
860
+ pricePerUnit: 63.99,
861
+ primaryCategoryId: 'mens-accessories-luggage',
862
+ recommendations: [
863
+ {
864
+ recommendationType: {
865
+ displayValue: 'Product Detail Page - Cross Sell',
866
+ value: 1
867
+ },
868
+ recommendedItemId: 'P0048M'
869
+ },
870
+ {
871
+ recommendationType: {
872
+ displayValue: 'Product Detail Page - Cross Sell',
873
+ value: 1
874
+ },
875
+ recommendedItemId: 'P0138M'
876
+ }
877
+ ],
878
+ shortDescription:
879
+ 'This practical and functional case is perfect for business – with no need to check in as luggage due to its cabin size dimensions – or for any convenient no-fuss travel any time any where. You can pull along for comfort or carry by the handle, and with plenty of space inside and a large front pocket with additional zippered pocket, there’s plenty of useful and compact storage.',
880
+ stepQuantity: 1,
881
+ type: {
882
+ item: true
883
+ },
884
+ c_styleNumber: 'P0150',
885
+ c_tabDescription:
886
+ 'This practical and functional case is perfect for business – with no need to check in as luggage due to its cabin size dimensions – or for any convenient no-fuss travel any time any where. You can pull along for comfort or carry by the handle, and with plenty of space inside and a large front pocket with additional zippered pocket, there’s plenty of useful and compact storage.',
887
+ c_tabDetails:
888
+ '1682 ballistic nylon and genuine leather inserts |Pull-out metallic handle for wheeling|Top and side handles|Cabin size for convenient travelling|TSA lock for security'
889
+ },
890
+ {
891
+ currency: 'GBP',
892
+ id: 'P0138M',
893
+ imageGroups: [
894
+ {
895
+ images: [
896
+ {
897
+ alt: 'Laptop Messenger (16L), , large',
898
+ disBaseLink:
899
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw59b8bbd6/images/large/P0138_001.jpg',
900
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw59b8bbd6/images/large/P0138_001.jpg',
901
+ title: 'Laptop Messenger (16L), '
902
+ }
903
+ ],
904
+ viewType: 'large'
905
+ },
906
+ {
907
+ images: [
908
+ {
909
+ alt: 'Laptop Messenger (16L), , medium',
910
+ disBaseLink:
911
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf15f2283/images/medium/P0138_001.jpg',
912
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwf15f2283/images/medium/P0138_001.jpg',
913
+ title: 'Laptop Messenger (16L), '
914
+ }
915
+ ],
916
+ viewType: 'medium'
917
+ },
918
+ {
919
+ images: [
920
+ {
921
+ alt: 'Laptop Messenger (16L), , small',
922
+ disBaseLink:
923
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5bfec55c/images/small/P0138_001.jpg',
924
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5bfec55c/images/small/P0138_001.jpg',
925
+ title: 'Laptop Messenger (16L), '
926
+ }
927
+ ],
928
+ viewType: 'small'
929
+ }
930
+ ],
931
+ inventory: {
932
+ ats: 100,
933
+ backorderable: false,
934
+ id: 'inventory_m',
935
+ inStockDate: '2012-03-09T00:00:00.000Z',
936
+ orderable: true,
937
+ preorderable: true,
938
+ stockLevel: 0
939
+ },
940
+ longDescription:
941
+ '1682 ballistic nylon and genuine leather inserts|Shoulder strap and top handle for alternative carrying options|Main compartment for laptop storage|Internal pockets for storage and organisation|TSA Lock for security',
942
+ minOrderQuantity: 1,
943
+ name: 'Laptop Messenger (16L)',
944
+ pageDescription:
945
+ 'This duffle style laptop messenger bag is great for travelling and commuting with your laptop and other essential work items. Compact and comfortable.',
946
+ pageKeywords:
947
+ 'Commerce Cloud, P0138, Packs and Gear Laptop Messenger, Black, Computer Bag, Cases, Luggage, Sling Bag, Should Begs',
948
+ pageTitle: 'Commerce Cloud - Laptop Messenger (16L)',
949
+ price: 63.99,
950
+ pricePerUnit: 63.99,
951
+ primaryCategoryId: 'mens-accessories-luggage',
952
+ recommendations: [
953
+ {
954
+ recommendationType: {
955
+ displayValue: 'Product Detail Page - Cross Sell',
956
+ value: 1
957
+ },
958
+ recommendedItemId: 'P0150M'
959
+ },
960
+ {
961
+ recommendationType: {
962
+ displayValue: 'Product Detail Page - Cross Sell',
963
+ value: 1
964
+ },
965
+ recommendedItemId: 'P0048M'
966
+ }
967
+ ],
968
+ shortDescription:
969
+ 'This duffle style laptop messenger bag is great for travelling and commuting with your laptop and other essential work items. Compact and comfortable with internal and external pockets for storage, carry over your shoulder for support and balance or by the top handle for a more briefcase-style look.',
970
+ stepQuantity: 1,
971
+ type: {
972
+ item: true
973
+ },
974
+ c_styleNumber: 'P0138',
975
+ c_tabDescription:
976
+ 'This duffle style laptop messenger bag is great for travelling and commuting with your laptop and other essential work items. Compact and comfortable with internal and external pockets for storage, carry over your shoulder for support and balance or by the top handle for a more briefcase-style look.',
977
+ c_tabDetails:
978
+ '1682 ballistic nylon and genuine leather inserts|Shoulder strap and top handle for alternative carrying options|Main compartment for laptop storage|Internal pockets for storage and organisation|TSA Lock for security'
979
+ }
980
+ ],
981
+ slugUrl:
982
+ 'https://zzrf-009.dx.commercecloud.salesforce.com/s/RefArchGlobal/womens/clothing/outfits/some-outfit.html?lang=en_GB',
983
+ stepQuantity: 1,
984
+ type: {
985
+ set: true
986
+ },
987
+ quantity: 1
988
+ },
989
+ {
990
+ currency: 'GBP',
991
+ id: '25501802M',
992
+ imageGroups: [
993
+ {
994
+ images: [
995
+ {
996
+ alt: 'Textured Zip Front Cardigan, , large',
997
+ disBaseLink:
998
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw978b037a/images/large/PG.10219181.JJG80XX.PZ.jpg',
999
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw978b037a/images/large/PG.10219181.JJG80XX.PZ.jpg',
1000
+ title: 'Textured Zip Front Cardigan, '
1001
+ },
1002
+ {
1003
+ alt: 'Textured Zip Front Cardigan, , large',
1004
+ disBaseLink:
1005
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwebe72fa5/images/large/PG.10219181.JJG80XX.BZ.jpg',
1006
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwebe72fa5/images/large/PG.10219181.JJG80XX.BZ.jpg',
1007
+ title: 'Textured Zip Front Cardigan, '
1008
+ }
1009
+ ],
1010
+ viewType: 'large'
1011
+ },
1012
+ {
1013
+ images: [
1014
+ {
1015
+ alt: 'Textured Zip Front Cardigan, Sugar, large',
1016
+ disBaseLink:
1017
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw978b037a/images/large/PG.10219181.JJG80XX.PZ.jpg',
1018
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw978b037a/images/large/PG.10219181.JJG80XX.PZ.jpg',
1019
+ title: 'Textured Zip Front Cardigan, Sugar'
1020
+ },
1021
+ {
1022
+ alt: 'Textured Zip Front Cardigan, Sugar, large',
1023
+ disBaseLink:
1024
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwebe72fa5/images/large/PG.10219181.JJG80XX.BZ.jpg',
1025
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwebe72fa5/images/large/PG.10219181.JJG80XX.BZ.jpg',
1026
+ title: 'Textured Zip Front Cardigan, Sugar'
1027
+ }
1028
+ ],
1029
+ variationAttributes: [
1030
+ {
1031
+ id: 'color',
1032
+ values: [
1033
+ {
1034
+ value: 'JJG80XX'
1035
+ }
1036
+ ]
1037
+ }
1038
+ ],
1039
+ viewType: 'large'
1040
+ },
1041
+ {
1042
+ images: [
1043
+ {
1044
+ alt: 'Textured Zip Front Cardigan, , medium',
1045
+ disBaseLink:
1046
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9cfb0f38/images/medium/PG.10219181.JJG80XX.PZ.jpg',
1047
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9cfb0f38/images/medium/PG.10219181.JJG80XX.PZ.jpg',
1048
+ title: 'Textured Zip Front Cardigan, '
1049
+ },
1050
+ {
1051
+ alt: 'Textured Zip Front Cardigan, , medium',
1052
+ disBaseLink:
1053
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw34667c2c/images/medium/PG.10219181.JJG80XX.BZ.jpg',
1054
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw34667c2c/images/medium/PG.10219181.JJG80XX.BZ.jpg',
1055
+ title: 'Textured Zip Front Cardigan, '
1056
+ }
1057
+ ],
1058
+ viewType: 'medium'
1059
+ },
1060
+ {
1061
+ images: [
1062
+ {
1063
+ alt: 'Textured Zip Front Cardigan, Sugar, medium',
1064
+ disBaseLink:
1065
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9cfb0f38/images/medium/PG.10219181.JJG80XX.PZ.jpg',
1066
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw9cfb0f38/images/medium/PG.10219181.JJG80XX.PZ.jpg',
1067
+ title: 'Textured Zip Front Cardigan, Sugar'
1068
+ },
1069
+ {
1070
+ alt: 'Textured Zip Front Cardigan, Sugar, medium',
1071
+ disBaseLink:
1072
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw34667c2c/images/medium/PG.10219181.JJG80XX.BZ.jpg',
1073
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw34667c2c/images/medium/PG.10219181.JJG80XX.BZ.jpg',
1074
+ title: 'Textured Zip Front Cardigan, Sugar'
1075
+ }
1076
+ ],
1077
+ variationAttributes: [
1078
+ {
1079
+ id: 'color',
1080
+ values: [
1081
+ {
1082
+ value: 'JJG80XX'
1083
+ }
1084
+ ]
1085
+ }
1086
+ ],
1087
+ viewType: 'medium'
1088
+ },
1089
+ {
1090
+ images: [
1091
+ {
1092
+ alt: 'Textured Zip Front Cardigan, , small',
1093
+ disBaseLink:
1094
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9c81767/images/small/PG.10219181.JJG80XX.PZ.jpg',
1095
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9c81767/images/small/PG.10219181.JJG80XX.PZ.jpg',
1096
+ title: 'Textured Zip Front Cardigan, '
1097
+ },
1098
+ {
1099
+ alt: 'Textured Zip Front Cardigan, , small',
1100
+ disBaseLink:
1101
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5f88f729/images/small/PG.10219181.JJG80XX.BZ.jpg',
1102
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5f88f729/images/small/PG.10219181.JJG80XX.BZ.jpg',
1103
+ title: 'Textured Zip Front Cardigan, '
1104
+ }
1105
+ ],
1106
+ viewType: 'small'
1107
+ },
1108
+ {
1109
+ images: [
1110
+ {
1111
+ alt: 'Textured Zip Front Cardigan, Sugar, small',
1112
+ disBaseLink:
1113
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9c81767/images/small/PG.10219181.JJG80XX.PZ.jpg',
1114
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9c81767/images/small/PG.10219181.JJG80XX.PZ.jpg',
1115
+ title: 'Textured Zip Front Cardigan, Sugar'
1116
+ },
1117
+ {
1118
+ alt: 'Textured Zip Front Cardigan, Sugar, small',
1119
+ disBaseLink:
1120
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5f88f729/images/small/PG.10219181.JJG80XX.BZ.jpg',
1121
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5f88f729/images/small/PG.10219181.JJG80XX.BZ.jpg',
1122
+ title: 'Textured Zip Front Cardigan, Sugar'
1123
+ }
1124
+ ],
1125
+ variationAttributes: [
1126
+ {
1127
+ id: 'color',
1128
+ values: [
1129
+ {
1130
+ value: 'JJG80XX'
1131
+ }
1132
+ ]
1133
+ }
1134
+ ],
1135
+ viewType: 'small'
1136
+ },
1137
+ {
1138
+ images: [
1139
+ {
1140
+ alt: 'Textured Zip Front Cardigan, Sugar, swatch',
1141
+ disBaseLink:
1142
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9e0d71c/images/swatch/PG.10219181.JJG80XX.CP.jpg',
1143
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwa9e0d71c/images/swatch/PG.10219181.JJG80XX.CP.jpg',
1144
+ title: 'Textured Zip Front Cardigan, Sugar'
1145
+ }
1146
+ ],
1147
+ variationAttributes: [
1148
+ {
1149
+ id: 'color',
1150
+ values: [
1151
+ {
1152
+ value: 'JJG80XX'
1153
+ }
1154
+ ]
1155
+ }
1156
+ ],
1157
+ viewType: 'swatch'
1158
+ }
1159
+ ],
1160
+ inventory: {
1161
+ ats: 400,
1162
+ backorderable: false,
1163
+ id: 'inventory_m',
1164
+ orderable: true,
1165
+ preorderable: false,
1166
+ stockLevel: 400
1167
+ },
1168
+ longDescription:
1169
+ 'Classically designed, this zip front textured cardigan is perfect to pair with a great Commerce Cloud Store bottom!',
1170
+ master: {
1171
+ masterId: '25501802M',
1172
+ orderable: true,
1173
+ price: 53.11
1174
+ },
1175
+ minOrderQuantity: 1,
1176
+ name: 'Textured Zip Front Cardigan',
1177
+ pageDescription:
1178
+ 'Classically designed, this zip front textured cardigan is perfect to pair with a great Commerce Cloud Store bottom!',
1179
+ pageTitle: 'Textured Zip Front Cardigan',
1180
+ price: 53.11,
1181
+ pricePerUnit: 53.11,
1182
+ primaryCategoryId: 'womens-clothing-tops',
1183
+ productPromotions: [
1184
+ {
1185
+ calloutMsg: 'Buy one Long Center Seam Skirt and get 2 tops',
1186
+ promotionId: 'ChoiceOfBonusProdect-ProductLevel-ruleBased'
1187
+ }
1188
+ ],
1189
+ shortDescription:
1190
+ 'Classically designed, this zip front textured cardigan is perfect to pair with a great Commerce Cloud Store bottom!',
1191
+ slugUrl:
1192
+ 'https://zzrf-009.dx.commercecloud.salesforce.com/s/RefArchGlobal/textured-zip-front-cardigan/25501802M.html?lang=en_GB',
1193
+ stepQuantity: 1,
1194
+ type: {
1195
+ master: true
1196
+ },
1197
+ validFrom: {
1198
+ default: '2010-10-21T04:00:00.000Z'
1199
+ },
1200
+ variants: [
1201
+ {
1202
+ orderable: true,
1203
+ price: 53.11,
1204
+ productId: '701642856139M',
1205
+ variationValues: {
1206
+ color: 'JJG80XX',
1207
+ size: '9LG'
1208
+ }
1209
+ },
1210
+ {
1211
+ orderable: true,
1212
+ price: 53.11,
1213
+ productId: '701642856160M',
1214
+ variationValues: {
1215
+ color: 'JJG80XX',
1216
+ size: '9XL'
1217
+ }
1218
+ },
1219
+ {
1220
+ orderable: true,
1221
+ price: 53.11,
1222
+ productId: '701642856146M',
1223
+ variationValues: {
1224
+ color: 'JJG80XX',
1225
+ size: '9MD'
1226
+ }
1227
+ },
1228
+ {
1229
+ orderable: true,
1230
+ price: 53.11,
1231
+ productId: '701642856153M',
1232
+ variationValues: {
1233
+ color: 'JJG80XX',
1234
+ size: '9SM'
1235
+ }
1236
+ }
1237
+ ],
1238
+ variationAttributes: [
1239
+ {
1240
+ id: 'color',
1241
+ name: 'Colour',
1242
+ values: [
1243
+ {
1244
+ name: 'Sugar',
1245
+ orderable: true,
1246
+ value: 'JJG80XX'
1247
+ }
1248
+ ]
1249
+ },
1250
+ {
1251
+ id: 'size',
1252
+ name: 'Size',
1253
+ values: [
1254
+ {
1255
+ name: 'S',
1256
+ orderable: true,
1257
+ value: '9SM'
1258
+ },
1259
+ {
1260
+ name: 'M',
1261
+ orderable: true,
1262
+ value: '9MD'
1263
+ },
1264
+ {
1265
+ name: 'L',
1266
+ orderable: true,
1267
+ value: '9LG'
1268
+ },
1269
+ {
1270
+ name: 'XL',
1271
+ orderable: true,
1272
+ value: '9XL'
1273
+ }
1274
+ ]
1275
+ }
1276
+ ],
1277
+ quantity: 1
1278
+ },
1279
+ {
1280
+ currency: 'GBP',
1281
+ id: '701642884934M',
1282
+ imageGroups: [
1283
+ {
1284
+ images: [
1285
+ {
1286
+ alt: 'Classic Blouse, , large',
1287
+ disBaseLink:
1288
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw36217548/images/large/PG.10208973.JJZ01XX.PZ.jpg',
1289
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw36217548/images/large/PG.10208973.JJZ01XX.PZ.jpg',
1290
+ title: 'Classic Blouse, '
1291
+ },
1292
+ {
1293
+ alt: 'Classic Blouse, , large',
1294
+ disBaseLink:
1295
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7944a3a4/images/large/PG.10208973.JJZ01XX.BZ.jpg',
1296
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7944a3a4/images/large/PG.10208973.JJZ01XX.BZ.jpg',
1297
+ title: 'Classic Blouse, '
1298
+ }
1299
+ ],
1300
+ viewType: 'large'
1301
+ },
1302
+ {
1303
+ images: [
1304
+ {
1305
+ alt: 'Classic Blouse, Multi, large',
1306
+ disBaseLink:
1307
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw36217548/images/large/PG.10208973.JJZ01XX.PZ.jpg',
1308
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw36217548/images/large/PG.10208973.JJZ01XX.PZ.jpg',
1309
+ title: 'Classic Blouse, Multi'
1310
+ },
1311
+ {
1312
+ alt: 'Classic Blouse, Multi, large',
1313
+ disBaseLink:
1314
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7944a3a4/images/large/PG.10208973.JJZ01XX.BZ.jpg',
1315
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw7944a3a4/images/large/PG.10208973.JJZ01XX.BZ.jpg',
1316
+ title: 'Classic Blouse, Multi'
1317
+ }
1318
+ ],
1319
+ variationAttributes: [
1320
+ {
1321
+ id: 'color',
1322
+ values: [
1323
+ {
1324
+ value: 'JJZ01XX'
1325
+ }
1326
+ ]
1327
+ }
1328
+ ],
1329
+ viewType: 'large'
1330
+ },
1331
+ {
1332
+ images: [
1333
+ {
1334
+ alt: 'Classic Blouse, , medium',
1335
+ disBaseLink:
1336
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5c673dcc/images/medium/PG.10208973.JJZ01XX.PZ.jpg',
1337
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5c673dcc/images/medium/PG.10208973.JJZ01XX.PZ.jpg',
1338
+ title: 'Classic Blouse, '
1339
+ },
1340
+ {
1341
+ alt: 'Classic Blouse, , medium',
1342
+ disBaseLink:
1343
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw6367d44a/images/medium/PG.10208973.JJZ01XX.BZ.jpg',
1344
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw6367d44a/images/medium/PG.10208973.JJZ01XX.BZ.jpg',
1345
+ title: 'Classic Blouse, '
1346
+ }
1347
+ ],
1348
+ viewType: 'medium'
1349
+ },
1350
+ {
1351
+ images: [
1352
+ {
1353
+ alt: 'Classic Blouse, Multi, medium',
1354
+ disBaseLink:
1355
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5c673dcc/images/medium/PG.10208973.JJZ01XX.PZ.jpg',
1356
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw5c673dcc/images/medium/PG.10208973.JJZ01XX.PZ.jpg',
1357
+ title: 'Classic Blouse, Multi'
1358
+ },
1359
+ {
1360
+ alt: 'Classic Blouse, Multi, medium',
1361
+ disBaseLink:
1362
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw6367d44a/images/medium/PG.10208973.JJZ01XX.BZ.jpg',
1363
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw6367d44a/images/medium/PG.10208973.JJZ01XX.BZ.jpg',
1364
+ title: 'Classic Blouse, Multi'
1365
+ }
1366
+ ],
1367
+ variationAttributes: [
1368
+ {
1369
+ id: 'color',
1370
+ values: [
1371
+ {
1372
+ value: 'JJZ01XX'
1373
+ }
1374
+ ]
1375
+ }
1376
+ ],
1377
+ viewType: 'medium'
1378
+ },
1379
+ {
1380
+ images: [
1381
+ {
1382
+ alt: 'Classic Blouse, , small',
1383
+ disBaseLink:
1384
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw876f6604/images/small/PG.10208973.JJZ01XX.PZ.jpg',
1385
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw876f6604/images/small/PG.10208973.JJZ01XX.PZ.jpg',
1386
+ title: 'Classic Blouse, '
1387
+ },
1388
+ {
1389
+ alt: 'Classic Blouse, , small',
1390
+ disBaseLink:
1391
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw95a5c5e9/images/small/PG.10208973.JJZ01XX.BZ.jpg',
1392
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw95a5c5e9/images/small/PG.10208973.JJZ01XX.BZ.jpg',
1393
+ title: 'Classic Blouse, '
1394
+ }
1395
+ ],
1396
+ viewType: 'small'
1397
+ },
1398
+ {
1399
+ images: [
1400
+ {
1401
+ alt: 'Classic Blouse, Multi, small',
1402
+ disBaseLink:
1403
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw876f6604/images/small/PG.10208973.JJZ01XX.PZ.jpg',
1404
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw876f6604/images/small/PG.10208973.JJZ01XX.PZ.jpg',
1405
+ title: 'Classic Blouse, Multi'
1406
+ },
1407
+ {
1408
+ alt: 'Classic Blouse, Multi, small',
1409
+ disBaseLink:
1410
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dw95a5c5e9/images/small/PG.10208973.JJZ01XX.BZ.jpg',
1411
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dw95a5c5e9/images/small/PG.10208973.JJZ01XX.BZ.jpg',
1412
+ title: 'Classic Blouse, Multi'
1413
+ }
1414
+ ],
1415
+ variationAttributes: [
1416
+ {
1417
+ id: 'color',
1418
+ values: [
1419
+ {
1420
+ value: 'JJZ01XX'
1421
+ }
1422
+ ]
1423
+ }
1424
+ ],
1425
+ viewType: 'small'
1426
+ },
1427
+ {
1428
+ images: [
1429
+ {
1430
+ alt: 'Classic Blouse, Multi, swatch',
1431
+ disBaseLink:
1432
+ 'https://edge.disstg.commercecloud.salesforce.com/dw/image/v2/ZZRF_009/on/demandware.static/-/Sites-apparel-m-catalog/default/dwbf88a038/images/swatch/PG.10208973.JJZ01XX.CP.jpg',
1433
+ link: 'https://zzrf-009.dx.commercecloud.salesforce.com/on/demandware.static/-/Sites-apparel-m-catalog/default/dwbf88a038/images/swatch/PG.10208973.JJZ01XX.CP.jpg',
1434
+ title: 'Classic Blouse, Multi'
1435
+ }
1436
+ ],
1437
+ variationAttributes: [
1438
+ {
1439
+ id: 'color',
1440
+ values: [
1441
+ {
1442
+ value: 'JJZ01XX'
1443
+ }
1444
+ ]
1445
+ }
1446
+ ],
1447
+ viewType: 'swatch'
1448
+ }
1449
+ ],
1450
+ inventory: {
1451
+ ats: 100,
1452
+ backorderable: false,
1453
+ id: 'inventory_m',
1454
+ orderable: true,
1455
+ preorderable: false,
1456
+ stockLevel: 100
1457
+ },
1458
+ longDescription:
1459
+ 'We took our long sleeve button front classic blouse and updated it with a new colour for the season.',
1460
+ master: {
1461
+ masterId: '25502072M',
1462
+ orderable: true,
1463
+ price: 42.23
1464
+ },
1465
+ minOrderQuantity: 1,
1466
+ name: 'Classic Blouse',
1467
+ pageDescription:
1468
+ 'We took our long sleeve button front classic blouse and updated it with a new colour for the season.',
1469
+ pageTitle: 'Classic Blouse',
1470
+ price: 42.23,
1471
+ pricePerUnit: 42.23,
1472
+ productPromotions: [
1473
+ {
1474
+ calloutMsg: 'Buy one Long Center Seam Skirt and get 2 tops',
1475
+ promotionId: 'ChoiceOfBonusProdect-ProductLevel-ruleBased'
1476
+ }
1477
+ ],
1478
+ shortDescription:
1479
+ 'We took our long sleeve button front classic blouse and updated it with a new colour for the season.',
1480
+ slugUrl:
1481
+ 'https://zzrf-009.dx.commercecloud.salesforce.com/s/RefArchGlobal/classic-blouse/701642884934M.html?lang=en_GB',
1482
+ stepQuantity: 1,
1483
+ type: {
1484
+ variant: true
1485
+ },
1486
+ unitMeasure: '',
1487
+ unitQuantity: 0,
1488
+ upc: '701642884934',
1489
+ validFrom: {
1490
+ default: '2010-11-18T05:00:00.000Z'
1491
+ },
1492
+ variants: [
1493
+ {
1494
+ orderable: true,
1495
+ price: 42.23,
1496
+ productId: '701642884910M',
1497
+ variationValues: {
1498
+ color: 'JJZ01XX',
1499
+ size: '004'
1500
+ }
1501
+ },
1502
+ {
1503
+ orderable: true,
1504
+ price: 42.23,
1505
+ productId: '701642884927M',
1506
+ variationValues: {
1507
+ color: 'JJZ01XX',
1508
+ size: '006'
1509
+ }
1510
+ },
1511
+ {
1512
+ orderable: true,
1513
+ price: 42.23,
1514
+ productId: '701642884897M',
1515
+ variationValues: {
1516
+ color: 'JJZ01XX',
1517
+ size: '014'
1518
+ }
1519
+ },
1520
+ {
1521
+ orderable: true,
1522
+ price: 42.23,
1523
+ productId: '701642884903M',
1524
+ variationValues: {
1525
+ color: 'JJZ01XX',
1526
+ size: '016'
1527
+ }
1528
+ },
1529
+ {
1530
+ orderable: true,
1531
+ price: 42.23,
1532
+ productId: '701642884934M',
1533
+ variationValues: {
1534
+ color: 'JJZ01XX',
1535
+ size: '008'
1536
+ }
1537
+ },
1538
+ {
1539
+ orderable: true,
1540
+ price: 42.23,
1541
+ productId: '701642884880M',
1542
+ variationValues: {
1543
+ color: 'JJZ01XX',
1544
+ size: '012'
1545
+ }
1546
+ },
1547
+ {
1548
+ orderable: true,
1549
+ price: 42.23,
1550
+ productId: '701642884873M',
1551
+ variationValues: {
1552
+ color: 'JJZ01XX',
1553
+ size: '010'
1554
+ }
1555
+ }
1556
+ ],
1557
+ variationAttributes: [
1558
+ {
1559
+ id: 'color',
1560
+ name: 'Colour',
1561
+ values: [
1562
+ {
1563
+ name: 'Multi',
1564
+ orderable: true,
1565
+ value: 'JJZ01XX'
1566
+ }
1567
+ ]
1568
+ },
1569
+ {
1570
+ id: 'size',
1571
+ name: 'Size',
1572
+ values: [
1573
+ {
1574
+ name: '4',
1575
+ orderable: true,
1576
+ value: '004'
1577
+ },
1578
+ {
1579
+ name: '6',
1580
+ orderable: true,
1581
+ value: '006'
1582
+ },
1583
+ {
1584
+ name: '8',
1585
+ orderable: true,
1586
+ value: '008'
1587
+ },
1588
+ {
1589
+ name: '10',
1590
+ orderable: true,
1591
+ value: '010'
1592
+ },
1593
+ {
1594
+ name: '12',
1595
+ orderable: true,
1596
+ value: '012'
1597
+ },
1598
+ {
1599
+ name: '14',
1600
+ orderable: true,
1601
+ value: '014'
1602
+ },
1603
+ {
1604
+ name: '16',
1605
+ orderable: true,
1606
+ value: '016'
1607
+ }
1608
+ ]
1609
+ }
1610
+ ],
1611
+ variationValues: {
1612
+ color: 'JJZ01XX',
1613
+ size: '008'
1614
+ },
1615
+ c_color: 'JJZ01XX',
1616
+ c_refinementColor: 'miscellaneous',
1617
+ c_size: '008',
1618
+ c_width: 'Z',
1619
+ quantity: 1
1620
+ }
1621
+ ],
1622
+ total: 4
1623
+ }