@bonlineza/luxity-lib 2.39.6 → 2.39.8

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 (92) hide show
  1. package/Accordion.js +352 -342
  2. package/AddInterest.js +3179 -3136
  3. package/AddProductInterest.js +7584 -1011
  4. package/BrandSelector.js +861 -854
  5. package/Checkbox.js +250 -240
  6. package/CheckboxButton.js +236 -229
  7. package/CommunicationPreferenceOptionsRenderer.js +568 -560
  8. package/CommunicationPreferenceSection.js +659 -651
  9. package/CommunicationPreferences.js +2402 -2394
  10. package/ConditionSelector.js +859 -852
  11. package/CountryCodeSelect.js +6650 -79
  12. package/CurrencyInputFormatter.js +96 -86
  13. package/CurrencySelect.js +227 -219
  14. package/DropdownSelector.js +6820 -211
  15. package/GALink.js +51 -43
  16. package/GenderSelector.js +362 -355
  17. package/GraphQLDropdownSelector.js +11914 -5307
  18. package/GraphQLMultiSelector.js +601 -593
  19. package/IconHeader.js +126 -118
  20. package/IconWrapper.js +25 -17
  21. package/InterestCatSelector.js +432 -424
  22. package/InterestItem.js +470 -462
  23. package/Interests.js +11324 -4717
  24. package/InterestsSubheading.js +41 -33
  25. package/InvertedTextButton.js +175 -167
  26. package/LuxityAppSideNav.js +189 -181
  27. package/LuxityDesktopHeader.js +1363 -1355
  28. package/LuxityFooter.js +2236 -2228
  29. package/LuxityGraphQLDropdownSelector.js +11999 -5392
  30. package/LuxityGraphQLMultiselector.js +785 -778
  31. package/LuxityMobileHeader.js +1794 -1786
  32. package/LuxityPageReady.js +209 -199
  33. package/LuxityProductInterestItem.js +367 -359
  34. package/LuxitySideNav.js +673 -665
  35. package/MaterialSelector.js +12029 -5422
  36. package/ModelSelector.js +12029 -5422
  37. package/NotificationDropDown.js +7029 -459
  38. package/Notify.js +32 -20
  39. package/OutlinePrimaryButton.js +142 -134
  40. package/PriceRangeSelector.js +1277 -1264
  41. package/PrimaryButton.js +137 -129
  42. package/RadioButtons.js +318 -308
  43. package/RangeSlider.js +1039 -1033
  44. package/RareStepFooter.js +264 -257
  45. package/RareStepHeader.js +808 -801
  46. package/ReactSelectWrapper.js +6604 -33
  47. package/SecondaryButton.js +152 -144
  48. package/ShoeSizeRangeSelector.js +1153 -1147
  49. package/ShoeSizeSelector.js +1198 -1146
  50. package/SimpleErrorBoundary.js +138 -130
  51. package/StyleSelector.js +861 -854
  52. package/TextButton.js +143 -135
  53. package/Tooltip.js +184 -176
  54. package/Tracking.js +25 -15
  55. package/WrapperButton.js +58 -50
  56. package/build/bundle.css +1 -1
  57. package/build/bundle.js +17272 -10631
  58. package/build/constants.js +45 -32
  59. package/package.json +3 -2
  60. package/svg/Accessories.js +42 -34
  61. package/svg/Account.js +38 -30
  62. package/svg/Add.js +39 -31
  63. package/svg/ArrowRight.js +36 -28
  64. package/svg/Bags.js +48 -40
  65. package/svg/BurgerMenu.js +32 -24
  66. package/svg/Calendar.js +106 -98
  67. package/svg/CalendarCircled.js +108 -100
  68. package/svg/CheckCircled.js +40 -32
  69. package/svg/Close.js +37 -29
  70. package/svg/Clothing.js +44 -36
  71. package/svg/Dot.js +40 -32
  72. package/svg/Edit.js +35 -27
  73. package/svg/Eye.js +36 -28
  74. package/svg/FileAttach.js +36 -28
  75. package/svg/FileAttachCircled.js +38 -30
  76. package/svg/Jewellery.js +57 -49
  77. package/svg/LightBulb.js +66 -58
  78. package/svg/Logo.js +140 -132
  79. package/svg/LuxityMenu.js +36 -28
  80. package/svg/Minus.js +37 -29
  81. package/svg/MobileAvatar.js +36 -28
  82. package/svg/MyOrder.js +44 -36
  83. package/svg/MyPayment.js +44 -36
  84. package/svg/MyProfile.js +52 -44
  85. package/svg/MySale.js +39 -31
  86. package/svg/Notification.js +38 -30
  87. package/svg/PointerDown.js +36 -28
  88. package/svg/Search.js +35 -27
  89. package/svg/Shoes.js +45 -37
  90. package/svg/SvgWrapper.js +21 -13
  91. package/svg/Trash.js +40 -32
  92. package/svg/Watches.js +55 -47
@@ -1,1503 +1,1511 @@
1
- import React, { useState, useEffect, forwardRef, useRef, useCallback, useMemo } from 'react';
2
- import axios from 'axios';
3
- import styled, { css, ThemeProvider } from 'styled-components';
4
-
5
- function ownKeys(object, enumerableOnly) {
6
- var keys = Object.keys(object);
7
-
8
- if (Object.getOwnPropertySymbols) {
9
- var symbols = Object.getOwnPropertySymbols(object);
10
- enumerableOnly && (symbols = symbols.filter(function (sym) {
11
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
12
- })), keys.push.apply(keys, symbols);
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react'), require('axios'), require('styled-components')) :
3
+ typeof define === 'function' && define.amd ? define(['react', 'axios', 'styled-components'], factory) :
4
+ (global = global || self, global.LuxityDesktopHeader = factory(global.React, global.axios, global.styled));
5
+ }(this, (function (React, axios, styled) { 'use strict';
6
+
7
+ var React__default = 'default' in React ? React['default'] : React;
8
+ axios = axios && Object.prototype.hasOwnProperty.call(axios, 'default') ? axios['default'] : axios;
9
+ var styled__default = 'default' in styled ? styled['default'] : styled;
10
+
11
+ function ownKeys(object, enumerableOnly) {
12
+ var keys = Object.keys(object);
13
+
14
+ if (Object.getOwnPropertySymbols) {
15
+ var symbols = Object.getOwnPropertySymbols(object);
16
+ enumerableOnly && (symbols = symbols.filter(function (sym) {
17
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
18
+ })), keys.push.apply(keys, symbols);
19
+ }
20
+
21
+ return keys;
13
22
  }
14
23
 
15
- return keys;
16
- }
24
+ function _objectSpread2(target) {
25
+ for (var i = 1; i < arguments.length; i++) {
26
+ var source = null != arguments[i] ? arguments[i] : {};
27
+ i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
28
+ _defineProperty(target, key, source[key]);
29
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
30
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
31
+ });
32
+ }
17
33
 
18
- function _objectSpread2(target) {
19
- for (var i = 1; i < arguments.length; i++) {
20
- var source = null != arguments[i] ? arguments[i] : {};
21
- i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
22
- _defineProperty(target, key, source[key]);
23
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
24
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
25
- });
34
+ return target;
26
35
  }
27
36
 
28
- return target;
29
- }
37
+ function _defineProperty(obj, key, value) {
38
+ if (key in obj) {
39
+ Object.defineProperty(obj, key, {
40
+ value: value,
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true
44
+ });
45
+ } else {
46
+ obj[key] = value;
47
+ }
30
48
 
31
- function _defineProperty(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
49
+ return obj;
41
50
  }
42
51
 
43
- return obj;
44
- }
52
+ function _extends() {
53
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
54
+ for (var i = 1; i < arguments.length; i++) {
55
+ var source = arguments[i];
45
56
 
46
- function _extends() {
47
- _extends = Object.assign ? Object.assign.bind() : function (target) {
48
- for (var i = 1; i < arguments.length; i++) {
49
- var source = arguments[i];
50
-
51
- for (var key in source) {
52
- if (Object.prototype.hasOwnProperty.call(source, key)) {
53
- target[key] = source[key];
57
+ for (var key in source) {
58
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
59
+ target[key] = source[key];
60
+ }
54
61
  }
55
62
  }
56
- }
57
-
58
- return target;
59
- };
60
- return _extends.apply(this, arguments);
61
- }
62
63
 
63
- function _taggedTemplateLiteral(strings, raw) {
64
- if (!raw) {
65
- raw = strings.slice(0);
64
+ return target;
65
+ };
66
+ return _extends.apply(this, arguments);
66
67
  }
67
68
 
68
- return Object.freeze(Object.defineProperties(strings, {
69
- raw: {
70
- value: Object.freeze(raw)
69
+ function _taggedTemplateLiteral(strings, raw) {
70
+ if (!raw) {
71
+ raw = strings.slice(0);
71
72
  }
72
- }));
73
- }
74
73
 
75
- function _slicedToArray(arr, i) {
76
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
77
- }
74
+ return Object.freeze(Object.defineProperties(strings, {
75
+ raw: {
76
+ value: Object.freeze(raw)
77
+ }
78
+ }));
79
+ }
78
80
 
79
- function _toConsumableArray(arr) {
80
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
81
- }
81
+ function _slicedToArray(arr, i) {
82
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
83
+ }
82
84
 
83
- function _arrayWithoutHoles(arr) {
84
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
85
- }
85
+ function _toConsumableArray(arr) {
86
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
87
+ }
86
88
 
87
- function _arrayWithHoles(arr) {
88
- if (Array.isArray(arr)) return arr;
89
- }
89
+ function _arrayWithoutHoles(arr) {
90
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
91
+ }
90
92
 
91
- function _iterableToArray(iter) {
92
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
93
- }
93
+ function _arrayWithHoles(arr) {
94
+ if (Array.isArray(arr)) return arr;
95
+ }
94
96
 
95
- function _iterableToArrayLimit(arr, i) {
96
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
97
+ function _iterableToArray(iter) {
98
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
99
+ }
97
100
 
98
- if (_i == null) return;
99
- var _arr = [];
100
- var _n = true;
101
- var _d = false;
101
+ function _iterableToArrayLimit(arr, i) {
102
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
102
103
 
103
- var _s, _e;
104
+ if (_i == null) return;
105
+ var _arr = [];
106
+ var _n = true;
107
+ var _d = false;
104
108
 
105
- try {
106
- for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
107
- _arr.push(_s.value);
109
+ var _s, _e;
108
110
 
109
- if (i && _arr.length === i) break;
110
- }
111
- } catch (err) {
112
- _d = true;
113
- _e = err;
114
- } finally {
115
111
  try {
116
- if (!_n && _i["return"] != null) _i["return"]();
112
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
113
+ _arr.push(_s.value);
114
+
115
+ if (i && _arr.length === i) break;
116
+ }
117
+ } catch (err) {
118
+ _d = true;
119
+ _e = err;
117
120
  } finally {
118
- if (_d) throw _e;
121
+ try {
122
+ if (!_n && _i["return"] != null) _i["return"]();
123
+ } finally {
124
+ if (_d) throw _e;
125
+ }
119
126
  }
127
+
128
+ return _arr;
120
129
  }
121
130
 
122
- return _arr;
123
- }
124
-
125
- function _unsupportedIterableToArray(o, minLen) {
126
- if (!o) return;
127
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
128
- var n = Object.prototype.toString.call(o).slice(8, -1);
129
- if (n === "Object" && o.constructor) n = o.constructor.name;
130
- if (n === "Map" || n === "Set") return Array.from(o);
131
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
132
- }
133
-
134
- function _arrayLikeToArray(arr, len) {
135
- if (len == null || len > arr.length) len = arr.length;
136
-
137
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
138
-
139
- return arr2;
140
- }
141
-
142
- function _nonIterableSpread() {
143
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
144
- }
145
-
146
- function _nonIterableRest() {
147
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
148
- }
149
-
150
- var Dropdown = function Dropdown(_ref) {
151
- var title = _ref.title,
152
- imageSrc = _ref.imageSrc,
153
- _ref$categoryElements = _ref.categoryElements,
154
- categoryElements = _ref$categoryElements === void 0 ? [] : _ref$categoryElements,
155
- _ref$brandElements = _ref.brandElements,
156
- brandElements = _ref$brandElements === void 0 ? [] : _ref$brandElements,
157
- productsUrl = _ref.productsUrl,
158
- LinkComponent = _ref.LinkComponent,
159
- categorySlug = _ref.categorySlug,
160
- categoryTitle = _ref.categoryTitle,
161
- isLoading = _ref.isLoading,
162
- hasError = _ref.hasError,
163
- onMenuItemClick = _ref.onMenuItemClick;
164
- return /*#__PURE__*/React.createElement(React.Fragment, null, hasError ? /*#__PURE__*/React.createElement("div", {
165
- className: "dropdown__errors"
166
- }, "Failed to load data.") : /*#__PURE__*/React.createElement("div", {
167
- className: "dropdown"
168
- }, isLoading ? /*#__PURE__*/React.createElement("div", {
169
- className: "cover-spinner"
170
- }) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
171
- className: "dropdown__column"
172
- }, /*#__PURE__*/React.createElement("div", {
173
- className: "dropdown__title"
174
- }, title), /*#__PURE__*/React.createElement("div", {
175
- className: "dropdown__elements dropdown__elements--column"
176
- }, !!categoryElements.length && categoryElements.map(function (categoryElement) {
177
- return categoryElement.category ? /*#__PURE__*/React.createElement(LinkComponent, {
178
- href: "".concat(productsUrl, "/").concat(categoryElement.category, "/").concat(categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.slug),
179
- className: "dropdown__element",
180
- key: categoryElement.name,
181
- onClick: onMenuItemClick
182
- }, categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.name.toLowerCase()) : /*#__PURE__*/React.createElement(LinkComponent, {
183
- href: "".concat(productsUrl, "/").concat(categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.slug),
184
- className: "dropdown__element",
185
- key: categoryElement.name,
186
- onClick: onMenuItemClick
187
- }, categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.name.toLowerCase());
188
- }))), /*#__PURE__*/React.createElement("div", {
189
- className: "dropdown__column"
190
- }, /*#__PURE__*/React.createElement("div", {
191
- className: "dropdown__title"
192
- }, "Brands"), /*#__PURE__*/React.createElement("div", {
193
- className: "dropdown__brand-elements"
194
- }, /*#__PURE__*/React.createElement("div", {
195
- className: "dropdown__brand-element"
196
- }, /*#__PURE__*/React.createElement(LinkComponent, {
197
- href: "".concat(productsUrl, "/").concat(categorySlug),
198
- className: "dropdown__element",
199
- onClick: onMenuItemClick
200
- }, "All ", categoryTitle)), !!brandElements.length && brandElements.map(function (brand) {
201
- return /*#__PURE__*/React.createElement("div", {
202
- className: "dropdown__brand-element",
203
- key: brand.name
204
- }, /*#__PURE__*/React.createElement(LinkComponent, {
205
- href: "".concat(productsUrl, "/").concat(categorySlug, "/").concat(brand === null || brand === void 0 ? void 0 : brand.slug),
206
- className: "dropdown__element",
207
- onClick: onMenuItemClick
208
- }, brand === null || brand === void 0 ? void 0 : brand.name));
209
- }))), /*#__PURE__*/React.createElement("div", {
210
- className: "dropdown__column"
211
- }, /*#__PURE__*/React.createElement("img", {
212
- src: imageSrc,
213
- alt: "".concat(title)
214
- })))));
215
- };
216
-
217
- var DropdownLink = function DropdownLink(_ref) {
218
- var title = _ref.title,
219
- imageSrc = _ref.imageSrc,
220
- categoryElements = _ref.categoryElements,
221
- brandElements = _ref.brandElements,
222
- productsUrl = _ref.productsUrl,
223
- LinkComponent = _ref.LinkComponent,
224
- categorySlug = _ref.categorySlug,
225
- categoryTitle = _ref.categoryTitle,
226
- isLoading = _ref.isLoading,
227
- hasError = _ref.hasError;
228
-
229
- var _useState = useState(false),
230
- _useState2 = _slicedToArray(_useState, 2),
231
- dropdownVisible = _useState2[0],
232
- setDropdownVisible = _useState2[1];
233
-
234
- var handleMenuItemClick = function handleMenuItemClick() {
235
- setDropdownVisible(false);
236
- };
131
+ function _unsupportedIterableToArray(o, minLen) {
132
+ if (!o) return;
133
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
134
+ var n = Object.prototype.toString.call(o).slice(8, -1);
135
+ if (n === "Object" && o.constructor) n = o.constructor.name;
136
+ if (n === "Map" || n === "Set") return Array.from(o);
137
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
138
+ }
237
139
 
238
- return /*#__PURE__*/React.createElement("li", {
239
- className: "navbar__link",
240
- onMouseEnter: function onMouseEnter() {
241
- return setDropdownVisible(true);
242
- },
243
- onMouseLeave: function onMouseLeave() {
244
- return setDropdownVisible(false);
245
- }
246
- }, /*#__PURE__*/React.createElement(LinkComponent, {
247
- href: "".concat(productsUrl, "/").concat(categorySlug),
248
- className: "navbar__link-item navbar__link-item--desktop",
249
- onClick: handleMenuItemClick
250
- }, title), dropdownVisible && /*#__PURE__*/React.createElement("div", {
251
- className: "navbar__dropdown"
252
- }, /*#__PURE__*/React.createElement(Dropdown, {
253
- title: "Department",
254
- imageSrc: imageSrc,
255
- categoryElements: categoryElements,
256
- brandElements: brandElements,
257
- productsUrl: productsUrl,
258
- categorySlug: categorySlug,
259
- categoryTitle: categoryTitle,
260
- isLoading: isLoading,
261
- hasError: hasError,
262
- onMenuItemClick: handleMenuItemClick,
263
- LinkComponent: LinkComponent
264
- })));
265
- };
266
-
267
- var StoresDropdown = function StoresDropdown(_ref) {
268
- var _ref$stores = _ref.stores,
269
- stores = _ref$stores === void 0 ? [] : _ref$stores,
270
- contactNumber = _ref.contactNumber;
271
- return /*#__PURE__*/React.createElement("div", {
272
- className: "stores-dropdown"
273
- }, !!stores.length && stores.map(function (store) {
274
- return /*#__PURE__*/React.createElement("div", {
275
- className: "stores-dropdown__store-details",
276
- key: store.title
277
- }, /*#__PURE__*/React.createElement("div", {
278
- className: "stores-dropdown__store-image"
279
- }, /*#__PURE__*/React.createElement("img", {
280
- className: "stores-dropdown__image",
281
- src: store.image,
282
- alt: store.title
283
- })), /*#__PURE__*/React.createElement("div", {
284
- className: "stores-dropdown__store-info"
285
- }, /*#__PURE__*/React.createElement("h4", {
286
- className: "stores-dropdown__title"
287
- }, store.title, " ", /*#__PURE__*/React.createElement("br", null), " ", store.location), /*#__PURE__*/React.createElement("div", {
288
- className: "stores-dropdown__open-days"
289
- }, store.regularOpenDays), /*#__PURE__*/React.createElement("div", {
290
- className: "stores-dropdown__open-hours"
291
- }, store.regularOpenHours), /*#__PURE__*/React.createElement("div", {
292
- className: "stores-dropdown__open-days"
293
- }, store.holidayOpenDays), /*#__PURE__*/React.createElement("div", {
294
- className: "stores-dropdown__open-hours"
295
- }, store.holidayOpenHours), (store === null || store === void 0 ? void 0 : store.weekendOpenDays) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
296
- className: "stores-dropdown__open-days"
297
- }, store.weekendOpenDays), /*#__PURE__*/React.createElement("div", {
298
- className: "stores-dropdown__open-hours"
299
- }, store.weekendOpenHours))));
300
- }), /*#__PURE__*/React.createElement("div", {
301
- className: "stores-dropdown__queries"
302
- }, /*#__PURE__*/React.createElement("h4", {
303
- className: "stores-dropdown__queries-title"
304
- }, "Customer Queries: "), /*#__PURE__*/React.createElement("a", {
305
- className: "stores-dropdown__contact-details",
306
- href: "tel:".concat(contactNumber)
307
- }, contactNumber)));
308
- };
309
-
310
- var SearchResults = function SearchResults(_ref) {
311
- var _searchResults$brands, _searchResults$produc, _initialSearchData$tr, _initialSearchData$la;
312
-
313
- var searchValue = _ref.searchValue,
314
- searchResults = _ref.searchResults,
315
- onViewAll = _ref.onViewAll,
316
- searchResultsRef = _ref.searchResultsRef,
317
- onSearchSubmit = _ref.onSearchSubmit,
318
- setSearchValue = _ref.setSearchValue,
319
- initialSearchData = _ref.initialSearchData,
320
- isSearchFocused = _ref.isSearchFocused,
321
- setIsSearchFocused = _ref.setIsSearchFocused,
322
- currency = _ref.currency,
323
- currencySymbol = _ref.currencySymbol,
324
- onProductSearchResultClick = _ref.onProductSearchResultClick,
325
- onBrandSearchResultClick = _ref.onBrandSearchResultClick,
326
- onCreateInterests = _ref.onCreateInterests,
327
- noResultsImage = _ref.noResultsImage,
328
- showNoResults = _ref.showNoResults,
329
- _ref$isLoading = _ref.isLoading,
330
- isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
331
- _ref$showCreateIntere = _ref.showCreateInterest,
332
- showCreateInterest = _ref$showCreateIntere === void 0 ? true : _ref$showCreateIntere;
333
-
334
- var _useState = useState(false),
335
- _useState2 = _slicedToArray(_useState, 2),
336
- isMobile = _useState2[0],
337
- setIsMobile = _useState2[1];
338
-
339
- useEffect(function () {
340
- var checkIfMobile = function checkIfMobile() {
341
- setIsMobile(window.innerWidth <= 1024);
342
- };
140
+ function _arrayLikeToArray(arr, len) {
141
+ if (len == null || len > arr.length) len = arr.length;
343
142
 
344
- checkIfMobile();
345
- window.addEventListener('resize', checkIfMobile);
346
- return function () {
347
- window.removeEventListener('resize', checkIfMobile);
348
- };
349
- }, []);
350
- var hasSearchBeenPerformed = (searchValue === null || searchValue === void 0 ? void 0 : searchValue.trim().length) >= 3;
351
- var hasResults = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$brands = searchResults.brands) === null || _searchResults$brands === void 0 ? void 0 : _searchResults$brands.length) > 0 || (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc = searchResults.products) === null || _searchResults$produc === void 0 ? void 0 : _searchResults$produc.length) > 0;
352
- var hasInitialData = (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$tr = initialSearchData.trending_brands) === null || _initialSearchData$tr === void 0 ? void 0 : _initialSearchData$tr.length) > 0 || (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la = initialSearchData.latest_products) === null || _initialSearchData$la === void 0 ? void 0 : _initialSearchData$la.length) > 0;
353
- var shouldShowInitialData = isSearchFocused && (!hasSearchBeenPerformed || !hasResults && !showNoResults);
354
-
355
- if (!isSearchFocused) {
356
- return null;
357
- }
143
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
358
144
 
359
- if (!hasResults && !hasInitialData && !showNoResults) {
360
- return null;
145
+ return arr2;
361
146
  }
362
147
 
363
- var formatPrice = function formatPrice(price) {
364
- var formatter = new Intl.NumberFormat(undefined, {
365
- minimumFractionDigits: 0,
366
- maximumFractionDigits: 2
367
- });
368
- return "".concat(currencySymbol).concat(formatter.format(price));
369
- };
148
+ function _nonIterableSpread() {
149
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
150
+ }
370
151
 
371
- var renderBrandSkeleton = function renderBrandSkeleton() {
372
- return /*#__PURE__*/React.createElement("div", {
373
- className: "brand-skeleton"
374
- }, /*#__PURE__*/React.createElement("div", {
375
- className: "brand-skeleton__item shimmer"
376
- }), /*#__PURE__*/React.createElement("div", {
377
- className: "brand-skeleton__item shimmer"
378
- }), /*#__PURE__*/React.createElement("div", {
379
- className: "brand-skeleton__item shimmer"
380
- }), /*#__PURE__*/React.createElement("div", {
381
- className: "brand-skeleton__item shimmer"
382
- }));
383
- };
152
+ function _nonIterableRest() {
153
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
154
+ }
384
155
 
385
- var renderProductSkeleton = function renderProductSkeleton() {
386
- return /*#__PURE__*/React.createElement(React.Fragment, null, _toConsumableArray(Array(3)).map(function (_, index) {
387
- return /*#__PURE__*/React.createElement("div", {
388
- key: index,
389
- className: "product-skeleton"
390
- }, /*#__PURE__*/React.createElement("div", {
391
- className: "product-skeleton__image shimmer"
392
- }), /*#__PURE__*/React.createElement("div", {
393
- className: "product-skeleton__content"
394
- }, /*#__PURE__*/React.createElement("div", {
395
- className: "product-skeleton__title shimmer"
396
- }), /*#__PURE__*/React.createElement("div", {
397
- className: "product-skeleton__subtitle shimmer"
398
- }), /*#__PURE__*/React.createElement("div", {
399
- className: "product-skeleton__price shimmer"
400
- })));
401
- }));
156
+ var Dropdown = function Dropdown(_ref) {
157
+ var title = _ref.title,
158
+ imageSrc = _ref.imageSrc,
159
+ _ref$categoryElements = _ref.categoryElements,
160
+ categoryElements = _ref$categoryElements === void 0 ? [] : _ref$categoryElements,
161
+ _ref$brandElements = _ref.brandElements,
162
+ brandElements = _ref$brandElements === void 0 ? [] : _ref$brandElements,
163
+ productsUrl = _ref.productsUrl,
164
+ LinkComponent = _ref.LinkComponent,
165
+ categorySlug = _ref.categorySlug,
166
+ categoryTitle = _ref.categoryTitle,
167
+ isLoading = _ref.isLoading,
168
+ hasError = _ref.hasError,
169
+ onMenuItemClick = _ref.onMenuItemClick;
170
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, hasError ? /*#__PURE__*/React__default.createElement("div", {
171
+ className: "dropdown__errors"
172
+ }, "Failed to load data.") : /*#__PURE__*/React__default.createElement("div", {
173
+ className: "dropdown"
174
+ }, isLoading ? /*#__PURE__*/React__default.createElement("div", {
175
+ className: "cover-spinner"
176
+ }) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
177
+ className: "dropdown__column"
178
+ }, /*#__PURE__*/React__default.createElement("div", {
179
+ className: "dropdown__title"
180
+ }, title), /*#__PURE__*/React__default.createElement("div", {
181
+ className: "dropdown__elements dropdown__elements--column"
182
+ }, !!categoryElements.length && categoryElements.map(function (categoryElement) {
183
+ return categoryElement.category ? /*#__PURE__*/React__default.createElement(LinkComponent, {
184
+ href: "".concat(productsUrl, "/").concat(categoryElement.category, "/").concat(categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.slug),
185
+ className: "dropdown__element",
186
+ key: categoryElement.name,
187
+ onClick: onMenuItemClick
188
+ }, categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.name.toLowerCase()) : /*#__PURE__*/React__default.createElement(LinkComponent, {
189
+ href: "".concat(productsUrl, "/").concat(categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.slug),
190
+ className: "dropdown__element",
191
+ key: categoryElement.name,
192
+ onClick: onMenuItemClick
193
+ }, categoryElement === null || categoryElement === void 0 ? void 0 : categoryElement.name.toLowerCase());
194
+ }))), /*#__PURE__*/React__default.createElement("div", {
195
+ className: "dropdown__column"
196
+ }, /*#__PURE__*/React__default.createElement("div", {
197
+ className: "dropdown__title"
198
+ }, "Brands"), /*#__PURE__*/React__default.createElement("div", {
199
+ className: "dropdown__brand-elements"
200
+ }, /*#__PURE__*/React__default.createElement("div", {
201
+ className: "dropdown__brand-element"
202
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
203
+ href: "".concat(productsUrl, "/").concat(categorySlug),
204
+ className: "dropdown__element",
205
+ onClick: onMenuItemClick
206
+ }, "All ", categoryTitle)), !!brandElements.length && brandElements.map(function (brand) {
207
+ return /*#__PURE__*/React__default.createElement("div", {
208
+ className: "dropdown__brand-element",
209
+ key: brand.name
210
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
211
+ href: "".concat(productsUrl, "/").concat(categorySlug, "/").concat(brand === null || brand === void 0 ? void 0 : brand.slug),
212
+ className: "dropdown__element",
213
+ onClick: onMenuItemClick
214
+ }, brand === null || brand === void 0 ? void 0 : brand.name));
215
+ }))), /*#__PURE__*/React__default.createElement("div", {
216
+ className: "dropdown__column"
217
+ }, /*#__PURE__*/React__default.createElement("img", {
218
+ src: imageSrc,
219
+ alt: "".concat(title)
220
+ })))));
402
221
  };
403
222
 
404
- var renderProductCard = function renderProductCard(product) {
405
- var selectedPrice = product.prices ? product.prices.find(function (p) {
406
- return p.currency === currency;
407
- }) : {
408
- price: product.price,
409
- retail_price: product.est_retail_price
223
+ var DropdownLink = function DropdownLink(_ref) {
224
+ var title = _ref.title,
225
+ imageSrc = _ref.imageSrc,
226
+ categoryElements = _ref.categoryElements,
227
+ brandElements = _ref.brandElements,
228
+ productsUrl = _ref.productsUrl,
229
+ LinkComponent = _ref.LinkComponent,
230
+ categorySlug = _ref.categorySlug,
231
+ categoryTitle = _ref.categoryTitle,
232
+ isLoading = _ref.isLoading,
233
+ hasError = _ref.hasError;
234
+
235
+ var _useState = React.useState(false),
236
+ _useState2 = _slicedToArray(_useState, 2),
237
+ dropdownVisible = _useState2[0],
238
+ setDropdownVisible = _useState2[1];
239
+
240
+ var handleMenuItemClick = function handleMenuItemClick() {
241
+ setDropdownVisible(false);
410
242
  };
411
- var displayPrice = product.on_promotion && product.promotion_price ? product.promotion_price : selectedPrice.price;
412
- var hasPromotion = product.on_promotion && product.promotion_price;
413
- return /*#__PURE__*/React.createElement("a", {
414
- key: product.link,
415
- href: product.link,
416
- className: "product-card",
417
- onClick: function onClick() {
418
- if (typeof onProductSearchResultClick === 'function') {
419
- onProductSearchResultClick({
420
- product_name: product.name,
421
- product_brand: product.brand,
422
- product_link: product.link,
423
- search_string: searchValue,
424
- is_popular: shouldShowInitialData
425
- });
426
- }
243
+
244
+ return /*#__PURE__*/React__default.createElement("li", {
245
+ className: "navbar__link",
246
+ onMouseEnter: function onMouseEnter() {
247
+ return setDropdownVisible(true);
248
+ },
249
+ onMouseLeave: function onMouseLeave() {
250
+ return setDropdownVisible(false);
427
251
  }
428
- }, product.featured_image && /*#__PURE__*/React.createElement("div", {
429
- className: "product-card__image-container"
430
- }, /*#__PURE__*/React.createElement("img", {
431
- src: product.featured_image,
432
- alt: product.name,
433
- className: "product-card__image"
434
- })), /*#__PURE__*/React.createElement("div", {
435
- className: "product-card__details"
436
- }, /*#__PURE__*/React.createElement("h3", {
437
- className: "product-card__name"
438
- }, shouldShowInitialData ? /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
439
- className: "product-card__brand-name"
440
- }, product.brand.toUpperCase()), ' ', product.name) : /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", {
441
- className: "product-card__brand-name"
442
- }, product.brand.toUpperCase()), ' ', product.name)), /*#__PURE__*/React.createElement("div", {
443
- className: "product-card__info-row"
444
- }, /*#__PURE__*/React.createElement("div", {
445
- className: "product-card__price-group"
446
- }, hasPromotion ? /*#__PURE__*/React.createElement("div", {
447
- className: "product-card__price-with-promotion"
448
- }, /*#__PURE__*/React.createElement("div", {
449
- className: "product-card__price product-card__price--promotion"
450
- }, formatPrice(displayPrice)), /*#__PURE__*/React.createElement("div", {
451
- className: "product-card__price product-card__price--original"
452
- }, formatPrice(selectedPrice.price))) : /*#__PURE__*/React.createElement("div", {
453
- className: "product-card__price"
454
- }, formatPrice(displayPrice)), selectedPrice.retail_price > 1 && selectedPrice.retail_price > displayPrice && /*#__PURE__*/React.createElement("div", {
455
- className: "product-card__retail-price"
456
- }, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), product.condition && /*#__PURE__*/React.createElement("div", {
457
- className: "product-card__condition"
458
- }, /*#__PURE__*/React.createElement("span", {
459
- className: "product-card__condition-label"
460
- }, "Condition:"), product.condition))));
252
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
253
+ href: "".concat(productsUrl, "/").concat(categorySlug),
254
+ className: "navbar__link-item navbar__link-item--desktop",
255
+ onClick: handleMenuItemClick
256
+ }, title), dropdownVisible && /*#__PURE__*/React__default.createElement("div", {
257
+ className: "navbar__dropdown"
258
+ }, /*#__PURE__*/React__default.createElement(Dropdown, {
259
+ title: "Department",
260
+ imageSrc: imageSrc,
261
+ categoryElements: categoryElements,
262
+ brandElements: brandElements,
263
+ productsUrl: productsUrl,
264
+ categorySlug: categorySlug,
265
+ categoryTitle: categoryTitle,
266
+ isLoading: isLoading,
267
+ hasError: hasError,
268
+ onMenuItemClick: handleMenuItemClick,
269
+ LinkComponent: LinkComponent
270
+ })));
461
271
  };
462
272
 
463
- var getBrandLink = function getBrandLink(brand) {
464
- return "/products/brands/".concat(brand.slug);
273
+ var StoresDropdown = function StoresDropdown(_ref) {
274
+ var _ref$stores = _ref.stores,
275
+ stores = _ref$stores === void 0 ? [] : _ref$stores,
276
+ contactNumber = _ref.contactNumber;
277
+ return /*#__PURE__*/React__default.createElement("div", {
278
+ className: "stores-dropdown"
279
+ }, !!stores.length && stores.map(function (store) {
280
+ return /*#__PURE__*/React__default.createElement("div", {
281
+ className: "stores-dropdown__store-details",
282
+ key: store.title
283
+ }, /*#__PURE__*/React__default.createElement("div", {
284
+ className: "stores-dropdown__store-image"
285
+ }, /*#__PURE__*/React__default.createElement("img", {
286
+ className: "stores-dropdown__image",
287
+ src: store.image,
288
+ alt: store.title
289
+ })), /*#__PURE__*/React__default.createElement("div", {
290
+ className: "stores-dropdown__store-info"
291
+ }, /*#__PURE__*/React__default.createElement("h4", {
292
+ className: "stores-dropdown__title"
293
+ }, store.title, " ", /*#__PURE__*/React__default.createElement("br", null), " ", store.location), /*#__PURE__*/React__default.createElement("div", {
294
+ className: "stores-dropdown__open-days"
295
+ }, store.regularOpenDays), /*#__PURE__*/React__default.createElement("div", {
296
+ className: "stores-dropdown__open-hours"
297
+ }, store.regularOpenHours), /*#__PURE__*/React__default.createElement("div", {
298
+ className: "stores-dropdown__open-days"
299
+ }, store.holidayOpenDays), /*#__PURE__*/React__default.createElement("div", {
300
+ className: "stores-dropdown__open-hours"
301
+ }, store.holidayOpenHours), (store === null || store === void 0 ? void 0 : store.weekendOpenDays) && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
302
+ className: "stores-dropdown__open-days"
303
+ }, store.weekendOpenDays), /*#__PURE__*/React__default.createElement("div", {
304
+ className: "stores-dropdown__open-hours"
305
+ }, store.weekendOpenHours))));
306
+ }), /*#__PURE__*/React__default.createElement("div", {
307
+ className: "stores-dropdown__queries"
308
+ }, /*#__PURE__*/React__default.createElement("h4", {
309
+ className: "stores-dropdown__queries-title"
310
+ }, "Customer Queries: "), /*#__PURE__*/React__default.createElement("a", {
311
+ className: "stores-dropdown__contact-details",
312
+ href: "tel:".concat(contactNumber)
313
+ }, contactNumber)));
465
314
  };
466
315
 
467
- var limitBrands = function limitBrands(brands) {
468
- if (isMobile && brands && brands.length > 4) {
469
- return brands.slice(0, 4);
470
- }
316
+ var SearchResults = function SearchResults(_ref) {
317
+ var _searchResults$brands, _searchResults$produc, _initialSearchData$tr, _initialSearchData$la;
318
+
319
+ var searchValue = _ref.searchValue,
320
+ searchResults = _ref.searchResults,
321
+ onViewAll = _ref.onViewAll,
322
+ searchResultsRef = _ref.searchResultsRef,
323
+ onSearchSubmit = _ref.onSearchSubmit,
324
+ setSearchValue = _ref.setSearchValue,
325
+ initialSearchData = _ref.initialSearchData,
326
+ isSearchFocused = _ref.isSearchFocused,
327
+ setIsSearchFocused = _ref.setIsSearchFocused,
328
+ currency = _ref.currency,
329
+ currencySymbol = _ref.currencySymbol,
330
+ onProductSearchResultClick = _ref.onProductSearchResultClick,
331
+ onBrandSearchResultClick = _ref.onBrandSearchResultClick,
332
+ onCreateInterests = _ref.onCreateInterests,
333
+ noResultsImage = _ref.noResultsImage,
334
+ showNoResults = _ref.showNoResults,
335
+ _ref$isLoading = _ref.isLoading,
336
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
337
+ _ref$showCreateIntere = _ref.showCreateInterest,
338
+ showCreateInterest = _ref$showCreateIntere === void 0 ? true : _ref$showCreateIntere;
339
+
340
+ var _useState = React.useState(false),
341
+ _useState2 = _slicedToArray(_useState, 2),
342
+ isMobile = _useState2[0],
343
+ setIsMobile = _useState2[1];
344
+
345
+ React.useEffect(function () {
346
+ var checkIfMobile = function checkIfMobile() {
347
+ setIsMobile(window.innerWidth <= 1024);
348
+ };
471
349
 
472
- return brands;
473
- };
350
+ checkIfMobile();
351
+ window.addEventListener('resize', checkIfMobile);
352
+ return function () {
353
+ window.removeEventListener('resize', checkIfMobile);
354
+ };
355
+ }, []);
356
+ var hasSearchBeenPerformed = (searchValue === null || searchValue === void 0 ? void 0 : searchValue.trim().length) >= 3;
357
+ var hasResults = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$brands = searchResults.brands) === null || _searchResults$brands === void 0 ? void 0 : _searchResults$brands.length) > 0 || (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc = searchResults.products) === null || _searchResults$produc === void 0 ? void 0 : _searchResults$produc.length) > 0;
358
+ var hasInitialData = (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$tr = initialSearchData.trending_brands) === null || _initialSearchData$tr === void 0 ? void 0 : _initialSearchData$tr.length) > 0 || (initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la = initialSearchData.latest_products) === null || _initialSearchData$la === void 0 ? void 0 : _initialSearchData$la.length) > 0;
359
+ var shouldShowInitialData = isSearchFocused && (!hasSearchBeenPerformed || !hasResults && !showNoResults);
474
360
 
475
- var renderBrandsList = function renderBrandsList() {
476
- var _limitBrands2;
361
+ if (!isSearchFocused) {
362
+ return null;
363
+ }
477
364
 
478
- if (isLoading) {
479
- return renderBrandSkeleton();
365
+ if (!hasResults && !hasInitialData && !showNoResults) {
366
+ return null;
480
367
  }
481
368
 
482
- if (shouldShowInitialData) {
483
- var _limitBrands;
369
+ var formatPrice = function formatPrice(price) {
370
+ var formatter = new Intl.NumberFormat(undefined, {
371
+ minimumFractionDigits: 0,
372
+ maximumFractionDigits: 2
373
+ });
374
+ return "".concat(currencySymbol).concat(formatter.format(price));
375
+ };
376
+
377
+ var renderBrandSkeleton = function renderBrandSkeleton() {
378
+ return /*#__PURE__*/React__default.createElement("div", {
379
+ className: "brand-skeleton"
380
+ }, /*#__PURE__*/React__default.createElement("div", {
381
+ className: "brand-skeleton__item shimmer"
382
+ }), /*#__PURE__*/React__default.createElement("div", {
383
+ className: "brand-skeleton__item shimmer"
384
+ }), /*#__PURE__*/React__default.createElement("div", {
385
+ className: "brand-skeleton__item shimmer"
386
+ }), /*#__PURE__*/React__default.createElement("div", {
387
+ className: "brand-skeleton__item shimmer"
388
+ }));
389
+ };
390
+
391
+ var renderProductSkeleton = function renderProductSkeleton() {
392
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, _toConsumableArray(Array(3)).map(function (_, index) {
393
+ return /*#__PURE__*/React__default.createElement("div", {
394
+ key: index,
395
+ className: "product-skeleton"
396
+ }, /*#__PURE__*/React__default.createElement("div", {
397
+ className: "product-skeleton__image shimmer"
398
+ }), /*#__PURE__*/React__default.createElement("div", {
399
+ className: "product-skeleton__content"
400
+ }, /*#__PURE__*/React__default.createElement("div", {
401
+ className: "product-skeleton__title shimmer"
402
+ }), /*#__PURE__*/React__default.createElement("div", {
403
+ className: "product-skeleton__subtitle shimmer"
404
+ }), /*#__PURE__*/React__default.createElement("div", {
405
+ className: "product-skeleton__price shimmer"
406
+ })));
407
+ }));
408
+ };
409
+
410
+ var renderProductCard = function renderProductCard(product) {
411
+ var selectedPrice = product.prices ? product.prices.find(function (p) {
412
+ return p.currency === currency;
413
+ }) : {
414
+ price: product.price,
415
+ retail_price: product.est_retail_price
416
+ };
417
+ var displayPrice = product.on_promotion && product.promotion_price ? product.promotion_price : selectedPrice.price;
418
+ var hasPromotion = product.on_promotion && product.promotion_price;
419
+ return /*#__PURE__*/React__default.createElement("a", {
420
+ key: product.link,
421
+ href: product.link,
422
+ className: "product-card",
423
+ onClick: function onClick() {
424
+ if (typeof onProductSearchResultClick === 'function') {
425
+ onProductSearchResultClick({
426
+ product_name: product.name,
427
+ product_brand: product.brand,
428
+ product_link: product.link,
429
+ search_string: searchValue,
430
+ is_popular: shouldShowInitialData
431
+ });
432
+ }
433
+ }
434
+ }, product.featured_image && /*#__PURE__*/React__default.createElement("div", {
435
+ className: "product-card__image-container"
436
+ }, /*#__PURE__*/React__default.createElement("img", {
437
+ src: product.featured_image,
438
+ alt: product.name,
439
+ className: "product-card__image"
440
+ })), /*#__PURE__*/React__default.createElement("div", {
441
+ className: "product-card__details"
442
+ }, /*#__PURE__*/React__default.createElement("h3", {
443
+ className: "product-card__name"
444
+ }, shouldShowInitialData ? /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
445
+ className: "product-card__brand-name"
446
+ }, product.brand.toUpperCase()), ' ', product.name) : /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
447
+ className: "product-card__brand-name"
448
+ }, product.brand.toUpperCase()), ' ', product.name)), /*#__PURE__*/React__default.createElement("div", {
449
+ className: "product-card__info-row"
450
+ }, /*#__PURE__*/React__default.createElement("div", {
451
+ className: "product-card__price-group"
452
+ }, hasPromotion ? /*#__PURE__*/React__default.createElement("div", {
453
+ className: "product-card__price-with-promotion"
454
+ }, /*#__PURE__*/React__default.createElement("div", {
455
+ className: "product-card__price product-card__price--promotion"
456
+ }, formatPrice(displayPrice)), /*#__PURE__*/React__default.createElement("div", {
457
+ className: "product-card__price product-card__price--original"
458
+ }, formatPrice(selectedPrice.price))) : /*#__PURE__*/React__default.createElement("div", {
459
+ className: "product-card__price"
460
+ }, formatPrice(displayPrice)), selectedPrice.retail_price > 1 && selectedPrice.retail_price > displayPrice && /*#__PURE__*/React__default.createElement("div", {
461
+ className: "product-card__retail-price"
462
+ }, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), product.condition && /*#__PURE__*/React__default.createElement("div", {
463
+ className: "product-card__condition"
464
+ }, /*#__PURE__*/React__default.createElement("span", {
465
+ className: "product-card__condition-label"
466
+ }, "Condition:"), product.condition))));
467
+ };
468
+
469
+ var getBrandLink = function getBrandLink(brand) {
470
+ return "/products/brands/".concat(brand.slug);
471
+ };
472
+
473
+ var limitBrands = function limitBrands(brands) {
474
+ if (isMobile && brands && brands.length > 4) {
475
+ return brands.slice(0, 4);
476
+ }
477
+
478
+ return brands;
479
+ };
480
+
481
+ var renderBrandsList = function renderBrandsList() {
482
+ var _limitBrands2;
483
+
484
+ if (isLoading) {
485
+ return renderBrandSkeleton();
486
+ }
484
487
 
485
- return (_limitBrands = limitBrands(initialSearchData === null || initialSearchData === void 0 ? void 0 : initialSearchData.trending_brands)) === null || _limitBrands === void 0 ? void 0 : _limitBrands.map(function (brand) {
486
- return /*#__PURE__*/React.createElement("a", {
487
- key: brand.id,
488
- href: getBrandLink(brand),
488
+ if (shouldShowInitialData) {
489
+ var _limitBrands;
490
+
491
+ return (_limitBrands = limitBrands(initialSearchData === null || initialSearchData === void 0 ? void 0 : initialSearchData.trending_brands)) === null || _limitBrands === void 0 ? void 0 : _limitBrands.map(function (brand) {
492
+ return /*#__PURE__*/React__default.createElement("a", {
493
+ key: brand.id,
494
+ href: getBrandLink(brand),
495
+ className: "search-results__item",
496
+ onClick: function onClick() {
497
+ if (typeof onBrandSearchResultClick === 'function') {
498
+ onBrandSearchResultClick({
499
+ brand_name: brand.name,
500
+ brand_link: getBrandLink(brand),
501
+ search_string: searchValue,
502
+ is_trending: true
503
+ });
504
+ }
505
+ }
506
+ }, brand.name);
507
+ });
508
+ }
509
+
510
+ return (_limitBrands2 = limitBrands(searchResults === null || searchResults === void 0 ? void 0 : searchResults.brands)) === null || _limitBrands2 === void 0 ? void 0 : _limitBrands2.map(function (brand) {
511
+ return /*#__PURE__*/React__default.createElement("a", {
512
+ key: brand.link,
513
+ href: brand.link,
489
514
  className: "search-results__item",
490
515
  onClick: function onClick() {
491
516
  if (typeof onBrandSearchResultClick === 'function') {
492
517
  onBrandSearchResultClick({
493
518
  brand_name: brand.name,
494
- brand_link: getBrandLink(brand),
519
+ brand_link: brand.link,
495
520
  search_string: searchValue,
496
- is_trending: true
521
+ is_trending: false
497
522
  });
498
523
  }
499
524
  }
500
525
  }, brand.name);
501
526
  });
502
- }
527
+ };
503
528
 
504
- return (_limitBrands2 = limitBrands(searchResults === null || searchResults === void 0 ? void 0 : searchResults.brands)) === null || _limitBrands2 === void 0 ? void 0 : _limitBrands2.map(function (brand) {
505
- return /*#__PURE__*/React.createElement("a", {
506
- key: brand.link,
507
- href: brand.link,
508
- className: "search-results__item",
509
- onClick: function onClick() {
510
- if (typeof onBrandSearchResultClick === 'function') {
511
- onBrandSearchResultClick({
512
- brand_name: brand.name,
513
- brand_link: brand.link,
514
- search_string: searchValue,
515
- is_trending: false
516
- });
517
- }
518
- }
519
- }, brand.name);
520
- });
521
- };
529
+ var renderProductsList = function renderProductsList() {
530
+ var _searchResults$produc2;
522
531
 
523
- var renderProductsList = function renderProductsList() {
524
- var _searchResults$produc2;
532
+ if (isLoading) {
533
+ return renderProductSkeleton();
534
+ }
525
535
 
526
- if (isLoading) {
527
- return renderProductSkeleton();
528
- }
536
+ if (shouldShowInitialData) {
537
+ var _initialSearchData$la2;
529
538
 
530
- if (shouldShowInitialData) {
531
- var _initialSearchData$la2;
539
+ return initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la2 = initialSearchData.latest_products) === null || _initialSearchData$la2 === void 0 ? void 0 : _initialSearchData$la2.map(renderProductCard);
540
+ }
532
541
 
533
- return initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la2 = initialSearchData.latest_products) === null || _initialSearchData$la2 === void 0 ? void 0 : _initialSearchData$la2.map(renderProductCard);
542
+ return searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc2 = searchResults.products) === null || _searchResults$produc2 === void 0 ? void 0 : _searchResults$produc2.map(renderProductCard);
543
+ }; // Show no results state
544
+
545
+
546
+ if (showNoResults) {
547
+ return /*#__PURE__*/React__default.createElement("div", {
548
+ className: "search-results",
549
+ ref: searchResultsRef
550
+ }, /*#__PURE__*/React__default.createElement("div", {
551
+ className: "search-results__no-results"
552
+ }, /*#__PURE__*/React__default.createElement("h2", {
553
+ className: "search-results__header"
554
+ }, "TOP MATCHES"), /*#__PURE__*/React__default.createElement("div", {
555
+ className: "search-results__no-results-content"
556
+ }, /*#__PURE__*/React__default.createElement("div", {
557
+ className: "search-results__no-results-image"
558
+ }, /*#__PURE__*/React__default.createElement("img", {
559
+ src: noResultsImage,
560
+ alt: "No results"
561
+ })), /*#__PURE__*/React__default.createElement("div", {
562
+ className: "search-results__no-results-text"
563
+ }, /*#__PURE__*/React__default.createElement("p", {
564
+ className: "search-results__no-results-title"
565
+ }, "There are currently no products in stock that match your selection"), showCreateInterest && /*#__PURE__*/React__default.createElement("p", {
566
+ className: "search-results__no-results-description"
567
+ }, "Create an interest now and receive instant notifications as your interests list."))), showCreateInterest && /*#__PURE__*/React__default.createElement("button", {
568
+ type: "button",
569
+ className: "search-results__create-interest-button",
570
+ onClick: onCreateInterests
571
+ }, "Create Interests")));
534
572
  }
535
573
 
536
- return searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc2 = searchResults.products) === null || _searchResults$produc2 === void 0 ? void 0 : _searchResults$produc2.map(renderProductCard);
537
- }; // Show no results state
538
-
539
-
540
- if (showNoResults) {
541
- return /*#__PURE__*/React.createElement("div", {
574
+ return /*#__PURE__*/React__default.createElement("div", {
542
575
  className: "search-results",
543
576
  ref: searchResultsRef
544
- }, /*#__PURE__*/React.createElement("div", {
545
- className: "search-results__no-results"
546
- }, /*#__PURE__*/React.createElement("h2", {
577
+ }, /*#__PURE__*/React__default.createElement("div", {
578
+ className: "search-results__section"
579
+ }, /*#__PURE__*/React__default.createElement("h2", {
547
580
  className: "search-results__header"
548
- }, "TOP MATCHES"), /*#__PURE__*/React.createElement("div", {
549
- className: "search-results__no-results-content"
550
- }, /*#__PURE__*/React.createElement("div", {
551
- className: "search-results__no-results-image"
552
- }, /*#__PURE__*/React.createElement("img", {
553
- src: noResultsImage,
554
- alt: "No results"
555
- })), /*#__PURE__*/React.createElement("div", {
556
- className: "search-results__no-results-text"
557
- }, /*#__PURE__*/React.createElement("p", {
558
- className: "search-results__no-results-title"
559
- }, "There are currently no products in stock that match your selection"), showCreateInterest && /*#__PURE__*/React.createElement("p", {
560
- className: "search-results__no-results-description"
561
- }, "Create an interest now and receive instant notifications as your interests list."))), showCreateInterest && /*#__PURE__*/React.createElement("button", {
581
+ }, shouldShowInitialData ? 'TRENDING SEARCHES' : 'BRANDS'), /*#__PURE__*/React__default.createElement("div", {
582
+ className: "search-results__list"
583
+ }, renderBrandsList())), /*#__PURE__*/React__default.createElement("div", {
584
+ className: "search-results__section"
585
+ }, /*#__PURE__*/React__default.createElement("div", {
586
+ className: "search-results__section-header"
587
+ }, /*#__PURE__*/React__default.createElement("h2", {
588
+ className: "search-results__header"
589
+ }, shouldShowInitialData ? 'POPULAR' : 'TOP MATCHES'), /*#__PURE__*/React__default.createElement("button", {
562
590
  type: "button",
563
- className: "search-results__create-interest-button",
564
- onClick: onCreateInterests
565
- }, "Create Interests")));
566
- }
591
+ className: "search-results__view-all-link",
592
+ onClick: function onClick() {
593
+ onViewAll();
594
+ }
595
+ }, "View all items")), /*#__PURE__*/React__default.createElement("div", {
596
+ className: "search-results__product-list"
597
+ }, renderProductsList()), /*#__PURE__*/React__default.createElement("button", {
598
+ type: "button",
599
+ className: "search-results__view-all-button",
600
+ onClick: function onClick() {
601
+ onViewAll();
567
602
 
568
- return /*#__PURE__*/React.createElement("div", {
569
- className: "search-results",
570
- ref: searchResultsRef
571
- }, /*#__PURE__*/React.createElement("div", {
572
- className: "search-results__section"
573
- }, /*#__PURE__*/React.createElement("h2", {
574
- className: "search-results__header"
575
- }, shouldShowInitialData ? 'TRENDING SEARCHES' : 'BRANDS'), /*#__PURE__*/React.createElement("div", {
576
- className: "search-results__list"
577
- }, renderBrandsList())), /*#__PURE__*/React.createElement("div", {
578
- className: "search-results__section"
579
- }, /*#__PURE__*/React.createElement("div", {
580
- className: "search-results__section-header"
581
- }, /*#__PURE__*/React.createElement("h2", {
582
- className: "search-results__header"
583
- }, shouldShowInitialData ? 'POPULAR' : 'TOP MATCHES'), /*#__PURE__*/React.createElement("button", {
584
- type: "button",
585
- className: "search-results__view-all-link",
586
- onClick: function onClick() {
587
- onViewAll();
588
- }
589
- }, "View all items")), /*#__PURE__*/React.createElement("div", {
590
- className: "search-results__product-list"
591
- }, renderProductsList()), /*#__PURE__*/React.createElement("button", {
592
- type: "button",
593
- className: "search-results__view-all-button",
594
- onClick: function onClick() {
595
- onViewAll();
596
-
597
- if (!shouldShowInitialData) {
598
- onSearchSubmit(searchValue);
599
- setSearchValue('');
600
- setIsSearchFocused(false);
603
+ if (!shouldShowInitialData) {
604
+ onSearchSubmit(searchValue);
605
+ setSearchValue('');
606
+ setIsSearchFocused(false);
607
+ }
601
608
  }
602
- }
603
- }, "View all items")));
604
- };
605
-
606
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
607
- /* position relative is required for the Body element to be positioned correctly */
608
-
609
- var relativeInlineStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
610
- var topMiddleBodyStyle = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
611
- var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
612
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n /*Bottom Arrow*/\n top: 100%; /* At the bottom of the tooltip */\n left: calc(50% - ", ");\n border-width: ", ";\n border-style: solid;\n border-color: ", " transparent transparent transparent;\n"])), props.$apexWidth, props.$apexWidth, props.theme.colors.base);
613
- };
614
- var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
615
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
616
- };
617
- var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
618
- return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n /*Top Arrow*/\n bottom: 100%; /* At the top of the tooltip */\n top: initial;\n left: 50%;\n border-style: solid;\n border-color: transparent transparent ", " transparent;\n"])), props.theme.colors.base);
619
- };
620
-
621
- var _templateObject$1;
622
-
623
- var getBodyStyle = function getBodyStyle() {
624
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
625
- var _props$$toolTipPositi = props.$toolTipPosition,
626
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
627
-
628
- switch ($toolTipPosition) {
629
- case 'top':
630
- return topMiddleBodyStyle;
631
-
632
- case 'bottom':
633
- return getBottomMiddleBodyStyle(props);
634
-
635
- default:
636
- return null;
637
- }
638
- };
609
+ }, "View all items")));
610
+ };
639
611
 
640
- var getAfterStyling = function getAfterStyling() {
641
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
642
- var $toolTipPosition = props.$toolTipPosition;
612
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
613
+ /* position relative is required for the Body element to be positioned correctly */
643
614
 
644
- switch ($toolTipPosition) {
645
- case 'top':
646
- return getTopMiddleArrowAfterStyle(props);
615
+ var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
616
+ var topMiddleBodyStyle = styled.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
617
+ var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
618
+ return styled.css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n /*Bottom Arrow*/\n top: 100%; /* At the bottom of the tooltip */\n left: calc(50% - ", ");\n border-width: ", ";\n border-style: solid;\n border-color: ", " transparent transparent transparent;\n"])), props.$apexWidth, props.$apexWidth, props.theme.colors.base);
619
+ };
620
+ var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
621
+ return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
622
+ };
623
+ var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
624
+ return styled.css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n /*Top Arrow*/\n bottom: 100%; /* At the top of the tooltip */\n top: initial;\n left: 50%;\n border-style: solid;\n border-color: transparent transparent ", " transparent;\n"])), props.theme.colors.base);
625
+ };
647
626
 
648
- case 'bottom':
649
- return getBottomMiddleArrowAfterStyle(props);
627
+ var _templateObject$1;
650
628
 
651
- default:
652
- return '';
653
- }
654
- };
655
-
656
- var Body = styled.span(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n ", ";\n visibility: hidden;\n opacity: 0;\n width: ", ";\n transition: visibility 0.3s linear, opacity 0.3s linear;\n background-color: ", ";\n color: white;\n text-align: center;\n border-radius: 5px;\n ", "\n &::after {\n content: ' ';\n position: absolute;\n ", "\n }\n"])), relativeInlineStyle, function (props) {
657
- return props.$bodyWidth;
658
- }, function (props) {
659
- return props.theme.colors.base || 'black';
660
- }, function (props) {
661
- return getBodyStyle(props);
662
- }, function (props) {
663
- return getAfterStyling(props);
664
- });
665
-
666
- var _templateObject$2;
667
- var Container = styled.div(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n &:hover ", " {\n opacity: 1;\n visibility: visible;\n }\n"])), relativeInlineStyle, Body);
668
-
669
- var theme = {
670
- breakpoints: ['40em', '52em', '64em'],
671
- space: ['0px', '4px', '8px', '16px', '32px', '64px', '128px', '256px', '512px'],
672
- fontSizes: ['12px', '14px', '16px', '20px', '24px', '32px', '48px', '64px', '72px'],
673
- marginPaddings: ['0.5rem', '1rem', '1.5rem', '2rem', '2.5rem', '3rem', '3.5rem', '4rem', '4.5rem', '5rem', '5.5rem', '6rem'],
674
- letterSpacings: ['-0.5px', '0px', '+0.5px'],
675
- radii: ['0px', '2px', '4px', '8px'],
676
- borderRadius: '6px',
677
- colors: {
678
- primary: '#000',
679
- base: '#4e4949',
680
- baseLt: '#817c7c',
681
- borderColor: '#d8d8d8',
682
- ntrlMin: '#fff',
683
- ntrlMinTen: '#e6e6e6',
684
- gray: '#efefef',
685
- darkerGray: '#454141'
686
- },
687
- rareStepColors: {
688
- primary: '#202b58',
689
- secondary: '#ef5c2d',
690
- ntrlMin: '#ffffff',
691
- ntrl40: '#f4f4f4',
692
- ntrl50: '#808080',
693
- ntrl60: '#e8e8e8',
694
- ntrl70: '#252525',
695
- ntrlMax: '#000000'
696
- },
697
- rareStepFontWeights: {
698
- normal: 400,
699
- medium: 500,
700
- semiBold: 600,
701
- bold: 700
702
- },
703
- rareStepFontSize: {
704
- h1: '36px',
705
- h2: '30px',
706
- h3: '24px',
707
- h4: '20px',
708
- h5: '16px',
709
- h6: '14px',
710
- footerTitle: '16px'
711
- },
712
- rareStepPageSizes: {
713
- mobile: '500px',
714
- tablet: '768px',
715
- desktop: '992px',
716
- screenl: '1280px',
717
- screenxl: '1680px',
718
- screenxxl: '1920px',
719
- container: '1600px'
720
- }
721
- };
722
-
723
- var themed = (function (Component) {
724
- return /*#__PURE__*/forwardRef(function (props, ref) {
725
- return /*#__PURE__*/React.createElement(ThemeProvider, {
726
- theme: theme
727
- }, /*#__PURE__*/React.createElement(Component, _extends({}, props, {
728
- ref: ref
729
- })));
730
- });
731
- });
732
-
733
- /* eslint-disable react/require-default-props */
734
-
735
- var Tooltip = function Tooltip(_ref) {
736
- var _ref$children = _ref.children,
737
- children = _ref$children === void 0 ? null : _ref$children,
738
- _ref$toolTipText = _ref.toolTipText,
739
- toolTipText = _ref$toolTipText === void 0 ? '' : _ref$toolTipText,
740
- _ref$toolTipPosition = _ref.toolTipPosition,
741
- toolTipPosition = _ref$toolTipPosition === void 0 ? 'top' : _ref$toolTipPosition,
742
- _ref$bodyWidth = _ref.bodyWidth,
743
- bodyWidth = _ref$bodyWidth === void 0 ? '8em' : _ref$bodyWidth,
744
- _ref$apexWidth = _ref.apexWidth,
745
- apexWidth = _ref$apexWidth === void 0 ? '5px' : _ref$apexWidth,
746
- _ref$containerClassNa = _ref.containerClassName,
747
- containerClassName = _ref$containerClassNa === void 0 ? '' : _ref$containerClassNa,
748
- _ref$bodyClassName = _ref.bodyClassName,
749
- bodyClassName = _ref$bodyClassName === void 0 ? '' : _ref$bodyClassName;
750
- return /*#__PURE__*/React.createElement(Container, {
751
- className: containerClassName
752
- }, children, /*#__PURE__*/React.createElement(Body, {
753
- $toolTipPosition: toolTipPosition,
754
- $bodyWidth: bodyWidth,
755
- $apexWidth: apexWidth,
756
- className: bodyClassName
757
- }, toolTipText));
758
- };
759
-
760
- var Tooltip$1 = themed(Tooltip);
761
-
762
- var CurrencySelect = function CurrencySelect(_ref) {
763
- var currency = _ref.currency,
764
- currencyOptions = _ref.currencyOptions,
765
- onCurrencyChange = _ref.onCurrencyChange,
766
- _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
767
- isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
768
- _ref$tooltipContent = _ref.tooltipContent,
769
- tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
770
-
771
- if (!currencyOptions || currencyOptions.length === 0) {
772
- return null;
773
- }
629
+ var getBodyStyle = function getBodyStyle() {
630
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
631
+ var _props$$toolTipPositi = props.$toolTipPosition,
632
+ $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
774
633
 
775
- var selectedOption = currencyOptions.find(function (opt) {
776
- return opt.value === currency;
777
- });
634
+ switch ($toolTipPosition) {
635
+ case 'top':
636
+ return topMiddleBodyStyle;
778
637
 
779
- if (!selectedOption) {
780
- return null;
781
- }
638
+ case 'bottom':
639
+ return getBottomMiddleBodyStyle(props);
782
640
 
783
- return /*#__PURE__*/React.createElement(Tooltip$1, {
784
- toolTipText: isCurrencySelectionDisabled ? tooltipContent : '',
785
- toolTipPosition: "bottom",
786
- bodyWidth: "160px"
787
- }, /*#__PURE__*/React.createElement("div", {
788
- className: "currency-select-container ".concat(isCurrencySelectionDisabled ? 'disabled' : '')
789
- }, /*#__PURE__*/React.createElement("div", {
790
- className: "currency-flag"
791
- }, /*#__PURE__*/React.createElement("img", {
792
- src: selectedOption.flagSrc,
793
- alt: "".concat(currency, " flag")
794
- })), /*#__PURE__*/React.createElement("select", {
795
- value: currency,
796
- onChange: function onChange(e) {
797
- return onCurrencyChange(e.target.value);
798
- },
799
- className: "currency-select",
800
- disabled: isCurrencySelectionDisabled
801
- }, currencyOptions.map(function (option) {
802
- return /*#__PURE__*/React.createElement("option", {
803
- key: option.value,
804
- value: option.value
805
- }, option.value, " (", option.symbol, ")");
806
- }))));
807
- };
808
-
809
- var searchBrandsAggregations = function searchBrandsAggregations(search, currencyCode) {
810
- return {
811
- query: "\n query GetProductFilterAggregations($search: String!) {\n luxity_products_aggregations(search: $search) {\n luxity_brand {\n name\n }\n }\n }\n ",
812
- variables: {
813
- search: search,
814
- currency_code: currencyCode
641
+ default:
642
+ return null;
815
643
  }
816
644
  };
817
- }; // NEW: Get top products for search dropdown (right side)
818
-
819
- var searchProductsFilter = function searchProductsFilter(search, limit, currencyCode) {
820
- return {
821
- query: "\n query LUXITY_PRODUCTS_FILTER(\n $search: String!\n $limit: Int!\n $page: Int!\n $sort_by: String!\n $with_sold: Boolean!\n $currency_code: String!\n ) {\n luxity_products_filter(\n search: $search\n limit: $limit\n page: $page\n sort_by: $sort_by\n with_sold: $with_sold\n ) {\n data {\n id\n product {\n sku\n name\n price(currency_code: $currency_code)\n promotion_price(currency_code: $currency_code)\n est_retail_price(currency_code: $currency_code)\n condition\n currency_symbol(currency_code: $currency_code)\n }\n product_slug\n category_type\n gender\n status\n featured_image\n on_promotion\n promotion_discount\n luxity_brand {\n id\n name\n slug\n }\n }\n total\n }\n }\n ",
822
- variables: {
823
- search: search,
824
- limit: limit,
825
- page: 1,
826
- sort_by: 'newest',
827
- with_sold: false,
828
- currency_code: currencyCode
645
+
646
+ var getAfterStyling = function getAfterStyling() {
647
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
648
+ var $toolTipPosition = props.$toolTipPosition;
649
+
650
+ switch ($toolTipPosition) {
651
+ case 'top':
652
+ return getTopMiddleArrowAfterStyle(props);
653
+
654
+ case 'bottom':
655
+ return getBottomMiddleArrowAfterStyle(props);
656
+
657
+ default:
658
+ return '';
829
659
  }
830
660
  };
831
- };
832
-
833
- var useSearch = function useSearch(_ref) {
834
- var endpoint = _ref.endpoint,
835
- onSearchLoading = _ref.onSearchLoading,
836
- currency = _ref.currency,
837
- onSearchPreview = _ref.onSearchPreview,
838
- onNoResults = _ref.onNoResults;
839
- var currentSearchRequestToken = useRef(null);
840
- var debounce = useCallback(function (func, wait) {
841
- var timeout;
842
- return function executedFunction() {
843
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
844
- args[_key] = arguments[_key];
845
- }
846
661
 
847
- var later = function later() {
848
- clearTimeout(timeout);
849
- func.apply(void 0, args);
850
- };
662
+ var Body = styled__default.span(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n ", ";\n visibility: hidden;\n opacity: 0;\n width: ", ";\n transition: visibility 0.3s linear, opacity 0.3s linear;\n background-color: ", ";\n color: white;\n text-align: center;\n border-radius: 5px;\n ", "\n &::after {\n content: ' ';\n position: absolute;\n ", "\n }\n"])), relativeInlineStyle, function (props) {
663
+ return props.$bodyWidth;
664
+ }, function (props) {
665
+ return props.theme.colors.base || 'black';
666
+ }, function (props) {
667
+ return getBodyStyle(props);
668
+ }, function (props) {
669
+ return getAfterStyling(props);
670
+ });
851
671
 
852
- clearTimeout(timeout);
853
- timeout = setTimeout(later, wait);
854
- };
855
- }, []);
856
- var fetchInitialSearchData = useCallback(function (initialSearchDataUrl, setInitialSearchView) {
857
- axios.get("".concat(initialSearchDataUrl)).then(function (_ref2) {
858
- var data = _ref2.data;
859
- setInitialSearchView({
860
- trending_brands: data.trending_brands,
861
- latest_products: data.latest_products
862
- });
863
- }).catch(function () {
864
- setInitialSearchView({
865
- trending_brands: [],
866
- latest_products: []
867
- });
672
+ var _templateObject$2;
673
+ var Container = styled__default.div(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n ", ";\n cursor: pointer;\n &:hover ", " {\n opacity: 1;\n visibility: visible;\n }\n"])), relativeInlineStyle, Body);
674
+
675
+ var theme = {
676
+ breakpoints: ['40em', '52em', '64em'],
677
+ space: ['0px', '4px', '8px', '16px', '32px', '64px', '128px', '256px', '512px'],
678
+ fontSizes: ['12px', '14px', '16px', '20px', '24px', '32px', '48px', '64px', '72px'],
679
+ marginPaddings: ['0.5rem', '1rem', '1.5rem', '2rem', '2.5rem', '3rem', '3.5rem', '4rem', '4.5rem', '5rem', '5.5rem', '6rem'],
680
+ letterSpacings: ['-0.5px', '0px', '+0.5px'],
681
+ radii: ['0px', '2px', '4px', '8px'],
682
+ borderRadius: '6px',
683
+ colors: {
684
+ primary: '#000',
685
+ base: '#4e4949',
686
+ baseLt: '#817c7c',
687
+ borderColor: '#d8d8d8',
688
+ ntrlMin: '#fff',
689
+ ntrlMinTen: '#e6e6e6',
690
+ gray: '#efefef',
691
+ darkerGray: '#454141'
692
+ },
693
+ rareStepColors: {
694
+ primary: '#202b58',
695
+ secondary: '#ef5c2d',
696
+ ntrlMin: '#ffffff',
697
+ ntrl40: '#f4f4f4',
698
+ ntrl50: '#808080',
699
+ ntrl60: '#e8e8e8',
700
+ ntrl70: '#252525',
701
+ ntrlMax: '#000000'
702
+ },
703
+ rareStepFontWeights: {
704
+ normal: 400,
705
+ medium: 500,
706
+ semiBold: 600,
707
+ bold: 700
708
+ },
709
+ rareStepFontSize: {
710
+ h1: '36px',
711
+ h2: '30px',
712
+ h3: '24px',
713
+ h4: '20px',
714
+ h5: '16px',
715
+ h6: '14px',
716
+ footerTitle: '16px'
717
+ },
718
+ rareStepPageSizes: {
719
+ mobile: '500px',
720
+ tablet: '768px',
721
+ desktop: '992px',
722
+ screenl: '1280px',
723
+ screenxl: '1680px',
724
+ screenxxl: '1920px',
725
+ container: '1600px'
726
+ }
727
+ };
728
+
729
+ var themed = (function (Component) {
730
+ return /*#__PURE__*/React.forwardRef(function (props, ref) {
731
+ return /*#__PURE__*/React__default.createElement(styled.ThemeProvider, {
732
+ theme: theme
733
+ }, /*#__PURE__*/React__default.createElement(Component, _extends({}, props, {
734
+ ref: ref
735
+ })));
868
736
  });
869
- }, []);
870
- var performSearch = useCallback(function (searchQuery, setSearchResults) {
871
- if (!searchQuery || searchQuery.trim() === '') {
872
- setSearchResults({
873
- brands: [],
874
- products: []
875
- }); // Reset no results state when clearing search
737
+ });
876
738
 
877
- if (typeof onNoResults === 'function') {
878
- onNoResults(false);
879
- }
739
+ /* eslint-disable react/require-default-props */
740
+
741
+ var Tooltip = function Tooltip(_ref) {
742
+ var _ref$children = _ref.children,
743
+ children = _ref$children === void 0 ? null : _ref$children,
744
+ _ref$toolTipText = _ref.toolTipText,
745
+ toolTipText = _ref$toolTipText === void 0 ? '' : _ref$toolTipText,
746
+ _ref$toolTipPosition = _ref.toolTipPosition,
747
+ toolTipPosition = _ref$toolTipPosition === void 0 ? 'top' : _ref$toolTipPosition,
748
+ _ref$bodyWidth = _ref.bodyWidth,
749
+ bodyWidth = _ref$bodyWidth === void 0 ? '8em' : _ref$bodyWidth,
750
+ _ref$apexWidth = _ref.apexWidth,
751
+ apexWidth = _ref$apexWidth === void 0 ? '5px' : _ref$apexWidth,
752
+ _ref$containerClassNa = _ref.containerClassName,
753
+ containerClassName = _ref$containerClassNa === void 0 ? '' : _ref$containerClassNa,
754
+ _ref$bodyClassName = _ref.bodyClassName,
755
+ bodyClassName = _ref$bodyClassName === void 0 ? '' : _ref$bodyClassName;
756
+ return /*#__PURE__*/React__default.createElement(Container, {
757
+ className: containerClassName
758
+ }, children, /*#__PURE__*/React__default.createElement(Body, {
759
+ $toolTipPosition: toolTipPosition,
760
+ $bodyWidth: bodyWidth,
761
+ $apexWidth: apexWidth,
762
+ className: bodyClassName
763
+ }, toolTipText));
764
+ };
880
765
 
881
- return;
882
- } // Cancel any ongoing search request to prevent race conditions
766
+ var Tooltip$1 = themed(Tooltip);
883
767
 
768
+ var CurrencySelect = function CurrencySelect(_ref) {
769
+ var currency = _ref.currency,
770
+ currencyOptions = _ref.currencyOptions,
771
+ onCurrencyChange = _ref.onCurrencyChange,
772
+ _ref$isCurrencySelect = _ref.isCurrencySelectionDisabled,
773
+ isCurrencySelectionDisabled = _ref$isCurrencySelect === void 0 ? false : _ref$isCurrencySelect,
774
+ _ref$tooltipContent = _ref.tooltipContent,
775
+ tooltipContent = _ref$tooltipContent === void 0 ? '' : _ref$tooltipContent;
884
776
 
885
- if (currentSearchRequestToken.current) {
886
- currentSearchRequestToken.current.cancel();
887
- } // Create a new token for this specific search request
777
+ if (!currencyOptions || currencyOptions.length === 0) {
778
+ return null;
779
+ }
888
780
 
781
+ var selectedOption = currencyOptions.find(function (opt) {
782
+ return opt.value === currency;
783
+ });
889
784
 
890
- var newSearchToken = axios.CancelToken.source();
891
- currentSearchRequestToken.current = newSearchToken; // Reset no results state when starting new search (user is typing)
785
+ if (!selectedOption) {
786
+ return null;
787
+ }
892
788
 
893
- if (typeof onNoResults === 'function') {
894
- onNoResults(false);
895
- } // Set loading to true when starting the search request
789
+ return /*#__PURE__*/React__default.createElement(Tooltip$1, {
790
+ toolTipText: isCurrencySelectionDisabled ? tooltipContent : '',
791
+ toolTipPosition: "bottom",
792
+ bodyWidth: "160px"
793
+ }, /*#__PURE__*/React__default.createElement("div", {
794
+ className: "currency-select-container ".concat(isCurrencySelectionDisabled ? 'disabled' : '')
795
+ }, /*#__PURE__*/React__default.createElement("div", {
796
+ className: "currency-flag"
797
+ }, /*#__PURE__*/React__default.createElement("img", {
798
+ src: selectedOption.flagSrc,
799
+ alt: "".concat(currency, " flag")
800
+ })), /*#__PURE__*/React__default.createElement("select", {
801
+ value: currency,
802
+ onChange: function onChange(e) {
803
+ return onCurrencyChange(e.target.value);
804
+ },
805
+ className: "currency-select",
806
+ disabled: isCurrencySelectionDisabled
807
+ }, currencyOptions.map(function (option) {
808
+ return /*#__PURE__*/React__default.createElement("option", {
809
+ key: option.value,
810
+ value: option.value
811
+ }, option.value, " (", option.symbol, ")");
812
+ }))));
813
+ };
896
814
 
815
+ var searchBrandsAggregations = function searchBrandsAggregations(search, currencyCode) {
816
+ return {
817
+ query: "\n query GetProductFilterAggregations($search: String!) {\n luxity_products_aggregations(search: $search) {\n luxity_brand {\n name\n }\n }\n }\n ",
818
+ variables: {
819
+ search: search,
820
+ currency_code: currencyCode
821
+ }
822
+ };
823
+ }; // NEW: Get top products for search dropdown (right side)
824
+
825
+ var searchProductsFilter = function searchProductsFilter(search, limit, currencyCode) {
826
+ return {
827
+ query: "\n query LUXITY_PRODUCTS_FILTER(\n $search: String!\n $limit: Int!\n $page: Int!\n $sort_by: String!\n $with_sold: Boolean!\n $currency_code: String!\n ) {\n luxity_products_filter(\n search: $search\n limit: $limit\n page: $page\n sort_by: $sort_by\n with_sold: $with_sold\n ) {\n data {\n id\n product {\n sku\n name\n price(currency_code: $currency_code)\n promotion_price(currency_code: $currency_code)\n est_retail_price(currency_code: $currency_code)\n condition\n currency_symbol(currency_code: $currency_code)\n }\n product_slug\n category_type\n gender\n status\n featured_image\n on_promotion\n promotion_discount\n luxity_brand {\n id\n name\n slug\n }\n }\n total\n }\n }\n ",
828
+ variables: {
829
+ search: search,
830
+ limit: limit,
831
+ page: 1,
832
+ sort_by: 'newest',
833
+ with_sold: false,
834
+ currency_code: currencyCode
835
+ }
836
+ };
837
+ };
897
838
 
898
- if (typeof onSearchLoading === 'function') {
899
- onSearchLoading(true);
900
- } // Make TWO parallel queries: brands aggregations + products filter
839
+ var useSearch = function useSearch(_ref) {
840
+ var endpoint = _ref.endpoint,
841
+ onSearchLoading = _ref.onSearchLoading,
842
+ currency = _ref.currency,
843
+ onSearchPreview = _ref.onSearchPreview,
844
+ onNoResults = _ref.onNoResults;
845
+ var currentSearchRequestToken = React.useRef(null);
846
+ var debounce = React.useCallback(function (func, wait) {
847
+ var timeout;
848
+ return function executedFunction() {
849
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
850
+ args[_key] = arguments[_key];
851
+ }
901
852
 
853
+ var later = function later() {
854
+ clearTimeout(timeout);
855
+ func.apply(void 0, args);
856
+ };
902
857
 
903
- Promise.all([// Query 1: Get brands aggregations
904
- axios.post(endpoint, searchBrandsAggregations(searchQuery, currency), {
905
- cancelToken: newSearchToken.token
906
- }), // Query 2: Get top 3 products
907
- axios.post(endpoint, searchProductsFilter(searchQuery, 3, currency), {
908
- cancelToken: newSearchToken.token
909
- })]).then(function (_ref3) {
910
- var _ref4 = _slicedToArray(_ref3, 2),
911
- brandsResponse = _ref4[0],
912
- productsResponse = _ref4[1];
858
+ clearTimeout(timeout);
859
+ timeout = setTimeout(later, wait);
860
+ };
861
+ }, []);
862
+ var fetchInitialSearchData = React.useCallback(function (initialSearchDataUrl, setInitialSearchView) {
863
+ axios.get("".concat(initialSearchDataUrl)).then(function (_ref2) {
864
+ var data = _ref2.data;
865
+ setInitialSearchView({
866
+ trending_brands: data.trending_brands,
867
+ latest_products: data.latest_products
868
+ });
869
+ }).catch(function () {
870
+ setInitialSearchView({
871
+ trending_brands: [],
872
+ latest_products: []
873
+ });
874
+ });
875
+ }, []);
876
+ var performSearch = React.useCallback(function (searchQuery, setSearchResults) {
877
+ if (!searchQuery || searchQuery.trim() === '') {
878
+ setSearchResults({
879
+ brands: [],
880
+ products: []
881
+ }); // Reset no results state when clearing search
913
882
 
914
- if (currentSearchRequestToken.current === newSearchToken) {
915
- var _brandsResponse$data$, _productsResponse$dat, _productsResponse$dat2;
883
+ if (typeof onNoResults === 'function') {
884
+ onNoResults(false);
885
+ }
916
886
 
917
- // Set loading to false when search completes
918
- if (typeof onSearchLoading === 'function') {
919
- onSearchLoading(false);
920
- } // Extract brands from aggregations
887
+ return;
888
+ } // Cancel any ongoing search request to prevent race conditions
921
889
 
922
890
 
923
- var brandsData = ((_brandsResponse$data$ = brandsResponse.data.data.luxity_products_aggregations) === null || _brandsResponse$data$ === void 0 ? void 0 : _brandsResponse$data$.luxity_brand) || []; // Extract products from filter
891
+ if (currentSearchRequestToken.current) {
892
+ currentSearchRequestToken.current.cancel();
893
+ } // Create a new token for this specific search request
924
894
 
925
- var productsData = ((_productsResponse$dat = productsResponse.data.data.luxity_products_filter) === null || _productsResponse$dat === void 0 ? void 0 : _productsResponse$dat.data) || [];
926
- var totalResults = ((_productsResponse$dat2 = productsResponse.data.data.luxity_products_filter) === null || _productsResponse$dat2 === void 0 ? void 0 : _productsResponse$dat2.total) || 0; // Map brands to old structure: { name, link }
927
895
 
928
- var brands = brandsData.slice(0, 10).map(function (brand) {
929
- return {
930
- name: brand.name,
931
- link: "/products/brands/".concat(brand.name.toLowerCase().replace(/\s+/g, '-')) // Convert to slug
896
+ var newSearchToken = axios.CancelToken.source();
897
+ currentSearchRequestToken.current = newSearchToken; // Reset no results state when starting new search (user is typing)
932
898
 
899
+ if (typeof onNoResults === 'function') {
900
+ onNoResults(false);
901
+ } // Set loading to true when starting the search request
902
+
903
+
904
+ if (typeof onSearchLoading === 'function') {
905
+ onSearchLoading(true);
906
+ } // Make TWO parallel queries: brands aggregations + products filter
907
+
908
+
909
+ Promise.all([// Query 1: Get brands aggregations
910
+ axios.post(endpoint, searchBrandsAggregations(searchQuery, currency), {
911
+ cancelToken: newSearchToken.token
912
+ }), // Query 2: Get top 3 products
913
+ axios.post(endpoint, searchProductsFilter(searchQuery, 3, currency), {
914
+ cancelToken: newSearchToken.token
915
+ })]).then(function (_ref3) {
916
+ var _ref4 = _slicedToArray(_ref3, 2),
917
+ brandsResponse = _ref4[0],
918
+ productsResponse = _ref4[1];
919
+
920
+ if (currentSearchRequestToken.current === newSearchToken) {
921
+ var _brandsResponse$data$, _productsResponse$dat, _productsResponse$dat2;
922
+
923
+ // Set loading to false when search completes
924
+ if (typeof onSearchLoading === 'function') {
925
+ onSearchLoading(false);
926
+ } // Extract brands from aggregations
927
+
928
+
929
+ var brandsData = ((_brandsResponse$data$ = brandsResponse.data.data.luxity_products_aggregations) === null || _brandsResponse$data$ === void 0 ? void 0 : _brandsResponse$data$.luxity_brand) || []; // Extract products from filter
930
+
931
+ var productsData = ((_productsResponse$dat = productsResponse.data.data.luxity_products_filter) === null || _productsResponse$dat === void 0 ? void 0 : _productsResponse$dat.data) || [];
932
+ var totalResults = ((_productsResponse$dat2 = productsResponse.data.data.luxity_products_filter) === null || _productsResponse$dat2 === void 0 ? void 0 : _productsResponse$dat2.total) || 0; // Map brands to old structure: { name, link }
933
+
934
+ var brands = brandsData.slice(0, 10).map(function (brand) {
935
+ return {
936
+ name: brand.name,
937
+ link: "/products/brands/".concat(brand.name.toLowerCase().replace(/\s+/g, '-')) // Convert to slug
938
+
939
+ };
940
+ }); // Map products to old structure with prices
941
+
942
+ var products = productsData.map(function (product) {
943
+ // Generate product link: /products/{category_type}/{brand_slug}/{product_slug}
944
+ var categorySlug = product.category_type.toLowerCase().replace(/\s+/g, '-');
945
+ var brandSlug = product.luxity_brand.slug;
946
+ var productSlug = product.product_slug;
947
+ var link = "/products/".concat(categorySlug, "/").concat(brandSlug, "/").concat(productSlug);
948
+ return {
949
+ name: product.product.name,
950
+ brand: product.luxity_brand.name,
951
+ link: link,
952
+ price: product.product.price || 0,
953
+ promotion_price: product.product.promotion_price || null,
954
+ est_retail_price: product.product.est_retail_price || 0,
955
+ condition: product.product.condition || '',
956
+ currency_symbol: product.product.currency_symbol || '',
957
+ featured_image: product.featured_image,
958
+ on_promotion: product.on_promotion || false,
959
+ promotion_discount: product.promotion_discount || 0,
960
+ id: product.id,
961
+ category_type: product.category_type,
962
+ product_slug: product.product_slug,
963
+ luxity_brand: product.luxity_brand
964
+ };
965
+ });
966
+ var searchResults = {
967
+ brands: brands,
968
+ products: products,
969
+ total: totalResults
933
970
  };
934
- }); // Map products to old structure with prices
935
-
936
- var products = productsData.map(function (product) {
937
- // Generate product link: /products/{category_type}/{brand_slug}/{product_slug}
938
- var categorySlug = product.category_type.toLowerCase().replace(/\s+/g, '-');
939
- var brandSlug = product.luxity_brand.slug;
940
- var productSlug = product.product_slug;
941
- var link = "/products/".concat(categorySlug, "/").concat(brandSlug, "/").concat(productSlug);
942
- return {
943
- name: product.product.name,
944
- brand: product.luxity_brand.name,
945
- link: link,
946
- price: product.product.price || 0,
947
- promotion_price: product.product.promotion_price || null,
948
- est_retail_price: product.product.est_retail_price || 0,
949
- condition: product.product.condition || '',
950
- currency_symbol: product.product.currency_symbol || '',
951
- featured_image: product.featured_image,
952
- on_promotion: product.on_promotion || false,
953
- promotion_discount: product.promotion_discount || 0,
954
- id: product.id,
955
- category_type: product.category_type,
956
- product_slug: product.product_slug,
957
- luxity_brand: product.luxity_brand
958
- };
959
- });
960
- var searchResults = {
961
- brands: brands,
962
- products: products,
963
- total: totalResults
964
- };
965
- setSearchResults(searchResults); // Check if we have no results (empty aggregations)
971
+ setSearchResults(searchResults); // Check if we have no results (empty aggregations)
966
972
 
967
- var hasNoResults = brandsData.length === 0 && productsData.length === 0;
973
+ var hasNoResults = brandsData.length === 0 && productsData.length === 0;
968
974
 
969
- if (typeof onNoResults === 'function') {
970
- onNoResults(hasNoResults);
975
+ if (typeof onNoResults === 'function') {
976
+ onNoResults(hasNoResults);
977
+ }
978
+
979
+ if (typeof onSearchPreview === 'function') {
980
+ var hasResults = brands.length > 0 || products.length > 0;
981
+ onSearchPreview({
982
+ search_string: searchQuery,
983
+ has_results: hasResults
984
+ });
985
+ }
986
+
987
+ currentSearchRequestToken.current = null;
971
988
  }
989
+ }).catch(function (error) {
990
+ if (!axios.isCancel(error)) {
991
+ // Set loading to false when search fails
992
+ if (typeof onSearchLoading === 'function') {
993
+ onSearchLoading(false);
994
+ }
972
995
 
973
- if (typeof onSearchPreview === 'function') {
974
- var hasResults = brands.length > 0 || products.length > 0;
975
- onSearchPreview({
976
- search_string: searchQuery,
977
- has_results: hasResults
996
+ setSearchResults({
997
+ brands: [],
998
+ products: []
978
999
  });
1000
+ currentSearchRequestToken.current = null;
979
1001
  }
980
-
981
- currentSearchRequestToken.current = null;
982
- }
983
- }).catch(function (error) {
984
- if (!axios.isCancel(error)) {
985
- // Set loading to false when search fails
986
- if (typeof onSearchLoading === 'function') {
987
- onSearchLoading(false);
1002
+ });
1003
+ }, [endpoint, currency, onSearchPreview, onSearchLoading, onNoResults]);
1004
+ var debouncedSearch = React.useMemo(function () {
1005
+ return debounce(function (searchQuery, setSearchResults) {
1006
+ return performSearch(searchQuery, setSearchResults);
1007
+ }, 500);
1008
+ }, [debounce, performSearch]);
1009
+ var createDebouncedSearch = React.useCallback(function (setSearchResults) {
1010
+ return function (searchQuery) {
1011
+ return debouncedSearch(searchQuery, setSearchResults);
1012
+ };
1013
+ }, [debouncedSearch]);
1014
+ var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
1015
+ return function (searchQuery) {
1016
+ /*
1017
+ * Cancel any pending search request when immediate search is performed
1018
+ * Immediate search is when the user types a search query and presses enter
1019
+ */
1020
+ if (currentSearchRequestToken.current) {
1021
+ currentSearchRequestToken.current.cancel();
1022
+ currentSearchRequestToken.current = null;
988
1023
  }
989
1024
 
1025
+ setSearchValue('');
990
1026
  setSearchResults({
991
1027
  brands: [],
992
1028
  products: []
993
1029
  });
994
- currentSearchRequestToken.current = null;
995
- }
996
- });
997
- }, [endpoint, currency, onSearchPreview, onSearchLoading, onNoResults]);
998
- var debouncedSearch = useMemo(function () {
999
- return debounce(function (searchQuery, setSearchResults) {
1000
- return performSearch(searchQuery, setSearchResults);
1001
- }, 500);
1002
- }, [debounce, performSearch]);
1003
- var createDebouncedSearch = useCallback(function (setSearchResults) {
1004
- return function (searchQuery) {
1005
- return debouncedSearch(searchQuery, setSearchResults);
1030
+ onSearchSubmit(searchQuery);
1031
+ };
1032
+ }, []);
1033
+ return {
1034
+ fetchInitialSearchData: fetchInitialSearchData,
1035
+ createDebouncedSearch: createDebouncedSearch,
1036
+ createImmediateSearch: createImmediateSearch
1006
1037
  };
1007
- }, [debouncedSearch]);
1008
- var createImmediateSearch = useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
1009
- return function (searchQuery) {
1010
- /*
1011
- * Cancel any pending search request when immediate search is performed
1012
- * Immediate search is when the user types a search query and presses enter
1013
- */
1014
- if (currentSearchRequestToken.current) {
1015
- currentSearchRequestToken.current.cancel();
1016
- currentSearchRequestToken.current = null;
1017
- }
1038
+ };
1018
1039
 
1019
- setSearchValue('');
1020
- setSearchResults({
1021
- brands: [],
1022
- products: []
1023
- });
1024
- onSearchSubmit(searchQuery);
1025
- };
1026
- }, []);
1027
- return {
1028
- fetchInitialSearchData: fetchInitialSearchData,
1029
- createDebouncedSearch: createDebouncedSearch,
1030
- createImmediateSearch: createImmediateSearch
1040
+ var useSearchClickOutside = function useSearchClickOutside(ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults) {
1041
+ var setSearchValue = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1042
+ var setShowNoResults = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1043
+ React.useEffect(function () {
1044
+ var handleClickOutside = function handleClickOutside(event) {
1045
+ if (ref.current && !ref.current.contains(event.target)) {
1046
+ setCachedResults(searchResults);
1047
+ setIsSearchFocused(false);
1048
+ setSearchResults({
1049
+ brands: [],
1050
+ products: []
1051
+ }); // Reset search value and no results state when closing
1052
+
1053
+ if (setSearchValue) {
1054
+ setSearchValue('');
1055
+ }
1056
+
1057
+ if (setShowNoResults) {
1058
+ setShowNoResults(false);
1059
+ }
1060
+ }
1061
+ };
1062
+
1063
+ document.addEventListener('mousedown', handleClickOutside);
1064
+ return function () {
1065
+ document.removeEventListener('mousedown', handleClickOutside);
1066
+ };
1067
+ }, [ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults, setSearchValue, setShowNoResults]);
1031
1068
  };
1032
- };
1033
-
1034
- var useSearchClickOutside = function useSearchClickOutside(ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults) {
1035
- var setSearchValue = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1036
- var setShowNoResults = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1037
- useEffect(function () {
1038
- var handleClickOutside = function handleClickOutside(event) {
1039
- if (ref.current && !ref.current.contains(event.target)) {
1040
- setCachedResults(searchResults);
1041
- setIsSearchFocused(false);
1069
+ var useSearchInputChange = function useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults) {
1070
+ var app = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
1071
+ var productsUrl = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1072
+ return React.useCallback(function (event) {
1073
+ var value = event.target.value;
1074
+
1075
+ if (app && productsUrl && value.trim().length > 0) {
1076
+ window.location.href = productsUrl;
1077
+ return;
1078
+ }
1079
+
1080
+ setSearchValue(value);
1081
+ setIsSearchFocused(true);
1082
+
1083
+ if (value.trim().length >= 3) {
1084
+ debouncedSearch(value);
1085
+ } else {
1042
1086
  setSearchResults({
1043
1087
  brands: [],
1044
1088
  products: []
1045
- }); // Reset search value and no results state when closing
1089
+ });
1090
+ setCachedResults({
1091
+ brands: [],
1092
+ products: []
1093
+ });
1094
+ }
1095
+ }, [setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults, app, productsUrl]);
1096
+ };
1097
+ var useSearchInputFocus = function useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults) {
1098
+ var handleSearchClick = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
1099
+ var setShowNoResults = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1100
+ return React.useCallback(function () {
1101
+ setIsSearchFocused(true); // Reset no results state when reopening search
1102
+
1103
+ if (setShowNoResults) {
1104
+ setShowNoResults(false);
1105
+ }
1046
1106
 
1047
- if (setSearchValue) {
1048
- setSearchValue('');
1107
+ if (typeof handleSearchClick === 'function') {
1108
+ handleSearchClick();
1109
+ } else if (searchValue.trim().length >= 3) {
1110
+ setSearchResults(cachedResults);
1111
+ }
1112
+ }, [searchValue, setIsSearchFocused, cachedResults, setSearchResults, handleSearchClick, setShowNoResults]);
1113
+ };
1114
+ var useSearchInputKeyDown = function useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused) {
1115
+ var setSearchValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1116
+ return React.useCallback(function (event) {
1117
+ if (event.key === 'Enter') {
1118
+ event.preventDefault();
1119
+
1120
+ if (searchValue.trim().length >= 3) {
1121
+ immediateSearch(searchValue);
1049
1122
  }
1050
1123
 
1051
- if (setShowNoResults) {
1052
- setShowNoResults(false);
1124
+ setIsSearchFocused(false);
1125
+ } else if (event.key === 'Escape' && setSearchValue) {
1126
+ setSearchValue('');
1127
+ setIsSearchFocused(false);
1128
+ }
1129
+ }, [searchValue, immediateSearch, setIsSearchFocused, setSearchValue]);
1130
+ };
1131
+
1132
+ var removeCategoryByName = function removeCategoryByName(categories, name) {
1133
+ var _categories$filter;
1134
+
1135
+ return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
1136
+ return category.name.toLowerCase() !== name.toLowerCase();
1137
+ })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
1138
+ };
1139
+
1140
+ var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
1141
+ var accountIcon = _ref.accountIcon,
1142
+ cartIcon = _ref.cartIcon,
1143
+ interestIcon = _ref.interestIcon,
1144
+ cartCount = _ref.cartCount,
1145
+ logoSrc = _ref.logoSrc,
1146
+ categoryElements = _ref.categoryElements,
1147
+ stores = _ref.stores,
1148
+ contactNumber = _ref.contactNumber,
1149
+ productsUrl = _ref.productsUrl,
1150
+ LinkComponent = _ref.LinkComponent,
1151
+ onInterestClick = _ref.onInterestClick,
1152
+ onCartClick = _ref.onCartClick,
1153
+ onAccountClick = _ref.onAccountClick,
1154
+ inputSearchIcon = _ref.inputSearchIcon,
1155
+ onSellToUsClick = _ref.onSellToUsClick,
1156
+ contactUsLink = _ref.contactUsLink,
1157
+ ourStoryLink = _ref.ourStoryLink,
1158
+ onLogoClick = _ref.onLogoClick,
1159
+ endpoint = _ref.endpoint,
1160
+ initialSearchData = _ref.initialSearchData,
1161
+ onSearchSubmit = _ref.onSearchSubmit,
1162
+ onSearchBarClick = _ref.onSearchBarClick,
1163
+ onSearchPreview = _ref.onSearchPreview,
1164
+ onProductSearchResultClick = _ref.onProductSearchResultClick,
1165
+ onBrandSearchResultClick = _ref.onBrandSearchResultClick,
1166
+ _onSearchLoading = _ref.onSearchLoading,
1167
+ currency = _ref.currency,
1168
+ currencySymbol = _ref.currencySymbol,
1169
+ currencyOptions = _ref.currencyOptions,
1170
+ onCurrencyChange = _ref.onCurrencyChange,
1171
+ isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
1172
+ tooltipContent = _ref.tooltipContent,
1173
+ earlyAccessIcon = _ref.earlyAccessIcon,
1174
+ exclusiveIcon = _ref.exclusiveIcon,
1175
+ name = _ref.name,
1176
+ isEarlyAccess = _ref.isEarlyAccess,
1177
+ isExclusive = _ref.isExclusive,
1178
+ shop = _ref.shop,
1179
+ app = _ref.app,
1180
+ categoryConfig = _ref.categoryConfig,
1181
+ onCreateInterests = _ref.onCreateInterests,
1182
+ noResultsImage = _ref.noResultsImage,
1183
+ _ref$showCreateIntere = _ref.showCreateInterest,
1184
+ showCreateInterest = _ref$showCreateIntere === void 0 ? true : _ref$showCreateIntere;
1185
+
1186
+ var _useState = React.useState(''),
1187
+ _useState2 = _slicedToArray(_useState, 2),
1188
+ searchValue = _useState2[0],
1189
+ setSearchValue = _useState2[1];
1190
+
1191
+ var _useState3 = React.useState(false),
1192
+ _useState4 = _slicedToArray(_useState3, 2),
1193
+ loading = _useState4[0],
1194
+ setLoading = _useState4[1];
1195
+
1196
+ var _useState5 = React.useState(false),
1197
+ _useState6 = _slicedToArray(_useState5, 2),
1198
+ searchLoading = _useState6[0],
1199
+ setSearchLoading = _useState6[1];
1200
+
1201
+ var _useState7 = React.useState(false),
1202
+ _useState8 = _slicedToArray(_useState7, 2),
1203
+ isSearchFocused = _useState8[0],
1204
+ setIsSearchFocused = _useState8[1];
1205
+
1206
+ var _useState9 = React.useState({
1207
+ trending_brands: [],
1208
+ latest_products: []
1209
+ }),
1210
+ _useState10 = _slicedToArray(_useState9, 2),
1211
+ initialSearchView = _useState10[0],
1212
+ setInitialSearchView = _useState10[1];
1213
+
1214
+ var _useState11 = React.useState({}),
1215
+ _useState12 = _slicedToArray(_useState11, 2),
1216
+ dropdownData = _useState12[0],
1217
+ setDropdownData = _useState12[1];
1218
+
1219
+ var _useState13 = React.useState(false),
1220
+ _useState14 = _slicedToArray(_useState13, 2),
1221
+ hasError = _useState14[0],
1222
+ setHasError = _useState14[1];
1223
+
1224
+ var _useState15 = React.useState({
1225
+ brands: [],
1226
+ products: []
1227
+ }),
1228
+ _useState16 = _slicedToArray(_useState15, 2),
1229
+ searchResults = _useState16[0],
1230
+ setSearchResults = _useState16[1];
1231
+
1232
+ var _useState17 = React.useState({
1233
+ brands: [],
1234
+ products: []
1235
+ }),
1236
+ _useState18 = _slicedToArray(_useState17, 2),
1237
+ cachedResults = _useState18[0],
1238
+ setCachedResults = _useState18[1];
1239
+
1240
+ var _useState19 = React.useState(false),
1241
+ _useState20 = _slicedToArray(_useState19, 2),
1242
+ showNoResults = _useState20[0],
1243
+ setShowNoResults = _useState20[1];
1244
+
1245
+ var searchResultsRef = React.useRef(null);
1246
+
1247
+ var _useSearch = useSearch({
1248
+ endpoint: endpoint,
1249
+ onSearchLoading: function onSearchLoading(isLoading) {
1250
+ setSearchLoading(isLoading);
1251
+
1252
+ if (typeof _onSearchLoading === 'function') {
1253
+ _onSearchLoading(isLoading);
1053
1254
  }
1255
+ },
1256
+ currency: currency,
1257
+ onSearchPreview: onSearchPreview,
1258
+ onNoResults: setShowNoResults
1259
+ }),
1260
+ fetchInitialSearchData = _useSearch.fetchInitialSearchData,
1261
+ createDebouncedSearch = _useSearch.createDebouncedSearch,
1262
+ createImmediateSearch = _useSearch.createImmediateSearch;
1263
+
1264
+ var debouncedSearch = createDebouncedSearch(function (results) {
1265
+ setSearchResults(results);
1266
+ setCachedResults(results);
1267
+ });
1268
+ var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
1269
+ var handleChange = useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults, app, productsUrl);
1270
+ useSearchClickOutside(searchResultsRef, searchResults, setCachedResults, setIsSearchFocused, setSearchResults, setSearchValue, setShowNoResults);
1271
+
1272
+ var handleSearchClick = function handleSearchClick() {
1273
+ if (typeof onSearchBarClick === 'function') {
1274
+ onSearchBarClick();
1275
+ return;
1054
1276
  }
1055
- };
1056
1277
 
1057
- document.addEventListener('mousedown', handleClickOutside);
1058
- return function () {
1059
- document.removeEventListener('mousedown', handleClickOutside);
1278
+ handleSearchFocus();
1060
1279
  };
1061
- }, [ref, searchResults, setCachedResults, setIsSearchFocused, setSearchResults, setSearchValue, setShowNoResults]);
1062
- };
1063
- var useSearchInputChange = function useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults) {
1064
- var app = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
1065
- var productsUrl = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
1066
- return useCallback(function (event) {
1067
- var value = event.target.value;
1068
-
1069
- if (app && productsUrl && value.trim().length > 0) {
1070
- window.location.href = productsUrl;
1071
- return;
1072
- }
1073
1280
 
1074
- setSearchValue(value);
1075
- setIsSearchFocused(true);
1281
+ var handleSearchFocus = useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults, undefined, setShowNoResults);
1282
+ var handleKeyDown = useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused);
1076
1283
 
1077
- if (value.trim().length >= 3) {
1078
- debouncedSearch(value);
1079
- } else {
1080
- setSearchResults({
1081
- brands: [],
1082
- products: []
1083
- });
1084
- setCachedResults({
1085
- brands: [],
1086
- products: []
1284
+ function addCategoryToElements(elements, categoryName) {
1285
+ return elements.map(function (element) {
1286
+ return _objectSpread2(_objectSpread2({}, element), {}, {
1287
+ category: categoryName
1288
+ });
1087
1289
  });
1088
1290
  }
1089
- }, [setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults, app, productsUrl]);
1090
- };
1091
- var useSearchInputFocus = function useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults) {
1092
- var handleSearchClick = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;
1093
- var setShowNoResults = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null;
1094
- return useCallback(function () {
1095
- setIsSearchFocused(true); // Reset no results state when reopening search
1096
-
1097
- if (setShowNoResults) {
1098
- setShowNoResults(false);
1099
- }
1100
-
1101
- if (typeof handleSearchClick === 'function') {
1102
- handleSearchClick();
1103
- } else if (searchValue.trim().length >= 3) {
1104
- setSearchResults(cachedResults);
1105
- }
1106
- }, [searchValue, setIsSearchFocused, cachedResults, setSearchResults, handleSearchClick, setShowNoResults]);
1107
- };
1108
- var useSearchInputKeyDown = function useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused) {
1109
- var setSearchValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
1110
- return useCallback(function (event) {
1111
- if (event.key === 'Enter') {
1112
- event.preventDefault();
1113
-
1114
- if (searchValue.trim().length >= 3) {
1115
- immediateSearch(searchValue);
1116
- }
1117
1291
 
1118
- setIsSearchFocused(false);
1119
- } else if (event.key === 'Escape' && setSearchValue) {
1120
- setSearchValue('');
1121
- setIsSearchFocused(false);
1122
- }
1123
- }, [searchValue, immediateSearch, setIsSearchFocused, setSearchValue]);
1124
- };
1125
-
1126
- var removeCategoryByName = function removeCategoryByName(categories, name) {
1127
- var _categories$filter;
1128
-
1129
- return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
1130
- return category.name.toLowerCase() !== name.toLowerCase();
1131
- })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
1132
- };
1133
-
1134
- var LuxityDesktopHeader = function LuxityDesktopHeader(_ref) {
1135
- var accountIcon = _ref.accountIcon,
1136
- cartIcon = _ref.cartIcon,
1137
- interestIcon = _ref.interestIcon,
1138
- cartCount = _ref.cartCount,
1139
- logoSrc = _ref.logoSrc,
1140
- categoryElements = _ref.categoryElements,
1141
- stores = _ref.stores,
1142
- contactNumber = _ref.contactNumber,
1143
- productsUrl = _ref.productsUrl,
1144
- LinkComponent = _ref.LinkComponent,
1145
- onInterestClick = _ref.onInterestClick,
1146
- onCartClick = _ref.onCartClick,
1147
- onAccountClick = _ref.onAccountClick,
1148
- inputSearchIcon = _ref.inputSearchIcon,
1149
- onSellToUsClick = _ref.onSellToUsClick,
1150
- contactUsLink = _ref.contactUsLink,
1151
- ourStoryLink = _ref.ourStoryLink,
1152
- onLogoClick = _ref.onLogoClick,
1153
- endpoint = _ref.endpoint,
1154
- initialSearchData = _ref.initialSearchData,
1155
- onSearchSubmit = _ref.onSearchSubmit,
1156
- onSearchBarClick = _ref.onSearchBarClick,
1157
- onSearchPreview = _ref.onSearchPreview,
1158
- onProductSearchResultClick = _ref.onProductSearchResultClick,
1159
- onBrandSearchResultClick = _ref.onBrandSearchResultClick,
1160
- _onSearchLoading = _ref.onSearchLoading,
1161
- currency = _ref.currency,
1162
- currencySymbol = _ref.currencySymbol,
1163
- currencyOptions = _ref.currencyOptions,
1164
- onCurrencyChange = _ref.onCurrencyChange,
1165
- isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
1166
- tooltipContent = _ref.tooltipContent,
1167
- earlyAccessIcon = _ref.earlyAccessIcon,
1168
- exclusiveIcon = _ref.exclusiveIcon,
1169
- name = _ref.name,
1170
- isEarlyAccess = _ref.isEarlyAccess,
1171
- isExclusive = _ref.isExclusive,
1172
- shop = _ref.shop,
1173
- app = _ref.app,
1174
- categoryConfig = _ref.categoryConfig,
1175
- onCreateInterests = _ref.onCreateInterests,
1176
- noResultsImage = _ref.noResultsImage,
1177
- _ref$showCreateIntere = _ref.showCreateInterest,
1178
- showCreateInterest = _ref$showCreateIntere === void 0 ? true : _ref$showCreateIntere;
1179
-
1180
- var _useState = useState(''),
1181
- _useState2 = _slicedToArray(_useState, 2),
1182
- searchValue = _useState2[0],
1183
- setSearchValue = _useState2[1];
1184
-
1185
- var _useState3 = useState(false),
1186
- _useState4 = _slicedToArray(_useState3, 2),
1187
- loading = _useState4[0],
1188
- setLoading = _useState4[1];
1189
-
1190
- var _useState5 = useState(false),
1191
- _useState6 = _slicedToArray(_useState5, 2),
1192
- searchLoading = _useState6[0],
1193
- setSearchLoading = _useState6[1];
1194
-
1195
- var _useState7 = useState(false),
1196
- _useState8 = _slicedToArray(_useState7, 2),
1197
- isSearchFocused = _useState8[0],
1198
- setIsSearchFocused = _useState8[1];
1199
-
1200
- var _useState9 = useState({
1201
- trending_brands: [],
1202
- latest_products: []
1203
- }),
1204
- _useState10 = _slicedToArray(_useState9, 2),
1205
- initialSearchView = _useState10[0],
1206
- setInitialSearchView = _useState10[1];
1207
-
1208
- var _useState11 = useState({}),
1209
- _useState12 = _slicedToArray(_useState11, 2),
1210
- dropdownData = _useState12[0],
1211
- setDropdownData = _useState12[1];
1212
-
1213
- var _useState13 = useState(false),
1214
- _useState14 = _slicedToArray(_useState13, 2),
1215
- hasError = _useState14[0],
1216
- setHasError = _useState14[1];
1217
-
1218
- var _useState15 = useState({
1219
- brands: [],
1220
- products: []
1221
- }),
1222
- _useState16 = _slicedToArray(_useState15, 2),
1223
- searchResults = _useState16[0],
1224
- setSearchResults = _useState16[1];
1225
-
1226
- var _useState17 = useState({
1227
- brands: [],
1228
- products: []
1229
- }),
1230
- _useState18 = _slicedToArray(_useState17, 2),
1231
- cachedResults = _useState18[0],
1232
- setCachedResults = _useState18[1];
1233
-
1234
- var _useState19 = useState(false),
1235
- _useState20 = _slicedToArray(_useState19, 2),
1236
- showNoResults = _useState20[0],
1237
- setShowNoResults = _useState20[1];
1238
-
1239
- var searchResultsRef = useRef(null);
1240
-
1241
- var _useSearch = useSearch({
1242
- endpoint: endpoint,
1243
- onSearchLoading: function onSearchLoading(isLoading) {
1244
- setSearchLoading(isLoading);
1245
-
1246
- if (typeof _onSearchLoading === 'function') {
1247
- _onSearchLoading(isLoading);
1292
+ React.useMemo(function () {
1293
+ setLoading(true);
1294
+ axios.get("".concat(categoryConfig.menuData)).then(function (_ref2) {
1295
+ var data = _ref2.data;
1296
+ setLoading(false);
1297
+ setDropdownData(data);
1298
+ }).catch(function () {
1299
+ return setHasError(true);
1300
+ });
1301
+ }, [categoryConfig.menuData]);
1302
+ React.useMemo(function () {
1303
+ if (!initialSearchData) {
1304
+ return;
1248
1305
  }
1249
- },
1250
- currency: currency,
1251
- onSearchPreview: onSearchPreview,
1252
- onNoResults: setShowNoResults
1253
- }),
1254
- fetchInitialSearchData = _useSearch.fetchInitialSearchData,
1255
- createDebouncedSearch = _useSearch.createDebouncedSearch,
1256
- createImmediateSearch = _useSearch.createImmediateSearch;
1257
-
1258
- var debouncedSearch = createDebouncedSearch(function (results) {
1259
- setSearchResults(results);
1260
- setCachedResults(results);
1261
- });
1262
- var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
1263
- var handleChange = useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults, app, productsUrl);
1264
- useSearchClickOutside(searchResultsRef, searchResults, setCachedResults, setIsSearchFocused, setSearchResults, setSearchValue, setShowNoResults);
1265
-
1266
- var handleSearchClick = function handleSearchClick() {
1267
- if (typeof onSearchBarClick === 'function') {
1268
- onSearchBarClick();
1269
- return;
1270
- }
1271
1306
 
1272
- handleSearchFocus();
1273
- };
1274
-
1275
- var handleSearchFocus = useSearchInputFocus(searchValue, setIsSearchFocused, cachedResults, setSearchResults, undefined, setShowNoResults);
1276
- var handleKeyDown = useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused);
1307
+ fetchInitialSearchData(initialSearchData, setInitialSearchView);
1308
+ }, [initialSearchData, fetchInitialSearchData]);
1309
+
1310
+ var renderDropdownLinks = function renderDropdownLinks() {
1311
+ return categoryConfig.categories.map(function (category) {
1312
+ var title = category.title,
1313
+ imageSrc = category.imageSrc,
1314
+ categorySlug = category.categorySlug,
1315
+ categoryName = category.categoryName,
1316
+ elementsKey = category.elementsKey,
1317
+ subCategoryElementsKey = category.subCategoryElementsKey,
1318
+ styleElementsKey = category.styleElementsKey;
1319
+ var categoryElementsProcessed = categoryElements;
1320
+
1321
+ if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
1322
+ // show subcategory elements
1323
+ categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
1324
+ } else if (styleElementsKey && dropdownData[styleElementsKey]) {
1325
+ categoryElementsProcessed = addCategoryToElements(dropdownData[styleElementsKey], categorySlug);
1326
+ } else {
1327
+ categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
1328
+ }
1277
1329
 
1278
- function addCategoryToElements(elements, categoryName) {
1279
- return elements.map(function (element) {
1280
- return _objectSpread2(_objectSpread2({}, element), {}, {
1281
- category: categoryName
1330
+ return /*#__PURE__*/React__default.createElement(DropdownLink, {
1331
+ key: categorySlug,
1332
+ title: title,
1333
+ imageSrc: imageSrc,
1334
+ categoryElements: categoryElementsProcessed,
1335
+ brandElements: dropdownData[elementsKey] || [],
1336
+ productsUrl: productsUrl,
1337
+ categorySlug: categorySlug,
1338
+ categoryTitle: categoryName,
1339
+ isLoading: loading,
1340
+ hasError: hasError,
1341
+ LinkComponent: LinkComponent
1342
+ });
1282
1343
  });
1283
- });
1284
- }
1344
+ };
1285
1345
 
1286
- useMemo(function () {
1287
- setLoading(true);
1288
- axios.get("".concat(categoryConfig.menuData)).then(function (_ref2) {
1289
- var data = _ref2.data;
1290
- setLoading(false);
1291
- setDropdownData(data);
1292
- }).catch(function () {
1293
- return setHasError(true);
1294
- });
1295
- }, [categoryConfig.menuData]);
1296
- useMemo(function () {
1297
- if (!initialSearchData) {
1298
- return;
1299
- }
1346
+ var getMarginRight = function getMarginRight(showLoyaltyIcon, userName) {
1347
+ if (showLoyaltyIcon) return '15px';
1348
+ if (userName) return '5px';
1349
+ return '18px';
1350
+ };
1300
1351
 
1301
- fetchInitialSearchData(initialSearchData, setInitialSearchView);
1302
- }, [initialSearchData, fetchInitialSearchData]);
1303
-
1304
- var renderDropdownLinks = function renderDropdownLinks() {
1305
- return categoryConfig.categories.map(function (category) {
1306
- var title = category.title,
1307
- imageSrc = category.imageSrc,
1308
- categorySlug = category.categorySlug,
1309
- categoryName = category.categoryName,
1310
- elementsKey = category.elementsKey,
1311
- subCategoryElementsKey = category.subCategoryElementsKey,
1312
- styleElementsKey = category.styleElementsKey;
1313
- var categoryElementsProcessed = categoryElements;
1314
-
1315
- if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
1316
- // show subcategory elements
1317
- categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
1318
- } else if (styleElementsKey && dropdownData[styleElementsKey]) {
1319
- categoryElementsProcessed = addCategoryToElements(dropdownData[styleElementsKey], categorySlug);
1320
- } else {
1321
- categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
1352
+ return /*#__PURE__*/React__default.createElement("div", {
1353
+ className: "navbar"
1354
+ }, /*#__PURE__*/React__default.createElement("div", {
1355
+ className: "navbar__container"
1356
+ }, /*#__PURE__*/React__default.createElement("div", {
1357
+ className: "navbar__logo-wrapper"
1358
+ }, /*#__PURE__*/React__default.createElement("button", {
1359
+ type: "button",
1360
+ onClick: onLogoClick,
1361
+ className: "navbar__logo"
1362
+ }, /*#__PURE__*/React__default.createElement("img", {
1363
+ src: logoSrc,
1364
+ alt: "luxity-logo",
1365
+ loading: "eager"
1366
+ }))), /*#__PURE__*/React__default.createElement("div", {
1367
+ className: "navbar__section"
1368
+ }, /*#__PURE__*/React__default.createElement("div", {
1369
+ className: "navbar__body"
1370
+ }, /*#__PURE__*/React__default.createElement("div", {
1371
+ className: "navbar__product-search"
1372
+ }, /*#__PURE__*/React__default.createElement("img", {
1373
+ src: inputSearchIcon,
1374
+ alt: "search-icon",
1375
+ className: "navbar__input-search-icon"
1376
+ }), /*#__PURE__*/React__default.createElement("input", {
1377
+ className: "navbar__form-input",
1378
+ type: "text",
1379
+ placeholder: "Search for items and designs",
1380
+ value: searchValue,
1381
+ onChange: handleChange,
1382
+ onKeyDown: handleKeyDown,
1383
+ onClick: handleSearchClick,
1384
+ onFocus: handleSearchFocus,
1385
+ autoComplete: "off",
1386
+ readOnly: app
1387
+ })), /*#__PURE__*/React__default.createElement(SearchResults, {
1388
+ searchValue: searchValue,
1389
+ searchResults: searchResults,
1390
+ onViewAll: function onViewAll() {
1391
+ onSearchSubmit(searchValue);
1392
+ setSearchValue('');
1393
+ setSearchResults({
1394
+ brands: [],
1395
+ products: []
1396
+ });
1397
+ setIsSearchFocused(false);
1398
+ setShowNoResults(false);
1399
+ },
1400
+ searchResultsRef: searchResultsRef,
1401
+ onSearchSubmit: onSearchSubmit,
1402
+ setSearchValue: setSearchValue,
1403
+ initialSearchData: initialSearchView,
1404
+ isSearchFocused: isSearchFocused,
1405
+ setIsSearchFocused: setIsSearchFocused,
1406
+ currency: currency,
1407
+ currencySymbol: currencySymbol,
1408
+ onProductSearchResultClick: onProductSearchResultClick,
1409
+ onBrandSearchResultClick: onBrandSearchResultClick,
1410
+ onCreateInterests: onCreateInterests,
1411
+ noResultsImage: noResultsImage,
1412
+ showNoResults: showNoResults,
1413
+ isLoading: searchLoading,
1414
+ showCreateInterest: showCreateInterest
1415
+ }), /*#__PURE__*/React__default.createElement("nav", {
1416
+ className: "navbar__nav-links navbar__nav-links--wrap"
1417
+ }, renderDropdownLinks(), !!stores.length && /*#__PURE__*/React__default.createElement("li", {
1418
+ className: "navbar__link",
1419
+ key: "Stores"
1420
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
1421
+ href: contactUsLink,
1422
+ className: "navbar__link-item navbar__link-item--desktop"
1423
+ }, "Stores"), /*#__PURE__*/React__default.createElement("div", {
1424
+ className: "navbar__dropdown"
1425
+ }, /*#__PURE__*/React__default.createElement(StoresDropdown, {
1426
+ stores: stores,
1427
+ contactNumber: contactNumber
1428
+ }))))), /*#__PURE__*/React__default.createElement("div", {
1429
+ className: "navbar__icons-wrapper"
1430
+ }, /*#__PURE__*/React__default.createElement("div", {
1431
+ className: "navbar__icons"
1432
+ }, /*#__PURE__*/React__default.createElement(CurrencySelect, {
1433
+ currency: currency,
1434
+ currencyOptions: currencyOptions,
1435
+ onCurrencyChange: onCurrencyChange,
1436
+ isCurrencySelectionDisabled: isCurrencySelectionDisabled,
1437
+ tooltipContent: tooltipContent
1438
+ }), shop && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("button", {
1439
+ type: "button",
1440
+ className: "navbar__icon relative flex",
1441
+ onClick: onAccountClick,
1442
+ style: {
1443
+ marginRight: getMarginRight(isEarlyAccess || isExclusive, name)
1322
1444
  }
1323
-
1324
- return /*#__PURE__*/React.createElement(DropdownLink, {
1325
- key: categorySlug,
1326
- title: title,
1327
- imageSrc: imageSrc,
1328
- categoryElements: categoryElementsProcessed,
1329
- brandElements: dropdownData[elementsKey] || [],
1330
- productsUrl: productsUrl,
1331
- categorySlug: categorySlug,
1332
- categoryTitle: categoryName,
1333
- isLoading: loading,
1334
- hasError: hasError,
1335
- LinkComponent: LinkComponent
1336
- });
1337
- });
1445
+ }, /*#__PURE__*/React__default.createElement("img", {
1446
+ src: accountIcon,
1447
+ alt: "account-icon",
1448
+ width: 20,
1449
+ height: 20
1450
+ }), isEarlyAccess && /*#__PURE__*/React__default.createElement("img", {
1451
+ src: earlyAccessIcon,
1452
+ alt: "loyalty-icon",
1453
+ className: "navbar__loyalty-icon",
1454
+ width: 16,
1455
+ height: 16
1456
+ }), isExclusive && /*#__PURE__*/React__default.createElement("img", {
1457
+ src: exclusiveIcon,
1458
+ alt: "loyalty-icon",
1459
+ className: "navbar__loyalty-icon",
1460
+ width: 16,
1461
+ height: 16
1462
+ })), name && /*#__PURE__*/React__default.createElement("button", {
1463
+ type: "button",
1464
+ className: "mr-3",
1465
+ onClick: onAccountClick
1466
+ }, /*#__PURE__*/React__default.createElement("span", {
1467
+ className: "text-sm"
1468
+ }, name))), onInterestClick && /*#__PURE__*/React__default.createElement("button", {
1469
+ type: "button",
1470
+ className: "".concat(app ? 'navbar__icon--app' : 'navbar__icon'),
1471
+ onClick: onInterestClick
1472
+ }, /*#__PURE__*/React__default.createElement("img", {
1473
+ src: interestIcon,
1474
+ alt: "interest-icon",
1475
+ width: 20,
1476
+ height: 20
1477
+ })), /*#__PURE__*/React__default.createElement("button", {
1478
+ type: "button",
1479
+ className: "navbar__cart-icon ".concat(app ? 'navbar__icon--app' : 'navbar__icon'),
1480
+ onClick: onCartClick
1481
+ }, /*#__PURE__*/React__default.createElement("img", {
1482
+ src: cartIcon,
1483
+ alt: "cart-icon",
1484
+ width: 20,
1485
+ height: 20
1486
+ }), shop && cartCount > 0 && /*#__PURE__*/React__default.createElement("div", {
1487
+ className: "navbar__cart-count"
1488
+ }, cartCount))), /*#__PURE__*/React__default.createElement("nav", {
1489
+ className: "navbar__nav-links"
1490
+ }, /*#__PURE__*/React__default.createElement("li", {
1491
+ className: "navbar__company-link"
1492
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
1493
+ href: ourStoryLink,
1494
+ className: "navbar__link-item"
1495
+ }, "Our Story")), /*#__PURE__*/React__default.createElement("li", {
1496
+ className: "navbar__company-link"
1497
+ }, /*#__PURE__*/React__default.createElement(LinkComponent, {
1498
+ href: contactUsLink,
1499
+ className: "navbar__link-item"
1500
+ }, "Contact Us")), /*#__PURE__*/React__default.createElement("li", {
1501
+ className: "navbar__company-link"
1502
+ }, /*#__PURE__*/React__default.createElement("button", {
1503
+ type: "button",
1504
+ className: "navbar__company-block",
1505
+ onClick: onSellToUsClick
1506
+ }, "Sell to us")))))));
1338
1507
  };
1339
1508
 
1340
- var getMarginRight = function getMarginRight(showLoyaltyIcon, userName) {
1341
- if (showLoyaltyIcon) return '15px';
1342
- if (userName) return '5px';
1343
- return '18px';
1344
- };
1509
+ return LuxityDesktopHeader;
1345
1510
 
1346
- return /*#__PURE__*/React.createElement("div", {
1347
- className: "navbar"
1348
- }, /*#__PURE__*/React.createElement("div", {
1349
- className: "navbar__container"
1350
- }, /*#__PURE__*/React.createElement("div", {
1351
- className: "navbar__logo-wrapper"
1352
- }, /*#__PURE__*/React.createElement("button", {
1353
- type: "button",
1354
- onClick: onLogoClick,
1355
- className: "navbar__logo"
1356
- }, /*#__PURE__*/React.createElement("img", {
1357
- src: logoSrc,
1358
- alt: "luxity-logo",
1359
- loading: "eager"
1360
- }))), /*#__PURE__*/React.createElement("div", {
1361
- className: "navbar__section"
1362
- }, /*#__PURE__*/React.createElement("div", {
1363
- className: "navbar__body"
1364
- }, /*#__PURE__*/React.createElement("div", {
1365
- className: "navbar__product-search"
1366
- }, /*#__PURE__*/React.createElement("img", {
1367
- src: inputSearchIcon,
1368
- alt: "search-icon",
1369
- className: "navbar__input-search-icon"
1370
- }), /*#__PURE__*/React.createElement("input", {
1371
- className: "navbar__form-input",
1372
- type: "text",
1373
- placeholder: "Search for items and designs",
1374
- value: searchValue,
1375
- onChange: handleChange,
1376
- onKeyDown: handleKeyDown,
1377
- onClick: handleSearchClick,
1378
- onFocus: handleSearchFocus,
1379
- autoComplete: "off",
1380
- readOnly: app
1381
- })), /*#__PURE__*/React.createElement(SearchResults, {
1382
- searchValue: searchValue,
1383
- searchResults: searchResults,
1384
- onViewAll: function onViewAll() {
1385
- onSearchSubmit(searchValue);
1386
- setSearchValue('');
1387
- setSearchResults({
1388
- brands: [],
1389
- products: []
1390
- });
1391
- setIsSearchFocused(false);
1392
- setShowNoResults(false);
1393
- },
1394
- searchResultsRef: searchResultsRef,
1395
- onSearchSubmit: onSearchSubmit,
1396
- setSearchValue: setSearchValue,
1397
- initialSearchData: initialSearchView,
1398
- isSearchFocused: isSearchFocused,
1399
- setIsSearchFocused: setIsSearchFocused,
1400
- currency: currency,
1401
- currencySymbol: currencySymbol,
1402
- onProductSearchResultClick: onProductSearchResultClick,
1403
- onBrandSearchResultClick: onBrandSearchResultClick,
1404
- onCreateInterests: onCreateInterests,
1405
- noResultsImage: noResultsImage,
1406
- showNoResults: showNoResults,
1407
- isLoading: searchLoading,
1408
- showCreateInterest: showCreateInterest
1409
- }), /*#__PURE__*/React.createElement("nav", {
1410
- className: "navbar__nav-links navbar__nav-links--wrap"
1411
- }, renderDropdownLinks(), !!stores.length && /*#__PURE__*/React.createElement("li", {
1412
- className: "navbar__link",
1413
- key: "Stores"
1414
- }, /*#__PURE__*/React.createElement(LinkComponent, {
1415
- href: contactUsLink,
1416
- className: "navbar__link-item navbar__link-item--desktop"
1417
- }, "Stores"), /*#__PURE__*/React.createElement("div", {
1418
- className: "navbar__dropdown"
1419
- }, /*#__PURE__*/React.createElement(StoresDropdown, {
1420
- stores: stores,
1421
- contactNumber: contactNumber
1422
- }))))), /*#__PURE__*/React.createElement("div", {
1423
- className: "navbar__icons-wrapper"
1424
- }, /*#__PURE__*/React.createElement("div", {
1425
- className: "navbar__icons"
1426
- }, /*#__PURE__*/React.createElement(CurrencySelect, {
1427
- currency: currency,
1428
- currencyOptions: currencyOptions,
1429
- onCurrencyChange: onCurrencyChange,
1430
- isCurrencySelectionDisabled: isCurrencySelectionDisabled,
1431
- tooltipContent: tooltipContent
1432
- }), shop && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
1433
- type: "button",
1434
- className: "navbar__icon relative flex",
1435
- onClick: onAccountClick,
1436
- style: {
1437
- marginRight: getMarginRight(isEarlyAccess || isExclusive, name)
1438
- }
1439
- }, /*#__PURE__*/React.createElement("img", {
1440
- src: accountIcon,
1441
- alt: "account-icon",
1442
- width: 20,
1443
- height: 20
1444
- }), isEarlyAccess && /*#__PURE__*/React.createElement("img", {
1445
- src: earlyAccessIcon,
1446
- alt: "loyalty-icon",
1447
- className: "navbar__loyalty-icon",
1448
- width: 16,
1449
- height: 16
1450
- }), isExclusive && /*#__PURE__*/React.createElement("img", {
1451
- src: exclusiveIcon,
1452
- alt: "loyalty-icon",
1453
- className: "navbar__loyalty-icon",
1454
- width: 16,
1455
- height: 16
1456
- })), name && /*#__PURE__*/React.createElement("button", {
1457
- type: "button",
1458
- className: "mr-3",
1459
- onClick: onAccountClick
1460
- }, /*#__PURE__*/React.createElement("span", {
1461
- className: "text-sm"
1462
- }, name))), onInterestClick && /*#__PURE__*/React.createElement("button", {
1463
- type: "button",
1464
- className: "".concat(app ? 'navbar__icon--app' : 'navbar__icon'),
1465
- onClick: onInterestClick
1466
- }, /*#__PURE__*/React.createElement("img", {
1467
- src: interestIcon,
1468
- alt: "interest-icon",
1469
- width: 20,
1470
- height: 20
1471
- })), /*#__PURE__*/React.createElement("button", {
1472
- type: "button",
1473
- className: "navbar__cart-icon ".concat(app ? 'navbar__icon--app' : 'navbar__icon'),
1474
- onClick: onCartClick
1475
- }, /*#__PURE__*/React.createElement("img", {
1476
- src: cartIcon,
1477
- alt: "cart-icon",
1478
- width: 20,
1479
- height: 20
1480
- }), shop && cartCount > 0 && /*#__PURE__*/React.createElement("div", {
1481
- className: "navbar__cart-count"
1482
- }, cartCount))), /*#__PURE__*/React.createElement("nav", {
1483
- className: "navbar__nav-links"
1484
- }, /*#__PURE__*/React.createElement("li", {
1485
- className: "navbar__company-link"
1486
- }, /*#__PURE__*/React.createElement(LinkComponent, {
1487
- href: ourStoryLink,
1488
- className: "navbar__link-item"
1489
- }, "Our Story")), /*#__PURE__*/React.createElement("li", {
1490
- className: "navbar__company-link"
1491
- }, /*#__PURE__*/React.createElement(LinkComponent, {
1492
- href: contactUsLink,
1493
- className: "navbar__link-item"
1494
- }, "Contact Us")), /*#__PURE__*/React.createElement("li", {
1495
- className: "navbar__company-link"
1496
- }, /*#__PURE__*/React.createElement("button", {
1497
- type: "button",
1498
- className: "navbar__company-block",
1499
- onClick: onSellToUsClick
1500
- }, "Sell to us")))))));
1501
- };
1502
-
1503
- export default LuxityDesktopHeader;
1511
+ })));