@faststore/core 2.2.53 → 2.2.55

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 (108) 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 +409 -404
  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 +2274 -636
  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 +17 -61
  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/api/graphql.js.nft.json +1 -1
  34. package/.next/server/pages/checkout.js +14 -0
  35. package/.next/server/pages/checkout.js.nft.json +1 -1
  36. package/.next/server/pages/en-US/404.html +2 -2
  37. package/.next/server/pages/en-US/500.html +2 -2
  38. package/.next/server/pages/en-US/account.html +2 -2
  39. package/.next/server/pages/en-US/checkout.html +2 -2
  40. package/.next/server/pages/en-US/login.html +2 -2
  41. package/.next/server/pages/en-US/s.html +2 -2
  42. package/.next/server/pages/en-US.html +2 -2
  43. package/.next/server/pages/index.js +7 -7
  44. package/.next/server/pages/index.js.nft.json +1 -1
  45. package/.next/server/pages/login.js +14 -0
  46. package/.next/server/pages/login.js.nft.json +1 -1
  47. package/.next/server/pages/s.js +8 -1
  48. package/.next/server/pages/s.js.nft.json +1 -1
  49. package/.next/server/pages-manifest.json +3 -3
  50. package/.next/static/chunks/158-df35a8644ae9d281.js +1 -0
  51. package/.next/static/chunks/251.98f500dd8ba008ae.js +1 -0
  52. package/.next/static/chunks/497-37c1e4e1d862b354.js +1 -0
  53. package/.next/static/chunks/585.4e673e43d8daf336.js +1 -0
  54. package/.next/static/chunks/800.ea75aa39e939d9af.js +1 -0
  55. package/.next/static/chunks/897-b07932d813bb7dac.js +1 -0
  56. package/.next/static/chunks/pages/{404-7710903c2a59fa6e.js → 404-0bacd82dcf801c94.js} +1 -1
  57. package/.next/static/chunks/pages/{500-88a231e61179db83.js → 500-4dceb834e001d990.js} +1 -1
  58. package/.next/static/chunks/pages/[...slug]-b82b56ce1651ea4f.js +1 -0
  59. package/.next/static/chunks/pages/[slug]/p-39599bd4d6faeeb6.js +1 -0
  60. package/.next/static/chunks/pages/{account-f163e14670372c05.js → account-57c0c1f70eed76a6.js} +1 -1
  61. package/.next/static/chunks/pages/{checkout-cf498a32e110bde8.js → checkout-e5db8918e7c9c75e.js} +1 -1
  62. package/.next/static/chunks/pages/index-84457d91d9060925.js +1 -0
  63. package/.next/static/chunks/pages/{login-707636c85f23cac6.js → login-39000c786b4f6222.js} +1 -1
  64. package/.next/static/chunks/pages/s-e195109f5acced7c.js +1 -0
  65. package/.next/static/chunks/webpack-ec84ae4e89cebb1f.js +1 -0
  66. package/.next/static/css/0cb5d7afb952bb02.css +1 -0
  67. package/.next/static/css/{4e42cc999ad62b57.css → 0dc997f9da3027b7.css} +1 -1
  68. package/.next/static/css/{d7bbfbd552f407e9.css → cbccabebb36f7f92.css} +1 -1
  69. package/.next/static/css/{d456bfc64bc489a2.css → cf062feb79245123.css} +1 -1
  70. package/.next/static/xNdv8Ze2mVN5lf__-4QVM/_buildManifest.js +1 -0
  71. package/.next/trace +81 -81
  72. package/.turbo/turbo-build.log +18 -18
  73. package/.turbo/turbo-test.log +9 -9
  74. package/package.json +2 -2
  75. package/src/components/sections/CrossSellingShelf/DefaultComponents.ts +9 -0
  76. package/src/components/sections/CrossSellingShelf/OverriddenDefaultCrossSellingShelf.ts +5 -0
  77. package/src/components/sections/ProductShelf/DefaultComponents.ts +9 -0
  78. package/src/components/sections/ProductShelf/OverriddenDefaultProductShelf.ts +12 -0
  79. package/src/components/templates/LandingPage/LandingPage.tsx +1 -1
  80. package/src/components/templates/ProductListingPage/ProductListing.tsx +1 -1
  81. package/src/components/ui/ProductShelf/ProductShelf.tsx +11 -12
  82. package/src/pages/[slug]/p.tsx +1 -1
  83. package/src/pages/index.tsx +1 -1
  84. package/src/sdk/overrides/sections.tsx +12 -4
  85. package/src/typings/overrides.ts +15 -1
  86. package/.next/server/chunks/117.js +0 -430
  87. package/.next/server/chunks/184.js +0 -61
  88. package/.next/server/chunks/53.js +0 -61
  89. package/.next/server/chunks/773.js +0 -550
  90. package/.next/server/chunks/854.js +0 -72
  91. package/.next/server/chunks/890.js +0 -1205
  92. package/.next/static/McclVBfxjOJEmRRYVXL7T/_buildManifest.js +0 -1
  93. package/.next/static/chunks/158-042441a60c3b4b56.js +0 -1
  94. package/.next/static/chunks/223-cb77217cce52d45c.js +0 -1
  95. package/.next/static/chunks/251.1c79f06f2a2814b1.js +0 -1
  96. package/.next/static/chunks/290-383e1d36f83c367d.js +0 -1
  97. package/.next/static/chunks/497-f3f10b00c609f0c2.js +0 -1
  98. package/.next/static/chunks/585.2d70151d75fdf960.js +0 -1
  99. package/.next/static/chunks/800.f63caad837409c7e.js +0 -1
  100. package/.next/static/chunks/pages/[...slug]-9b20bb8274fe7854.js +0 -1
  101. package/.next/static/chunks/pages/[slug]/p-0ef7dd71888c199e.js +0 -1
  102. package/.next/static/chunks/pages/index-1cfe3afbd6564f45.js +0 -1
  103. package/.next/static/chunks/pages/s-0bfcfd0d40841dcf.js +0 -1
  104. package/.next/static/chunks/webpack-ba86ae9a63f61805.js +0 -1
  105. package/.next/static/css/14c11109f82a6f9a.css +0 -1
  106. package/.next/static/css/e337ce16f77f08a7.css +0 -1
  107. package/src/components/sections/ProductShelf/Overrides.tsx +0 -20
  108. /package/.next/static/{McclVBfxjOJEmRRYVXL7T → xNdv8Ze2mVN5lf__-4QVM}/_ssgManifest.js +0 -0
@@ -2,420 +2,388 @@ 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);
34
-
35
- /***/ }),
36
-
37
- /***/ 5247:
38
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
39
-
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__);
50
-
51
-
52
-
53
-
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
- }
66
-
67
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Incentives);
68
-
69
- /***/ }),
70
-
71
- /***/ 8569:
72
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
73
-
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
-
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; }
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; }
94
-
95
-
96
-
97
-
98
-
99
-
100
-
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
-
116
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductShelfSection);
117
- __webpack_async_result__();
118
- } catch(e) { __webpack_async_result__(e); } });
119
-
120
- /***/ }),
121
-
122
- /***/ 2834:
123
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
124
-
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"];
148
-
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; }
150
-
151
- 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; }
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
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
161
121
 
162
122
 
163
123
 
164
- const NUMBER_ITEMS_TO_EXPAND_FIRST = 3;
165
- const NUMBER_ITEMS_TO_EXPAND_FIRST_TWO = 2;
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
166
136
 
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);
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
170
162
 
171
- if (expandsFirstTile || expandsFirstTwoTile) {
172
- return 5 / 3;
173
- }
174
163
 
175
- return 3 / 4;
176
- };
177
164
 
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
165
 
182
- if (expandsFirstTile || expandsFirstTwoTile) {
183
- return {
184
- width: 594,
185
- height: 364
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();
186
183
  };
187
- }
188
-
189
- return {
190
- width: 284,
191
- height: 364
192
- };
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();
193
225
  };
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
216
- });
217
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
218
- if (inView && !viewedOnce.current && productEdges.length) {
219
- sendViewItemListEvent();
220
- viewedOnce.current = true;
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);
221
269
  }
222
- }, [inView, productEdges.length, sendViewItemListEvent]);
223
-
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
- });
270
+ return external_react_default().createElement("span", { ...props }, divider ?? '/');
250
271
  };
272
+ /* harmony default export */ const Breadcrumb_Divider = (Divider);
273
+ //# sourceMappingURL=Divider.js.map
274
+ ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/ListItem.js
251
275
 
252
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ProductTiles);
253
- __webpack_async_result__();
254
- } catch(e) { __webpack_async_result__(e); } });
255
276
 
256
- /***/ }),
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
257
296
 
258
- /***/ 8860:
259
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
260
297
 
261
- "use strict";
262
298
 
263
- // EXPORTS
264
- __webpack_require__.d(__webpack_exports__, {
265
- "Z": () => (/* binding */ ProductTilesSkeleton_ProductTilesSkeleton)
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
+ }))));
266
305
  });
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
277
-
278
-
279
-
280
-
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
-
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
306
+ /* harmony default export */ const Breadcrumb_BreadcrumbPure = (BreadcrumbPure);
307
+ //# sourceMappingURL=BreadcrumbPure.js.map
308
+ ;// CONCATENATED MODULE: ../components/dist/esm/molecules/Breadcrumb/BreadcrumbBase.js
343
309
 
344
310
 
345
311
 
346
- const DEFAULT_ITEMS_NUMBER = 3;
347
- const DEFAULT_ITEMS_NUMBER_TWO = 2;
348
312
 
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
313
 
353
- if (expandsFirstTile || expandsFirstTwoTile) {
354
- return 5 / 3;
355
- }
356
-
357
- return 3 / 4;
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
358
369
  };
359
370
 
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
- });
376
- }
377
-
378
- /* harmony default export */ const ProductTilesSkeleton_ProductTilesSkeleton = (ProductTilesSkeleton);
371
+ ;// CONCATENATED MODULE: ./src/components/sections/Breadcrumb/Overrides.tsx
379
372
 
380
- /***/ }),
381
-
382
- /***/ 6971:
383
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
384
373
 
385
- "use strict";
386
374
 
387
- // EXPORTS
388
- __webpack_require__.d(__webpack_exports__, {
389
- "Z": () => (/* binding */ ui_Tiles_Tiles)
390
- });
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);
391
382
 
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
383
  // EXTERNAL MODULE: external "react/jsx-runtime"
416
384
  var jsx_runtime_ = __webpack_require__(997);
417
- ;// CONCATENATED MODULE: ./src/components/ui/Tiles/Tiles.tsx
418
- const _excluded = ["children"];
385
+ ;// CONCATENATED MODULE: ./src/components/ui/Breadcrumb/Breadcrumb.tsx
386
+ const _excluded = ["icon", "alt"];
419
387
 
420
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; }
421
389
 
@@ -430,60 +398,97 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
430
398
 
431
399
 
432
400
 
433
- const Tiles_Tiles_Tiles = _ref => {
401
+
402
+
403
+ const Breadcrumb_Breadcrumb_Breadcrumb = _ref => {
434
404
  let {
435
- children
405
+ icon = Overrides_Icon.props.name ?? 'Home',
406
+ alt = 'Go to homepage'
436
407
  } = _ref,
437
408
  otherProps = _objectWithoutProperties(_ref, _excluded);
438
409
 
439
- return /*#__PURE__*/jsx_runtime_.jsx(Tiles_Tiles, _objectSpread(_objectSpread({}, otherProps), {}, {
440
- children: children
441
- }));
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));
442
437
  };
443
438
 
444
- /* harmony default export */ const ui_Tiles_Tiles = (Tiles_Tiles_Tiles);
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
+
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
+
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
+
454
+
445
455
 
446
- /***/ }),
447
456
 
448
- /***/ 7952:
449
- /***/ ((module) => {
450
457
 
451
- // Exports
452
- module.exports = {
453
- "section": "section_section__rUfAR"
454
- };
455
458
 
456
459
 
460
+
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))
476
+ });
477
+ }
478
+
479
+ /* harmony default export */ const sections_Breadcrumb_Breadcrumb = (/*#__PURE__*/(0,external_react_.memo)(BreadcrumbSection));
480
+
457
481
  /***/ }),
458
482
 
459
- /***/ 2366:
483
+ /***/ 5000:
460
484
  /***/ ((module) => {
461
485
 
462
486
  // Exports
463
487
  module.exports = {
464
- "section": "section_section__hGuvG",
465
- "loading": "section_loading__GpWrl"
488
+ "section": "section_section__hRV9B"
466
489
  };
467
490
 
468
491
 
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
492
  /***/ })
488
493
 
489
494
  };