@faststore/core 2.2.51 → 2.2.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +48 -49
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/eslint/.cache_1gneedd +1 -1
  6. package/.next/cache/next-server.js.nft.json +1 -1
  7. package/.next/cache/webpack/client-production/0.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack +0 -0
  9. package/.next/cache/webpack/server-production/0.pack +0 -0
  10. package/.next/cache/webpack/server-production/index.pack +0 -0
  11. package/.next/next-server.js.nft.json +1 -1
  12. package/.next/prerender-manifest.json +1 -1
  13. package/.next/routes-manifest.json +1 -1
  14. package/.next/server/chunks/350.js +1 -1
  15. package/.next/server/chunks/390.js +393 -453
  16. package/.next/server/chunks/74.js +432 -187
  17. package/.next/server/chunks/773.js +550 -0
  18. package/.next/server/chunks/{979.js → 890.js} +13 -113
  19. package/.next/server/middleware-build-manifest.js +1 -1
  20. package/.next/server/pages/[...slug].js +7 -7
  21. package/.next/server/pages/[...slug].js.nft.json +1 -1
  22. package/.next/server/pages/[slug]/p.js +5 -5
  23. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  24. package/.next/server/pages/api/graphql.js +1 -1
  25. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  26. package/.next/server/pages/en-US/404.html +2 -2
  27. package/.next/server/pages/en-US/500.html +2 -2
  28. package/.next/server/pages/en-US/account.html +2 -2
  29. package/.next/server/pages/en-US/checkout.html +2 -2
  30. package/.next/server/pages/en-US/login.html +2 -2
  31. package/.next/server/pages/en-US/s.html +2 -2
  32. package/.next/server/pages/en-US.html +2 -2
  33. package/.next/server/pages/index.js +5 -5
  34. package/.next/server/pages/index.js.nft.json +1 -1
  35. package/.next/server/pages/s.js +1 -1
  36. package/.next/server/pages/s.js.nft.json +1 -1
  37. package/.next/static/McclVBfxjOJEmRRYVXL7T/_buildManifest.js +1 -0
  38. package/.next/static/chunks/158-042441a60c3b4b56.js +1 -0
  39. package/.next/static/chunks/290-383e1d36f83c367d.js +1 -0
  40. package/.next/static/chunks/pages/{404-2240f0b22db2d370.js → 404-7710903c2a59fa6e.js} +1 -1
  41. package/.next/static/chunks/pages/{500-c0580e3299329874.js → 500-88a231e61179db83.js} +1 -1
  42. package/.next/static/chunks/pages/[...slug]-9b20bb8274fe7854.js +1 -0
  43. package/.next/static/chunks/pages/[slug]/{p-e1df08570f34a0d8.js → p-0ef7dd71888c199e.js} +1 -1
  44. package/.next/static/chunks/pages/{account-b35bcbef719765f3.js → account-f163e14670372c05.js} +1 -1
  45. package/.next/static/chunks/pages/{checkout-55bd56ade4408cbe.js → checkout-cf498a32e110bde8.js} +1 -1
  46. package/.next/static/chunks/pages/index-1cfe3afbd6564f45.js +1 -0
  47. package/.next/static/chunks/pages/{login-3f94bff1503b4fdc.js → login-707636c85f23cac6.js} +1 -1
  48. package/.next/static/chunks/pages/{s-8575d9c5780684d0.js → s-0bfcfd0d40841dcf.js} +1 -1
  49. package/.next/static/chunks/webpack-ba86ae9a63f61805.js +1 -0
  50. package/.next/static/css/14c11109f82a6f9a.css +1 -0
  51. package/.next/static/css/4e42cc999ad62b57.css +1 -0
  52. package/.next/static/css/d456bfc64bc489a2.css +1 -0
  53. package/.next/static/css/e337ce16f77f08a7.css +1 -0
  54. package/.next/trace +81 -80
  55. package/.turbo/turbo-build.log +12 -11
  56. package/.turbo/turbo-test.log +9 -9
  57. package/package.json +9 -9
  58. package/src/components/sections/BannerNewsletter/BannerNewsletter.tsx +2 -1
  59. package/src/components/sections/BannerText/BannerText.tsx +16 -16
  60. package/src/components/sections/BannerText/DefaultComponents.ts +9 -0
  61. package/src/components/sections/BannerText/OverriddenDefaultBannerText.ts +12 -0
  62. package/src/components/sections/Hero/DefaultComponents.ts +11 -0
  63. package/src/components/sections/Hero/Hero.tsx +12 -9
  64. package/src/components/sections/Hero/OverriddenDefaultHero.ts +12 -0
  65. package/src/components/templates/LandingPage/LandingPage.tsx +2 -2
  66. package/src/components/templates/ProductListingPage/ProductListing.tsx +1 -1
  67. package/src/pages/[slug]/p.tsx +1 -1
  68. package/src/pages/index.tsx +2 -2
  69. package/src/sdk/overrides/getOverriddenSection.tsx +5 -3
  70. package/src/sdk/overrides/sections.tsx +8 -0
  71. package/src/typings/overrides.ts +1 -1
  72. package/.next/server/chunks/398.js +0 -611
  73. package/.next/static/EcMI9hKhWC_hpCOHJZCZc/_buildManifest.js +0 -1
  74. package/.next/static/chunks/469-1925f9bd1c82e92b.js +0 -1
  75. package/.next/static/chunks/783-fbcb7a3216c40744.js +0 -1
  76. package/.next/static/chunks/pages/[...slug]-92810abb37fa7bda.js +0 -1
  77. package/.next/static/chunks/pages/index-2506749e45c335bf.js +0 -1
  78. package/.next/static/chunks/webpack-86d49ac4b093b8cf.js +0 -1
  79. package/.next/static/css/29868543c76bc6fd.css +0 -1
  80. package/.next/static/css/527e334fa69cf40a.css +0 -1
  81. package/.next/static/css/a2eefb25a4608343.css +0 -1
  82. package/.next/static/css/dfbdb0f27fd64782.css +0 -1
  83. package/src/components/sections/BannerText/Overrides.tsx +0 -18
  84. package/src/components/sections/Hero/Overrides.tsx +0 -20
  85. /package/.next/static/{EcMI9hKhWC_hpCOHJZCZc → McclVBfxjOJEmRRYVXL7T}/_ssgManifest.js +0 -0
@@ -2,394 +2,149 @@ exports.id = 390;
2
2
  exports.ids = [390];
3
3
  exports.modules = {
4
4
 
5
- /***/ 2390:
5
+ /***/ 7587:
6
6
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
7
7
 
8
8
  "use strict";
9
9
 
10
10
  // EXPORTS
11
11
  __webpack_require__.d(__webpack_exports__, {
12
- "Z": () => (/* binding */ sections_Breadcrumb_Breadcrumb)
12
+ "V": () => (/* binding */ OverriddenDefaultHero)
13
13
  });
14
14
 
15
- // EXTERNAL MODULE: external "react"
16
- var external_react_ = __webpack_require__(6689);
17
- var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
18
- // EXTERNAL MODULE: ./src/components/ui/Link/Link.tsx
19
- var Link = __webpack_require__(7058);
20
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Icon/Icon.js
21
- var Icon = __webpack_require__(2614);
22
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Link/Link.js
23
- var Link_Link = __webpack_require__(727);
24
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/contexts/DropdownContext.js
25
-
26
- const defaultState = {
27
- isOpen: false,
28
- dropdownButtonRef: null,
29
- selectedDropdownItemIndexRef: null,
30
- dropdownItemsRef: null,
31
- id: 'fs-dropdown',
32
- };
33
- const DropdownContext = (0,external_react_.createContext)(defaultState);
34
- /* harmony default export */ const contexts_DropdownContext = (DropdownContext);
35
- //# sourceMappingURL=DropdownContext.js.map
36
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/Dropdown.js
37
-
38
-
39
- const Dropdown = ({ children, isOpen: isOpenDefault = false, onDismiss, id = 'fs-dropdown', }) => {
40
- const [isOpen, setIsOpen] = (0,external_react_.useState)(isOpenDefault);
41
- const dropdownItemsRef = (0,external_react_.useRef)([]);
42
- const selectedDropdownItemIndexRef = (0,external_react_.useRef)(0);
43
- const dropdownButtonRef = (0,external_react_.useRef)(null);
44
- const close = (0,external_react_.useCallback)(() => {
45
- setIsOpen(false);
46
- onDismiss?.();
47
- }, [onDismiss]);
48
- const open = () => {
49
- setIsOpen(true);
50
- };
51
- const toggle = (0,external_react_.useCallback)(() => {
52
- setIsOpen((old) => {
53
- if (old) {
54
- onDismiss?.();
55
- dropdownButtonRef.current?.focus();
56
- }
57
- return !old;
58
- });
59
- }, [onDismiss]);
60
- (0,external_react_.useEffect)(() => {
61
- setIsOpen(isOpenDefault);
62
- }, [isOpenDefault]);
63
- (0,external_react_.useEffect)(() => {
64
- isOpen && dropdownItemsRef?.current[0]?.focus();
65
- }, [isOpen]);
66
- (0,external_react_.useEffect)(() => {
67
- let firstClick = true;
68
- const event = (e) => {
69
- const someItemWasClicked = dropdownItemsRef?.current.some((item) => e.target === item);
70
- if (firstClick) {
71
- firstClick = false;
72
- return;
73
- }
74
- !someItemWasClicked && close();
75
- };
76
- if (isOpen) {
77
- document.addEventListener('click', event);
78
- }
79
- else {
80
- document.removeEventListener('click', event);
81
- }
82
- return () => {
83
- document.removeEventListener('click', event);
84
- };
85
- }, [close, isOpen]);
86
- const value = (0,external_react_.useMemo)(() => {
87
- return {
88
- isOpen,
89
- close,
90
- open,
91
- toggle,
92
- dropdownButtonRef,
93
- onDismiss,
94
- selectedDropdownItemIndexRef,
95
- dropdownItemsRef,
96
- id,
97
- };
98
- }, [close, id, isOpen, onDismiss, toggle]);
99
- return (external_react_default().createElement(contexts_DropdownContext.Provider, { value: value }, children));
15
+ ;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/Hero.tsx
16
+ // This is an example of how it can be used on the starter.
17
+ const SECTION = 'Hero';
18
+ const override = {
19
+ section: SECTION
100
20
  };
101
- /* harmony default export */ const Dropdown_Dropdown = (Dropdown);
102
- //# sourceMappingURL=Dropdown.js.map
103
- // EXTERNAL MODULE: ../components/dist/esm/atoms/Button/Button.js
104
- var Button = __webpack_require__(3339);
105
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/hooks/useDropdown.js
21
+
22
+ // EXTERNAL MODULE: ./src/sdk/overrides/getOverriddenSection.tsx + 13 modules
23
+ var getOverriddenSection = __webpack_require__(170);
24
+ ;// CONCATENATED MODULE: ./src/components/sections/Hero/OverriddenDefaultHero.ts
25
+
106
26
 
107
27
 
108
28
  /**
109
- * Hook to use the Dropdown context.
110
- * @returns Dropdown context.
29
+ * This component exists to support overrides 1.0
30
+ *
31
+ * This allows users to override the default Hero section present in the Headless CMS
111
32
  */
112
- const useDropdown = () => {
113
- const context = (0,external_react_.useContext)(contexts_DropdownContext);
114
- if (context === undefined) {
115
- throw new Error('Do not use useDropdown hook outside the Dropdown context.');
116
- }
117
- return context;
118
- };
119
- //# sourceMappingURL=useDropdown.js.map
120
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/DropdownButton.js
121
-
33
+ const OverriddenDefaultHero = (0,getOverriddenSection/* getOverriddenSection */.v)(override);
122
34
 
35
+ /***/ }),
123
36
 
124
- const DropdownButton = (0,external_react_.forwardRef)(function DropdownButton({ testId = 'fs-dropdown-button', 'aria-label': ariaLabel, children, ...otherProps }, ref) {
125
- const { toggle, dropdownButtonRef, isOpen, id } = useDropdown();
126
- (0,external_react_.useImperativeHandle)(ref, () => dropdownButtonRef.current, [
127
- dropdownButtonRef,
128
- ]);
129
- return (external_react_default().createElement(Button/* default */.Z, { "data-fs-dropdown-button": true, onClick: toggle, "data-testid": testId, ref: dropdownButtonRef, "aria-label": ariaLabel, "aria-expanded": isOpen, "aria-haspopup": "menu", "aria-controls": id, variant: "tertiary", ...otherProps }, children));
130
- });
131
- /* harmony default export */ const Dropdown_DropdownButton = (DropdownButton);
132
- //# sourceMappingURL=DropdownButton.js.map
133
- // EXTERNAL MODULE: external "react-dom"
134
- var external_react_dom_ = __webpack_require__(6405);
135
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/hooks/useDropdownPosition.js
37
+ /***/ 5247:
38
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
136
39
 
137
- /**
138
- * Hook used to find the DropdownMenu position in relation to DropdownButton
139
- * @returns Style with positions.
140
- */
141
- const useDropdownPosition = () => {
142
- const { dropdownButtonRef } = useDropdown();
143
- // Necessary to use this component in SSR
144
- const isBrowser = typeof window !== 'undefined';
145
- const buttonRect = dropdownButtonRef?.current?.getBoundingClientRect();
146
- const topLevel = buttonRect?.top ?? 0;
147
- const topOffset = buttonRect?.height ?? 0;
148
- const leftLevel = buttonRect?.left ?? 0;
149
- // The scroll properties fix the position of DropdownMenu when the scroll is activated.
150
- const scrollTop = isBrowser ? document?.documentElement?.scrollTop : 0;
151
- const scrollLeft = isBrowser ? document?.documentElement?.scrollLeft : 0;
152
- const topPosition = topLevel + topOffset + scrollTop;
153
- const leftPosition = leftLevel + scrollLeft;
154
- return {
155
- position: 'absolute',
156
- top: topPosition,
157
- left: leftPosition,
158
- };
159
- };
160
- //# sourceMappingURL=useDropdownPosition.js.map
161
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/DropdownMenu.js
40
+ "use strict";
41
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
42
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
43
+ /* harmony export */ });
44
+ /* harmony import */ var src_components_ui_Incentives_Incentives__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2411);
45
+ /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3271);
46
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7952);
47
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_2__);
48
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(997);
49
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__);
162
50
 
163
51
 
164
52
 
165
53
 
166
- /*
167
- * This component is based on @reach/dialog.
168
- * https://github.com/reach/reach-ui/blob/main/packages/dialog/src/index.tsx
169
- * https://reach.tech/dialog
170
- */
171
- const DropdownMenu = ({ children, testId = 'fs-dropdown-menu', size = 'regular', style, ...otherProps }) => {
172
- const { isOpen, close, dropdownItemsRef, selectedDropdownItemIndexRef, dropdownButtonRef, id } = useDropdown();
173
- const dropdownPosition = useDropdownPosition();
174
- const childrenLength = external_react_default().Children.toArray(children).length;
175
- const handleDownPress = () => {
176
- if (selectedDropdownItemIndexRef.current < childrenLength - 1) {
177
- selectedDropdownItemIndexRef.current++;
178
- }
179
- else {
180
- selectedDropdownItemIndexRef.current = 0;
181
- }
182
- dropdownItemsRef?.current[selectedDropdownItemIndexRef.current]?.focus();
183
- };
184
- const handleUpPress = () => {
185
- if (selectedDropdownItemIndexRef.current > 0) {
186
- selectedDropdownItemIndexRef.current--;
187
- }
188
- else {
189
- selectedDropdownItemIndexRef.current = childrenLength - 1;
190
- }
191
- dropdownItemsRef?.current[selectedDropdownItemIndexRef.current]?.focus();
192
- };
193
- const handleHomePress = () => {
194
- selectedDropdownItemIndexRef.current = 0;
195
- dropdownItemsRef?.current[selectedDropdownItemIndexRef.current]?.focus();
196
- };
197
- const handleEndPress = () => {
198
- selectedDropdownItemIndexRef.current = childrenLength - 1;
199
- dropdownItemsRef?.current[selectedDropdownItemIndexRef.current]?.focus();
200
- };
201
- const handleEscapePress = () => {
202
- close?.();
203
- dropdownButtonRef?.current?.focus();
204
- };
205
- const handleBackdropKeyDown = (event) => {
206
- if (event.defaultPrevented || event.key === 'Enter') {
207
- return;
208
- }
209
- event.preventDefault();
210
- event.key === 'Escape' && handleEscapePress();
211
- event.key === 'ArrowDown' && handleDownPress();
212
- event.key === 'ArrowUp' && handleUpPress();
213
- event.key === 'Home' && handleHomePress();
214
- event.key === 'End' && handleEndPress();
215
- event.stopPropagation();
216
- };
217
- const clearChildrenReferences = () => {
218
- dropdownItemsRef.current = [];
219
- return null;
220
- };
221
- return isOpen
222
- ? (0,external_react_dom_.createPortal)(external_react_default().createElement("div", { role: "presentation", "data-fs-dropdown-overlay": true, onKeyDown: handleBackdropKeyDown, "data-testid": `${testId}-overlay` },
223
- external_react_default().createElement("div", { role: "menu", "aria-orientation": "vertical", "data-fs-dropdown-menu": true, "data-fs-dropdown-menu-size": size, "data-testid": testId, style: { ...dropdownPosition, ...style }, id: id, ...otherProps }, children)), document.body)
224
- : clearChildrenReferences();
225
- };
226
- /* harmony default export */ const Dropdown_DropdownMenu = (DropdownMenu);
227
- //# sourceMappingURL=DropdownMenu.js.map
228
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Dropdown/DropdownItem.js
229
-
230
-
231
- const DropdownItem = (0,external_react_.forwardRef)(function Button({ children, icon, onClick, testId = 'fs-dropdown-item', ...otherProps }, ref) {
232
- const { dropdownItemsRef, selectedDropdownItemIndexRef, close } = useDropdown();
233
- const [dropdownItemIndex, setDropdownItemIndex] = (0,external_react_.useState)(0);
234
- const dropdownItemRef = (0,external_react_.useRef)();
235
- const addToRefs = (el) => {
236
- if (el && !dropdownItemsRef?.current.includes(el)) {
237
- dropdownItemsRef?.current.push(el);
238
- setDropdownItemIndex(dropdownItemsRef?.current.findIndex((element) => element === el) ?? 0);
239
- }
240
- dropdownItemRef.current = el;
241
- };
242
- const onFocusItem = () => {
243
- selectedDropdownItemIndexRef.current = dropdownItemIndex;
244
- dropdownItemsRef?.current[selectedDropdownItemIndexRef.current]?.focus();
245
- };
246
- const handleOnClickItem = (event) => {
247
- onClick?.(event);
248
- close?.();
249
- };
250
- (0,external_react_.useImperativeHandle)(ref, () => dropdownItemRef.current, []);
251
- return (external_react_default().createElement("button", { "data-fs-dropdown-item": true, "data-testid": testId, ref: addToRefs, onFocus: onFocusItem, onMouseEnter: onFocusItem, onClick: handleOnClickItem, role: "menuitem", tabIndex: -1, "data-index": dropdownItemIndex, ...otherProps },
252
- !!icon && icon,
253
- children));
254
- });
255
- /* harmony default export */ const Dropdown_DropdownItem = (DropdownItem);
256
- //# sourceMappingURL=DropdownItem.js.map
257
- // EXTERNAL MODULE: ../components/dist/esm/atoms/List/List.js
258
- var List = __webpack_require__(4564);
259
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/Divider.js
260
-
261
- const Divider = ({ divider, testId }) => {
262
- const props = {
263
- 'data-fs-breadcrumb-divider': true,
264
- 'aria-hidden': true,
265
- 'data-testid': `${testId}-divider`,
266
- };
267
- if (external_react_default().isValidElement(divider)) {
268
- return external_react_default().cloneElement(divider, props);
269
- }
270
- return external_react_default().createElement("span", { ...props }, divider ?? '/');
271
- };
272
- /* harmony default export */ const Breadcrumb_Divider = (Divider);
273
- //# sourceMappingURL=Divider.js.map
274
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/ListItem.js
275
54
 
55
+ function Incentives({
56
+ incentives
57
+ }) {
58
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(_Section__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
59
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_2___default().section)} section-incentives layout__section`,
60
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx(src_components_ui_Incentives_Incentives__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, {
61
+ incentives: incentives,
62
+ colored: true
63
+ })
64
+ });
65
+ }
276
66
 
277
- const ListItem = ({ children, isLastItem, divider, testId }) => {
278
- const props = {
279
- 'data-testid': `${testId}-item`,
280
- 'data-fs-breadcrumb-item': isLastItem ? 'current' : true,
281
- 'aria-current': isLastItem ? 'page' : undefined,
282
- };
283
- if (!external_react_default().isValidElement(children)) {
284
- return (external_react_default().createElement("li", { "data-fs-breadcrumb-list-item": true },
285
- external_react_default().createElement("span", { ...props },
286
- children,
287
- isLastItem ? null : external_react_default().createElement(Breadcrumb_Divider, { divider: divider, testId: testId }))));
288
- }
289
- return (external_react_default().createElement("li", { "data-fs-breadcrumb-list-item": true },
290
- external_react_default().cloneElement(children, props),
291
- isLastItem ? null : external_react_default().createElement(Breadcrumb_Divider, { divider: divider, testId: testId })));
292
- };
293
- /* harmony default export */ const Breadcrumb_ListItem = (ListItem);
294
- //# sourceMappingURL=ListItem.js.map
295
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/BreadcrumbPure.js
67
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Incentives);
296
68
 
69
+ /***/ }),
297
70
 
71
+ /***/ 8569:
72
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
298
73
 
299
- const BreadcrumbPure = (0,external_react_.forwardRef)(function BreadcrumbPure({ children, divider: rawDivider = '', testId = 'fs-breadcrumb', ...otherProps }, ref) {
300
- return (external_react_default().createElement("nav", { "aria-label": "Breadcrumb", role: "navigation", ref: ref, "data-fs-breadcrumb": true, "data-testid": testId, ...otherProps },
301
- external_react_default().createElement(List/* default */.Z, { as: "ol", "data-fs-breadcrumb-list": true, "data-fs-content": "breadcrumb" }, external_react_default().Children.toArray(children).map((child, index, childrenArray) => {
302
- const isLastItem = index === childrenArray.length - 1;
303
- return (external_react_default().createElement(Breadcrumb_ListItem, { isLastItem: isLastItem, divider: rawDivider, key: `breadcrumb-${index}`, testId: testId }, child));
304
- }))));
305
- });
306
- /* harmony default export */ const Breadcrumb_BreadcrumbPure = (BreadcrumbPure);
307
- //# sourceMappingURL=BreadcrumbPure.js.map
308
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/BreadcrumbBase.js
74
+ "use strict";
75
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
76
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
77
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
78
+ /* harmony export */ });
79
+ /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9785);
80
+ /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_intersection_observer__WEBPACK_IMPORTED_MODULE_0__);
81
+ /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3271);
82
+ /* harmony import */ var src_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7691);
83
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6627);
84
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_3__);
85
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(997);
86
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
87
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_4__]);
88
+ src_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
89
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
309
90
 
91
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
310
92
 
93
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
311
94
 
312
95
 
313
96
 
314
- const BreadcrumbBase = (0,external_react_.forwardRef)(function BreadcrumbBase({ children, divider: rawDivider = '', testId = 'fs-breadcrumb', breadcrumbList, isDesktop = false, renderLink, homeLink, dropdownButtonIcon = external_react_default().createElement(Icon/* default */.Z, { name: "DotsThree" }), collapsedItemsIcon = (external_react_default().createElement(Icon/* default */.Z, { "data-fs-dropdown-item-icon": true, name: "ArrowElbowDownRight" })), ...otherProps }, ref) {
315
- const firstItem = isDesktop ? breadcrumbList[0] : null;
316
- const mediumItems = isDesktop
317
- ? breadcrumbList.slice(1, -2)
318
- : breadcrumbList.slice(0, -2);
319
- const lastItems = breadcrumbList.slice(-2);
320
- const collapseBreadcrumb = breadcrumbList.length > 4;
321
- const breadcrumbLink = (0,external_react_.useCallback)((renderLinkProps) => {
322
- const breadcrumbItem = renderLink?.(renderLinkProps);
323
- const itemProps = renderLinkProps.collapsed
324
- ? {
325
- 'data-fs-breadcrumb-dropdown-link': true,
326
- }
327
- : {
328
- 'data-fs-breadcrumb-link': true,
329
- };
330
- return breadcrumbItem ? ((0,external_react_.cloneElement)(breadcrumbItem, {
331
- ...itemProps,
332
- key: renderLinkProps.itemProps.position,
333
- })) : (external_react_default().createElement(Link_Link/* default */.Z, { ...itemProps, href: renderLinkProps.itemProps.item, key: renderLinkProps.itemProps.position }, renderLinkProps.itemProps.name));
334
- }, [renderLink]);
335
- return (external_react_default().createElement(Breadcrumb_BreadcrumbPure, { ref: ref, "data-fs-breadcrumb-is-desktop": isDesktop, ...otherProps },
336
- homeLink,
337
- !collapseBreadcrumb &&
338
- breadcrumbList.map((item, index) => {
339
- return breadcrumbList.length === index + 1 ? (external_react_default().createElement("span", { key: String(item.position) }, item.name)) : (breadcrumbLink({ itemProps: item, collapsed: false }));
340
- }),
341
- collapseBreadcrumb &&
342
- firstItem &&
343
- breadcrumbLink({ itemProps: firstItem, collapsed: false }),
344
- collapseBreadcrumb && (external_react_default().createElement(Dropdown_Dropdown, null,
345
- external_react_default().createElement(Dropdown_DropdownButton, { "aria-label": "View More", "data-fs-breadcrumb-dropdown-button": true, size: "small" }, dropdownButtonIcon),
346
- external_react_default().createElement(Dropdown_DropdownMenu, { "data-fs-breadcrumb-dropdown-menu": true }, mediumItems.map((item) => (external_react_default().createElement(Dropdown_DropdownItem, { "data-fs-breadcrumb-dropdown-item": true, key: String(item.position), icon: collapsedItemsIcon }, breadcrumbLink({ itemProps: item, collapsed: true }))))))),
347
- collapseBreadcrumb &&
348
- lastItems.map((item, index) => {
349
- return lastItems.length === index + 1 ? (external_react_default().createElement("span", { key: String(item.position) }, item.name)) : (breadcrumbLink({ itemProps: item, collapsed: false }));
350
- })));
351
- });
352
- /* harmony default export */ const Breadcrumb_BreadcrumbBase = (BreadcrumbBase);
353
- //# sourceMappingURL=BreadcrumbBase.js.map
354
- ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/Breadcrumb.js
355
-
356
-
357
- const Breadcrumb = ({ breadcrumbList, ...otherProps }) => (external_react_default().createElement((external_react_default()).Fragment, null,
358
- external_react_default().createElement(Breadcrumb_BreadcrumbBase, { breadcrumbList: breadcrumbList, ...otherProps }),
359
- external_react_default().createElement(Breadcrumb_BreadcrumbBase, { breadcrumbList: breadcrumbList, isDesktop: true, ...otherProps })));
360
- /* harmony default export */ const Breadcrumb_Breadcrumb = (Breadcrumb);
361
- //# sourceMappingURL=Breadcrumb.js.map
362
- // EXTERNAL MODULE: ./src/sdk/overrides/overrides.ts
363
- var overrides = __webpack_require__(7506);
364
- ;// CONCATENATED MODULE: ./src/customizations/src/components/overrides/Breadcrumb.tsx
365
- // This is an example of how it can be used on the starter.
366
- const SECTION = 'Breadcrumb';
367
- const override = {
368
- section: SECTION
369
- };
370
97
 
371
- ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/Overrides.tsx
372
98
 
373
99
 
374
100
 
375
- const {
376
- Breadcrumb: Overrides_Breadcrumb,
377
- Icon: Overrides_Icon
378
- } = (0,overrides/* getSectionOverrides */.f)({
379
- Breadcrumb: Breadcrumb_Breadcrumb,
380
- Icon: Icon/* default */.Z
381
- }, override);
101
+ function ProductShelfSection(_ref) {
102
+ let otherProps = Object.assign({}, _ref);
103
+ const {
104
+ ref,
105
+ inView
106
+ } = (0,react_intersection_observer__WEBPACK_IMPORTED_MODULE_0__.useInView)();
107
+ return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(_Section__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
108
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_3___default().section)} section-product-shelf layout__section`,
109
+ ref: ref,
110
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(src_components_ui_ProductShelf__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z, _objectSpread({
111
+ inView: inView
112
+ }, otherProps))
113
+ });
114
+ }
382
115
 
383
- // EXTERNAL MODULE: external "react/jsx-runtime"
384
- var jsx_runtime_ = __webpack_require__(997);
385
- ;// CONCATENATED MODULE: ./src/components/ui/Breadcrumb/Breadcrumb.tsx
386
- const _excluded = ["icon", "alt"];
116
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductShelfSection);
117
+ __webpack_async_result__();
118
+ } catch(e) { __webpack_async_result__(e); } });
387
119
 
388
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
120
+ /***/ }),
389
121
 
390
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
122
+ /***/ 2834:
123
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
391
124
 
392
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
125
+ "use strict";
126
+ __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
127
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
128
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
129
+ /* harmony export */ });
130
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
131
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
132
+ /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9785);
133
+ /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__);
134
+ /* harmony import */ var src_components_product_ProductCard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(8553);
135
+ /* harmony import */ var src_components_skeletons_ProductTilesSkeleton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8860);
136
+ /* harmony import */ var src_components_ui_Tiles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(6971);
137
+ /* harmony import */ var src_components_ui_Tiles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7901);
138
+ /* harmony import */ var src_sdk_analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5184);
139
+ /* harmony import */ var src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4867);
140
+ /* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(3271);
141
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2366);
142
+ /* harmony import */ var _section_module_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_section_module_scss__WEBPACK_IMPORTED_MODULE_6__);
143
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(997);
144
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
145
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_3__]);
146
+ src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
147
+ const _excluded = ["title"];
393
148
 
394
149
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
395
150
 
@@ -400,150 +155,335 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
400
155
 
401
156
 
402
157
 
403
- const Breadcrumb_Breadcrumb_Breadcrumb = _ref => {
404
- let {
405
- icon = Overrides_Icon.props.name ?? 'Home',
406
- alt = 'Go to homepage'
407
- } = _ref,
408
- otherProps = _objectWithoutProperties(_ref, _excluded);
409
158
 
410
- return /*#__PURE__*/jsx_runtime_.jsx(Overrides_Breadcrumb.Component, _objectSpread(_objectSpread({
411
- homeLink: /*#__PURE__*/jsx_runtime_.jsx(Link/* default */.Z, {
412
- "data-fs-breadcrumb-link": true,
413
- "data-fs-breadcrumb-link-home": true,
414
- "aria-label": alt,
415
- href: "/",
416
- prefetch: false,
417
- children: /*#__PURE__*/jsx_runtime_.jsx(Overrides_Icon.Component, _objectSpread(_objectSpread({
418
- width: 18,
419
- height: 18,
420
- weight: "bold"
421
- }, Overrides_Icon.props), {}, {
422
- name: icon
423
- }))
424
- }),
425
- renderLink: ({
426
- itemProps: {
427
- item: link,
428
- name
429
- }
430
- }) => /*#__PURE__*/jsx_runtime_.jsx(Link/* default */.Z, {
431
- "data-fs-breadcrumb-link": true,
432
- href: link,
433
- prefetch: false,
434
- children: name
435
- })
436
- }, Overrides_Breadcrumb.props), otherProps));
437
- };
438
159
 
439
- /* harmony default export */ const ui_Breadcrumb_Breadcrumb = (/*#__PURE__*/(0,external_react_.memo)(Breadcrumb_Breadcrumb_Breadcrumb));
440
- // EXTERNAL MODULE: ./src/components/sections/Section/Section.tsx
441
- var Section = __webpack_require__(3271);
442
- // EXTERNAL MODULE: ./src/components/sections/Breadcrumb/section.module.scss
443
- var section_module = __webpack_require__(5000);
444
- var section_module_default = /*#__PURE__*/__webpack_require__.n(section_module);
445
- // EXTERNAL MODULE: ./src/sdk/overrides/PageProvider.tsx
446
- var PageProvider = __webpack_require__(5953);
447
- ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/Breadcrumb.tsx
448
- function Breadcrumb_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
449
160
 
450
- function Breadcrumb_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? Breadcrumb_ownKeys(Object(source), !0).forEach(function (key) { Breadcrumb_defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : Breadcrumb_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
451
161
 
452
- function Breadcrumb_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
453
162
 
454
163
 
164
+ const NUMBER_ITEMS_TO_EXPAND_FIRST = 3;
165
+ const NUMBER_ITEMS_TO_EXPAND_FIRST_TWO = 2;
455
166
 
167
+ const getRatio = (products, idx) => {
168
+ const expandsFirstTile = products === NUMBER_ITEMS_TO_EXPAND_FIRST && idx === 0;
169
+ const expandsFirstTwoTile = products === NUMBER_ITEMS_TO_EXPAND_FIRST_TWO && (idx === 0 || idx === 1);
456
170
 
171
+ if (expandsFirstTile || expandsFirstTwoTile) {
172
+ return 5 / 3;
173
+ }
457
174
 
175
+ return 3 / 4;
176
+ };
458
177
 
178
+ const getSizes = (products, idx) => {
179
+ const expandsFirstTile = products === NUMBER_ITEMS_TO_EXPAND_FIRST && idx === 0;
180
+ const expandsFirstTwoTile = products === NUMBER_ITEMS_TO_EXPAND_FIRST_TWO && (idx === 0 || idx === 1);
459
181
 
182
+ if (expandsFirstTile || expandsFirstTwoTile) {
183
+ return {
184
+ width: 594,
185
+ height: 364
186
+ };
187
+ }
460
188
 
461
- function BreadcrumbSection(_ref) {
462
- let otherProps = Object.assign({}, _ref);
463
- const context = (0,PageProvider/* usePage */.qt)();
464
- const title = (0,PageProvider/* isPLP */.OJ)(context) ? context?.data?.collection?.seo?.title : 'All Products';
465
- const fallback = [{
466
- item: '/',
467
- name: title,
468
- position: 1
469
- }];
470
- const breadcrumbList = (0,PageProvider/* isPDP */.tS)(context) ? context?.data?.product?.breadcrumbList?.itemListElement : (0,PageProvider/* isPLP */.OJ)(context) ? context?.data?.collection?.breadcrumbList?.itemListElement : fallback;
471
- return /*#__PURE__*/jsx_runtime_.jsx(Section/* default */.Z, {
472
- className: `${(section_module_default()).section} section-breadcrumb`,
473
- children: /*#__PURE__*/jsx_runtime_.jsx(ui_Breadcrumb_Breadcrumb, Breadcrumb_objectSpread({
474
- breadcrumbList: breadcrumbList
475
- }, otherProps))
189
+ return {
190
+ width: 284,
191
+ height: 364
192
+ };
193
+ };
194
+
195
+ const ProductTiles = _ref => {
196
+ let {
197
+ title
198
+ } = _ref,
199
+ variables = _objectWithoutProperties(_ref, _excluded);
200
+
201
+ const viewedOnce = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
202
+ const {
203
+ ref,
204
+ inView
205
+ } = (0,react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__.useInView)();
206
+ const data = (0,src_sdk_product_useProductsQuery__WEBPACK_IMPORTED_MODULE_3__/* .useProductsQuery */ .k)(variables);
207
+ const products = data?.search?.products;
208
+ const productEdges = products?.edges ?? [];
209
+ const {
210
+ sendViewItemListEvent
211
+ } = (0,src_sdk_analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_4__/* .useViewItemListEvent */ .m)({
212
+ products: productEdges,
213
+ title,
214
+ page: 0,
215
+ pageSize: 0
476
216
  });
477
- }
217
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
218
+ if (inView && !viewedOnce.current && productEdges.length) {
219
+ sendViewItemListEvent();
220
+ viewedOnce.current = true;
221
+ }
222
+ }, [inView, productEdges.length, sendViewItemListEvent]);
478
223
 
479
- /* harmony default export */ const sections_Breadcrumb_Breadcrumb = (/*#__PURE__*/(0,external_react_.memo)(BreadcrumbSection));
224
+ if (products?.edges.length === 0) {
225
+ return null;
226
+ }
227
+
228
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
229
+ className: `${(_section_module_scss__WEBPACK_IMPORTED_MODULE_6___default().section)} section-product-tiles layout__section`,
230
+ ref: ref,
231
+ children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx("h2", {
232
+ className: "text__title-section layout__content",
233
+ children: title
234
+ }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_skeletons_ProductTilesSkeleton__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
235
+ loading: !products,
236
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_ui_Tiles__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, {
237
+ children: productEdges.map((product, idx) => /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_ui_Tiles__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, {
238
+ children: /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx(src_components_product_ProductCard__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, {
239
+ "data-testid": "tile-card",
240
+ product: product.node,
241
+ index: idx + 1,
242
+ variant: "wide",
243
+ aspectRatio: getRatio(productEdges.length, idx),
244
+ imgProps: getSizes(productEdges.length, idx)
245
+ })
246
+ }, product.node.id))
247
+ })
248
+ })]
249
+ });
250
+ };
251
+
252
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductTiles);
253
+ __webpack_async_result__();
254
+ } catch(e) { __webpack_async_result__(e); } });
480
255
 
481
256
  /***/ }),
482
257
 
483
- /***/ 5953:
258
+ /***/ 8860:
484
259
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
485
260
 
486
261
  "use strict";
487
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
488
- /* harmony export */ "En": () => (/* binding */ isSearchPage),
489
- /* harmony export */ "OJ": () => (/* binding */ isPLP),
490
- /* harmony export */ "ZP": () => (__WEBPACK_DEFAULT_EXPORT__),
491
- /* harmony export */ "al": () => (/* binding */ usePDP),
492
- /* harmony export */ "qt": () => (/* binding */ usePage),
493
- /* harmony export */ "tS": () => (/* binding */ isPDP)
494
- /* harmony export */ });
495
- /* unused harmony exports usePLP, useSearchPage */
496
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
497
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
498
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(997);
499
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
262
+
263
+ // EXPORTS
264
+ __webpack_require__.d(__webpack_exports__, {
265
+ "Z": () => (/* binding */ ProductTilesSkeleton_ProductTilesSkeleton)
266
+ });
267
+
268
+ // EXTERNAL MODULE: ./src/components/ui/Tiles/Tiles.tsx + 1 modules
269
+ var Tiles = __webpack_require__(6971);
270
+ // EXTERNAL MODULE: ../ui/dist/esm/components/organisms/Tiles/Tile.js
271
+ var Tile = __webpack_require__(7901);
272
+ // EXTERNAL MODULE: ../components/dist/esm/atoms/Skeleton/Skeleton.js
273
+ var Skeleton = __webpack_require__(792);
274
+ // EXTERNAL MODULE: external "react/jsx-runtime"
275
+ var jsx_runtime_ = __webpack_require__(997);
276
+ ;// CONCATENATED MODULE: ./src/components/skeletons/ProductTilesSkeleton/ProductTileSkeleton/ProductTileSkeleton.tsx
500
277
 
501
278
 
502
- const isPDP = x => x?.data?.product?.sku != undefined && x?.data?.product?.sku != null;
503
- const isPLP = x => x?.data?.collection?.seo != undefined && x?.data?.collection?.seo != null && x?.data?.collection?.sku == undefined;
504
- const isSearchPage = x => x === undefined || x?.data?.title != undefined || x?.data?.searchTerm != undefined;
505
- const PageContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);
506
279
 
507
- function PageProvider({
508
- context,
509
- children
280
+
281
+ function ProductTileSkeleton({
282
+ index,
283
+ aspectRatio = 1
510
284
  }) {
511
- const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({
512
- context
513
- }), [context]);
514
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx(PageContext.Provider, {
515
- value: value,
516
- children: children
285
+ return /*#__PURE__*/(0,jsx_runtime_.jsxs)("div", {
286
+ "data-fs-product-tile-skeleton": true,
287
+ "data-fs-product-tile-skeleton-index": index,
288
+ children: [/*#__PURE__*/jsx_runtime_.jsx("div", {
289
+ "data-fs-product-tile-skeleton-image": true,
290
+ "data-fs-product-tile-skeleton-index": index,
291
+ style: {
292
+ '--fs-product-tile-skeleton-image-aspect-ratio': aspectRatio
293
+ },
294
+ children: /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
295
+ size: {
296
+ width: 'auto',
297
+ height: '100%'
298
+ },
299
+ loading: true
300
+ })
301
+ }), /*#__PURE__*/(0,jsx_runtime_.jsxs)("div", {
302
+ "data-fs-product-tile-skeleton-content": true,
303
+ "data-fs-product-tile-skeleton-index": index,
304
+ children: [/*#__PURE__*/(0,jsx_runtime_.jsxs)("div", {
305
+ "data-fs-product-tile-skeleton-heading": true,
306
+ children: [/*#__PURE__*/jsx_runtime_.jsx("div", {
307
+ "data-fs-product-tile-skeleton-text": true,
308
+ "data-fs-product-tile-skeleton-index": index,
309
+ children: /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
310
+ size: {
311
+ width: '70%',
312
+ height: '1.5rem'
313
+ }
314
+ })
315
+ }), /*#__PURE__*/jsx_runtime_.jsx("div", {
316
+ "data-fs-product-tile-skeleton-price": true,
317
+ children: /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
318
+ size: {
319
+ width: '60%',
320
+ height: '1.5rem'
321
+ }
322
+ })
323
+ })]
324
+ }), /*#__PURE__*/jsx_runtime_.jsx("div", {
325
+ "data-fs-product-tile-skeleton-badge": true,
326
+ "data-fs-product-tile-skeleton-index": index,
327
+ children: /*#__PURE__*/jsx_runtime_.jsx(Skeleton/* default */.Z, {
328
+ size: {
329
+ width: '6rem',
330
+ height: '2rem'
331
+ },
332
+ border: "pill"
333
+ })
334
+ })]
335
+ })]
517
336
  });
518
337
  }
519
338
 
520
- function usePage() {
521
- const {
522
- context
523
- } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(PageContext);
339
+ /* harmony default export */ const ProductTileSkeleton_ProductTileSkeleton = (ProductTileSkeleton);
340
+ ;// CONCATENATED MODULE: ./src/components/skeletons/ProductTilesSkeleton/ProductTilesSkeleton.tsx
341
+
342
+ // TODO: // Replace it when items number become dynamically defined
343
+
344
+
345
+
346
+ const DEFAULT_ITEMS_NUMBER = 3;
347
+ const DEFAULT_ITEMS_NUMBER_TWO = 2;
524
348
 
525
- if (context == null) {
526
- throw new Error('Missing Overrides context on React tree');
349
+ const getRatio = (products, idx) => {
350
+ const expandsFirstTile = products === DEFAULT_ITEMS_NUMBER && idx === 0;
351
+ const expandsFirstTwoTile = products === DEFAULT_ITEMS_NUMBER_TWO && (idx === 0 || idx === 1);
352
+
353
+ if (expandsFirstTile || expandsFirstTwoTile) {
354
+ return 5 / 3;
527
355
  }
528
356
 
529
- return context;
357
+ return 3 / 4;
358
+ };
359
+
360
+ function ProductTilesSkeleton({
361
+ children,
362
+ loading = true
363
+ }) {
364
+ return loading ? /*#__PURE__*/jsx_runtime_.jsx(Tiles/* default */.Z, {
365
+ children: Array.from({
366
+ length: DEFAULT_ITEMS_NUMBER
367
+ }, (_, index) => /*#__PURE__*/jsx_runtime_.jsx(Tile/* default */.Z, {
368
+ children: /*#__PURE__*/jsx_runtime_.jsx(ProductTileSkeleton_ProductTileSkeleton, {
369
+ index: index + 1,
370
+ aspectRatio: getRatio(DEFAULT_ITEMS_NUMBER, index)
371
+ })
372
+ }, String(index)))
373
+ }) : /*#__PURE__*/jsx_runtime_.jsx(jsx_runtime_.Fragment, {
374
+ children: children
375
+ });
530
376
  }
531
- const usePDP = () => usePage();
532
- const usePLP = () => usePage();
533
- const useSearchPage = () => usePage();
534
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PageProvider);
377
+
378
+ /* harmony default export */ const ProductTilesSkeleton_ProductTilesSkeleton = (ProductTilesSkeleton);
535
379
 
536
380
  /***/ }),
537
381
 
538
- /***/ 5000:
382
+ /***/ 6971:
383
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
384
+
385
+ "use strict";
386
+
387
+ // EXPORTS
388
+ __webpack_require__.d(__webpack_exports__, {
389
+ "Z": () => (/* binding */ ui_Tiles_Tiles)
390
+ });
391
+
392
+ // EXTERNAL MODULE: external "react"
393
+ var external_react_ = __webpack_require__(6689);
394
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
395
+ ;// CONCATENATED MODULE: ../ui/dist/esm/components/organisms/Tiles/Tiles.js
396
+
397
+
398
+ const MIN_CHILDREN = 2;
399
+ const MAX_CHILDREN = 4;
400
+ const NUMBER_ITEMS_TO_EXPAND_FIRST_TWO = 2;
401
+ const NUMBER_ITEMS_TO_EXPAND_FIRST = 3;
402
+ const Tiles = (0,external_react_.forwardRef)(function Tiles({ testId = 'store-tiles', children, ...otherProps }, ref) {
403
+ const childrenCount = external_react_.Children.count(children);
404
+ if (false) {}
405
+ if (false) {}
406
+ const expandedClass = childrenCount === NUMBER_ITEMS_TO_EXPAND_FIRST
407
+ ? 'expanded-first'
408
+ : childrenCount === NUMBER_ITEMS_TO_EXPAND_FIRST_TWO
409
+ ? 'expanded-first-two'
410
+ : '';
411
+ return (external_react_default().createElement("ul", { ref: ref, role: "list", "data-fs-tiles": true, "data-fs-tiles-variant": expandedClass, "data-fs-content": "tiles", "data-testid": testId, ...otherProps }, children));
412
+ });
413
+ /* harmony default export */ const Tiles_Tiles = (Tiles);
414
+ //# sourceMappingURL=Tiles.js.map
415
+ // EXTERNAL MODULE: external "react/jsx-runtime"
416
+ var jsx_runtime_ = __webpack_require__(997);
417
+ ;// CONCATENATED MODULE: ./src/components/ui/Tiles/Tiles.tsx
418
+ const _excluded = ["children"];
419
+
420
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
421
+
422
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
423
+
424
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
425
+
426
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
427
+
428
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
429
+
430
+
431
+
432
+
433
+ const Tiles_Tiles_Tiles = _ref => {
434
+ let {
435
+ children
436
+ } = _ref,
437
+ otherProps = _objectWithoutProperties(_ref, _excluded);
438
+
439
+ return /*#__PURE__*/jsx_runtime_.jsx(Tiles_Tiles, _objectSpread(_objectSpread({}, otherProps), {}, {
440
+ children: children
441
+ }));
442
+ };
443
+
444
+ /* harmony default export */ const ui_Tiles_Tiles = (Tiles_Tiles_Tiles);
445
+
446
+ /***/ }),
447
+
448
+ /***/ 7952:
449
+ /***/ ((module) => {
450
+
451
+ // Exports
452
+ module.exports = {
453
+ "section": "section_section__rUfAR"
454
+ };
455
+
456
+
457
+ /***/ }),
458
+
459
+ /***/ 2366:
539
460
  /***/ ((module) => {
540
461
 
541
462
  // Exports
542
463
  module.exports = {
543
- "section": "section_section__hRV9B"
464
+ "section": "section_section__hGuvG",
465
+ "loading": "section_loading__GpWrl"
544
466
  };
545
467
 
546
468
 
469
+ /***/ }),
470
+
471
+ /***/ 7901:
472
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
473
+
474
+ "use strict";
475
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
476
+ /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
477
+ /* harmony export */ });
478
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
479
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
480
+
481
+ const Tile = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Tile({ testId = 'store-tile', children, ...otherProps }, ref) {
482
+ return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { ref: ref, role: "listitem", "data-fs-tile": true, "data-testid": testId, ...otherProps }, children));
483
+ });
484
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Tile);
485
+ //# sourceMappingURL=Tile.js.map
486
+
547
487
  /***/ })
548
488
 
549
489
  };