@rebuy/rebuy-hydrogen 3.0.0-beta.15 → 3.0.0-beta.16

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 (32) hide show
  1. package/README.md +157 -0
  2. package/dist/constants/debug.d.ts +2 -1
  3. package/dist/constants/debug.d.ts.map +1 -1
  4. package/dist/index.css +42 -27
  5. package/dist/index.css.map +3 -3
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +215 -25
  9. package/dist/index.js.map +4 -4
  10. package/dist/index.mjs +228 -38
  11. package/dist/index.mjs.map +4 -4
  12. package/dist/smart-cart/components/SmartCartContainer/SmartCartContainer.d.ts.map +1 -1
  13. package/dist/types/common.d.ts +7 -0
  14. package/dist/types/common.d.ts.map +1 -1
  15. package/dist/types/rebuyCustom.d.ts +0 -1
  16. package/dist/types/rebuyCustom.d.ts.map +1 -1
  17. package/dist/widgetContainer/RebuyWidgetContainer.d.ts.map +1 -1
  18. package/dist/widgets/RebuyProductViewed/RebuyProductViewed.d.ts +3 -0
  19. package/dist/widgets/RebuyProductViewed/RebuyProductViewed.d.ts.map +1 -0
  20. package/dist/widgets/RebuyProductViewed/index.d.ts +2 -0
  21. package/dist/widgets/RebuyProductViewed/index.d.ts.map +1 -0
  22. package/dist/widgets/RebuyProductViewed/types.d.ts +8 -0
  23. package/dist/widgets/RebuyProductViewed/types.d.ts.map +1 -0
  24. package/dist/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.d.ts +3 -0
  25. package/dist/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.d.ts.map +1 -0
  26. package/dist/widgets/RebuyRecentlyViewedProducts/index.d.ts +2 -0
  27. package/dist/widgets/RebuyRecentlyViewedProducts/index.d.ts.map +1 -0
  28. package/dist/widgets/RebuyRecentlyViewedProducts/types.d.ts +11 -0
  29. package/dist/widgets/RebuyRecentlyViewedProducts/types.d.ts.map +1 -0
  30. package/dist/zustandStores/productViewed.d.ts +9 -0
  31. package/dist/zustandStores/productViewed.d.ts.map +1 -0
  32. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -3612,7 +3612,7 @@ var RebuyHydrogenReactContextProvider = ({
3612
3612
 
3613
3613
  // src/smart-cart/components/SmartCartContainer/SmartCartContainer.tsx
3614
3614
  import clsx13 from "clsx";
3615
- import React11, { useMemo as useMemo20 } from "react";
3615
+ import React11, { useCallback as useCallback14, useEffect as useEffect21, useMemo as useMemo20, useRef as useRef13 } from "react";
3616
3616
 
3617
3617
  // src/smart-cart/components/_Layouts/AnchorSlot.tsx
3618
3618
  import { useMemo as useMemo19 } from "react";
@@ -8659,10 +8659,25 @@ var SmartCartContainer_default = result22;
8659
8659
  // src/smart-cart/components/SmartCartContainer/SmartCartContainer.tsx
8660
8660
  import { jsx as jsx40, jsxs as jsxs24 } from "react/jsx-runtime";
8661
8661
  var SmartCartContainer = ({ containerId }) => {
8662
- const { checkout, config, getItemCount, hideCart, isVisible } = useSmartCart();
8662
+ const { config, getItemCount, hideCart, isVisible } = useSmartCart();
8663
+ const containerRef = useRef13(null);
8664
+ const previousFocusRef = useRef13(null);
8663
8665
  const components = useMemo20(() => config && Array.isArray(config.components) ? config.components : [], [config]);
8664
- const handleCheckout = () => checkout();
8665
- const handleClose = () => hideCart();
8666
+ const handleClose = useCallback14(() => {
8667
+ hideCart();
8668
+ if (previousFocusRef.current) {
8669
+ previousFocusRef.current.focus();
8670
+ }
8671
+ }, [hideCart]);
8672
+ useEffect21(() => {
8673
+ if (isVisible) {
8674
+ previousFocusRef.current = document.activeElement;
8675
+ const closeButton = containerRef.current?.querySelector("#rebuy-cart-close");
8676
+ if (closeButton instanceof HTMLElement) {
8677
+ closeButton.focus();
8678
+ }
8679
+ }
8680
+ }, [isVisible]);
8666
8681
  const backgroundClassName = clsx13(SmartCartContainer_default["rebuy-smart-cart__overlay-background"], {
8667
8682
  [SmartCartContainer_default["rebuy-smart-cart__overlay-background--visible"]]: isVisible
8668
8683
  });
@@ -8688,17 +8703,18 @@ var SmartCartContainer = ({ containerId }) => {
8688
8703
  const titleBarComponent = components.find((c) => c.type === "title_bar");
8689
8704
  const ariaLabelledBy = titleBarComponent ? `rebuy-title-${titleBarComponent.component_id}` : defaultTitleId;
8690
8705
  return /* @__PURE__ */ jsxs24(React11.Fragment, { children: [
8691
- /* @__PURE__ */ jsx40("div", { "aria-hidden": !isVisible, className: backgroundClassName, onClick: handleClose }),
8706
+ /* @__PURE__ */ jsx40("div", { className: backgroundClassName, onClick: handleClose }),
8692
8707
  /* @__PURE__ */ jsxs24(
8693
8708
  "div",
8694
8709
  {
8695
- "aria-hidden": !isVisible,
8696
8710
  "aria-labelledby": ariaLabelledBy,
8697
8711
  "aria-modal": "true",
8698
8712
  className: flyoutContainerClasses,
8699
8713
  "data-rebuy-cart-layout": config?.layout || "single",
8700
8714
  id: containerId || "rebuy-cart-react",
8715
+ ref: containerRef,
8701
8716
  role: "dialog",
8717
+ tabIndex: -1,
8702
8718
  children: [
8703
8719
  /* @__PURE__ */ jsxs24("header", { className: SmartCartContainer_default["rebuy-smart-cart__header"], "data-rebuy-cart-anchor": "header", children: [
8704
8720
  /* @__PURE__ */ jsxs24("div", { className: SmartCartContainer_default["rebuy-smart-cart__header-top-bar"], "data-rebuy-cart-header-top-bar": "", children: [
@@ -8743,21 +8759,10 @@ var RebuySmartCart = () => {
8743
8759
  import { RebuyClient as RebuyClient3 } from "@rebuy/rebuy";
8744
8760
  import * as Utilities5 from "@rebuy/rebuy/utilities";
8745
8761
  import { flattenConnection as flattenConnection4 } from "@shopify/hydrogen";
8746
- import React12, { useContext as useContext4, useEffect as useEffect21, useMemo as useMemo21, useState as useState21 } from "react";
8762
+ import React12, { useContext as useContext4, useEffect as useEffect22, useMemo as useMemo21, useState as useState21 } from "react";
8747
8763
  var RebuyWidgetContainerBase = ({ children, ...props }) => {
8748
- const {
8749
- apiKey: apiKeyFromProps,
8750
- collection,
8751
- collectionId,
8752
- dataSource,
8753
- limit,
8754
- options,
8755
- product,
8756
- productId,
8757
- variant,
8758
- variantId
8759
- } = props;
8760
- const { apiKey: apiKeyFromContext, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
8764
+ const { collection, collectionId, dataSource, limit, options, product, productId, variant, variantId } = props;
8765
+ const { apiKey, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
8761
8766
  const rebuyContext = useContext4(RebuyContext);
8762
8767
  const [rebuyApiClient, setRebuyApiClient] = useState21(null);
8763
8768
  const [initialized, setInitialized] = useState21(false);
@@ -8766,10 +8771,9 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
8766
8771
  const shopifyCollectionId = collection?.id ?? collectionId ?? null;
8767
8772
  const [products, setProducts] = useState21([]);
8768
8773
  const [metadata, setMetadata] = useState21();
8769
- const finalApiKey = apiKeyFromProps || apiKeyFromContext;
8770
- useEffect21(() => {
8771
- if (!rebuyApiClient && finalApiKey && configLoadingStatus === "success") {
8772
- const client = new RebuyClient3(finalApiKey);
8774
+ useEffect22(() => {
8775
+ if (!rebuyApiClient && apiKey && configLoadingStatus === "success") {
8776
+ const client = new RebuyClient3(apiKey);
8773
8777
  const currentEndpoint = dataSource || "/api/v1/products/recommended";
8774
8778
  if (rebuyContext?.contextParameters) {
8775
8779
  const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, currentEndpoint);
@@ -8781,8 +8785,8 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
8781
8785
  setRebuyApiClient(client);
8782
8786
  setInitialized(true);
8783
8787
  }
8784
- }, [finalApiKey, rebuyApiClient, configLoadingStatus, options, rebuyContext, dataSource]);
8785
- useEffect21(() => {
8788
+ }, [apiKey, rebuyApiClient, configLoadingStatus, options, rebuyContext, dataSource]);
8789
+ useEffect22(() => {
8786
8790
  if (rebuyApiClient && rebuyContext?.contextParameters) {
8787
8791
  const currentEndpoint = dataSource || "/api/v1/products/recommended";
8788
8792
  const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, currentEndpoint);
@@ -8809,7 +8813,7 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
8809
8813
  }
8810
8814
  return req;
8811
8815
  }, [dataSource, shopifyProductId, shopifyVariantId, shopifyCollectionId, limit]);
8812
- useEffect21(() => {
8816
+ useEffect22(() => {
8813
8817
  let isMounted = true;
8814
8818
  if (!rebuyApiClient || !initialized || configLoadingStatus !== "success") return;
8815
8819
  const fetchData = async () => {
@@ -8848,7 +8852,7 @@ var RebuyWidgetContainerBase = ({ children, ...props }) => {
8848
8852
  );
8849
8853
  const childProps = {
8850
8854
  ...props,
8851
- apiKey: finalApiKey,
8855
+ apiKey,
8852
8856
  cacheKey: rebuyConfig?.shop?.cache_key,
8853
8857
  key: product?.id,
8854
8858
  metadata,
@@ -8896,7 +8900,7 @@ var RebuyCompleteTheLook = (props) => {
8896
8900
  };
8897
8901
 
8898
8902
  // src/widgets/RebuyDynamicBundleProducts/RebuyDynamicBundleProducts.tsx
8899
- import { useCallback as useCallback14, useEffect as useEffect22, useState as useState22 } from "react";
8903
+ import { useCallback as useCallback15, useEffect as useEffect23, useState as useState22 } from "react";
8900
8904
 
8901
8905
  // src/utils/convertToRebuyProduct.tsx
8902
8906
  var convertToRebuyProduct = (isHydrogenReact, product) => {
@@ -9290,7 +9294,7 @@ var RebuyDynamicBundleProducts = (props) => {
9290
9294
  products = []
9291
9295
  } = props;
9292
9296
  const [bundleProducts, setBundleProducts] = useState22([]);
9293
- useEffect22(() => {
9297
+ useEffect23(() => {
9294
9298
  const mainProduct = convertToRebuyProduct(isHydrogenReact || false, product);
9295
9299
  const formattedProducts = products.map((product2) => {
9296
9300
  return {
@@ -9301,14 +9305,14 @@ var RebuyDynamicBundleProducts = (props) => {
9301
9305
  });
9302
9306
  setBundleProducts([mainProduct, ...formattedProducts]);
9303
9307
  }, [product, products, isHydrogenReact]);
9304
- const onToggleBundleItem = useCallback14(
9308
+ const onToggleBundleItem = useCallback15(
9305
9309
  (product2) => {
9306
9310
  product2.selected = !product2.selected;
9307
9311
  setBundleProducts([...bundleProducts]);
9308
9312
  },
9309
9313
  [bundleProducts]
9310
9314
  );
9311
- const onSelectVariant = useCallback14(
9315
+ const onSelectVariant = useCallback15(
9312
9316
  (product2, variant_id) => {
9313
9317
  const variant = product2.variants.nodes.find(({ id }) => id === variant_id);
9314
9318
  if (variant) {
@@ -9354,7 +9358,7 @@ var RebuyDynamicBundleProducts = (props) => {
9354
9358
 
9355
9359
  // src/widgets/RebuyProductAddOns/RebuyProductAddOns.tsx
9356
9360
  import { Money as Money5 } from "@shopify/hydrogen-react";
9357
- import { useCallback as useCallback15, useEffect as useEffect23, useState as useState23 } from "react";
9361
+ import { useCallback as useCallback16, useEffect as useEffect24, useState as useState23 } from "react";
9358
9362
 
9359
9363
  // src/widgets/RebuyProductAddOns/RebuyProductAddOnCard.tsx
9360
9364
  import { Image as Image3 } from "@shopify/hydrogen";
@@ -9427,7 +9431,7 @@ var RebuyProductAddOns = (props) => {
9427
9431
  const [addedItems, setAddedItems] = useState23(products);
9428
9432
  const [subtotalWithProduct, setSubtotalWithProduct] = useState23();
9429
9433
  const [subtotalWithOutProduct, setSubtotalWithOutProduct] = useState23();
9430
- useEffect23(() => {
9434
+ useEffect24(() => {
9431
9435
  let initialTotal = 0;
9432
9436
  let currencyCode = "USD";
9433
9437
  products.map((product2) => {
@@ -9457,7 +9461,7 @@ var RebuyProductAddOns = (props) => {
9457
9461
  setAddedItems(products);
9458
9462
  }
9459
9463
  }, [products, product, isHydrogenReact, includeMainProduct]);
9460
- const handleChange = useCallback15(
9464
+ const handleChange = useCallback16(
9461
9465
  (event, product2) => {
9462
9466
  const newProducts = [...products];
9463
9467
  const productIndex = newProducts.findIndex((p) => p.id === product2.id);
@@ -9476,7 +9480,7 @@ var RebuyProductAddOns = (props) => {
9476
9480
  },
9477
9481
  [products]
9478
9482
  );
9479
- useEffect23(() => {
9483
+ useEffect24(() => {
9480
9484
  let total = 0;
9481
9485
  let currencyCode = "USD";
9482
9486
  addedItems.forEach((item) => {
@@ -9549,7 +9553,7 @@ var RebuyProductAddOns = (props) => {
9549
9553
  };
9550
9554
 
9551
9555
  // src/widgets/RebuyProductRecommendations/RebuyProductRecommendations.module.css
9552
- var result26 = { "container": "RebuyProductRecommendations_container", "productGrid": "RebuyProductRecommendations_productGrid", "productItem": "RebuyProductRecommendations_productItem" };
9556
+ var result26 = { "container": "RebuyProductRecommendations_container", "productGrid": "RebuyProductRecommendations_productGrid" };
9553
9557
  var RebuyProductRecommendations_default = result26;
9554
9558
 
9555
9559
  // src/widgets/RebuyProductRecommendations/RebuyProductRecommendations.tsx
@@ -9569,7 +9573,7 @@ var RebuyProductRecommendations = (props) => {
9569
9573
  }
9570
9574
  return /* @__PURE__ */ jsxs32("section", { className: RebuyProductRecommendations_default.container, children: [
9571
9575
  /* @__PURE__ */ jsx50(Title, { level: getTitleLevel(customTitleLevel), style: customTitleStyle, text: customTitle }),
9572
- /* @__PURE__ */ jsx50("ul", { className: RebuyProductRecommendations_default.productGrid, children: products.map((product) => /* @__PURE__ */ jsx50("li", { className: RebuyProductRecommendations_default.productItem, children: /* @__PURE__ */ jsx50(
9576
+ /* @__PURE__ */ jsx50("ul", { className: RebuyProductRecommendations_default.productGrid, children: products.map((product) => /* @__PURE__ */ jsx50("li", { children: /* @__PURE__ */ jsx50(
9573
9577
  ProductCard,
9574
9578
  {
9575
9579
  addToCartBtnText,
@@ -9582,6 +9586,190 @@ var RebuyProductRecommendations = (props) => {
9582
9586
  ] });
9583
9587
  };
9584
9588
 
9589
+ // src/widgets/RebuyProductViewed/RebuyProductViewed.tsx
9590
+ import { RebuyClient as RebuyClient4 } from "@rebuy/rebuy";
9591
+ import * as Utilities6 from "@rebuy/rebuy/utilities";
9592
+ import { useEffect as useEffect25, useMemo as useMemo22, useState as useState24 } from "react";
9593
+
9594
+ // src/zustandStores/productViewed.ts
9595
+ import { create as create2 } from "zustand";
9596
+ var useProductViewedStore = create2((set) => ({
9597
+ customerId: null,
9598
+ setCustomerId: (customerId) => set({ customerId }),
9599
+ setUuid: (uuid) => set({ uuid }),
9600
+ uuid: null
9601
+ }));
9602
+
9603
+ // src/widgets/RebuyProductViewed/RebuyProductViewed.tsx
9604
+ var RebuyProductViewed = ({ ...props }) => {
9605
+ const { apiKey: apiKeyFromContext } = useRebuyConfig();
9606
+ const { customerId, product, productHandle, productId } = props;
9607
+ const [event, setEvent] = useState24(null);
9608
+ const [Rebuy, setRebuy] = useState24(null);
9609
+ const shopifyProductId = product?.id ?? productId ?? null;
9610
+ const [initialized, setInitialized] = useState24(false);
9611
+ const { setCustomerId, setUuid } = useProductViewedStore();
9612
+ const request = useMemo22(() => {
9613
+ const request2 = {
9614
+ parameters: {}
9615
+ };
9616
+ if (shopifyProductId) {
9617
+ const productNumericId = Utilities6.getIdFromGraphUrl(shopifyProductId, "Product");
9618
+ if (productNumericId !== null) {
9619
+ request2.parameters.shopify_product_id = productNumericId.toString();
9620
+ }
9621
+ } else if (productHandle) {
9622
+ request2.parameters.shopify_product_handle = productHandle;
9623
+ }
9624
+ return request2;
9625
+ }, [productHandle, shopifyProductId]);
9626
+ useEffect25(() => {
9627
+ const recordView = async () => {
9628
+ if (!Rebuy) {
9629
+ return;
9630
+ }
9631
+ try {
9632
+ const response = await Rebuy.trackProductViewed(request.parameters);
9633
+ setEvent(response.data);
9634
+ if (response.data === "Received" && request.parameters.uuid) {
9635
+ setUuid(request.parameters.uuid);
9636
+ if (customerId && customerId !== "") {
9637
+ setCustomerId(customerId);
9638
+ }
9639
+ }
9640
+ } catch (error) {
9641
+ console.error("Error tracking product view:", error);
9642
+ }
9643
+ };
9644
+ if (!initialized && apiKeyFromContext) {
9645
+ const client = new RebuyClient4(apiKeyFromContext);
9646
+ setRebuy(client);
9647
+ setInitialized(true);
9648
+ return;
9649
+ }
9650
+ recordView();
9651
+ }, [request.parameters, initialized, apiKeyFromContext, Rebuy]);
9652
+ if (Object.keys(request.parameters).length === 0) {
9653
+ console.warn("No parameters!");
9654
+ return;
9655
+ }
9656
+ return null;
9657
+ };
9658
+
9659
+ // src/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.tsx
9660
+ import { RebuyClient as RebuyClient5 } from "@rebuy/rebuy";
9661
+ import { flattenConnection as flattenConnection5 } from "@shopify/hydrogen";
9662
+ import { useContext as useContext5, useEffect as useEffect26, useMemo as useMemo23, useState as useState25 } from "react";
9663
+
9664
+ // src/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.module.css
9665
+ var result27 = { "rebuy-recently-viewed-products-container": "RebuyRecentlyViewedProducts_rebuy-recently-viewed-products-container", "product-grid": "RebuyRecentlyViewedProducts_product-grid" };
9666
+ var RebuyRecentlyViewedProducts_default = result27;
9667
+
9668
+ // src/widgets/RebuyRecentlyViewedProducts/RebuyRecentlyViewedProducts.tsx
9669
+ import { jsx as jsx51, jsxs as jsxs33 } from "react/jsx-runtime";
9670
+ var RebuyRecentlyViewedProducts = (props) => {
9671
+ const {
9672
+ addToCartBtnText = "Add to cart",
9673
+ addToCartCallback,
9674
+ customTitle = `Your recently viewed products`,
9675
+ customTitleLevel = "h2",
9676
+ customTitleStyle,
9677
+ limit,
9678
+ options,
9679
+ productId
9680
+ } = props;
9681
+ const { customerId, uuid } = useProductViewedStore();
9682
+ const { apiKey, loadingStatus: configLoadingStatus, rebuyConfig } = useRebuyConfig();
9683
+ const rebuyContext = useContext5(RebuyContext);
9684
+ const [rebuyApiClient, setRebuyApiClient] = useState25(null);
9685
+ const [initialized, setInitialized] = useState25(false);
9686
+ const [products, setProducts] = useState25([]);
9687
+ const [metadata, setMetadata] = useState25();
9688
+ const rebuyConfigKey = rebuyConfig?.shop?.cache_key;
9689
+ const endpoint = customerId && customerId !== "" ? `/api/v1/products/viewed?key=${rebuyConfigKey}&customer_id=${customerId}` : `/api/v1/products/viewed?key=${rebuyConfigKey}&uuid=${uuid}`;
9690
+ useEffect26(() => {
9691
+ if (!rebuyApiClient && apiKey && configLoadingStatus === "success") {
9692
+ const client = new RebuyClient5(apiKey);
9693
+ if (rebuyContext?.contextParameters) {
9694
+ const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, endpoint);
9695
+ client.setContextParameters(filteredParams);
9696
+ }
9697
+ if (options) {
9698
+ client.setDefaultParameters(options);
9699
+ }
9700
+ setRebuyApiClient(client);
9701
+ setInitialized(true);
9702
+ }
9703
+ }, [apiKey, rebuyApiClient, configLoadingStatus, options, rebuyContext, uuid, endpoint]);
9704
+ useEffect26(() => {
9705
+ if (rebuyApiClient && rebuyContext?.contextParameters) {
9706
+ const filteredParams = filterContextForWidgetEndpoints(rebuyContext.contextParameters, endpoint);
9707
+ rebuyApiClient.setContextParameters(filteredParams);
9708
+ }
9709
+ }, [rebuyApiClient, rebuyContext, uuid, endpoint]);
9710
+ const request = useMemo23(() => {
9711
+ const req = {
9712
+ endpoint,
9713
+ params: {}
9714
+ // Keeping this object generic to allow for custom endpoints
9715
+ };
9716
+ if (limit) {
9717
+ req.params.limit = limit;
9718
+ }
9719
+ return req;
9720
+ }, [limit, uuid, endpoint]);
9721
+ useEffect26(() => {
9722
+ let isMounted = true;
9723
+ if (!rebuyApiClient || !initialized || configLoadingStatus !== "success") return;
9724
+ const fetchData = async () => {
9725
+ try {
9726
+ const { data, metadata: metadata2 } = await rebuyApiClient.getStorefrontData(
9727
+ request.endpoint,
9728
+ request.params
9729
+ );
9730
+ if (isMounted) {
9731
+ setProducts(
9732
+ Array.isArray(data) ? data.filter((p) => p.id !== productId).map((p) => ({
9733
+ ...p,
9734
+ variants: {
9735
+ nodes: p.variants ? flattenConnection5(p.variants) : []
9736
+ }
9737
+ })) : []
9738
+ );
9739
+ setMetadata(metadata2);
9740
+ }
9741
+ } catch (error) {
9742
+ console.error("[RebuyWidgetContainer] Error fetching widget data:", error);
9743
+ if (isMounted) {
9744
+ setProducts([]);
9745
+ setMetadata(void 0);
9746
+ }
9747
+ }
9748
+ };
9749
+ fetchData();
9750
+ return () => {
9751
+ isMounted = false;
9752
+ };
9753
+ }, [rebuyApiClient, initialized, request, configLoadingStatus, productId]);
9754
+ if (products.length === 0) {
9755
+ rebuyDebugLog.log("widget-recently-viewed-products" /* WIDGET_RECENTLY_VIEWED_PRODUCTS */, "RebuyRecentlyViewedProducts: No products found");
9756
+ return null;
9757
+ }
9758
+ return /* @__PURE__ */ jsxs33("div", { className: RebuyRecentlyViewedProducts_default["rebuy-recently-viewed-products-container"], children: [
9759
+ /* @__PURE__ */ jsx51(Title, { level: getTitleLevel(customTitleLevel), style: customTitleStyle, text: customTitle }),
9760
+ /* @__PURE__ */ jsx51("ul", { className: RebuyRecentlyViewedProducts_default["product-grid"], children: products?.map((product) => /* @__PURE__ */ jsx51("li", { children: /* @__PURE__ */ jsx51(
9761
+ ProductCard,
9762
+ {
9763
+ addToCartBtnText,
9764
+ addToCartCallback,
9765
+ product,
9766
+ productCardTitleLevel: getTitleLevel("h2")
9767
+ },
9768
+ product.id
9769
+ ) }, product.id)) })
9770
+ ] });
9771
+ };
9772
+
9585
9773
  // src/constants/api.ts
9586
9774
  var REBUY_THEME_STYLES_BASE_URL = "https://rebuyengine.com/api/v1/theme-styles";
9587
9775
 
@@ -9603,6 +9791,8 @@ export {
9603
9791
  RebuyHydrogenReactContextProvider,
9604
9792
  RebuyProductAddOns,
9605
9793
  RebuyProductRecommendations,
9794
+ RebuyProductViewed,
9795
+ RebuyRecentlyViewedProducts,
9606
9796
  RebuySmartCart,
9607
9797
  RebuyWidget,
9608
9798
  RebuyWidgetContainer,