@bonlineza/luxity-lib 2.37.8 → 2.38.0

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.
@@ -1313,10 +1313,10 @@
1313
1313
  var relativeInlineStyle = styled.css(_templateObject$i || (_templateObject$i = _taggedTemplateLiteral(["\n position: relative;\n"])));
1314
1314
  var topMiddleBodyStyle = styled.css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
1315
1315
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
1316
- return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1316
+ return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1317
1317
  };
1318
1318
  var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
1319
- return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
1319
+ return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.bodyWidth);
1320
1320
  };
1321
1321
  var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
1322
1322
  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);
@@ -1326,10 +1326,10 @@
1326
1326
 
1327
1327
  var getBodyStyle = function getBodyStyle() {
1328
1328
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1329
- var _props$$toolTipPositi = props.$toolTipPosition,
1330
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
1329
+ var _props$toolTipPositio = props.toolTipPosition,
1330
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
1331
1331
 
1332
- switch ($toolTipPosition) {
1332
+ switch (toolTipPosition) {
1333
1333
  case 'top':
1334
1334
  return topMiddleBodyStyle;
1335
1335
 
@@ -1343,9 +1343,9 @@
1343
1343
 
1344
1344
  var getAfterStyling = function getAfterStyling() {
1345
1345
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1346
- var $toolTipPosition = props.$toolTipPosition;
1346
+ var toolTipPosition = props.toolTipPosition;
1347
1347
 
1348
- switch ($toolTipPosition) {
1348
+ switch (toolTipPosition) {
1349
1349
  case 'top':
1350
1350
  return getTopMiddleArrowAfterStyle(props);
1351
1351
 
@@ -1358,7 +1358,7 @@
1358
1358
  };
1359
1359
 
1360
1360
  var Body$1 = styled__default.span(_templateObject$j || (_templateObject$j = _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) {
1361
- return props.$bodyWidth;
1361
+ return props.bodyWidth;
1362
1362
  }, function (props) {
1363
1363
  return props.theme.colors.base || 'black';
1364
1364
  }, function (props) {
@@ -455,10 +455,10 @@
455
455
  var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
456
456
  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"])));
457
457
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
458
- 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);
458
+ 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);
459
459
  };
460
460
  var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
461
- return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
461
+ return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.bodyWidth);
462
462
  };
463
463
  var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
464
464
  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);
@@ -468,10 +468,10 @@
468
468
 
469
469
  var getBodyStyle = function getBodyStyle() {
470
470
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
471
- var _props$$toolTipPositi = props.$toolTipPosition,
472
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
471
+ var _props$toolTipPositio = props.toolTipPosition,
472
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
473
473
 
474
- switch ($toolTipPosition) {
474
+ switch (toolTipPosition) {
475
475
  case 'top':
476
476
  return topMiddleBodyStyle;
477
477
 
@@ -485,9 +485,9 @@
485
485
 
486
486
  var getAfterStyling = function getAfterStyling() {
487
487
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
488
- var $toolTipPosition = props.$toolTipPosition;
488
+ var toolTipPosition = props.toolTipPosition;
489
489
 
490
- switch ($toolTipPosition) {
490
+ switch (toolTipPosition) {
491
491
  case 'top':
492
492
  return getTopMiddleArrowAfterStyle(props);
493
493
 
@@ -500,7 +500,7 @@
500
500
  };
501
501
 
502
502
  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) {
503
- return props.$bodyWidth;
503
+ return props.bodyWidth;
504
504
  }, function (props) {
505
505
  return props.theme.colors.base || 'black';
506
506
  }, function (props) {
@@ -576,33 +576,33 @@
576
576
  });
577
577
  });
578
578
 
579
- /* eslint-disable react/require-default-props */
580
-
581
579
  var Tooltip = function Tooltip(_ref) {
582
- var _ref$children = _ref.children,
583
- children = _ref$children === void 0 ? null : _ref$children,
584
- _ref$toolTipText = _ref.toolTipText,
585
- toolTipText = _ref$toolTipText === void 0 ? '' : _ref$toolTipText,
586
- _ref$toolTipPosition = _ref.toolTipPosition,
587
- toolTipPosition = _ref$toolTipPosition === void 0 ? 'top' : _ref$toolTipPosition,
588
- _ref$bodyWidth = _ref.bodyWidth,
589
- bodyWidth = _ref$bodyWidth === void 0 ? '8em' : _ref$bodyWidth,
590
- _ref$apexWidth = _ref.apexWidth,
591
- apexWidth = _ref$apexWidth === void 0 ? '5px' : _ref$apexWidth,
592
- _ref$containerClassNa = _ref.containerClassName,
593
- containerClassName = _ref$containerClassNa === void 0 ? '' : _ref$containerClassNa,
594
- _ref$bodyClassName = _ref.bodyClassName,
595
- bodyClassName = _ref$bodyClassName === void 0 ? '' : _ref$bodyClassName;
580
+ var children = _ref.children,
581
+ toolTipText = _ref.toolTipText,
582
+ toolTipPosition = _ref.toolTipPosition,
583
+ bodyWidth = _ref.bodyWidth,
584
+ apexWidth = _ref.apexWidth,
585
+ containerClassName = _ref.containerClassName,
586
+ bodyClassName = _ref.bodyClassName;
596
587
  return /*#__PURE__*/React__default.createElement(Container, {
597
588
  className: containerClassName
598
589
  }, children, /*#__PURE__*/React__default.createElement(Body, {
599
- $toolTipPosition: toolTipPosition,
600
- $bodyWidth: bodyWidth,
601
- $apexWidth: apexWidth,
590
+ toolTipPosition: toolTipPosition,
591
+ bodyWidth: bodyWidth,
592
+ apexWidth: apexWidth,
602
593
  className: bodyClassName
603
594
  }, toolTipText));
604
595
  };
605
596
 
597
+ Tooltip.defaultProps = {
598
+ children: null,
599
+ toolTipText: '',
600
+ toolTipPosition: 'top',
601
+ bodyWidth: '8em',
602
+ apexWidth: '5px',
603
+ containerClassName: '',
604
+ bodyClassName: ''
605
+ };
606
606
  var Tooltip$1 = themed(Tooltip);
607
607
 
608
608
  var CurrencySelect = function CurrencySelect(_ref) {
@@ -977,6 +977,8 @@
977
977
  price: product.price,
978
978
  retail_price: product.est_retail_price
979
979
  };
980
+ var displayPrice = product.on_promotion && product.promotion_price ? product.promotion_price : selectedPrice.price;
981
+ var hasPromotion = product.on_promotion && product.promotion_price;
980
982
  return /*#__PURE__*/React__default.createElement("a", {
981
983
  key: product.link,
982
984
  href: product.link,
@@ -1004,15 +1006,23 @@
1004
1006
  className: "product-card__name"
1005
1007
  }, shouldShowInitialData ? /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
1006
1008
  className: "product-card__brand-name"
1007
- }, product.brand.toUpperCase()), ' ', product.name) : product.name), /*#__PURE__*/React__default.createElement("div", {
1009
+ }, product.brand.toUpperCase()), ' ', product.name) : /*#__PURE__*/React__default.createElement("span", null, /*#__PURE__*/React__default.createElement("span", {
1010
+ className: "product-card__brand-name"
1011
+ }, product.brand.toUpperCase()), ' ', product.name)), /*#__PURE__*/React__default.createElement("div", {
1008
1012
  className: "product-card__info-row"
1009
1013
  }, /*#__PURE__*/React__default.createElement("div", {
1010
1014
  className: "product-card__price-group"
1015
+ }, hasPromotion ? /*#__PURE__*/React__default.createElement("div", {
1016
+ className: "product-card__price-with-promotion"
1011
1017
  }, /*#__PURE__*/React__default.createElement("div", {
1018
+ className: "product-card__price product-card__price--promotion"
1019
+ }, formatPrice(displayPrice)), /*#__PURE__*/React__default.createElement("div", {
1020
+ className: "product-card__price product-card__price--original"
1021
+ }, formatPrice(selectedPrice.price))) : /*#__PURE__*/React__default.createElement("div", {
1012
1022
  className: "product-card__price"
1013
- }, formatPrice(selectedPrice.price)), selectedPrice.retail_price > 1 && /*#__PURE__*/React__default.createElement("div", {
1023
+ }, formatPrice(displayPrice)), selectedPrice.retail_price > 1 && selectedPrice.retail_price > displayPrice && /*#__PURE__*/React__default.createElement("div", {
1014
1024
  className: "product-card__retail-price"
1015
- }, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), /*#__PURE__*/React__default.createElement("div", {
1025
+ }, "Est. Retail: ", formatPrice(selectedPrice.retail_price))), product.condition && /*#__PURE__*/React__default.createElement("div", {
1016
1026
  className: "product-card__condition"
1017
1027
  }, /*#__PURE__*/React__default.createElement("span", {
1018
1028
  className: "product-card__condition-label"
@@ -1101,20 +1111,33 @@
1101
1111
  }, "View all items")));
1102
1112
  };
1103
1113
 
1104
- var searchProducts = function searchProducts(search, limit, currencyCode) {
1114
+ var searchBrandsAggregations = function searchBrandsAggregations(search, currencyCode) {
1105
1115
  return {
1106
- 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 ",
1116
+ query: "\n query GetProductFilterAggregations($search: String!) {\n luxity_products_aggregations(search: $search) {\n luxity_brand {\n name\n }\n }\n }\n ",
1117
+ variables: {
1118
+ search: search,
1119
+ currency_code: currencyCode
1120
+ }
1121
+ };
1122
+ }; // NEW: Get top products for search dropdown (right side)
1123
+
1124
+ var searchProductsFilter = function searchProductsFilter(search, limit, currencyCode) {
1125
+ return {
1126
+ 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 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 ",
1107
1127
  variables: {
1108
1128
  search: search,
1109
1129
  limit: limit,
1110
- currencyCode: currencyCode
1130
+ page: 1,
1131
+ sort_by: 'newest',
1132
+ with_sold: false,
1133
+ currency_code: currencyCode
1111
1134
  }
1112
1135
  };
1113
1136
  };
1114
1137
 
1115
1138
  var useSearch = function useSearch(_ref) {
1116
1139
  var endpoint = _ref.endpoint,
1117
- onProductIdsReceived = _ref.onProductIdsReceived,
1140
+ onSearchLoading = _ref.onSearchLoading,
1118
1141
  currency = _ref.currency,
1119
1142
  onSearchPreview = _ref.onSearchPreview;
1120
1143
  var currentSearchRequestToken = React.useRef(null);
@@ -1152,8 +1175,7 @@
1152
1175
  if (!searchQuery || searchQuery.trim() === '') {
1153
1176
  setSearchResults({
1154
1177
  brands: [],
1155
- products: [],
1156
- luxity_product_ids: []
1178
+ products: []
1157
1179
  });
1158
1180
  return;
1159
1181
  } // Cancel any ongoing search request to prevent race conditions
@@ -1165,41 +1187,96 @@
1165
1187
 
1166
1188
 
1167
1189
  var newSearchToken = axios.CancelToken.source();
1168
- currentSearchRequestToken.current = newSearchToken;
1169
- axios.post(endpoint, searchProducts(searchQuery, 3, currency), {
1190
+ currentSearchRequestToken.current = newSearchToken; // Set loading to true when starting the search request
1191
+
1192
+ if (typeof onSearchLoading === 'function') {
1193
+ onSearchLoading(true);
1194
+ } // Make TWO parallel queries: brands aggregations + products filter
1195
+
1196
+
1197
+ Promise.all([// Query 1: Get brands aggregations
1198
+ axios.post(endpoint, searchBrandsAggregations(searchQuery, currency), {
1199
+ cancelToken: newSearchToken.token
1200
+ }), // Query 2: Get top 3 products
1201
+ axios.post(endpoint, searchProductsFilter(searchQuery, 3, currency), {
1170
1202
  cancelToken: newSearchToken.token
1171
- }).then(function (response) {
1203
+ })]).then(function (_ref3) {
1204
+ var _ref4 = _slicedToArray(_ref3, 2),
1205
+ brandsResponse = _ref4[0],
1206
+ productsResponse = _ref4[1];
1207
+
1172
1208
  if (currentSearchRequestToken.current === newSearchToken) {
1173
- var searchResults = response.data.data.luxity_products_serach_results;
1209
+ var _brandsResponse$data$, _productsResponse$dat, _productsResponse$dat2;
1210
+
1211
+ // Extract brands from aggregations
1212
+ 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
1213
+
1214
+ var productsData = ((_productsResponse$dat = productsResponse.data.data.luxity_products_filter) === null || _productsResponse$dat === void 0 ? void 0 : _productsResponse$dat.data) || [];
1215
+ 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 }
1216
+
1217
+ var brands = brandsData.slice(0, 10).map(function (brand) {
1218
+ return {
1219
+ name: brand.name,
1220
+ link: "/products/brands/".concat(brand.name.toLowerCase().replace(/\s+/g, '-')) // Convert to slug
1221
+
1222
+ };
1223
+ }); // Map products to old structure with prices
1224
+
1225
+ var products = productsData.map(function (product) {
1226
+ return {
1227
+ name: product.product.name,
1228
+ brand: product.luxity_brand.name,
1229
+ link: "/products/".concat(product.id),
1230
+ // Using product ID for link
1231
+ price: product.product.price || 0,
1232
+ promotion_price: product.product.promotion_price || null,
1233
+ est_retail_price: product.product.est_retail_price || 0,
1234
+ condition: product.product.condition || '',
1235
+ currency_symbol: product.product.currency_symbol || '',
1236
+ featured_image: product.featured_image,
1237
+ on_promotion: product.on_promotion || false,
1238
+ promotion_discount: product.promotion_discount || 0,
1239
+ // Keep new fields for potential future use
1240
+ id: product.id,
1241
+ category_type: product.category_type,
1242
+ luxity_brand: product.luxity_brand
1243
+ };
1244
+ });
1245
+ var searchResults = {
1246
+ brands: brands,
1247
+ products: products,
1248
+ total: totalResults
1249
+ };
1174
1250
  setSearchResults(searchResults);
1175
1251
 
1176
- if (searchResults && searchResults.luxity_product_ids) {
1177
- onProductIdsReceived(searchResults.luxity_product_ids);
1178
- }
1179
-
1180
1252
  if (typeof onSearchPreview === 'function') {
1181
- var _searchResults$brands, _searchResults$produc;
1182
-
1183
- var hasResults = ((_searchResults$brands = searchResults.brands) === null || _searchResults$brands === void 0 ? void 0 : _searchResults$brands.length) > 0 || ((_searchResults$produc = searchResults.products) === null || _searchResults$produc === void 0 ? void 0 : _searchResults$produc.length) > 0;
1253
+ var hasResults = brands.length > 0 || products.length > 0;
1184
1254
  onSearchPreview({
1185
1255
  search_string: searchQuery,
1186
1256
  has_results: hasResults
1187
1257
  });
1188
1258
  }
1189
1259
 
1190
- currentSearchRequestToken.current = null;
1260
+ currentSearchRequestToken.current = null; // Set loading to false when search completes successfully
1261
+
1262
+ if (typeof onSearchLoading === 'function') {
1263
+ onSearchLoading(false);
1264
+ }
1191
1265
  }
1192
1266
  }).catch(function (error) {
1193
1267
  if (!axios.isCancel(error)) {
1194
1268
  setSearchResults({
1195
1269
  brands: [],
1196
- products: [],
1197
- luxity_product_ids: []
1270
+ products: []
1198
1271
  });
1199
- currentSearchRequestToken.current = null;
1272
+ currentSearchRequestToken.current = null; // Set loading to false when search fails
1273
+
1274
+ if (typeof onSearchLoading === 'function') {
1275
+ onSearchLoading(false);
1276
+ }
1200
1277
  }
1201
1278
  });
1202
- }, [endpoint, currency, onSearchPreview, onProductIdsReceived]);
1279
+ }, [endpoint, currency, onSearchPreview, onSearchLoading]);
1203
1280
  var debouncedSearch = React.useMemo(function () {
1204
1281
  return debounce(function (searchQuery, setSearchResults) {
1205
1282
  return performSearch(searchQuery, setSearchResults);
@@ -1304,6 +1381,22 @@
1304
1381
  }
1305
1382
  }, [searchValue, immediateSearch, setIsSearchFocused, setSearchValue]);
1306
1383
  };
1384
+ var useSearchUrlQuery = function useSearchUrlQuery(setSearchValue, debouncedSearch) {
1385
+ var hasProcessedUrlQuery = React.useRef(false);
1386
+ React.useEffect(function () {
1387
+ if (hasProcessedUrlQuery.current) return;
1388
+ var urlParams = new URLSearchParams(window.location.search);
1389
+ var queryParam = urlParams.get('q');
1390
+ var isSearchPage = window.location.pathname.includes('/search');
1391
+
1392
+ if (queryParam && queryParam.trim() !== '' && isSearchPage) {
1393
+ hasProcessedUrlQuery.current = true;
1394
+ setSearchValue(queryParam);
1395
+ debouncedSearch(queryParam);
1396
+ }
1397
+ }, [setSearchValue, debouncedSearch]);
1398
+ return hasProcessedUrlQuery;
1399
+ };
1307
1400
 
1308
1401
  var LuxityMobileHeader = function LuxityMobileHeader(_ref) {
1309
1402
  var logoSrc = _ref.logoSrc,
@@ -1338,7 +1431,7 @@
1338
1431
  onSearchPreview = _ref.onSearchPreview,
1339
1432
  onProductSearchResultClick = _ref.onProductSearchResultClick,
1340
1433
  onBrandSearchResultClick = _ref.onBrandSearchResultClick,
1341
- onProductIdsReceived = _ref.onProductIdsReceived,
1434
+ onSearchLoading = _ref.onSearchLoading,
1342
1435
  onLogoutClick = _ref.onLogoutClick,
1343
1436
  onInterestClick = _ref.onInterestClick,
1344
1437
  onAddressClick = _ref.onAddressClick,
@@ -1363,7 +1456,7 @@
1363
1456
 
1364
1457
  var _useSearch = useSearch({
1365
1458
  endpoint: endpoint,
1366
- onProductIdsReceived: onProductIdsReceived,
1459
+ onSearchLoading: onSearchLoading,
1367
1460
  currency: currency,
1368
1461
  onSearchPreview: onSearchPreview
1369
1462
  }),
@@ -1423,6 +1516,7 @@
1423
1516
  });
1424
1517
  var immediateSearch = createImmediateSearch(setSearchValue, setSearchResults, onSearchSubmit);
1425
1518
  var handleChange = useSearchInputChange(setSearchValue, setIsSearchFocused, debouncedSearch, setSearchResults, setCachedResults);
1519
+ useSearchUrlQuery(setSearchValue, debouncedSearch);
1426
1520
  var handleKeyDown = useSearchInputKeyDown(searchValue, immediateSearch, setIsSearchFocused, setSearchValue);
1427
1521
  React.useMemo(function () {
1428
1522
  if (!initialSearchData) {
package/LuxitySideNav.js CHANGED
@@ -271,10 +271,10 @@
271
271
  var relativeInlineStyle = styled.css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n position: relative;\n"])));
272
272
  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"])));
273
273
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
274
- 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);
274
+ 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);
275
275
  };
276
276
  var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
277
- return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
277
+ return styled.css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.bodyWidth);
278
278
  };
279
279
  var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
280
280
  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);
@@ -284,10 +284,10 @@
284
284
 
285
285
  var getBodyStyle = function getBodyStyle() {
286
286
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
287
- var _props$$toolTipPositi = props.$toolTipPosition,
288
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
287
+ var _props$toolTipPositio = props.toolTipPosition,
288
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
289
289
 
290
- switch ($toolTipPosition) {
290
+ switch (toolTipPosition) {
291
291
  case 'top':
292
292
  return topMiddleBodyStyle;
293
293
 
@@ -301,9 +301,9 @@
301
301
 
302
302
  var getAfterStyling = function getAfterStyling() {
303
303
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
304
- var $toolTipPosition = props.$toolTipPosition;
304
+ var toolTipPosition = props.toolTipPosition;
305
305
 
306
- switch ($toolTipPosition) {
306
+ switch (toolTipPosition) {
307
307
  case 'top':
308
308
  return getTopMiddleArrowAfterStyle(props);
309
309
 
@@ -316,7 +316,7 @@
316
316
  };
317
317
 
318
318
  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) {
319
- return props.$bodyWidth;
319
+ return props.bodyWidth;
320
320
  }, function (props) {
321
321
  return props.theme.colors.base || 'black';
322
322
  }, function (props) {
@@ -392,33 +392,33 @@
392
392
  });
393
393
  });
394
394
 
395
- /* eslint-disable react/require-default-props */
396
-
397
395
  var Tooltip = function Tooltip(_ref) {
398
- var _ref$children = _ref.children,
399
- children = _ref$children === void 0 ? null : _ref$children,
400
- _ref$toolTipText = _ref.toolTipText,
401
- toolTipText = _ref$toolTipText === void 0 ? '' : _ref$toolTipText,
402
- _ref$toolTipPosition = _ref.toolTipPosition,
403
- toolTipPosition = _ref$toolTipPosition === void 0 ? 'top' : _ref$toolTipPosition,
404
- _ref$bodyWidth = _ref.bodyWidth,
405
- bodyWidth = _ref$bodyWidth === void 0 ? '8em' : _ref$bodyWidth,
406
- _ref$apexWidth = _ref.apexWidth,
407
- apexWidth = _ref$apexWidth === void 0 ? '5px' : _ref$apexWidth,
408
- _ref$containerClassNa = _ref.containerClassName,
409
- containerClassName = _ref$containerClassNa === void 0 ? '' : _ref$containerClassNa,
410
- _ref$bodyClassName = _ref.bodyClassName,
411
- bodyClassName = _ref$bodyClassName === void 0 ? '' : _ref$bodyClassName;
396
+ var children = _ref.children,
397
+ toolTipText = _ref.toolTipText,
398
+ toolTipPosition = _ref.toolTipPosition,
399
+ bodyWidth = _ref.bodyWidth,
400
+ apexWidth = _ref.apexWidth,
401
+ containerClassName = _ref.containerClassName,
402
+ bodyClassName = _ref.bodyClassName;
412
403
  return /*#__PURE__*/React__default.createElement(Container, {
413
404
  className: containerClassName
414
405
  }, children, /*#__PURE__*/React__default.createElement(Body, {
415
- $toolTipPosition: toolTipPosition,
416
- $bodyWidth: bodyWidth,
417
- $apexWidth: apexWidth,
406
+ toolTipPosition: toolTipPosition,
407
+ bodyWidth: bodyWidth,
408
+ apexWidth: apexWidth,
418
409
  className: bodyClassName
419
410
  }, toolTipText));
420
411
  };
421
412
 
413
+ Tooltip.defaultProps = {
414
+ children: null,
415
+ toolTipText: '',
416
+ toolTipPosition: 'top',
417
+ bodyWidth: '8em',
418
+ apexWidth: '5px',
419
+ containerClassName: '',
420
+ bodyClassName: ''
421
+ };
422
422
  var Tooltip$1 = themed(Tooltip);
423
423
 
424
424
  var CurrencySelect = function CurrencySelect(_ref) {
@@ -1313,10 +1313,10 @@
1313
1313
  var relativeInlineStyle = styled.css(_templateObject$i || (_templateObject$i = _taggedTemplateLiteral(["\n position: relative;\n"])));
1314
1314
  var topMiddleBodyStyle = styled.css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
1315
1315
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
1316
- return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1316
+ return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1317
1317
  };
1318
1318
  var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
1319
- return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
1319
+ return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.bodyWidth);
1320
1320
  };
1321
1321
  var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
1322
1322
  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);
@@ -1326,10 +1326,10 @@
1326
1326
 
1327
1327
  var getBodyStyle = function getBodyStyle() {
1328
1328
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1329
- var _props$$toolTipPositi = props.$toolTipPosition,
1330
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
1329
+ var _props$toolTipPositio = props.toolTipPosition,
1330
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
1331
1331
 
1332
- switch ($toolTipPosition) {
1332
+ switch (toolTipPosition) {
1333
1333
  case 'top':
1334
1334
  return topMiddleBodyStyle;
1335
1335
 
@@ -1343,9 +1343,9 @@
1343
1343
 
1344
1344
  var getAfterStyling = function getAfterStyling() {
1345
1345
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1346
- var $toolTipPosition = props.$toolTipPosition;
1346
+ var toolTipPosition = props.toolTipPosition;
1347
1347
 
1348
- switch ($toolTipPosition) {
1348
+ switch (toolTipPosition) {
1349
1349
  case 'top':
1350
1350
  return getTopMiddleArrowAfterStyle(props);
1351
1351
 
@@ -1358,7 +1358,7 @@
1358
1358
  };
1359
1359
 
1360
1360
  var Body$1 = styled__default.span(_templateObject$j || (_templateObject$j = _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) {
1361
- return props.$bodyWidth;
1361
+ return props.bodyWidth;
1362
1362
  }, function (props) {
1363
1363
  return props.theme.colors.base || 'black';
1364
1364
  }, function (props) {
package/ModelSelector.js CHANGED
@@ -1313,10 +1313,10 @@
1313
1313
  var relativeInlineStyle = styled.css(_templateObject$i || (_templateObject$i = _taggedTemplateLiteral(["\n position: relative;\n"])));
1314
1314
  var topMiddleBodyStyle = styled.css(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteral(["\n position: absolute;\n z-index: 1;\n bottom: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n"])));
1315
1315
  var getTopMiddleArrowAfterStyle = function getTopMiddleArrowAfterStyle(props) {
1316
- return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1316
+ return styled.css(_templateObject3$1 || (_templateObject3$1 = _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);
1317
1317
  };
1318
1318
  var getBottomMiddleBodyStyle = function getBottomMiddleBodyStyle(props) {
1319
- return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.$bodyWidth);
1319
+ return styled.css(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 100%;\n left: calc(50% - ", " / 2);\n"])), props.bodyWidth);
1320
1320
  };
1321
1321
  var getBottomMiddleArrowAfterStyle = function getBottomMiddleArrowAfterStyle(props) {
1322
1322
  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);
@@ -1326,10 +1326,10 @@
1326
1326
 
1327
1327
  var getBodyStyle = function getBodyStyle() {
1328
1328
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1329
- var _props$$toolTipPositi = props.$toolTipPosition,
1330
- $toolTipPosition = _props$$toolTipPositi === void 0 ? '' : _props$$toolTipPositi;
1329
+ var _props$toolTipPositio = props.toolTipPosition,
1330
+ toolTipPosition = _props$toolTipPositio === void 0 ? '' : _props$toolTipPositio;
1331
1331
 
1332
- switch ($toolTipPosition) {
1332
+ switch (toolTipPosition) {
1333
1333
  case 'top':
1334
1334
  return topMiddleBodyStyle;
1335
1335
 
@@ -1343,9 +1343,9 @@
1343
1343
 
1344
1344
  var getAfterStyling = function getAfterStyling() {
1345
1345
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1346
- var $toolTipPosition = props.$toolTipPosition;
1346
+ var toolTipPosition = props.toolTipPosition;
1347
1347
 
1348
- switch ($toolTipPosition) {
1348
+ switch (toolTipPosition) {
1349
1349
  case 'top':
1350
1350
  return getTopMiddleArrowAfterStyle(props);
1351
1351
 
@@ -1358,7 +1358,7 @@
1358
1358
  };
1359
1359
 
1360
1360
  var Body$1 = styled__default.span(_templateObject$j || (_templateObject$j = _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) {
1361
- return props.$bodyWidth;
1361
+ return props.bodyWidth;
1362
1362
  }, function (props) {
1363
1363
  return props.theme.colors.base || 'black';
1364
1364
  }, function (props) {