"use client"; import { useEffect, useState } from "react"; import type { TypeCartRetentionBannerFields } from "./types"; import { Text } from "@shared/components/text"; import { Button } from "@shared/contentful/blocks/button"; import { Modal } from "@shared/contentful/blocks/modal"; import { renderContentfulRichText } from "@shared/hooks/contentful/use-contentful-rich-text"; import { toDocument } from "@shared/utils/contentful/to-document"; const CartRetentionBanner: React.FC<{ fields: TypeCartRetentionBannerFields; sys?: any; isInPopupContainer?: boolean; onClose?: () => void; onContinueCheckout?: () => void; checkShouldShowBanner?: () => boolean; onBannerShown?: () => void; }> = ({ fields, isInPopupContainer = false, onClose, onContinueCheckout, checkShouldShowBanner, onBannerShown, }) => { const { anchorId, mainHeading, description, cta } = fields; const [modalOpen, setModalOpen] = useState(false); useEffect(() => { const checkRetentionCookie = () => { if (checkShouldShowBanner?.() && !modalOpen) { setModalOpen(true); onBannerShown?.(); } }; checkRetentionCookie(); const timeoutId = setTimeout(checkRetentionCookie, 100); return () => clearTimeout(timeoutId); }, []); const handleClose = () => { onClose?.(); setModalOpen(false); }; const continueCheckout = () => { onContinueCheckout?.(); }; if (isInPopupContainer) { return (
{mainHeading || "Welcome back. Let’s finish your order"} {description && renderContentfulRichText( toDocument(description?.json), false, "body1 my-4 text-center" )}
); } return (
{mainHeading || "Welcome back. Let's finish your order"} {description && renderContentfulRichText( toDocument(description?.json), false, "body1 my-4 text-center" )}
); }; export default CartRetentionBanner;