@bonlineza/luxity-lib 2.36.1-beta.3 → 2.36.1-uk-platform.1

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.
@@ -116,133 +116,6 @@
116
116
  }
117
117
  }
118
118
 
119
- var cssUnit = {
120
- cm: true,
121
- mm: true,
122
- in: true,
123
- px: true,
124
- pt: true,
125
- pc: true,
126
- em: true,
127
- ex: true,
128
- ch: true,
129
- rem: true,
130
- vw: true,
131
- vh: true,
132
- vmin: true,
133
- vmax: true,
134
- "%": true,
135
- };
136
- /**
137
- * If size is a number, append px to the value as default unit.
138
- * If size is a string, validate against list of valid units.
139
- * If unit is valid, return size as is.
140
- * If unit is invalid, console warn issue, replace with px as the unit.
141
- *
142
- * @param {(number | string)} size
143
- * @return {LengthObject} LengthObject
144
- */
145
- function parseLengthAndUnit(size) {
146
- if (typeof size === "number") {
147
- return {
148
- value: size,
149
- unit: "px",
150
- };
151
- }
152
- var value;
153
- var valueString = (size.match(/^[0-9.]*/) || "").toString();
154
- if (valueString.includes(".")) {
155
- value = parseFloat(valueString);
156
- }
157
- else {
158
- value = parseInt(valueString, 10);
159
- }
160
- var unit = (size.match(/[^0-9]*$/) || "").toString();
161
- if (cssUnit[unit]) {
162
- return {
163
- value: value,
164
- unit: unit,
165
- };
166
- }
167
- console.warn("React Spinners: ".concat(size, " is not a valid css value. Defaulting to ").concat(value, "px."));
168
- return {
169
- value: value,
170
- unit: "px",
171
- };
172
- }
173
- /**
174
- * Take value as an input and return valid css value
175
- *
176
- * @param {(number | string)} value
177
- * @return {string} valid css value
178
- */
179
- function cssValue(value) {
180
- var lengthWithunit = parseLengthAndUnit(value);
181
- return "".concat(lengthWithunit.value).concat(lengthWithunit.unit);
182
- }
183
-
184
- var createAnimation = function (loaderName, frames, suffix) {
185
- var animationName = "react-spinners-".concat(loaderName, "-").concat(suffix);
186
- if (typeof window == "undefined" || !window.document) {
187
- return animationName;
188
- }
189
- var styleEl = document.createElement("style");
190
- document.head.appendChild(styleEl);
191
- var styleSheet = styleEl.sheet;
192
- var keyFrames = "\n @keyframes ".concat(animationName, " {\n ").concat(frames, "\n }\n ");
193
- if (styleSheet) {
194
- styleSheet.insertRule(keyFrames, 0);
195
- }
196
- return animationName;
197
- };
198
-
199
- var __assign = (undefined && undefined.__assign) || function () {
200
- __assign = Object.assign || function(t) {
201
- for (var s, i = 1, n = arguments.length; i < n; i++) {
202
- s = arguments[i];
203
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
204
- t[p] = s[p];
205
- }
206
- return t;
207
- };
208
- return __assign.apply(this, arguments);
209
- };
210
- var __rest = (undefined && undefined.__rest) || function (s, e) {
211
- var t = {};
212
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
213
- t[p] = s[p];
214
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
215
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
216
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
217
- t[p[i]] = s[p[i]];
218
- }
219
- return t;
220
- };
221
- var beat = createAnimation("BeatLoader", "50% {transform: scale(0.75);opacity: 0.2} 100% {transform: scale(1);opacity: 1}", "beat");
222
- function BeatLoader(_a) {
223
- var _b = _a.loading, loading = _b === void 0 ? true : _b, _c = _a.color, color = _c === void 0 ? "#000000" : _c, _d = _a.speedMultiplier, speedMultiplier = _d === void 0 ? 1 : _d, _e = _a.cssOverride, cssOverride = _e === void 0 ? {} : _e, _f = _a.size, size = _f === void 0 ? 15 : _f, _g = _a.margin, margin = _g === void 0 ? 2 : _g, additionalprops = __rest(_a, ["loading", "color", "speedMultiplier", "cssOverride", "size", "margin"]);
224
- var wrapper = __assign({ display: "inherit" }, cssOverride);
225
- var style = function (i) {
226
- return {
227
- display: "inline-block",
228
- backgroundColor: color,
229
- width: cssValue(size),
230
- height: cssValue(size),
231
- margin: cssValue(margin),
232
- borderRadius: "100%",
233
- animation: "".concat(beat, " ").concat(0.7 / speedMultiplier, "s ").concat(i % 2 ? "0s" : "".concat(0.35 / speedMultiplier, "s"), " infinite linear"),
234
- animationFillMode: "both",
235
- };
236
- };
237
- if (!loading) {
238
- return null;
239
- }
240
- return (React.createElement("span", __assign({ style: wrapper }, additionalprops),
241
- React.createElement("span", { style: style(1) }),
242
- React.createElement("span", { style: style(2) }),
243
- React.createElement("span", { style: style(3) })));
244
- }
245
-
246
119
  var LuxityAppSideNav = function LuxityAppSideNav(_ref) {
247
120
  var closeIcon = _ref.closeIcon,
248
121
  accountIcon = _ref.accountIcon,
@@ -300,7 +173,7 @@
300
173
  src: accountIcon,
301
174
  alt: "close-icon",
302
175
  className: "side-nav__menu-icon"
303
- }), "Account"))), /*#__PURE__*/React__default.createElement("div", {
176
+ }), "Account"))), onInterestClick && /*#__PURE__*/React__default.createElement("div", {
304
177
  className: "side-nav__menu-item"
305
178
  }, /*#__PURE__*/React__default.createElement("button", {
306
179
  type: "button",
@@ -544,33 +417,10 @@
544
417
  var removeCategoryByName = function removeCategoryByName(categories, name) {
545
418
  var _categories$filter;
546
419
  return (_categories$filter = categories === null || categories === void 0 ? void 0 : categories.filter(function (category) {
547
- return category.name !== name;
420
+ return category.name.toLowerCase() !== name.toLowerCase();
548
421
  })) !== null && _categories$filter !== void 0 ? _categories$filter : [];
549
422
  };
550
423
 
551
- var categories = {
552
- shoes: {
553
- name: 'Shoes',
554
- slug: 'shoes'
555
- },
556
- bags: {
557
- name: 'Bags',
558
- slug: 'bags'
559
- },
560
- clothing: {
561
- name: 'Clothing',
562
- slug: 'apparel'
563
- },
564
- watches: {
565
- name: 'Watches',
566
- slug: 'watches'
567
- },
568
- accessories: {
569
- name: 'Accessories',
570
- slug: 'accessories'
571
- }
572
- };
573
-
574
424
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
575
425
 
576
426
  /* position relative is required for the Body element to be positioned correctly */
@@ -769,7 +619,8 @@
769
619
  onCartClick = _ref.onCartClick,
770
620
  onContactUsClick = _ref.onContactUsClick,
771
621
  onOurStoryClick = _ref.onOurStoryClick,
772
- onBlogClick = _ref.onBlogClick,
622
+ _ref$onBlogClick = _ref.onBlogClick,
623
+ onBlogClick = _ref$onBlogClick === void 0 ? undefined : _ref$onBlogClick,
773
624
  onSellToUsClick = _ref.onSellToUsClick,
774
625
  stores = _ref.stores,
775
626
  categoryElements = _ref.categoryElements,
@@ -781,7 +632,8 @@
781
632
  onCurrencyChange = _ref.onCurrencyChange,
782
633
  isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
783
634
  tooltipContent = _ref.tooltipContent,
784
- LinkComponent = _ref.LinkComponent;
635
+ LinkComponent = _ref.LinkComponent,
636
+ categoryConfig = _ref.categoryConfig;
785
637
  var _useState = React.useState(false),
786
638
  _useState2 = _slicedToArray(_useState, 2),
787
639
  subMenuOpen = _useState2[0],
@@ -794,16 +646,7 @@
794
646
  _useState6 = _slicedToArray(_useState5, 2),
795
647
  loading = _useState6[0],
796
648
  setLoading = _useState6[1];
797
- var _useState7 = React.useState({
798
- latestArrivals: [],
799
- bags: [],
800
- shoes: [],
801
- apparel: [],
802
- accessories: [],
803
- watches: [],
804
- accessoriesCategories: [],
805
- apparelStyles: []
806
- }),
649
+ var _useState7 = React.useState({}),
807
650
  _useState8 = _slicedToArray(_useState7, 2),
808
651
  dropdownData = _useState8[0],
809
652
  setDropdownData = _useState8[1];
@@ -845,22 +688,77 @@
845
688
  axios.get("".concat(menuData)).then(function (_ref2) {
846
689
  var data = _ref2.data;
847
690
  setLoading(false);
848
- setDropdownData(function (prev) {
849
- return _objectSpread2(_objectSpread2({}, prev), {}, {
850
- latestArrivals: data.latest_arrivals,
851
- bags: data.bags,
852
- shoes: data.shoes,
853
- apparel: data.apparel,
854
- accessories: data.accessories,
855
- watches: data.watches,
856
- accessoriesCategories: data.accessories_categories,
857
- apparelStyles: data.apparel_styles
858
- });
859
- });
691
+ setDropdownData(data);
860
692
  }).catch(function () {
861
693
  return setHasError(true);
862
694
  });
863
695
  }, [menuData]);
696
+ var renderMenuItems = function renderMenuItems() {
697
+ return categoryConfig.categories.map(function (category) {
698
+ var title = category.title,
699
+ categorySlug = category.categorySlug;
700
+ var slug = categorySlug;
701
+ if (categorySlug === 'brands') {
702
+ slug = 'new';
703
+ }
704
+ return /*#__PURE__*/React__default.createElement("div", {
705
+ className: "side-nav__menu-item"
706
+ }, /*#__PURE__*/React__default.createElement("button", {
707
+ type: "button",
708
+ className: "side-nav__menu-title-wrapper",
709
+ onClick: function onClick() {
710
+ return onSubMenuClick(slug);
711
+ }
712
+ }, /*#__PURE__*/React__default.createElement("span", {
713
+ className: "side-nav__menu-title"
714
+ }, title), /*#__PURE__*/React__default.createElement("img", {
715
+ src: accordionIcon,
716
+ alt: "accordion-icon",
717
+ className: "side-nav__accordion-icon"
718
+ })));
719
+ });
720
+ };
721
+ var renderDropdownLinks = function renderDropdownLinks() {
722
+ return categoryConfig.categories.map(function (category) {
723
+ var categorySlug = category.categorySlug,
724
+ categoryName = category.categoryName,
725
+ elementsKey = category.elementsKey,
726
+ subCategoryElementsKey = category.subCategoryElementsKey,
727
+ styleElementsKey = category.styleElementsKey;
728
+ var categoryElementsProcessed = categoryElements;
729
+ if (subCategoryElementsKey && dropdownData[subCategoryElementsKey]) {
730
+ // show subcategory elements
731
+ categoryElementsProcessed = removeCategoryByName(dropdownData[subCategoryElementsKey], categoryName);
732
+ } else if (styleElementsKey && dropdownData[styleElementsKey]) {
733
+ categoryElementsProcessed = addCategoryToElements(dropdownData[styleElementsKey], categorySlug);
734
+ } else {
735
+ categoryElementsProcessed = addCategoryToElements(categoryElementsProcessed, categorySlug);
736
+ }
737
+ var subMenuTitle = 'Brands';
738
+ if (categorySlug !== 'brands') {
739
+ subMenuTitle = "".concat(categoryName, " Brands");
740
+ }
741
+ var subMenu = categorySlug;
742
+ if (subMenu === 'brands') {
743
+ subMenu = 'new';
744
+ }
745
+ return /*#__PURE__*/React__default.createElement(BrandsDropDown, {
746
+ subMenuOpen: subMenuOpen && displayedSubMenu === subMenu,
747
+ onBackClick: onBackClick,
748
+ backIcon: backIcon,
749
+ subMenuCategoryTitle: "Department",
750
+ productUrl: productUrl,
751
+ categoryElements: categoryElementsProcessed,
752
+ subMenuBrandsTitle: subMenuTitle,
753
+ brandsList: dropdownData[elementsKey],
754
+ categorySlug: displayedSubMenu,
755
+ isLoading: loading,
756
+ hasError: hasError,
757
+ onCloseSideNav: onCloseSideNav,
758
+ LinkComponent: LinkComponent
759
+ });
760
+ });
761
+ };
864
762
  return /*#__PURE__*/React__default.createElement("div", {
865
763
  className: "side-nav"
866
764
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -881,91 +779,7 @@
881
779
  className: "side-nav__close-icon"
882
780
  })), /*#__PURE__*/React__default.createElement("div", {
883
781
  className: "side-nav__menu-items-wrapper"
884
- }, /*#__PURE__*/React__default.createElement("div", {
885
- className: "side-nav__menu-item"
886
- }, /*#__PURE__*/React__default.createElement("button", {
887
- type: "button",
888
- className: "side-nav__menu-title-wrapper",
889
- onClick: function onClick() {
890
- return onSubMenuClick('new');
891
- }
892
- }, /*#__PURE__*/React__default.createElement("span", {
893
- className: "side-nav__menu-title"
894
- }, "New"), /*#__PURE__*/React__default.createElement("img", {
895
- src: accordionIcon,
896
- alt: "accordion-icon",
897
- className: "side-nav__accordion-icon"
898
- }))), /*#__PURE__*/React__default.createElement("div", {
899
- className: "side-nav__menu-item"
900
- }, /*#__PURE__*/React__default.createElement("button", {
901
- type: "button",
902
- className: "side-nav__menu-title-wrapper",
903
- onClick: function onClick() {
904
- return onSubMenuClick('bags');
905
- }
906
- }, /*#__PURE__*/React__default.createElement("span", {
907
- className: "side-nav__menu-title"
908
- }, "Bags"), /*#__PURE__*/React__default.createElement("img", {
909
- src: accordionIcon,
910
- alt: "accordion-icon",
911
- className: "side-nav__accordion-icon"
912
- }))), /*#__PURE__*/React__default.createElement("div", {
913
- className: "side-nav__menu-item"
914
- }, /*#__PURE__*/React__default.createElement("button", {
915
- type: "button",
916
- className: "side-nav__menu-title-wrapper",
917
- onClick: function onClick() {
918
- return onSubMenuClick('shoes');
919
- }
920
- }, /*#__PURE__*/React__default.createElement("span", {
921
- className: "side-nav__menu-title"
922
- }, "Shoes"), /*#__PURE__*/React__default.createElement("img", {
923
- src: accordionIcon,
924
- alt: "accordion-icon",
925
- className: "side-nav__accordion-icon"
926
- }))), /*#__PURE__*/React__default.createElement("div", {
927
- className: "side-nav__menu-item"
928
- }, /*#__PURE__*/React__default.createElement("button", {
929
- type: "button",
930
- className: "side-nav__menu-title-wrapper",
931
- onClick: function onClick() {
932
- return onSubMenuClick('apparel');
933
- }
934
- }, /*#__PURE__*/React__default.createElement("span", {
935
- className: "side-nav__menu-title"
936
- }, "Clothing"), /*#__PURE__*/React__default.createElement("img", {
937
- src: accordionIcon,
938
- alt: "accordion-icon",
939
- className: "side-nav__accordion-icon"
940
- }))), /*#__PURE__*/React__default.createElement("div", {
941
- className: "side-nav__menu-item"
942
- }, /*#__PURE__*/React__default.createElement("button", {
943
- type: "button",
944
- className: "side-nav__menu-title-wrapper",
945
- onClick: function onClick() {
946
- return onSubMenuClick('accessories');
947
- }
948
- }, /*#__PURE__*/React__default.createElement("span", {
949
- className: "side-nav__menu-title"
950
- }, "Accessories"), /*#__PURE__*/React__default.createElement("img", {
951
- src: accordionIcon,
952
- alt: "accordion-icon",
953
- className: "side-nav__accordion-icon"
954
- }))), /*#__PURE__*/React__default.createElement("div", {
955
- className: "side-nav__menu-item"
956
- }, /*#__PURE__*/React__default.createElement("button", {
957
- type: "button",
958
- className: "side-nav__menu-title-wrapper",
959
- onClick: function onClick() {
960
- return onSubMenuClick('watches');
961
- }
962
- }, /*#__PURE__*/React__default.createElement("span", {
963
- className: "side-nav__menu-title"
964
- }, "Watches"), /*#__PURE__*/React__default.createElement("img", {
965
- src: accordionIcon,
966
- alt: "accordion-icon",
967
- className: "side-nav__accordion-icon"
968
- }))), /*#__PURE__*/React__default.createElement("div", {
782
+ }, renderMenuItems(), !!stores.length && /*#__PURE__*/React__default.createElement("div", {
969
783
  className: "side-nav__menu-item"
970
784
  }, /*#__PURE__*/React__default.createElement("button", {
971
785
  type: "button",
@@ -989,7 +803,7 @@
989
803
  type: "button",
990
804
  className: "side-nav__sub-link",
991
805
  onClick: onOurStoryClick
992
- }, "Our Story")), /*#__PURE__*/React__default.createElement("div", {
806
+ }, "Our Story")), typeof onBlogClick === 'function' && /*#__PURE__*/React__default.createElement("div", {
993
807
  className: "side-nav__menu-item"
994
808
  }, /*#__PURE__*/React__default.createElement("button", {
995
809
  type: "button",
@@ -1019,91 +833,7 @@
1019
833
  onCurrencyChange: onCurrencyChange,
1020
834
  isCurrencySelectionDisabled: isCurrencySelectionDisabled,
1021
835
  tooltipContent: tooltipContent
1022
- }))), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1023
- subMenuOpen: subMenuOpen && displayedSubMenu === 'new',
1024
- onBackClick: onBackClick,
1025
- backIcon: backIcon,
1026
- subMenuCategoryTitle: "Department",
1027
- productUrl: productUrl,
1028
- categoryElements: categoryElements,
1029
- subMenuBrandsTitle: "Brands",
1030
- brandsList: dropdownData.latestArrivals,
1031
- categorySlug: displayedSubMenu,
1032
- isLoading: loading,
1033
- hasError: hasError,
1034
- onCloseSideNav: onCloseSideNav,
1035
- LinkComponent: LinkComponent
1036
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1037
- subMenuOpen: subMenuOpen && displayedSubMenu === 'bags',
1038
- onBackClick: onBackClick,
1039
- backIcon: backIcon,
1040
- subMenuCategoryTitle: "Department",
1041
- productUrl: productUrl,
1042
- categoryElements: addCategoryToElements(categoryElements, categories.bags.slug),
1043
- subMenuBrandsTitle: "Bag Brands",
1044
- brandsList: dropdownData.bags,
1045
- categorySlug: displayedSubMenu,
1046
- isLoading: loading,
1047
- hasError: hasError,
1048
- onCloseSideNav: onCloseSideNav,
1049
- LinkComponent: LinkComponent
1050
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1051
- subMenuOpen: subMenuOpen && displayedSubMenu === 'shoes',
1052
- onBackClick: onBackClick,
1053
- backIcon: backIcon,
1054
- subMenuCategoryTitle: "Department",
1055
- productUrl: productUrl,
1056
- categoryElements: addCategoryToElements(categoryElements, categories.shoes.slug),
1057
- subMenuBrandsTitle: "Shoe Brands",
1058
- brandsList: dropdownData.shoes,
1059
- categorySlug: displayedSubMenu,
1060
- isLoading: loading,
1061
- hasError: hasError,
1062
- onCloseSideNav: onCloseSideNav,
1063
- LinkComponent: LinkComponent
1064
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1065
- subMenuOpen: subMenuOpen && displayedSubMenu === 'apparel',
1066
- onBackClick: onBackClick,
1067
- backIcon: backIcon,
1068
- subMenuCategoryTitle: "Department",
1069
- productUrl: productUrl,
1070
- categoryElements: addCategoryToElements(dropdownData.apparelStyles, categories.clothing.slug),
1071
- subMenuBrandsTitle: "Clothing Brands",
1072
- brandsList: dropdownData.apparel,
1073
- categorySlug: displayedSubMenu,
1074
- isLoading: loading,
1075
- hasError: hasError,
1076
- onCloseSideNav: onCloseSideNav,
1077
- LinkComponent: LinkComponent
1078
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1079
- subMenuOpen: subMenuOpen && displayedSubMenu === 'accessories',
1080
- onBackClick: onBackClick,
1081
- backIcon: backIcon,
1082
- subMenuCategoryTitle: "Categories",
1083
- productUrl: productUrl,
1084
- categoryElements: removeCategoryByName(dropdownData.accessoriesCategories, 'ACCESSORIES'),
1085
- subMenuBrandsTitle: "Accessory Brands",
1086
- brandsList: dropdownData.accessories,
1087
- categorySlug: displayedSubMenu,
1088
- isLoading: loading,
1089
- hasError: hasError,
1090
- onCloseSideNav: onCloseSideNav,
1091
- LinkComponent: LinkComponent
1092
- }), /*#__PURE__*/React__default.createElement(BrandsDropDown, {
1093
- subMenuOpen: subMenuOpen && displayedSubMenu === 'watches',
1094
- onBackClick: onBackClick,
1095
- backIcon: backIcon,
1096
- subMenuCategoryTitle: "Department",
1097
- productUrl: productUrl,
1098
- categoryElements: addCategoryToElements(categoryElements, categories.watches.slug),
1099
- subMenuBrandsTitle: "Watches Brands",
1100
- brandsList: dropdownData.watches,
1101
- categorySlug: displayedSubMenu,
1102
- isLoading: loading,
1103
- hasError: hasError,
1104
- onCloseSideNav: onCloseSideNav,
1105
- LinkComponent: LinkComponent
1106
- }), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
836
+ }))), renderDropdownLinks(), displayedSubMenu === 'stores' && /*#__PURE__*/React__default.createElement("div", {
1107
837
  className: "side-nav__content"
1108
838
  }, /*#__PURE__*/React__default.createElement(StoresDropdown, {
1109
839
  backIcon: backIcon,
@@ -1112,65 +842,239 @@
1112
842
  onContactUsClick: onContactUsClick
1113
843
  })));
1114
844
  };
1115
-
1116
- var searchProducts = function searchProducts(search, limit) {
1117
- return {
1118
- query: "\n query SearchProducts($search: String!, $limit: Int!) {\n luxity_products_serach_results(search: $search, limit: $limit) {\n brands {\n name\n link\n }\n products {\n name\n link\n }\n luxity_product_ids\n }\n }\n ",
1119
- variables: {
1120
- search: search,
1121
- limit: limit
1122
- }
1123
- };
845
+ LuxitySideNav.defaultProps = {
846
+ onBlogClick: undefined
1124
847
  };
1125
848
 
1126
849
  var SearchResults = function SearchResults(_ref) {
850
+ var _searchResults$brands, _searchResults$produc, _searchResults$brands2, _searchResults$produc2, _initialSearchData$tr, _initialSearchData$la, _limitBrands, _limitBrands2, _initialSearchData$la2, _searchResults$produc3;
1127
851
  var searchValue = _ref.searchValue,
1128
852
  searchResults = _ref.searchResults,
1129
853
  onViewAll = _ref.onViewAll,
1130
854
  searchResultsRef = _ref.searchResultsRef,
1131
855
  onSearchSubmit = _ref.onSearchSubmit,
1132
- setSearchValue = _ref.setSearchValue;
1133
- if (searchValue.trim().length >= 3) {
1134
- if (searchResults.brands.length === 0 && searchResults.products.length === 0) {
1135
- return null;
1136
- }
1137
- return /*#__PURE__*/React__default.createElement("div", {
1138
- className: "z-50 absolute md:top-14 font-body bg-white w-full lg:w-1/2 flex flex-col md:flex-row md:divide-x divide-black lg:mt-1 shadow-md",
1139
- ref: searchResultsRef
1140
- }, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
1141
- className: "w-full lg:w-1/3"
1142
- }, /*#__PURE__*/React__default.createElement("p", {
1143
- className: "font-bold p-2 px-4"
1144
- }, "Brands"), searchResults.brands.map(function (brand) {
1145
- return /*#__PURE__*/React__default.createElement("a", {
1146
- key: brand.link,
1147
- href: brand.link,
1148
- className: ""
1149
- }, /*#__PURE__*/React__default.createElement("div", {
1150
- className: "p-2 px-4 hover:bg-gray-100"
1151
- }, brand.name));
856
+ setSearchValue = _ref.setSearchValue,
857
+ initialSearchData = _ref.initialSearchData,
858
+ isSearchFocused = _ref.isSearchFocused,
859
+ setIsSearchFocused = _ref.setIsSearchFocused,
860
+ currency = _ref.currency,
861
+ currencySymbol = _ref.currencySymbol;
862
+ var _useState = React.useState(false),
863
+ _useState2 = _slicedToArray(_useState, 2),
864
+ isMobile = _useState2[0],
865
+ setIsMobile = _useState2[1];
866
+ React.useEffect(function () {
867
+ var checkIfMobile = function checkIfMobile() {
868
+ setIsMobile(window.innerWidth <= 1024);
869
+ };
870
+ checkIfMobile();
871
+ window.addEventListener('resize', checkIfMobile);
872
+ return function () {
873
+ window.removeEventListener('resize', checkIfMobile);
874
+ };
875
+ }, []);
876
+ var shouldShowInitialData = isSearchFocused && (!searchValue || searchValue.trim().length < 3) || (searchValue === null || searchValue === void 0 ? void 0 : searchValue.trim().length) >= 3 && !(searchResults !== null && searchResults !== void 0 && (_searchResults$brands = searchResults.brands) !== null && _searchResults$brands !== void 0 && _searchResults$brands.length) && !(searchResults !== null && searchResults !== void 0 && (_searchResults$produc = searchResults.products) !== null && _searchResults$produc !== void 0 && _searchResults$produc.length);
877
+ var hasResults = (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$brands2 = searchResults.brands) === null || _searchResults$brands2 === void 0 ? void 0 : _searchResults$brands2.length) > 0 || (searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc2 = searchResults.products) === null || _searchResults$produc2 === void 0 ? void 0 : _searchResults$produc2.length) > 0;
878
+ 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;
879
+ if (!hasResults && !hasInitialData) {
880
+ return null;
881
+ }
882
+ if (!isSearchFocused && !hasResults) {
883
+ return null;
884
+ }
885
+ var formatPrice = function formatPrice(price) {
886
+ var formatter = new Intl.NumberFormat(undefined, {
887
+ minimumFractionDigits: 0,
888
+ maximumFractionDigits: 2
889
+ });
890
+ return "".concat(currencySymbol).concat(formatter.format(price));
891
+ };
892
+ var renderProductCard = function renderProductCard(product) {
893
+ var selectedPrice = product.prices ? product.prices.find(function (p) {
894
+ return p.currency === currency;
895
+ }) : {
896
+ price: product.price,
897
+ retail_price: product.est_retail_price
898
+ };
899
+ return /*#__PURE__*/React__default.createElement("a", {
900
+ key: product.link,
901
+ href: product.link,
902
+ className: "product-card"
903
+ }, (product.image_url || product.featured_image) && /*#__PURE__*/React__default.createElement("div", {
904
+ className: "product-card__image-container"
905
+ }, /*#__PURE__*/React__default.createElement("img", {
906
+ src: product.featured_image,
907
+ alt: product.name,
908
+ className: "product-card__image"
1152
909
  })), /*#__PURE__*/React__default.createElement("div", {
1153
- className: "w-full lg:w-2/3"
1154
- }, /*#__PURE__*/React__default.createElement("p", {
1155
- className: "font-bold p-2 px-4"
1156
- }, "Products"), searchResults.products.map(function (product) {
1157
- return /*#__PURE__*/React__default.createElement("a", {
1158
- key: product.link,
1159
- href: product.link
1160
- }, /*#__PURE__*/React__default.createElement("div", {
1161
- className: "p-2 px-4 hover:bg-gray-100"
1162
- }, product.name));
1163
- }), /*#__PURE__*/React__default.createElement("button", {
1164
- type: "button",
1165
- onClick: function onClick() {
1166
- onViewAll();
910
+ className: "product-card__details"
911
+ }, /*#__PURE__*/React__default.createElement("h3", {
912
+ className: "product-card__name"
913
+ }, shouldShowInitialData ? /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
914
+ className: "product-card__brand-name"
915
+ }, product.brand.toUpperCase()), ' ', product.name) : product.name), /*#__PURE__*/React__default.createElement("div", {
916
+ className: "product-card__info-row"
917
+ }, /*#__PURE__*/React__default.createElement("div", {
918
+ className: "product-card__price-group"
919
+ }, /*#__PURE__*/React__default.createElement("div", {
920
+ className: "product-card__price"
921
+ }, formatPrice(selectedPrice.price)), selectedPrice.retail_price > 1 && /*#__PURE__*/React__default.createElement("div", {
922
+ className: "product-card__retail-price"
923
+ }, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), /*#__PURE__*/React__default.createElement("div", {
924
+ className: "product-card__condition"
925
+ }, /*#__PURE__*/React__default.createElement("span", {
926
+ className: "product-card__condition-label"
927
+ }, "Condition:"), product.condition))));
928
+ };
929
+ var getBrandLink = function getBrandLink(brand) {
930
+ return "/products/brands/".concat(brand.slug);
931
+ };
932
+ var limitBrands = function limitBrands(brands) {
933
+ if (isMobile && brands && brands.length > 4) {
934
+ return brands.slice(0, 4);
935
+ }
936
+ return brands;
937
+ };
938
+ return /*#__PURE__*/React__default.createElement("div", {
939
+ className: "search-results",
940
+ ref: searchResultsRef
941
+ }, /*#__PURE__*/React__default.createElement("div", {
942
+ className: "search-results__section"
943
+ }, /*#__PURE__*/React__default.createElement("h2", {
944
+ className: "search-results__header"
945
+ }, shouldShowInitialData ? 'TRENDING SEARCHES' : 'BRANDS'), /*#__PURE__*/React__default.createElement("div", {
946
+ className: "search-results__list"
947
+ }, shouldShowInitialData ? (_limitBrands = limitBrands(initialSearchData === null || initialSearchData === void 0 ? void 0 : initialSearchData.trending_brands)) === null || _limitBrands === void 0 ? void 0 : _limitBrands.map(function (brand) {
948
+ return /*#__PURE__*/React__default.createElement("a", {
949
+ key: brand.id,
950
+ href: getBrandLink(brand),
951
+ className: "search-results__item"
952
+ }, brand.name);
953
+ }) : (_limitBrands2 = limitBrands(searchResults === null || searchResults === void 0 ? void 0 : searchResults.brands)) === null || _limitBrands2 === void 0 ? void 0 : _limitBrands2.map(function (brand) {
954
+ return /*#__PURE__*/React__default.createElement("a", {
955
+ key: brand.link,
956
+ href: brand.link,
957
+ className: "search-results__item"
958
+ }, brand.name);
959
+ }))), /*#__PURE__*/React__default.createElement("div", {
960
+ className: "search-results__section"
961
+ }, /*#__PURE__*/React__default.createElement("div", {
962
+ className: "search-results__section-header"
963
+ }, /*#__PURE__*/React__default.createElement("h2", {
964
+ className: "search-results__header"
965
+ }, shouldShowInitialData ? 'POPULAR' : 'TOP MATCHES'), /*#__PURE__*/React__default.createElement("button", {
966
+ type: "button",
967
+ className: "search-results__view-all-link",
968
+ onClick: function onClick() {
969
+ onViewAll();
970
+ }
971
+ }, "View all items")), /*#__PURE__*/React__default.createElement("div", {
972
+ className: "search-results__product-list"
973
+ }, shouldShowInitialData ? initialSearchData === null || initialSearchData === void 0 ? void 0 : (_initialSearchData$la2 = initialSearchData.latest_products) === null || _initialSearchData$la2 === void 0 ? void 0 : _initialSearchData$la2.map(renderProductCard) : searchResults === null || searchResults === void 0 ? void 0 : (_searchResults$produc3 = searchResults.products) === null || _searchResults$produc3 === void 0 ? void 0 : _searchResults$produc3.map(renderProductCard)), /*#__PURE__*/React__default.createElement("button", {
974
+ type: "button",
975
+ className: "search-results__view-all-button",
976
+ onClick: function onClick() {
977
+ onViewAll();
978
+ if (!shouldShowInitialData) {
1167
979
  onSearchSubmit(searchValue);
1168
980
  setSearchValue('');
1169
- },
1170
- className: "bottom-0 mt-5 py-3 w-full font-body text-center text-white uppercase bg-black hover:bg-gray-950 border border-black transition-all ease-in-out duration-300 cursor-pointer"
1171
- }, "View all"))));
1172
- }
1173
- return null;
981
+ setIsSearchFocused(false);
982
+ }
983
+ }
984
+ }, "View all items")));
985
+ };
986
+
987
+ var searchProducts = function searchProducts(search, limit, currencyCode) {
988
+ return {
989
+ query: "\n query SearchProducts($search: String!, $limit: Int!, $currencyCode: String!) {\n luxity_products_serach_results(search: $search, limit: $limit, currency_code: $currencyCode) {\n brands {\n name\n link\n }\n products {\n name\n link\n price\n est_retail_price\n condition\n featured_image\n }\n luxity_product_ids\n }\n }\n ",
990
+ variables: {
991
+ search: search,
992
+ limit: limit,
993
+ currencyCode: currencyCode
994
+ }
995
+ };
996
+ };
997
+
998
+ var useSearch = function useSearch(_ref) {
999
+ var endpoint = _ref.endpoint,
1000
+ onProductIdsReceived = _ref.onProductIdsReceived,
1001
+ currency = _ref.currency;
1002
+ var debounce = React.useCallback(function (func, wait) {
1003
+ var timeout;
1004
+ return function executedFunction() {
1005
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1006
+ args[_key] = arguments[_key];
1007
+ }
1008
+ var later = function later() {
1009
+ clearTimeout(timeout);
1010
+ func.apply(void 0, args);
1011
+ };
1012
+ clearTimeout(timeout);
1013
+ timeout = setTimeout(later, wait);
1014
+ };
1015
+ }, []);
1016
+ var fetchInitialSearchData = React.useCallback(function (initialSearchDataUrl, setInitialSearchView) {
1017
+ axios.get("".concat(initialSearchDataUrl)).then(function (_ref2) {
1018
+ var data = _ref2.data;
1019
+ setInitialSearchView({
1020
+ trending_brands: data.trending_brands,
1021
+ latest_products: data.latest_products
1022
+ });
1023
+ }).catch(function () {
1024
+ setInitialSearchView({
1025
+ trending_brands: [],
1026
+ latest_products: []
1027
+ });
1028
+ });
1029
+ }, []);
1030
+ var performSearch = React.useCallback(function (nextValue, setSearchResults) {
1031
+ if (!nextValue || nextValue.trim() === '') {
1032
+ setSearchResults({
1033
+ brands: [],
1034
+ products: [],
1035
+ luxity_product_ids: []
1036
+ });
1037
+ return;
1038
+ }
1039
+ axios.post(endpoint, searchProducts(nextValue, 3, currency)).then(function (response) {
1040
+ var searchResults = response.data.data.luxity_products_serach_results;
1041
+ setSearchResults(searchResults);
1042
+ if (searchResults && searchResults.luxity_product_ids) {
1043
+ onProductIdsReceived(searchResults.luxity_product_ids);
1044
+ }
1045
+ }).catch(function () {
1046
+ setSearchResults({
1047
+ brands: [],
1048
+ products: [],
1049
+ luxity_product_ids: []
1050
+ });
1051
+ });
1052
+ }, [endpoint, currency, onProductIdsReceived]);
1053
+ var debouncedSearch = React.useMemo(function () {
1054
+ return debounce(function (nextValue, setSearchResults) {
1055
+ return performSearch(nextValue, setSearchResults);
1056
+ }, 500);
1057
+ }, [debounce, performSearch]);
1058
+ var createDebouncedSearch = React.useCallback(function (setSearchResults) {
1059
+ return function (nextValue) {
1060
+ return debouncedSearch(nextValue, setSearchResults);
1061
+ };
1062
+ }, [debouncedSearch]);
1063
+ var createImmediateSearch = React.useCallback(function (setSearchValue, setSearchResults, onSearchSubmit) {
1064
+ return function (value) {
1065
+ setSearchValue('');
1066
+ setSearchResults({
1067
+ brands: [],
1068
+ products: []
1069
+ });
1070
+ onSearchSubmit(value);
1071
+ };
1072
+ }, []);
1073
+ return {
1074
+ fetchInitialSearchData: fetchInitialSearchData,
1075
+ createDebouncedSearch: createDebouncedSearch,
1076
+ createImmediateSearch: createImmediateSearch
1077
+ };
1174
1078
  };
1175
1079
 
1176
1080
  var LuxityMobileHeader = function LuxityMobileHeader(_ref) {
@@ -1193,13 +1097,15 @@
1193
1097
  onDashboardClick = _ref.onDashboardClick,
1194
1098
  onContactUsClick = _ref.onContactUsClick,
1195
1099
  onOurStoryClick = _ref.onOurStoryClick,
1196
- onBlogClick = _ref.onBlogClick,
1100
+ _ref$onBlogClick = _ref.onBlogClick,
1101
+ onBlogClick = _ref$onBlogClick === void 0 ? undefined : _ref$onBlogClick,
1197
1102
  bugReportLink = _ref.bugReportLink,
1198
1103
  onSellToUsClick = _ref.onSellToUsClick,
1199
1104
  onLogoClick = _ref.onLogoClick,
1200
1105
  onLuxityShopClick = _ref.onLuxityShopClick,
1201
1106
  endpoint = _ref.endpoint,
1202
1107
  menuData = _ref.menuData,
1108
+ initialSearchData = _ref.initialSearchData,
1203
1109
  onSearchSubmit = _ref.onSearchSubmit,
1204
1110
  onProductIdsReceived = _ref.onProductIdsReceived,
1205
1111
  onLogoutClick = _ref.onLogoutClick,
@@ -1213,13 +1119,23 @@
1213
1119
  onPastSalesClick = _ref.onPastSalesClick,
1214
1120
  onPaidOutClick = _ref.onPaidOutClick,
1215
1121
  currency = _ref.currency,
1122
+ currencySymbol = _ref.currencySymbol,
1216
1123
  currencyOptions = _ref.currencyOptions,
1217
1124
  onCurrencyChange = _ref.onCurrencyChange,
1218
1125
  isCurrencySelectionDisabled = _ref.isCurrencySelectionDisabled,
1219
1126
  tooltipContent = _ref.tooltipContent,
1220
1127
  LinkComponent = _ref.LinkComponent,
1221
1128
  shop = _ref.shop,
1222
- app = _ref.app;
1129
+ app = _ref.app,
1130
+ categoryConfig = _ref.categoryConfig;
1131
+ var _useSearch = useSearch({
1132
+ endpoint: endpoint,
1133
+ onProductIdsReceived: onProductIdsReceived,
1134
+ currency: currency
1135
+ }),
1136
+ fetchInitialSearchData = _useSearch.fetchInitialSearchData,
1137
+ createDebouncedSearch = _useSearch.createDebouncedSearch,
1138
+ createImmediateSearch = _useSearch.createImmediateSearch;
1223
1139
  var _useState = React.useState(''),
1224
1140
  _useState2 = _slicedToArray(_useState, 2),
1225
1141
  searchValue = _useState2[0],
@@ -1232,53 +1148,32 @@
1232
1148
  _useState6 = _slicedToArray(_useState5, 2),
1233
1149
  showSideNav = _useState6[0],
1234
1150
  setShowSideNav = _useState6[1];
1235
- var _useState7 = React.useState(false),
1236
- _useState8 = _slicedToArray(_useState7, 2),
1237
- searchLoading = _useState8[0],
1238
- setSearchLoading = _useState8[1];
1239
- var _useState9 = React.useState({
1151
+ var _useState7 = React.useState({
1240
1152
  brands: [],
1241
1153
  products: []
1242
1154
  }),
1155
+ _useState8 = _slicedToArray(_useState7, 2),
1156
+ searchResults = _useState8[0],
1157
+ setSearchResults = _useState8[1];
1158
+ var _useState9 = React.useState(false),
1243
1159
  _useState10 = _slicedToArray(_useState9, 2),
1244
- searchResults = _useState10[0],
1245
- setSearchResults = _useState10[1];
1246
- var debounce = function debounce(func, wait) {
1247
- var timeout;
1248
- return function executedFunction() {
1249
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1250
- args[_key] = arguments[_key];
1251
- }
1252
- var later = function later() {
1253
- clearTimeout(timeout);
1254
- func.apply(void 0, args);
1255
- };
1256
- clearTimeout(timeout);
1257
- timeout = setTimeout(later, wait);
1258
- };
1259
- };
1260
- var debouncedSearch = React.useCallback(debounce(function (nextValue) {
1261
- setSearchLoading(true);
1262
- axios.post(endpoint, searchProducts(nextValue, 6)).then(function (response) {
1263
- setSearchResults(response.data.data.luxity_products_serach_results);
1264
- var ids = response.data.data.luxity_products_serach_results.luxity_product_ids;
1265
- onProductIdsReceived(ids);
1266
- setSearchLoading(false);
1267
- }).catch(function () {
1268
- setSearchLoading(false);
1269
- });
1270
- }, 500), [endpoint]);
1271
- var immediateSearch = React.useCallback(function (value) {
1272
- setSearchValue('');
1273
- setSearchResults({
1274
- brands: [],
1275
- products: []
1276
- });
1277
- onSearchSubmit(value);
1278
- }, [onSearchSubmit]);
1160
+ isSearchFocused = _useState10[0],
1161
+ setIsSearchFocused = _useState10[1];
1162
+ var _useState11 = React.useState({
1163
+ trending_brands: [],
1164
+ latest_products: []
1165
+ }),
1166
+ _useState12 = _slicedToArray(_useState11, 2),
1167
+ initialSearchView = _useState12[0],
1168
+ setInitialSearchView = _useState12[1];
1169
+ var searchResultsRef = React.useRef(null);
1170
+ var searchInputRef = React.useRef(null);
1171
+ var debouncedSearch = createDebouncedSearch(setSearchResults);
1172
+ var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
1279
1173
  var handleChange = function handleChange(event) {
1280
1174
  var value = event.target.value;
1281
1175
  setSearchValue(value);
1176
+ setIsSearchFocused(true);
1282
1177
  if (value.trim().length >= 3) {
1283
1178
  debouncedSearch(value);
1284
1179
  } else {
@@ -1293,16 +1188,49 @@
1293
1188
  event.preventDefault();
1294
1189
  if (searchValue.trim().length >= 3) {
1295
1190
  immediateSearch(searchValue);
1191
+ setIsSearchFocused(false);
1296
1192
  }
1297
1193
  } else if (event.key === 'Escape') {
1298
1194
  setSearchValue('');
1195
+ setIsSearchFocused(false);
1299
1196
  }
1300
1197
  };
1198
+ React.useMemo(function () {
1199
+ fetchInitialSearchData(initialSearchData, setInitialSearchView);
1200
+ }, [initialSearchData, fetchInitialSearchData]);
1201
+ React.useEffect(function () {
1202
+ var handleClickOutside = function handleClickOutside(event) {
1203
+ if (searchResultsRef.current && !searchResultsRef.current.contains(event.target)) {
1204
+ setSearchValue('');
1205
+ setIsSearchFocused(false);
1206
+ setSearchResults({
1207
+ brands: [],
1208
+ products: []
1209
+ });
1210
+ }
1211
+ };
1212
+ document.addEventListener('mousedown', handleClickOutside);
1213
+ return function () {
1214
+ document.removeEventListener('mousedown', handleClickOutside);
1215
+ };
1216
+ }, []);
1217
+ React.useEffect(function () {
1218
+ if (showSearchBar && searchInputRef.current) {
1219
+ searchInputRef.current.focus();
1220
+ }
1221
+ }, [showSearchBar]);
1301
1222
  var onSearchClick = function onSearchClick() {
1302
1223
  setShowSearchbar(function (prev) {
1303
1224
  return !prev;
1304
1225
  });
1305
1226
  setSearchValue('');
1227
+ setIsSearchFocused(!showSearchBar);
1228
+ if (showSearchBar) {
1229
+ setSearchResults({
1230
+ brands: [],
1231
+ products: []
1232
+ });
1233
+ }
1306
1234
  };
1307
1235
  var onMenuClick = function onMenuClick() {
1308
1236
  setShowSideNav(function (prev) {
@@ -1364,9 +1292,9 @@
1364
1292
  var handleOurStoryClick = function handleOurStoryClick() {
1365
1293
  return handleClick(onOurStoryClick);
1366
1294
  };
1367
- var handleBlogClick = function handleBlogClick() {
1295
+ var handleBlogClick = onBlogClick ? function () {
1368
1296
  return handleClick(onBlogClick);
1369
- };
1297
+ } : undefined;
1370
1298
  return /*#__PURE__*/React__default.createElement(React.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
1371
1299
  className: "navbar navbar__mobile-wrapper"
1372
1300
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -1418,18 +1346,16 @@
1418
1346
  }, /*#__PURE__*/React__default.createElement("div", {
1419
1347
  className: "navbar__product-search"
1420
1348
  }, /*#__PURE__*/React__default.createElement("input", {
1349
+ ref: searchInputRef,
1421
1350
  className: "navbar__form-input",
1422
1351
  type: "text",
1423
1352
  placeholder: "Search for items and designs",
1424
1353
  value: searchValue,
1425
1354
  onChange: handleChange,
1426
- onKeyDown: handleKeyDown
1427
- }), searchLoading && /*#__PURE__*/React__default.createElement(BeatLoader, {
1428
- color: "#000000",
1429
- loading: searchLoading,
1430
- size: 5,
1431
- "aria-label": "Loading Spinner",
1432
- "data-testid": "loader"
1355
+ onKeyDown: handleKeyDown,
1356
+ onFocus: function onFocus() {
1357
+ return setIsSearchFocused(true);
1358
+ }
1433
1359
  })), /*#__PURE__*/React__default.createElement("button", {
1434
1360
  type: "button",
1435
1361
  onClick: onSearchClick
@@ -1439,14 +1365,24 @@
1439
1365
  className: "navbar__input-close-icon"
1440
1366
  })))), /*#__PURE__*/React__default.createElement(SearchResults, {
1441
1367
  searchValue: searchValue,
1442
- searchLoading: searchLoading,
1443
1368
  searchResults: searchResults,
1444
1369
  onViewAll: function onViewAll() {
1445
1370
  onSearchSubmit(searchValue);
1446
1371
  setSearchValue('');
1372
+ setSearchResults({
1373
+ brands: [],
1374
+ products: []
1375
+ });
1376
+ setIsSearchFocused(false);
1447
1377
  },
1448
1378
  onSearchSubmit: onSearchSubmit,
1449
- setSearchValue: setSearchValue
1379
+ setSearchValue: setSearchValue,
1380
+ searchResultsRef: searchResultsRef,
1381
+ initialSearchData: initialSearchView,
1382
+ isSearchFocused: isSearchFocused,
1383
+ setIsSearchFocused: setIsSearchFocused,
1384
+ currency: currency,
1385
+ currencySymbol: currencySymbol
1450
1386
  }), shop && /*#__PURE__*/React__default.createElement(LuxitySideNav, {
1451
1387
  accordionIcon: accordionIcon,
1452
1388
  logoSrc: logoSrc,
@@ -1470,7 +1406,8 @@
1470
1406
  onCurrencyChange: onCurrencyChange,
1471
1407
  isCurrencySelectionDisabled: isCurrencySelectionDisabled,
1472
1408
  tooltipContent: tooltipContent,
1473
- LinkComponent: LinkComponent
1409
+ LinkComponent: LinkComponent,
1410
+ categoryConfig: categoryConfig
1474
1411
  }), app && /*#__PURE__*/React__default.createElement(LuxityAppSideNav, {
1475
1412
  accordionIcon: accordionIcon,
1476
1413
  closeIcon: closeIcon,