@faststore/core 2.2.53 → 2.2.54

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 (103) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +54 -60
  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/react-loadable-manifest.json +3 -3
  14. package/.next/routes-manifest.json +1 -1
  15. package/.next/server/chunks/390.js +453 -393
  16. package/.next/server/chunks/520.js +491 -0
  17. package/.next/server/chunks/732.js +1 -1
  18. package/.next/server/chunks/74.js +2043 -559
  19. package/.next/server/chunks/796.js +495 -0
  20. package/.next/server/middleware-build-manifest.js +1 -1
  21. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  22. package/.next/server/pages/404.js +14 -0
  23. package/.next/server/pages/404.js.nft.json +1 -1
  24. package/.next/server/pages/500.js +14 -0
  25. package/.next/server/pages/500.js.nft.json +1 -1
  26. package/.next/server/pages/[...slug].js +12 -12
  27. package/.next/server/pages/[...slug].js.nft.json +1 -1
  28. package/.next/server/pages/[slug]/p.js +7 -7
  29. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  30. package/.next/server/pages/_app.js.nft.json +1 -1
  31. package/.next/server/pages/account.js +14 -0
  32. package/.next/server/pages/account.js.nft.json +1 -1
  33. package/.next/server/pages/checkout.js +14 -0
  34. package/.next/server/pages/checkout.js.nft.json +1 -1
  35. package/.next/server/pages/en-US/404.html +2 -2
  36. package/.next/server/pages/en-US/500.html +2 -2
  37. package/.next/server/pages/en-US/account.html +2 -2
  38. package/.next/server/pages/en-US/checkout.html +2 -2
  39. package/.next/server/pages/en-US/login.html +2 -2
  40. package/.next/server/pages/en-US/s.html +2 -2
  41. package/.next/server/pages/en-US.html +2 -2
  42. package/.next/server/pages/index.js +7 -7
  43. package/.next/server/pages/index.js.nft.json +1 -1
  44. package/.next/server/pages/login.js +14 -0
  45. package/.next/server/pages/login.js.nft.json +1 -1
  46. package/.next/server/pages/s.js +8 -1
  47. package/.next/server/pages/s.js.nft.json +1 -1
  48. package/.next/static/H_kSoqYPjjK2sM3cxP_pS/_buildManifest.js +1 -0
  49. package/.next/static/chunks/158-02891d5ee60b505c.js +1 -0
  50. package/.next/static/chunks/251.98f500dd8ba008ae.js +1 -0
  51. package/.next/static/chunks/497-176c5263d6378afc.js +1 -0
  52. package/.next/static/chunks/585.92188327fc30a684.js +1 -0
  53. package/.next/static/chunks/800.ea75aa39e939d9af.js +1 -0
  54. package/.next/static/chunks/897-b07932d813bb7dac.js +1 -0
  55. package/.next/static/chunks/pages/{404-7710903c2a59fa6e.js → 404-0bacd82dcf801c94.js} +1 -1
  56. package/.next/static/chunks/pages/{500-88a231e61179db83.js → 500-4dceb834e001d990.js} +1 -1
  57. package/.next/static/chunks/pages/[...slug]-0765ca2a2572ab9e.js +1 -0
  58. package/.next/static/chunks/pages/[slug]/p-a402fb32d2a6ec95.js +1 -0
  59. package/.next/static/chunks/pages/{account-f163e14670372c05.js → account-57c0c1f70eed76a6.js} +1 -1
  60. package/.next/static/chunks/pages/{checkout-cf498a32e110bde8.js → checkout-e5db8918e7c9c75e.js} +1 -1
  61. package/.next/static/chunks/pages/index-d0c9985f7dde64ce.js +1 -0
  62. package/.next/static/chunks/pages/{login-707636c85f23cac6.js → login-39000c786b4f6222.js} +1 -1
  63. package/.next/static/chunks/pages/s-e195109f5acced7c.js +1 -0
  64. package/.next/static/chunks/webpack-422f774fb36da0fb.js +1 -0
  65. package/.next/static/css/{4e42cc999ad62b57.css → 0dc997f9da3027b7.css} +1 -1
  66. package/.next/static/css/58e1e061ceea2cd8.css +1 -0
  67. package/.next/static/css/{d7bbfbd552f407e9.css → cbccabebb36f7f92.css} +1 -1
  68. package/.next/static/css/{d456bfc64bc489a2.css → cf062feb79245123.css} +1 -1
  69. package/.next/trace +81 -81
  70. package/.turbo/turbo-build.log +19 -19
  71. package/.turbo/turbo-test.log +11 -11
  72. package/package.json +2 -2
  73. package/src/components/sections/ProductShelf/DefaultComponents.ts +9 -0
  74. package/src/components/sections/ProductShelf/OverriddenDefaultProductShelf.ts +12 -0
  75. package/src/components/templates/LandingPage/LandingPage.tsx +1 -1
  76. package/src/components/templates/ProductListingPage/ProductListing.tsx +1 -1
  77. package/src/components/ui/ProductShelf/ProductShelf.tsx +11 -12
  78. package/src/pages/index.tsx +1 -1
  79. package/src/sdk/overrides/sections.tsx +8 -4
  80. package/src/typings/overrides.ts +4 -1
  81. package/.next/server/chunks/117.js +0 -430
  82. package/.next/server/chunks/184.js +0 -61
  83. package/.next/server/chunks/53.js +0 -61
  84. package/.next/server/chunks/773.js +0 -550
  85. package/.next/server/chunks/854.js +0 -72
  86. package/.next/server/chunks/890.js +0 -1205
  87. package/.next/static/McclVBfxjOJEmRRYVXL7T/_buildManifest.js +0 -1
  88. package/.next/static/chunks/158-042441a60c3b4b56.js +0 -1
  89. package/.next/static/chunks/223-cb77217cce52d45c.js +0 -1
  90. package/.next/static/chunks/251.1c79f06f2a2814b1.js +0 -1
  91. package/.next/static/chunks/290-383e1d36f83c367d.js +0 -1
  92. package/.next/static/chunks/497-f3f10b00c609f0c2.js +0 -1
  93. package/.next/static/chunks/585.2d70151d75fdf960.js +0 -1
  94. package/.next/static/chunks/800.f63caad837409c7e.js +0 -1
  95. package/.next/static/chunks/pages/[...slug]-9b20bb8274fe7854.js +0 -1
  96. package/.next/static/chunks/pages/[slug]/p-0ef7dd71888c199e.js +0 -1
  97. package/.next/static/chunks/pages/index-1cfe3afbd6564f45.js +0 -1
  98. package/.next/static/chunks/pages/s-0bfcfd0d40841dcf.js +0 -1
  99. package/.next/static/chunks/webpack-ba86ae9a63f61805.js +0 -1
  100. package/.next/static/css/14c11109f82a6f9a.css +0 -1
  101. package/.next/static/css/e337ce16f77f08a7.css +0 -1
  102. package/src/components/sections/ProductShelf/Overrides.tsx +0 -20
  103. /package/.next/static/{McclVBfxjOJEmRRYVXL7T → H_kSoqYPjjK2sM3cxP_pS}/_ssgManifest.js +0 -0
@@ -2,149 +2,394 @@ exports.id = 390;
2
2
  exports.ids = [390];
3
3
  exports.modules = {
4
4
 
5
- /***/ 7587:
5
+ /***/ 2390:
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
- "V": () => (/* binding */ OverriddenDefaultHero)
12
+ "Z": () => (/* binding */ sections_Breadcrumb_Breadcrumb)
13
13
  });
14
14
 
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
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',
20
32
  };
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
-
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));
100
+ };
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
26
106
 
27
107
 
28
108
  /**
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
109
+ * Hook to use the Dropdown context.
110
+ * @returns Dropdown context.
32
111
  */
33
- const OverriddenDefaultHero = (0,getOverriddenSection/* getOverriddenSection */.v)(override);
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
34
121
 
35
- /***/ }),
36
122
 
37
- /***/ 5247:
38
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
39
123
 
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__);
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
50
136
 
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
51
162
 
52
163
 
53
164
 
54
165
 
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
- }
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
66
275
 
67
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Incentives);
68
276
 
69
- /***/ }),
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
70
296
 
71
- /***/ 8569:
72
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
73
297
 
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; }
90
298
 
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; }
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
92
309
 
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; }
94
310
 
95
311
 
96
312
 
97
313
 
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
+ };
98
370
 
371
+ ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/Overrides.tsx
99
372
 
100
373
 
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
- }
115
374
 
116
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductShelfSection);
117
- __webpack_async_result__();
118
- } catch(e) { __webpack_async_result__(e); } });
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);
119
382
 
120
- /***/ }),
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"];
121
387
 
122
- /***/ 2834:
123
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
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; }
124
389
 
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"];
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; }
391
+
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; }
148
393
 
149
394
  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; }
150
395
 
@@ -155,335 +400,150 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
155
400
 
156
401
 
157
402
 
158
-
159
-
160
-
161
-
162
-
163
-
164
- const NUMBER_ITEMS_TO_EXPAND_FIRST = 3;
165
- const NUMBER_ITEMS_TO_EXPAND_FIRST_TWO = 2;
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);
170
-
171
- if (expandsFirstTile || expandsFirstTwoTile) {
172
- return 5 / 3;
173
- }
174
-
175
- return 3 / 4;
176
- };
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);
181
-
182
- if (expandsFirstTile || expandsFirstTwoTile) {
183
- return {
184
- width: 594,
185
- height: 364
186
- };
187
- }
188
-
189
- return {
190
- width: 284,
191
- height: 364
192
- };
193
- };
194
-
195
- const ProductTiles = _ref => {
403
+ const Breadcrumb_Breadcrumb_Breadcrumb = _ref => {
196
404
  let {
197
- title
405
+ icon = Overrides_Icon.props.name ?? 'Home',
406
+ alt = 'Go to homepage'
198
407
  } = _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
216
- });
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]);
223
-
224
- if (products?.edges.length === 0) {
225
- return null;
226
- }
408
+ otherProps = _objectWithoutProperties(_ref, _excluded);
227
409
 
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
- });
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));
250
437
  };
251
438
 
252
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductTiles);
253
- __webpack_async_result__();
254
- } catch(e) { __webpack_async_result__(e); } });
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; }
255
449
 
256
- /***/ }),
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; }
257
451
 
258
- /***/ 8860:
259
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
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; }
260
453
 
261
- "use strict";
262
454
 
263
- // EXPORTS
264
- __webpack_require__.d(__webpack_exports__, {
265
- "Z": () => (/* binding */ ProductTilesSkeleton_ProductTilesSkeleton)
266
- });
267
455
 
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
277
456
 
278
457
 
279
458
 
280
459
 
281
- function ProductTileSkeleton({
282
- index,
283
- aspectRatio = 1
284
- }) {
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
- })]
336
- });
337
- }
338
460
 
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;
348
-
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;
355
- }
356
-
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
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))
375
476
  });
376
477
  }
377
478
 
378
- /* harmony default export */ const ProductTilesSkeleton_ProductTilesSkeleton = (ProductTilesSkeleton);
479
+ /* harmony default export */ const sections_Breadcrumb_Breadcrumb = (/*#__PURE__*/(0,external_react_.memo)(BreadcrumbSection));
379
480
 
380
481
  /***/ }),
381
482
 
382
- /***/ 6971:
483
+ /***/ 5953:
383
484
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
384
485
 
385
486
  "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
-
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__);
431
500
 
432
501
 
433
- const Tiles_Tiles_Tiles = _ref => {
434
- let {
435
- children
436
- } = _ref,
437
- otherProps = _objectWithoutProperties(_ref, _excluded);
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);
438
506
 
439
- return /*#__PURE__*/jsx_runtime_.jsx(Tiles_Tiles, _objectSpread(_objectSpread({}, otherProps), {}, {
507
+ function PageProvider({
508
+ context,
509
+ children
510
+ }) {
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,
440
516
  children: children
441
- }));
442
- };
443
-
444
- /* harmony default export */ const ui_Tiles_Tiles = (Tiles_Tiles_Tiles);
445
-
446
- /***/ }),
517
+ });
518
+ }
447
519
 
448
- /***/ 7952:
449
- /***/ ((module) => {
520
+ function usePage() {
521
+ const {
522
+ context
523
+ } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(PageContext);
450
524
 
451
- // Exports
452
- module.exports = {
453
- "section": "section_section__rUfAR"
454
- };
525
+ if (context == null) {
526
+ throw new Error('Missing Overrides context on React tree');
527
+ }
455
528
 
529
+ return context;
530
+ }
531
+ const usePDP = () => usePage();
532
+ const usePLP = () => usePage();
533
+ const useSearchPage = () => usePage();
534
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PageProvider);
456
535
 
457
536
  /***/ }),
458
537
 
459
- /***/ 2366:
538
+ /***/ 5000:
460
539
  /***/ ((module) => {
461
540
 
462
541
  // Exports
463
542
  module.exports = {
464
- "section": "section_section__hGuvG",
465
- "loading": "section_loading__GpWrl"
543
+ "section": "section_section__hRV9B"
466
544
  };
467
545
 
468
546
 
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
-
487
547
  /***/ })
488
548
 
489
549
  };