{"version":3,"sources":["FC_CartProductCard.tsx"],"sourcesContent":["/*\n * Framer Commerce\n * Confidential and Proprietary - All Rights Reserved\n * Unauthorized use, reproduction, distribution, or disclosure of this\n * source code or any related information is strictly prohibited.\n *\n * This software is the exclusive property of Framer Commerce (\"Company\").\n * It is considered highly confidential and proprietary information.\n *\n * Any use, copying, modification, distribution, or sharing of this software,\n * in whole or in part, without the express written permission of the Company\n * is strictly prohibited and may result in legal action.\n *\n * DISCLAIMER: This software does not provide any express or\n * implied warranties, including, but not limited to, the implied warranties\n * of merchantability and fitness for a particular purpose. In no event shall\n * Framer Commerce be liable for any direct, indirect, incidental, special,\n * exemplary, or consequential damages (including, but not limited to, procurement\n * of substitute goods or services; loss of use, data, or profits; or business\n * interruption) however caused and on any theory of liability, whether in\n * contract, strict liability, or tort (including negligence or otherwise)\n * arising in any way out of the use of this software, even if advised of\n * the possibility of such damage.\n *\n * Any unauthorized possession, use, copying, distribution, or dissemination\n * of this software will be considered a breach of confidentiality and may\n * result in legal action.\n *\n * For inquiries, contact:\n * Framer Commerce\n * Email: hello@framercommerce.com\n *\n * © 2025 Butter Supply Inc. All Rights Reserved.\n */\n\nimport React, { useCallback, useRef, useEffect, useState } from \"react\"\nimport { addPropertyControls, ControlType, RenderTarget } from \"framer\"\nimport { get, throttle } from \"lodash-es\"\nimport {\n    removeLineMutation,\n    updatelineMutation,\n    updatelineMutationNoPlans,\n    removeLineMutationNoPlans,\n    getProductMetafields,\n} from \"../utils/mutations_v2.ts\"\nimport {\n    formatPrice,\n    formatPriceNoCurrencyCode,\n} from \"../utils/formatPrice_v2.ts\"\nimport ShopXCartProductCard from \"https://framer.com/m/shopX-cartProductCard-skSI.js\"\nimport { currencyMaps } from \"../utils/currencyMaps.ts\"\nimport { knownCurrenciesWithCodeAsSymbol } from \"../utils/currencyMaps.ts\"\nimport { useIsBrowser } from \"../utils/IsBrowser.tsx\"\nimport { getLocaleFromCountry } from \"../utils/locales.ts\"\n\n// Helper function to check if a currency's symbol is the same as its code\nconst isCurrencySymbolSameAsCode = (currencyCode) => {\n    // For some currencies like CHF, the browser might use the code as the symbol\n    if (!currencyCode) return false\n\n    if (knownCurrenciesWithCodeAsSymbol.includes(currencyCode)) {\n        return true\n    }\n\n    try {\n        const formatted = new Intl.NumberFormat(undefined, {\n            style: \"currency\",\n            currency: currencyCode,\n            currencyDisplay: \"narrowSymbol\",\n        }).format(0)\n\n        // Remove digits, decimal points, and common formatting characters\n        const cleanFormatted = formatted.replace(/[0-9.,\\s]/g, \"\")\n\n        // Check if what remains is the currency code\n        return cleanFormatted === currencyCode\n    } catch (e) {\n        return false\n    }\n}\n\n// Define types for window properties\ninterface Window {\n    __FcCurrencyConfigs?: {\n        currencyPosition?: string\n        symbol?: string\n    }\n    shopXtools?: {\n        fetchCart?: (cartId: string) => Promise<any>\n        handleCartMutation?: (mutation: any, variables: any) => Promise<any>\n        markets?: Array<{ current: boolean; currency: { symbol: string } }>\n    }\n}\n\n/**\n * @framerDisableUnlink\n */\n\nexport default function FC_CartProductCard(props) {\n    const [cart, setCart] = useState({})\n    const [cartItems, setCartItems] = useState([])\n    const [errorMessage, setErrorMessage] = useState()\n    const isFetching = useRef(false)\n    const [selectedCurrency, setSelectedCurrency] = useState(\"\")\n    const [selectedCountryCode, setSelectedCountryCode] = useState(\"\")\n    const [selectedCountry, setSelectedCountry] = useState(\"\")\n    // const [subscriptionPrice, setSubscriptionPrice] = useState(null)\n    // const [subscriptionPlan, setSubscriptionPlan] = useState(null)\n    const isBrowser = useIsBrowser()\n\n    // Initialize currency from localStorage on page load\n    useEffect(() => {\n        if (!isBrowser) return\n\n        const storedCurrency = localStorage.getItem(\"selectedCurrency\")\n        const storedCountryCode = localStorage.getItem(\"selectedCountryCode\")\n        const storedCountry = localStorage.getItem(\"selectedCountry\")\n        setSelectedCurrency(storedCurrency || \"USD\")\n        setSelectedCountryCode(storedCountryCode || \"US\")\n        setSelectedCountry(storedCountry || \"United States\")\n        //console.log(\"[FC_CartProductCard] setting selectedCountryCode and currency\", storedCountryCode, storedCurrency)\n    }, [isBrowser])\n\n    // Listen for currency changes\n    useEffect(() => {\n        if (!isBrowser) return\n\n        const handleCurrencyChange = (event) => {\n            const { currency, countryCode, country } = event.detail\n            setSelectedCurrency(currency)\n            setSelectedCountryCode(countryCode)\n            setSelectedCountry(country)\n            //console.log(\"[FC_CartProductCard] currency changed to\", selectedCountryCode, selectedCurrency)\n        }\n\n        window.addEventListener(\"currency_changed\", handleCurrencyChange)\n        return () => {\n            window.removeEventListener(\"currency_changed\", handleCurrencyChange)\n        }\n    }, [isBrowser, selectedCurrency, selectedCountryCode])\n\n    // Add currency config state\n    const [currencyConfig, setCurrencyConfig] = useState(() => {\n        // Initialize with window values if available\n        if (typeof window !== \"undefined\") {\n            const position =\n                window?.__FcCurrencyConfigs?.currencyPosition || \"Before\"\n            const initialConfig = {\n                position: position,\n                showCode: position !== \"Hide\",\n                symbol: window?.__FcCurrencyConfigs?.currencySymbol || \"$\",\n            }\n            // console.log(\n            //     \"Initial currency config state:\",\n            //     initialConfig,\n            //     window?.__FcCurrencyConfigs\n            // )\n            return initialConfig\n        }\n        return {\n            position: \"Before\",\n            showCode: false,\n            symbol: \"$\",\n        }\n    })\n\n    // Add currency settings listener\n    useEffect(() => {\n        if (typeof window === \"undefined\") return\n\n        function updateCurrencyConfig(position, symbol) {\n            //(\"Updating currency config with:\", { position, symbol })\n            const newConfig = {\n                position: position || \"Before\",\n                showCode: position !== \"Hide\",\n                symbol: symbol || \"$\",\n            }\n            //console.log(\"New currency config:\", newConfig)\n            setCurrencyConfig(newConfig)\n        }\n\n        // Handle currency settings updates\n        const handleCurrencySettingsUpdate = (e) => {\n            //console.log(\"Currency update event received:\", e.detail)\n            if (!e.detail?.current) {\n                //console.log(\"Invalid currency update event:\", e)\n                return\n            }\n            updateCurrencyConfig(\n                e.detail.current.currencyPosition,\n                e.detail.current.currencySymbol\n            )\n        }\n\n        // Initial setup\n        const currentPosition = window.__FcCurrencyConfigs?.currencyPosition\n        const currentSymbol = window.__FcCurrencyConfigs?.currencySymbol\n        // console.log(\"Initial currency values:\", {\n        //     currentPosition,\n        //     currentSymbol,\n        // })\n        updateCurrencyConfig(currentPosition, currentSymbol)\n\n        // Add event listener\n        document.addEventListener(\n            \"currency__settings-updated\",\n            handleCurrencySettingsUpdate\n        )\n\n        return () => {\n            document.removeEventListener(\n                \"currency__settings-updated\",\n                handleCurrencySettingsUpdate\n            )\n        }\n    }, [])\n\n    const _showCurrencyCode = props.priceConfigs?.showCurrencyCode\n    const _showCurrencySymbol = props.priceConfigs?.showSymbol\n\n    // // Add subscription price listener\n    // useEffect(() => {\n    //     if (!isBrowser) return\n\n    //     const handleSubscriptionPriceUpdate = (e) => {\n    //         if (e.detail?.price) {\n    //             setSubscriptionPrice(e.detail.price)\n    //             setSubscriptionPlan(e.detail.plan.id)\n    //         } else {\n    //             setSubscriptionPrice(null)\n    //             setSubscriptionPlan(null)\n    //         }\n    //     }\n\n    //     document.addEventListener(\n    //         \"subscription__price-update\",\n    //         handleSubscriptionPriceUpdate\n    //     )\n\n    //     return () => {\n    //         document.removeEventListener(\n    //             \"subscription__price-update\",\n    //             handleSubscriptionPriceUpdate\n    //         )\n    //     }\n    // }, [isBrowser])\n\n    const [locale, setLocale] = useState(undefined)\n\n    useEffect(() => {\n        //console.log(\"[FC_CartProductCard] selectedCountryCode\", selectedCountryCode)\n        const updatedLocale = getLocaleFromCountry(selectedCountryCode)\n        //console.log(\"[FC_CartProductCard] Locale updated:\", updatedLocale);\n        setLocale(updatedLocale)\n    }, [selectedCountryCode])\n\n    const formatCartPrice = useCallback(\n        (amount, currencyCode) => {\n            // Clean and format amount\n            if (typeof amount === \"string\") {\n                amount = amount.replace(/[^0-9.]/g, \"\")\n                const parts = amount.split(\".\")\n                if (parts.length > 2) {\n                    amount = parts[0] + \".\" + parts.slice(1).join(\"\")\n                }\n            }\n\n            if (typeof amount !== \"number\") {\n                amount = parseFloat(amount)\n            }\n            if (isNaN(amount)) {\n                amount = 0\n            }\n\n            // For canvas view, use canvasPrice with USD\n            if (RenderTarget.current() === RenderTarget.canvas) {\n                const format = props.priceConfigs?.format || {}\n                return formatPriceWithOptions(\n                    amount,\n                    format.currencyCode || \"USD\"\n                )\n            }\n\n            // For browser view, use the current currency\n            const format = props.priceConfigs?.format || {}\n            return formatPriceWithOptions(amount, currencyCode || \"USD\")\n        },\n        [props.priceConfigs, locale]\n    )\n\n    // Common function to format price based on options\n    const formatPriceWithOptions = useCallback(\n        (numericPrice, currCode) => {\n            if (!currCode) currCode = \"USD\"\n            //console.log(\"[FC_CartProductCard] currCode\", currCode)\n            const format = props.priceConfigs?.format || {}\n            // For backward compatibility\n            const showSymbol =\n                format.showSymbol !== undefined\n                    ? format.showSymbol\n                    : props.priceConfigs?.showSymbol !== undefined\n                      ? props.priceConfigs.showSymbol\n                      : true\n            const showCurrency =\n                format.showCurrency !== undefined\n                    ? format.showCurrency\n                    : props.priceConfigs?.showCurrencyCode !== undefined\n                      ? props.priceConfigs.showCurrencyCode\n                      : false\n            const showDecimals = format.showDecimals || \"Always show\"\n\n            const symbolSameAsCode = isCurrencySymbolSameAsCode(currCode)\n\n            //console.log(\"[FC_CartProductCard] receving locale from getLocaleFromCountry\", locale)\n\n            // console.log(\"[FC_CartProductCard] Format debug:\", {\n            //     userAgent: navigator.userAgent,\n            //     isCurrencySymbolSameAsCode: symbolSameAsCode,\n            //     currencyCode: currCode,\n            //     selectedCountryCode,\n            //     locale,\n            // })\n\n            // Determine if we should show decimals based on the setting\n            const shouldShowDecimals = () => {\n                if (showDecimals === \"Always show\") return true\n                if (showDecimals === \"Never show\") return false\n                if (showDecimals === \"Hide when .00\") {\n                    // Check if the decimal part is zero\n                    return numericPrice % 1 !== 0\n                }\n                return true // Default fallback\n            }\n\n            const decimalDigits = shouldShowDecimals() ? 2 : 0\n\n            // If showing neither symbol nor code, just format the number\n            if (!showSymbol && !showCurrency) {\n                const formattedNumber = new Intl.NumberFormat(locale, {\n                    style: \"decimal\",\n                    minimumFractionDigits: decimalDigits,\n                    maximumFractionDigits: decimalDigits,\n                }).format(numericPrice)\n                return formattedNumber\n            }\n\n            // Special case for USD to prevent \"US$\" display in Safari iOS\n            if (currCode === \"USD\" && showSymbol) {\n                // Check if running on iOS device\n                const isIOS =\n                    isBrowser &&\n                    /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n                    !window.MSStream\n\n                // Format USD manually to avoid the iOS \"US$\" prefix\n                if (isIOS) {\n                    const number = new Intl.NumberFormat(locale, {\n                        style: \"decimal\",\n                        minimumFractionDigits: decimalDigits,\n                        maximumFractionDigits: decimalDigits,\n                    }).format(numericPrice)\n\n                    if (!showCurrency) {\n                        return `$${number}` // Just \"$50\" format\n                    } else {\n                        return `$${number} USD` // \"$50 USD\" format\n                    }\n                } else {\n                    // For non-iOS devices, continue with normal formatting but use\n                    // a more controlled approach to ensure consistency\n                    if (!showCurrency) {\n                        return new Intl.NumberFormat(locale, {\n                            style: \"currency\",\n                            currency: \"USD\",\n                            minimumFractionDigits: decimalDigits,\n                            maximumFractionDigits: decimalDigits,\n                            currencyDisplay: \"narrowSymbol\",\n                        }).format(numericPrice)\n                    } else {\n                        const withSymbol = new Intl.NumberFormat(locale, {\n                            style: \"currency\",\n                            currency: \"USD\",\n                            minimumFractionDigits: decimalDigits,\n                            maximumFractionDigits: decimalDigits,\n                            currencyDisplay: \"narrowSymbol\",\n                        }).format(numericPrice)\n                        return `${withSymbol} USD`\n                    }\n                }\n            }\n            // For currencies where symbol is same as code (like CHF)\n            if (symbolSameAsCode) {\n                // If showing currency code, always use code-first format and ignore symbol\n                if (showCurrency && !showSymbol) {\n                    const number = new Intl.NumberFormat(locale, {\n                        style: \"decimal\",\n                        minimumFractionDigits: decimalDigits,\n                        maximumFractionDigits: decimalDigits,\n                    }).format(numericPrice)\n                    const output = `${currCode} ${number}`\n                    return output\n                }\n                if (showSymbol && !showCurrency) {\n                    const number = new Intl.NumberFormat(locale, {\n                        style: \"decimal\",\n                        minimumFractionDigits: decimalDigits,\n                        maximumFractionDigits: decimalDigits,\n                    }).format(numericPrice)\n                    const output = `${currCode} ${number}`\n                    return output\n                }\n                if (showCurrency && showSymbol) {\n                    const number = new Intl.NumberFormat(locale, {\n                        style: \"decimal\",\n                        minimumFractionDigits: decimalDigits,\n                        maximumFractionDigits: decimalDigits,\n                    }).format(numericPrice)\n                    return `${currCode} ${number}`\n                }\n            }\n\n            // For currencies with distinct symbols (like USD with $)\n\n            // If showing only the code (no symbol)\n            if (!showSymbol && showCurrency) {\n                const number = new Intl.NumberFormat(locale, {\n                    style: \"decimal\",\n                    minimumFractionDigits: decimalDigits,\n                    maximumFractionDigits: decimalDigits,\n                }).format(numericPrice)\n                // For normal currencies, show code after the number\n                return `${number} ${currCode}`\n            }\n\n            // If showing only the symbol (no code)\n            if (showSymbol && !showCurrency) {\n                return new Intl.NumberFormat(locale, {\n                    style: \"currency\",\n                    currency: currCode,\n                    minimumFractionDigits: decimalDigits,\n                    maximumFractionDigits: decimalDigits,\n                    currencyDisplay: \"narrowSymbol\",\n                }).format(numericPrice)\n            }\n\n            // If showing both symbol and code\n            const withSymbol = new Intl.NumberFormat(locale, {\n                style: \"currency\",\n                currency: currCode,\n                minimumFractionDigits: decimalDigits,\n                maximumFractionDigits: decimalDigits,\n                currencyDisplay: \"narrowSymbol\",\n            }).format(numericPrice)\n            return `${withSymbol} ${currCode}`\n        },\n        [props.priceConfigs, locale]\n    )\n\n    const fetchCartFromShopify = useCallback(async (cartId) => {\n        if (isFetching.current) {\n            return\n        }\n        isFetching.current = true\n        try {\n            // Wait until window.shopXtools.fetchCart is available\n            await waitForCondition(\n                () => window.shopXtools && window.shopXtools.fetchCart\n            )\n\n            const cartData = await window.shopXtools.fetchCart(cartId)\n            //console.log(\"[FETCH] Cart data received from Shopify:\", cartData);\n            if (cartData) {\n                setCart(cartData)\n                //console.log(\"[FETCH] Cart Data after setting state: :\", cartData)\n                setCartItems(cartData.lines?.edges || [])\n                //console.log(\"[FETCH] Cart items after setting state:\", cartData.lines?.edges);\n                // Update the global cart data\n                window.shopXtools.cart = cartData\n                // Dispatch cart update event\n                window.dispatchEvent(new Event(\"shopXtools-cart-update\"))\n            } else {\n                setCart({})\n                setCartItems([])\n            }\n        } catch (error) {\n            setCart({})\n            setCartItems([])\n        } finally {\n            isFetching.current = false\n        }\n    }, [])\n\n    // useEffect(() => {\n    //     console.log(\"[STATE] Updated cart:\", cart);\n    // }, [cart]);\n\n    // useEffect(() => {\n    //     console.log(\"[STATE] Updated cartItems:\", cartItems);\n    // }, [cartItems]);\n\n    // Helper function to wait until a condition is true\n    const waitForCondition = useCallback(\n        (conditionFn, checkInterval = 100, timeout = 10000) => {\n            return new Promise((resolve, reject) => {\n                const startTime = Date.now()\n                const checkCondition = () => {\n                    if (conditionFn()) {\n                        resolve()\n                    } else if (Date.now() - startTime >= timeout) {\n                        reject(new Error(\"Condition not met within timeout\"))\n                    } else {\n                        setTimeout(checkCondition, checkInterval)\n                    }\n                }\n                checkCondition()\n            })\n        },\n        []\n    )\n\n    const handleCartUpdate = useCallback(\n        throttle(async () => {\n            let cartId = window[\"shopXtools\"]?.cart?.id\n            // console.log(\"[UPDATE] Checking for cartId:\", cartId);\n            // console.log(\"[UPDATE] Checking for cart:\", window[\"shopXtools\"]?.cart);\n            if (!cartId) {\n                try {\n                    cartId = localStorage.getItem(\"shopX_cart_id\")\n                } catch (error) {\n                    console.error(\n                        \"Error loading cart ID from local storage:\",\n                        error\n                    )\n                }\n            }\n\n            if (cartId) {\n                await fetchCartFromShopify(cartId)\n                //console.log(\"[UPDATE] Fetching cart from Shopify with cartId:\", cartId);\n            } else {\n                //console.log(\"[UPDATE] No cartId found, resetting cart state.\");\n                setCart({})\n                setCartItems([])\n            }\n        }, 500),\n        [fetchCartFromShopify]\n    )\n    //console.log(\"Cart Data in CartProductCard:\", cart)\n\n    useEffect(() => {\n        //console.log(\"[EVENT] shopXtools-cart-update event triggered\");\n        // Fetch cart data on component mount\n        handleCartUpdate()\n\n        window.addEventListener(\"shopXtools-cart-update\", handleCartUpdate)\n\n        return () => {\n            window.removeEventListener(\n                \"shopXtools-cart-update\",\n                handleCartUpdate\n            )\n        }\n    }, [handleCartUpdate])\n\n    //console.log(\"Cart Data in CartProductCard:\", cart)\n    const handleRemoveLine = useCallback(\n        async (cartId, lineId) => {\n            if (!cartId || !lineId) {\n                console.error(\"Missing cartId or lineId for remove operation\")\n                return\n            }\n\n            try {\n                const data = await window.shopXtools?.handleCartMutation(\n                    removeLineMutation,\n                    { cartId, lineIds: [lineId] }\n                )\n                //console.log(\"[REMOVE] Mutation response:\", data);\n                if (data?.cartLinesRemove?.cart) {\n                    //console.log(\"[REMOVE] Cart updated, refetching...\");\n                    await fetchCartFromShopify(cartId)\n                    return\n                }\n\n                // Try backup mutation if primary fails\n                const backupData = await window.shopXtools?.handleCartMutation(\n                    removeLineMutationNoPlans,\n                    { cartId, lineIds: [lineId] }\n                )\n\n                if (backupData?.cartLinesRemove?.cart) {\n                    await fetchCartFromShopify(cartId)\n                } else {\n                    console.error(\n                        \"Both primary and backup remove line mutations failed\"\n                    )\n                }\n            } catch (error) {\n                console.error(\"Error removing line item:\", error)\n            }\n        },\n        [fetchCartFromShopify]\n    )\n\n    const handleUpdateLine = useCallback(\n        async (cartId, lineId, quantity, lineItem) => {\n            if (!cartId || !lineId || typeof quantity !== \"number\") {\n                console.error(\n                    \"Missing required parameters for update operation\"\n                )\n                return\n            }\n            //console.log(\"[UPDATE] Updating line:\", { cartId, lineId, quantity, lineItem });\n            try {\n                // Check quantity limits if product has them\n                const productHandle = lineItem?.merchandise?.product?.handle\n                if (productHandle) {\n                    const metafields =\n                        await window.shopXtools?.handleCartMutation(\n                            getProductMetafields,\n                            { handle: productHandle }\n                        )\n\n                    const maxQuantity = parseInt(\n                        metafields?.product?.metafield_order_max?.value,\n                        10\n                    )\n\n                    if (\n                        !isNaN(maxQuantity) &&\n                        maxQuantity > 0 &&\n                        quantity > maxQuantity\n                    ) {\n                        setErrorMessage(\n                            `Maximum quantity allowed is ${maxQuantity}`\n                        )\n                        return\n                    }\n                }\n\n                // Update cart line\n                const data = await window.shopXtools?.handleCartMutation(\n                    updatelineMutation,\n                    { cartId, lines: [{ id: lineId, quantity }] }\n                )\n                //console.log(\"[UPDATE] Mutation response:\", data);\n                if (data?.cartLinesUpdate?.cart) {\n                    await fetchCartFromShopify(cartId)\n                    setErrorMessage(undefined)\n                } else {\n                    console.error(\"Failed to update cart line\")\n                }\n            } catch (error) {\n                console.error(\"Error updating line item:\", error)\n            }\n        },\n        [fetchCartFromShopify]\n    )\n    //console.log(\"Cart Data in CartProductCard:\", cart)\n    const errorVisible = errorMessage !== null\n\n    // Adjust mock data for compare price\n    const mockData = [\n        { price: \"100.00\", comparePrice: null },\n        { price: \"200.00\", comparePrice: \"250.00\" },\n        { price: \"300.00\", comparePrice: null },\n        { price: \"400.00\", comparePrice: null },\n    ]\n    // console.log(\"[RENDER] Cart before rendering:\", cart);\n    // console.log(\"[RENDER] Cart items before rendering:\", cartItems);\n    return (\n        <>\n            {RenderTarget.current() === RenderTarget.canvas ? (\n                <div\n                    style={{\n                        display: \"flex\",\n                        flexDirection: \"column\",\n                        gap: props.spacingConfigs?.gap ?? 24,\n                        width: \"100%\",\n                    }}\n                >\n                    <ShopXCartProductCard\n                        imageVisibility={props.imageConfigs?.visible}\n                        image={\n                            props.imageConfigs?.visible\n                                ? \"https://framerusercontent.com/images/3E7u1YOHRQaZuBdfYRsm3XCzxk.jpg\"\n                                : null\n                        }\n                        imageConfigs={props.imageConfigs}\n                        quantityConfigs={props.quantityConfigs}\n                        removeIconConfigs={props.removeIconConfigs}\n                        containerConfigs={props.containerConfigs}\n                        linkConfigs={props.linkConfigs}\n                        titleConfigs={props.titleConfigs}\n                        _lineItem={{\n                            merchandise: {\n                                product: {\n                                    handle: \"example-product\",\n                                },\n                            },\n                        }}\n                        quantityControlColor={\n                            props.quantityConfigs?.buttons?.icons\n                        }\n                        quantityNumberColor={\n                            props.quantityConfigs?.container?.number\n                        }\n                        quantityContainerBgColor={\n                            props.quantityConfigs?.container?.containerBg\n                        }\n                        quantityControlBgColor={\n                            props.quantityConfigs?.buttons?.iconBg\n                        }\n                        quantityControlHoverColor={\n                            props.quantityConfigs?.buttons?.iconBgHover\n                        }\n                        quantityContainerBorder=\"1px solid #E2E2E2\"\n                        quantityContainerRadius=\"8px\"\n                        xColor={props.removeIconConfigs?.icon}\n                        xBgColor={props.removeIconConfigs?.bg}\n                        xBgHoverColor={props.removeIconConfigs?.bgHover}\n                        style={{\n                            width: \"100%\",\n                            border: props.containerConfigs?.border\n                                ? `${props.containerConfigs.border.borderWidth}px ${props.containerConfigs.border.borderStyle} ${props.containerConfigs.border.borderColor}`\n                                : undefined,\n                            borderRadius:\n                                props.containerConfigs?.radius || \"0px\",\n                            background:\n                                props.containerConfigs?.background || \"#FFF\",\n                            padding: props.containerConfigs?.padding || \"0px\",\n                        }}\n                        shopifyProductTitle={\n                            <p\n                                style={{\n                                    ...get(props, \"titleConfigs.font\"),\n                                    color: get(props, \"titleConfigs.color\"),\n                                    margin: 0,\n                                }}\n                            >\n                                Product Title 1\n                            </p>\n                        }\n                        shopifyProductPriceAmount={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    alignItems: \"flex-end\",\n                                    gap: props.priceConfigs?.gap || 4,\n                                }}\n                            >\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.price.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.price.color\"\n                                        ),\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                >\n                                    {formatCartPrice(mockData[0].price, \"USD\")}\n                                </p>\n                                {mockData[0].comparePrice && (\n                                    <p\n                                        style={{\n                                            margin: 0,\n                                            ...get(\n                                                props,\n                                                \"priceConfigs.comparePrice.font\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"priceConfigs.comparePrice.color\"\n                                            ),\n                                            textDecoration: props.priceConfigs\n                                                ?.comparePrice?.strikethrough\n                                                ? \"line-through\"\n                                                : \"none\",\n                                            textDecorationColor:\n                                                props.priceConfigs?.comparePrice\n                                                    ?.strikethroughColor,\n                                            whiteSpace: \"nowrap\",\n                                            minWidth: 0,\n                                        }}\n                                    >\n                                        {formatCartPrice(\n                                            mockData[0].comparePrice,\n                                            \"USD\"\n                                        )}\n                                    </p>\n                                )}\n                            </div>\n                        }\n                        shopifyQuantity=\"1\"\n                        variants={null}\n                        onRemove={() => {}}\n                        onAddQuantity={() => {}}\n                        onSubtractQuantity={() => {}}\n                    />\n                    {props.spacingConfigs?.dividerVisible && (\n                        <div\n                            style={{\n                                width: \"100%\",\n                                borderTop: `${props.spacingConfigs?.divider?.borderWidth || 1}px ${props.spacingConfigs?.divider?.borderStyle || \"solid\"} ${props.spacingConfigs?.divider?.borderColor || \"rgba(0,0,0,0.08)\"}`,\n                            }}\n                        />\n                    )}\n                    <ShopXCartProductCard\n                        imageVisibility={props.imageConfigs?.visible}\n                        image={\n                            props.imageConfigs?.visible\n                                ? \"https://framerusercontent.com/images/3E7u1YOHRQaZuBdfYRsm3XCzxk.jpg\"\n                                : null\n                        }\n                        imageConfigs={props.imageConfigs}\n                        quantityConfigs={props.quantityConfigs}\n                        removeIconConfigs={props.removeIconConfigs}\n                        containerConfigs={props.containerConfigs}\n                        linkConfigs={props.linkConfigs}\n                        titleConfigs={props.titleConfigs}\n                        _lineItem={{\n                            merchandise: {\n                                product: {\n                                    handle: \"example-product\",\n                                },\n                            },\n                        }}\n                        quantityControlColor={\n                            props.quantityConfigs?.buttons?.icons\n                        }\n                        quantityNumberColor={\n                            props.quantityConfigs?.container?.number\n                        }\n                        quantityContainerBgColor={\n                            props.quantityConfigs?.container?.containerBg\n                        }\n                        quantityControlBgColor={\n                            props.quantityConfigs?.buttons?.iconBg\n                        }\n                        quantityControlHoverColor={\n                            props.quantityConfigs?.buttons?.iconBgHover\n                        }\n                        quantityContainerBorder=\"1px solid #E2E2E2\"\n                        quantityContainerRadius=\"8px\"\n                        xColor={props.removeIconConfigs?.icon}\n                        xBgColor={props.removeIconConfigs?.bg}\n                        xBgHoverColor={props.removeIconConfigs?.bgHover}\n                        style={{\n                            width: \"100%\",\n                            border: props.containerConfigs?.border\n                                ? `${props.containerConfigs.border.borderWidth}px ${props.containerConfigs.border.borderStyle} ${props.containerConfigs.border.borderColor}`\n                                : undefined,\n                            borderRadius:\n                                props.containerConfigs?.radius || \"0px\",\n                            background:\n                                props.containerConfigs?.background || \"#FFF\",\n                            padding: props.containerConfigs?.padding || \"0px\",\n                        }}\n                        shopifyProductTitle={\n                            <p\n                                style={{\n                                    ...get(props, \"titleConfigs.font\"),\n                                    color: get(props, \"titleConfigs.color\"),\n                                    margin: 0,\n                                }}\n                            >\n                                Product Title 2\n                            </p>\n                        }\n                        shopifyProductPriceAmount={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    alignItems: \"flex-end\",\n                                    gap: props.priceConfigs?.gap || 4,\n                                }}\n                            >\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.price.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.price.color\"\n                                        ),\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                >\n                                    {formatCartPrice(mockData[1].price, \"USD\")}\n                                </p>\n                                {mockData[1].comparePrice && (\n                                    <p\n                                        style={{\n                                            margin: 0,\n                                            ...get(\n                                                props,\n                                                \"priceConfigs.comparePrice.font\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"priceConfigs.comparePrice.color\"\n                                            ),\n                                            textDecoration: props.priceConfigs\n                                                ?.comparePrice?.strikethrough\n                                                ? \"line-through\"\n                                                : \"none\",\n                                            textDecorationColor:\n                                                props.priceConfigs?.comparePrice\n                                                    ?.strikethroughColor,\n                                            whiteSpace: \"nowrap\",\n                                            minWidth: 0,\n                                        }}\n                                    >\n                                        {formatCartPrice(\n                                            mockData[1].comparePrice,\n                                            \"USD\"\n                                        )}\n                                    </p>\n                                )}\n                            </div>\n                        }\n                        shopifyQuantity=\"2\"\n                        variants={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    gap: props.variantConfigs?.gap || \"4px\",\n                                }}\n                            >\n                                <p style={{ margin: 0 }}>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.titleFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.titleColor\"\n                                            ),\n                                            marginRight: \"5px\",\n                                        }}\n                                    >\n                                        Color:\n                                    </span>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.valueFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.valueColor\"\n                                            ),\n                                        }}\n                                    >\n                                        Blue\n                                    </span>\n                                </p>\n                            </div>\n                        }\n                        onRemove={() => {}}\n                        onAddQuantity={() => {}}\n                        onSubtractQuantity={() => {}}\n                    />\n                    {props.spacingConfigs?.dividerVisible && (\n                        <div\n                            style={{\n                                width: \"100%\",\n                                borderTop: `${props.spacingConfigs?.divider?.borderWidth || 1}px ${props.spacingConfigs?.divider?.borderStyle || \"solid\"} ${props.spacingConfigs?.divider?.borderColor || \"rgba(0,0,0,0.08)\"}`,\n                            }}\n                        />\n                    )}\n                    <ShopXCartProductCard\n                        imageVisibility={props.imageConfigs?.visible}\n                        image={\n                            props.imageConfigs?.visible\n                                ? \"https://framerusercontent.com/images/3E7u1YOHRQaZuBdfYRsm3XCzxk.jpg\"\n                                : null\n                        }\n                        imageConfigs={props.imageConfigs}\n                        quantityConfigs={props.quantityConfigs}\n                        removeIconConfigs={props.removeIconConfigs}\n                        containerConfigs={props.containerConfigs}\n                        linkConfigs={props.linkConfigs}\n                        titleConfigs={props.titleConfigs}\n                        _lineItem={{\n                            merchandise: {\n                                product: {\n                                    handle: \"example-product\",\n                                },\n                            },\n                        }}\n                        quantityControlColor={\n                            props.quantityConfigs?.buttons?.icons\n                        }\n                        quantityNumberColor={\n                            props.quantityConfigs?.container?.number\n                        }\n                        quantityContainerBgColor={\n                            props.quantityConfigs?.container?.containerBg\n                        }\n                        quantityControlBgColor={\n                            props.quantityConfigs?.buttons?.iconBg\n                        }\n                        quantityControlHoverColor={\n                            props.quantityConfigs?.buttons?.iconBgHover\n                        }\n                        quantityContainerBorder=\"1px solid #E2E2E2\"\n                        quantityContainerRadius=\"8px\"\n                        xColor={props.removeIconConfigs?.icon}\n                        xBgColor={props.removeIconConfigs?.bg}\n                        xBgHoverColor={props.removeIconConfigs?.bgHover}\n                        style={{\n                            width: \"100%\",\n                            border: props.containerConfigs?.border\n                                ? `${props.containerConfigs.border.borderWidth}px ${props.containerConfigs.border.borderStyle} ${props.containerConfigs.border.borderColor}`\n                                : undefined,\n                            borderRadius:\n                                props.containerConfigs?.radius || \"0px\",\n                            background:\n                                props.containerConfigs?.background || \"#FFF\",\n                            padding: props.containerConfigs?.padding || \"0px\",\n                        }}\n                        shopifyProductTitle={\n                            <p\n                                style={{\n                                    ...get(props, \"titleConfigs.font\"),\n                                    color: get(props, \"titleConfigs.color\"),\n                                    margin: 0,\n                                }}\n                            >\n                                Product Title 3\n                            </p>\n                        }\n                        shopifyProductPriceAmount={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    alignItems: \"flex-end\",\n                                    gap: props.priceConfigs?.gap || 4,\n                                }}\n                            >\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.price.saleFont\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.price.saleColor\"\n                                        ),\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                >\n                                    {formatCartPrice(300, \"USD\")}\n                                </p>\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.comparePrice.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.comparePrice.color\"\n                                        ),\n                                        textDecoration: props.priceConfigs\n                                            ?.comparePrice?.strikethrough\n                                            ? \"line-through\"\n                                            : \"none\",\n                                        textDecorationColor:\n                                            props.priceConfigs?.comparePrice\n                                                ?.strikethroughColor,\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                >\n                                    {formatCartPrice(400, \"USD\")}\n                                </p>\n                            </div>\n                        }\n                        shopifyQuantity=\"3\"\n                        variants={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    gap: props.variantConfigs?.gap || \"4px\",\n                                }}\n                            >\n                                <p style={{ margin: 0 }}>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.titleFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.titleColor\"\n                                            ),\n                                            marginRight: \"5px\",\n                                        }}\n                                    >\n                                        Color:\n                                    </span>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.valueFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.valueColor\"\n                                            ),\n                                        }}\n                                    >\n                                        Black\n                                    </span>\n                                </p>\n                                <p style={{ margin: 0 }}>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.titleFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.titleColor\"\n                                            ),\n                                            marginRight: \"5px\",\n                                        }}\n                                    >\n                                        Size:\n                                    </span>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.valueFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.valueColor\"\n                                            ),\n                                        }}\n                                    >\n                                        Medium\n                                    </span>\n                                </p>\n                            </div>\n                        }\n                        onRemove={() => {}}\n                        onAddQuantity={() => {}}\n                        onSubtractQuantity={() => {}}\n                    />\n                    {props.spacingConfigs?.dividerVisible && (\n                        <div\n                            style={{\n                                width: \"100%\",\n                                borderTop: `${props.spacingConfigs?.divider?.borderWidth || 1}px ${props.spacingConfigs?.divider?.borderStyle || \"solid\"} ${props.spacingConfigs?.divider?.borderColor || \"rgba(0,0,0,0.08)\"}`,\n                            }}\n                        />\n                    )}\n                    <ShopXCartProductCard\n                        imageVisibility={props.imageConfigs?.visible}\n                        image={\n                            props.imageConfigs?.visible\n                                ? \"https://framerusercontent.com/images/3E7u1YOHRQaZuBdfYRsm3XCzxk.jpg\"\n                                : null\n                        }\n                        imageConfigs={props.imageConfigs}\n                        quantityConfigs={props.quantityConfigs}\n                        removeIconConfigs={props.removeIconConfigs}\n                        containerConfigs={props.containerConfigs}\n                        linkConfigs={props.linkConfigs}\n                        titleConfigs={props.titleConfigs}\n                        _lineItem={{\n                            merchandise: {\n                                product: {\n                                    handle: \"example-product\",\n                                },\n                            },\n                        }}\n                        quantityControlColor={\n                            props.quantityConfigs?.buttons?.icons\n                        }\n                        quantityNumberColor={\n                            props.quantityConfigs?.container?.number\n                        }\n                        quantityContainerBgColor={\n                            props.quantityConfigs?.container?.containerBg\n                        }\n                        quantityControlBgColor={\n                            props.quantityConfigs?.buttons?.iconBg\n                        }\n                        quantityControlHoverColor={\n                            props.quantityConfigs?.buttons?.iconBgHover\n                        }\n                        quantityContainerBorder=\"1px solid #E2E2E2\"\n                        quantityContainerRadius=\"8px\"\n                        xColor={props.removeIconConfigs?.icon}\n                        xBgColor={props.removeIconConfigs?.bg}\n                        xBgHoverColor={props.removeIconConfigs?.bgHover}\n                        style={{\n                            width: \"100%\",\n                            border: props.containerConfigs?.border\n                                ? `${props.containerConfigs.border.borderWidth}px ${props.containerConfigs.border.borderStyle} ${props.containerConfigs.border.borderColor}`\n                                : undefined,\n                            borderRadius:\n                                props.containerConfigs?.radius || \"0px\",\n                            background:\n                                props.containerConfigs?.background || \"#FFF\",\n                            padding: props.containerConfigs?.padding || \"0px\",\n                        }}\n                        shopifyProductTitle={\n                            <p\n                                style={{\n                                    ...get(props, \"titleConfigs.font\"),\n                                    color: get(props, \"titleConfigs.color\"),\n                                    margin: 0,\n                                }}\n                            >\n                                Product Title 4\n                            </p>\n                        }\n                        shopifyProductPriceAmount={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    alignItems: \"flex-end\",\n                                    gap: props.priceConfigs?.gap || 4,\n                                }}\n                            >\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.price.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.price.color\"\n                                        ),\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                >\n                                    {formatCartPrice(400, \"USD\")}\n                                </p>\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"priceConfigs.comparePrice.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"priceConfigs.comparePrice.color\"\n                                        ),\n                                        textDecoration: props.priceConfigs\n                                            ?.comparePrice?.strikethrough\n                                            ? \"line-through\"\n                                            : \"none\",\n                                        textDecorationColor:\n                                            props.priceConfigs?.comparePrice\n                                                ?.strikethroughColor,\n                                        whiteSpace: \"nowrap\",\n                                        minWidth: 0,\n                                    }}\n                                ></p>\n                            </div>\n                        }\n                        shopifyQuantity=\"4\"\n                        variants={\n                            <div\n                                style={{\n                                    display: \"flex\",\n                                    flexDirection: \"column\",\n                                    gap: props.variantConfigs?.gap || \"4px\",\n                                }}\n                            >\n                                <p style={{ margin: 0 }}>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.titleFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.titleColor\"\n                                            ),\n                                            marginRight: \"5px\",\n                                        }}\n                                    >\n                                        Size:\n                                    </span>\n                                    <span\n                                        style={{\n                                            ...get(\n                                                props,\n                                                \"variantConfigs.valueFont\"\n                                            ),\n                                            color: get(\n                                                props,\n                                                \"variantConfigs.valueColor\"\n                                            ),\n                                        }}\n                                    >\n                                        Medium\n                                    </span>\n                                </p>\n                                <p\n                                    style={{\n                                        margin: 0,\n                                        ...get(\n                                            props,\n                                            \"subscriptionConfigs.font\"\n                                        ),\n                                        color: get(\n                                            props,\n                                            \"subscriptionConfigs.color\"\n                                        ),\n                                    }}\n                                >\n                                    Delivers every week\n                                </p>\n                            </div>\n                        }\n                        onRemove={() => {}}\n                        onAddQuantity={() => {}}\n                        onSubtractQuantity={() => {}}\n                    />\n                </div>\n            ) : cartItems.length === 0 ? (\n                <div\n                    style={{\n                        position: \"relative\",\n                        display: \"flex\",\n                        alignItems: \"center\",\n                        justifyContent: \"center\",\n                        minHeight: \"100%\",\n                    }}\n                >\n                    {props.emptyStateComponent}\n                </div>\n            ) : (\n                <div\n                    style={{\n                        display: \"flex\",\n                        flexDirection: \"column\",\n                        gap: 0,\n                        width: \"100%\",\n                        boxSizing: \"border-box\",\n                    }}\n                >\n                    {errorVisible && (\n                        <p\n                            style={{\n                                ...get(props, \"errorConfigs.errorFont\"),\n                                color: get(props, \"errorConfigs.errorColor\"),\n                                textTransform: get(\n                                    props,\n                                    \"errorConfigs.textTransform\",\n                                    \"none\"\n                                ),\n                            }}\n                        >\n                            {errorMessage}\n                        </p>\n                    )}\n                    {cartItems.map(({ node: _lineItem }, index) => (\n                        <>\n                            {index > 0 &&\n                            props.spacingConfigs?.dividerVisible ? (\n                                <div\n                                    style={{\n                                        width: \"100%\",\n                                        marginTop:\n                                            props.spacingConfigs?.gap || 24,\n                                        marginBottom:\n                                            props.spacingConfigs?.gap || 24,\n                                        borderTop: `${props.spacingConfigs?.divider?.borderWidth || 1}px ${props.spacingConfigs?.divider?.borderStyle || \"solid\"} ${props.spacingConfigs?.divider?.borderColor || \"rgba(0,0,0,0.08)\"}`,\n                                    }}\n                                />\n                            ) : index > 0 &&\n                              !props.spacingConfigs?.dividerVisible ? (\n                                <div\n                                    style={{\n                                        marginTop:\n                                            props.spacingConfigs?.gap || 24,\n                                    }}\n                                />\n                            ) : null}\n                            <div\n                                key={_lineItem.id}\n                                style={{\n                                    width: \"100%\",\n                                    overflow: \"hidden\",\n                                    borderRadius:\n                                        typeof props.containerConfigs\n                                            ?.radius === \"object\"\n                                            ? `${props.containerConfigs.radius.topLeft}px ${props.containerConfigs.radius.topRight}px ${props.containerConfigs.radius.bottomRight}px ${props.containerConfigs.radius.bottomLeft}px`\n                                            : typeof props.containerConfigs\n                                                    ?.radius === \"string\"\n                                              ? props.containerConfigs.radius\n                                              : `${props.containerConfigs?.radius || 0}px`,\n                                    background:\n                                        props.containerConfigs?.background ||\n                                        \"#FFF\",\n                                    border: props.containerConfigs?.border\n                                        ? `${props.containerConfigs.border.borderWidth}px ${props.containerConfigs.border.borderStyle} ${props.containerConfigs.border.borderColor}`\n                                        : undefined,\n                                    padding:\n                                        typeof props.containerConfigs\n                                            ?.padding === \"object\"\n                                            ? `${props.containerConfigs.padding.top}px ${props.containerConfigs.padding.right}px ${props.containerConfigs.padding.bottom}px ${props.containerConfigs.padding.left}px`\n                                            : props.containerConfigs?.padding ||\n                                              \"0px\",\n                                    display: \"flex\",\n                                }}\n                            >\n                                <ShopXCartProductCard\n                                    imageVisibility={\n                                        props.imageConfigs?.visible\n                                    }\n                                    image={get(\n                                        _lineItem,\n                                        \"merchandise.image.url\",\n                                        null\n                                    )}\n                                    imageConfigs={props.imageConfigs}\n                                    quantityConfigs={props.quantityConfigs}\n                                    removeIconConfigs={props.removeIconConfigs}\n                                    containerConfigs={{\n                                        ...props.containerConfigs,\n                                        background: \"transparent\",\n                                    }}\n                                    linkConfigs={props.linkConfigs}\n                                    titleConfigs={props.titleConfigs}\n                                    _lineItem={_lineItem}\n                                    quantityControlColor={\n                                        props.quantityConfigs?.buttons?.icons\n                                    }\n                                    quantityNumberColor={\n                                        props.quantityConfigs?.container?.number\n                                    }\n                                    quantityContainerBgColor={\n                                        props.quantityConfigs?.container\n                                            ?.containerBg\n                                    }\n                                    quantityControlBgColor={\n                                        props.quantityConfigs?.buttons?.iconBg\n                                    }\n                                    quantityControlHoverColor={\n                                        props.quantityConfigs?.buttons\n                                            ?.iconBgHover\n                                    }\n                                    quantityContainerBorder=\"1px solid #E2E2E2\"\n                                    quantityContainerRadius=\"8px\"\n                                    xColor={props.removeIconConfigs?.icon}\n                                    xBgColor={props.removeIconConfigs?.bg}\n                                    xBgHoverColor={\n                                        props.removeIconConfigs?.bgHover\n                                    }\n                                    Radius=\"0px\"\n                                    style={{\n                                        width: \"100%\",\n                                        background: \"transparent\",\n                                        ...(RenderTarget.current() ===\n                                        RenderTarget.canvas\n                                            ? {\n                                                  padding:\n                                                      typeof props\n                                                          .containerConfigs\n                                                          ?.padding === \"object\"\n                                                          ? `${props.containerConfigs.padding.top}px ${props.containerConfigs.padding.right}px ${props.containerConfigs.padding.bottom}px ${props.containerConfigs.padding.left}px`\n                                                          : props\n                                                                .containerConfigs\n                                                                ?.padding ||\n                                                            \"0px\",\n                                              }\n                                            : {\n                                                  padding: 0,\n                                              }),\n                                    }}\n                                    shopifyProductTitle={\n                                        <p\n                                            style={{\n                                                ...get(\n                                                    props,\n                                                    \"titleConfigs.font\"\n                                                ),\n                                                color: get(\n                                                    props,\n                                                    \"titleConfigs.color\"\n                                                ),\n                                                margin: 0,\n                                                textTransform:\n                                                    props.titleConfigs\n                                                        ?.textTransform ||\n                                                    \"none\",\n                                            }}\n                                        >\n                                            {\n                                                _lineItem.merchandise.product\n                                                    .title\n                                            }\n                                        </p>\n                                    }\n                                    shopifyProductPriceAmount={\n                                        <div\n                                            style={{\n                                                display: \"flex\",\n                                                flexDirection: \"column\",\n                                                alignItems: \"flex-end\",\n                                                gap:\n                                                    props.priceConfigs?.gap ||\n                                                    4,\n                                            }}\n                                        >\n                                            {(() => {\n                                                if (!_lineItem) return null\n\n                                                // Use cart data for primary information\n                                                const price =\n                                                    _lineItem.cost\n                                                        .subtotalAmount.amount //_lineItem.merchandise.price.amount;\n                                                const subscriptionPrice =\n                                                    _lineItem\n                                                        .sellingPlanAllocation\n                                                        ?.checkoutChargeAmount\n                                                        ?.amount\n\n                                                const currencyCode =\n                                                    _lineItem.cost\n                                                        .subtotalAmount\n                                                        .currencyCode //_lineItem.merchandise.price.currencyCode;\n                                                const comparePrice =\n                                                    _lineItem.merchandise\n                                                        .compareAtPrice?.amount\n\n                                                // Supplement with external data\n                                                const variantId =\n                                                    _lineItem.merchandise.id\n                                                const variantGid = variantId\n                                                    .split(\"/\")\n                                                    .pop()\n                                                const matchingProduct =\n                                                    window.shopXtools.products.find(\n                                                        ({ node }) =>\n                                                            node.variants.edges.some(\n                                                                (edge) =>\n                                                                    edge.node.id.includes(\n                                                                        variantGid\n                                                                    )\n                                                            )\n                                                    )?.node\n                                                const matchingVariant =\n                                                    matchingProduct?.variants?.edges.find(\n                                                        (edge) =>\n                                                            edge.node.id.includes(\n                                                                variantGid\n                                                            )\n                                                    )?.node\n\n                                                // Preserve the log\n                                                // console.log(\n                                                //     \"Cart Product Card - Price Data:\",\n                                                //     {\n                                                //         variantId,\n                                                //         variantGid,\n                                                //         matchingProduct,\n                                                //         matchingVariant,\n                                                //         price,\n                                                //         currencyCode,\n                                                //         comparePrice,\n                                                //         variantComparePrice:\n                                                //             get(\n                                                //                 matchingVariant,\n                                                //                 \"compareAtPrice.amount\"\n                                                //             ),\n                                                //         productComparePrice:\n                                                //             get(\n                                                //                 matchingProduct,\n                                                //                 \"compareAtPriceRange.minVariantPrice.amount\"\n                                                //             ),\n                                                //         lineItem: _lineItem,\n                                                //         showCurrencyCode:\n                                                //             props.showCurrencyCode,\n                                                //         currencyPosition:\n                                                //             props.currencyPosition,\n                                                //         showCurrencySymbol:\n                                                //             props.showCurrencySymbol,\n                                                //     }\n                                                // )\n\n                                                const hasComparePrice =\n                                                    comparePrice &&\n                                                    parseFloat(comparePrice) >\n                                                        parseFloat(price)\n                                                const finalPrice =\n                                                    _lineItem.sellingPlanAllocation\n                                                        ? subscriptionPrice\n                                                        : price || \"0\"\n\n                                                return (\n                                                    <>\n                                                        <p\n                                                            style={{\n                                                                margin: 0,\n                                                                ...get(\n                                                                    props,\n                                                                    hasComparePrice\n                                                                        ? \"priceConfigs.price.saleFont\"\n                                                                        : \"priceConfigs.price.font\"\n                                                                ),\n                                                                color: hasComparePrice\n                                                                    ? props\n                                                                          .priceConfigs\n                                                                          ?.price\n                                                                          ?.saleColor\n                                                                    : props\n                                                                          .priceConfigs\n                                                                          ?.price\n                                                                          ?.color,\n                                                                whiteSpace:\n                                                                    \"nowrap\",\n                                                                minWidth: 0,\n                                                            }}\n                                                        >\n                                                            {formatCartPrice(\n                                                                finalPrice,\n                                                                currencyCode\n                                                            )}\n                                                        </p>\n                                                        {hasComparePrice && (\n                                                            <p\n                                                                style={{\n                                                                    margin: 0,\n                                                                    ...get(\n                                                                        props,\n                                                                        \"priceConfigs.comparePrice.font\"\n                                                                    ),\n                                                                    color: get(\n                                                                        props,\n                                                                        \"priceConfigs.comparePrice.color\"\n                                                                    ),\n                                                                    textDecoration:\n                                                                        \"line-through\",\n                                                                    textDecorationColor:\n                                                                        props\n                                                                            .priceConfigs\n                                                                            ?.comparePrice\n                                                                            ?.strikethroughColor,\n                                                                    whiteSpace:\n                                                                        \"nowrap\",\n                                                                    minWidth: 0,\n                                                                }}\n                                                            >\n                                                                {formatCartPrice(\n                                                                    comparePrice,\n                                                                    currencyCode\n                                                                )}\n                                                            </p>\n                                                        )}\n                                                    </>\n                                                )\n                                            })()}\n                                        </div>\n                                    }\n                                    shopifyQuantity={`${_lineItem.quantity || 1}`}\n                                    variants={\n                                        <div\n                                            style={{\n                                                display: \"flex\",\n                                                flexDirection: \"column\",\n                                                gap:\n                                                    props.variantConfigs?.gap ||\n                                                    \"4px\",\n                                            }}\n                                        >\n                                            {/* Display variants */}\n                                            {_lineItem.merchandise.selectedOptions\n                                                .filter(\n                                                    (option) =>\n                                                        option.name !== \"Title\"\n                                                )\n                                                .map((option, index) => (\n                                                    <p\n                                                        key={`variant-${option.name}-${index}`}\n                                                        style={{ margin: 0 }}\n                                                    >\n                                                        <span\n                                                            style={{\n                                                                ...get(\n                                                                    props,\n                                                                    \"variantConfigs.titleFont\"\n                                                                ),\n                                                                color: get(\n                                                                    props,\n                                                                    \"variantConfigs.titleColor\"\n                                                                ),\n                                                                marginRight:\n                                                                    \"5px\",\n                                                                textTransform:\n                                                                    get(\n                                                                        props,\n                                                                        \"variantConfigs.titleTransform\",\n                                                                        \"none\"\n                                                                    ),\n                                                            }}\n                                                        >\n                                                            {option.name}:\n                                                        </span>\n                                                        <span\n                                                            style={{\n                                                                ...get(\n                                                                    props,\n                                                                    \"variantConfigs.valueFont\"\n                                                                ),\n                                                                color: get(\n                                                                    props,\n                                                                    \"variantConfigs.valueColor\"\n                                                                ),\n                                                                textTransform:\n                                                                    get(\n                                                                        props,\n                                                                        \"variantConfigs.valueTransform\",\n                                                                        \"none\"\n                                                                    ),\n                                                            }}\n                                                        >\n                                                            {option.value}\n                                                        </span>\n                                                    </p>\n                                                ))}\n\n                                            {/* Display attributes */}\n                                            {_lineItem.attributes?.map(\n                                                (attr, index) => (\n                                                    <p\n                                                        key={`attr-${attr.key}-${index}`}\n                                                        style={{ margin: 0 }}\n                                                    >\n                                                        <span\n                                                            style={{\n                                                                ...(props\n                                                                    .attributeConfigs\n                                                                    ?.uniqueFormatting\n                                                                    ? get(\n                                                                          props,\n                                                                          \"attributeConfigs.titleFont\"\n                                                                      )\n                                                                    : get(\n                                                                          props,\n                                                                          \"variantConfigs.titleFont\"\n                                                                      )),\n                                                                color: props\n                                                                    .attributeConfigs\n                                                                    ?.uniqueFormatting\n                                                                    ? get(\n                                                                          props,\n                                                                          \"attributeConfigs.titleColor\"\n                                                                      )\n                                                                    : get(\n                                                                          props,\n                                                                          \"variantConfigs.titleColor\"\n                                                                      ),\n                                                                marginRight:\n                                                                    \"5px\",\n                                                                textTransform:\n                                                                    props\n                                                                        .attributeConfigs\n                                                                        ?.uniqueFormatting\n                                                                        ? get(\n                                                                              props,\n                                                                              \"attributeConfigs.titleTransform\",\n                                                                              \"none\"\n                                                                          )\n                                                                        : get(\n                                                                              props,\n                                                                              \"variantConfigs.titleTransform\",\n                                                                              \"none\"\n                                                                          ),\n                                                            }}\n                                                        >\n                                                            {attr.key}:\n                                                        </span>\n                                                        <span\n                                                            style={{\n                                                                ...(props\n                                                                    .attributeConfigs\n                                                                    ?.uniqueFormatting\n                                                                    ? get(\n                                                                          props,\n                                                                          \"attributeConfigs.valueFont\"\n                                                                      )\n                                                                    : get(\n                                                                          props,\n                                                                          \"variantConfigs.valueFont\"\n                                                                      )),\n                                                                color: props\n                                                                    .attributeConfigs\n                                                                    ?.uniqueFormatting\n                                                                    ? get(\n                                                                          props,\n                                                                          \"attributeConfigs.valueColor\"\n                                                                      )\n                                                                    : get(\n                                                                          props,\n                                                                          \"variantConfigs.valueColor\"\n                                                                      ),\n                                                                textTransform:\n                                                                    props\n                                                                        .attributeConfigs\n                                                                        ?.uniqueFormatting\n                                                                        ? get(\n                                                                              props,\n                                                                              \"attributeConfigs.valueTransform\",\n                                                                              \"none\"\n                                                                          )\n                                                                        : get(\n                                                                              props,\n                                                                              \"variantConfigs.valueTransform\",\n                                                                              \"none\"\n                                                                          ),\n                                                            }}\n                                                        >\n                                                            {attr.value}\n                                                        </span>\n                                                    </p>\n                                                )\n                                            )}\n\n                                            {/* Display selling plan */}\n                                            {_lineItem.sellingPlanAllocation\n                                                ?.sellingPlan?.name && (\n                                                <p\n                                                    style={{\n                                                        margin: 0,\n                                                        ...get(\n                                                            props,\n                                                            \"subscriptionConfigs.font\"\n                                                        ),\n                                                        color: get(\n                                                            props,\n                                                            \"subscriptionConfigs.color\"\n                                                        ),\n                                                        textTransform: get(\n                                                            props,\n                                                            \"subscriptionConfigs.textTransform\",\n                                                            \"none\"\n                                                        ),\n                                                    }}\n                                                >\n                                                    {\n                                                        _lineItem\n                                                            .sellingPlanAllocation\n                                                            .sellingPlan.name\n                                                    }\n                                                </p>\n                                            )}\n                                        </div>\n                                    }\n                                    onRemove={() =>\n                                        handleRemoveLine(cart.id, _lineItem.id)\n                                    }\n                                    onAddQuantity={() =>\n                                        handleUpdateLine(\n                                            cart.id,\n                                            _lineItem.id,\n                                            _lineItem.quantity + 1,\n                                            _lineItem\n                                        )\n                                    }\n                                    onSubtractQuantity={() =>\n                                        handleUpdateLine(\n                                            cart.id,\n                                            _lineItem.id,\n                                            _lineItem.quantity - 1,\n                                            _lineItem\n                                        )\n                                    }\n                                />\n                            </div>\n                        </>\n                    ))}\n                </div>\n            )}\n        </>\n    )\n}\n\nFC_CartProductCard.defaultProps = {\n    containerConfigs: {\n        background: \"transparent\",\n        radius: 0,\n        padding: 0,\n        insidePadding: 0,\n        gap: 8,\n        border: {\n            borderWidth: 0,\n            borderStyle: \"solid\",\n            borderColor: \"transparent\",\n        },\n    },\n    linkConfigs: {\n        enabled: false,\n        slugPath: \"\",\n    },\n    imageConfigs: {\n        visible: true,\n        type: \"Fill\",\n        width: 104,\n        radius: 8,\n        background: \"#F5F5F5\",\n        border: {\n            borderWidth: 0,\n            borderStyle: \"solid\",\n            borderColor: \"transparent\",\n        },\n        ratio: \"1:1\",\n        hover: \"None\",\n        zoomScale: 1.05,\n        opacity: 0.75,\n    },\n    titleConfigs: {\n        font: {\n            family: \"Inter\",\n            size: 14,\n            weight: 500,\n        },\n        color: \"#000000\",\n        hoverColor: \"#000000\",\n    },\n    variantConfigs: {\n        gap: 4,\n        titleFont: {\n            family: \"Inter\",\n            size: 14,\n            weight: 500,\n        },\n        titleColor: \"#000000\",\n        valueFont: {\n            family: \"Inter\",\n            size: 14,\n            weight: 400,\n        },\n        valueColor: \"#666666\",\n    },\n    subscriptionConfigs: {\n        font: {\n            family: \"Inter\",\n            size: 14,\n            weight: 400,\n        },\n        color: \"#4A5B89\",\n    },\n    quantityConfigs: {\n        type: ControlType.Object,\n        title: \"Quantity\",\n        controls: {\n            container: {\n                type: ControlType.Object,\n                title: \"Container\",\n                controls: {\n                    number: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Number\",\n                    },\n                    containerBg: {\n                        type: ControlType.Color,\n                        defaultValue: \"transparent\",\n                        title: \"BG\",\n                    },\n                    padding: {\n                        type: ControlType.Padding,\n                        title: \"Padding\",\n                        defaultValue: \"4px\",\n                    },\n                    containerRadius: {\n                        type: ControlType.BorderRadius,\n                        title: \"Radius\",\n                        defaultValue: \"4px\",\n                    },\n                    containerBorder: {\n                        type: ControlType.Border,\n                        title: \"Border\",\n                        defaultValue: {\n                            borderWidth: 1,\n                            borderStyle: \"solid\",\n                            borderColor: \"#E2E2E2\",\n                        },\n                    },\n                },\n            },\n            buttons: {\n                type: ControlType.Object,\n                title: \"Buttons\",\n                controls: {\n                    iconType: {\n                        type: ControlType.SegmentedEnum,\n                        title: \"Icon\",\n                        options: [\"Default\", \"Custom\"],\n                        optionTitles: [\"Default\", \"Custom\"],\n                        defaultValue: \"Default\",\n                    },\n                    iconWeight: {\n                        type: ControlType.Number,\n                        title: \"Weight\",\n                        defaultValue: 2,\n                        min: 0.5,\n                        max: 5,\n                        step: 0.1,\n                        displayStepper: true,\n                        hidden: ({ iconType }) => iconType !== \"Default\",\n                    },\n                    customPlusIcon: {\n                        type: ControlType.Image,\n                        title: \"Plus\",\n                        hidden: ({ iconType }) => iconType !== \"Custom\",\n                    },\n                    customMinusIcon: {\n                        type: ControlType.Image,\n                        title: \"Minus\",\n                        hidden: ({ iconType }) => iconType !== \"Custom\",\n                    },\n                    icons: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Icons\",\n                    },\n                    iconSize: {\n                        type: ControlType.Number,\n                        title: \"Icon Size\",\n                        defaultValue: 8,\n                        min: 4,\n                        max: 32,\n                        unit: \"px\",\n                        step: 1,\n                        displayStepper: true,\n                    },\n                    padding: {\n                        type: ControlType.Padding,\n                        title: \"Padding\",\n                        defaultValue: \"4px\",\n                    },\n                    iconBg: {\n                        type: ControlType.Color,\n                        defaultValue: \"#FFFFFF\",\n                        title: \"BG\",\n                    },\n                    iconBgHover: {\n                        type: ControlType.Color,\n                        defaultValue: \"#F5F5F5\",\n                        title: \"BG Hover\",\n                    },\n                    radius: {\n                        type: ControlType.BorderRadius,\n                        title: \"Radius\",\n                        defaultValue: \"4px\",\n                    },\n                    border: {\n                        type: ControlType.Border,\n                        title: \"Border\",\n                        defaultValue: {\n                            borderWidth: 0,\n                            borderStyle: \"solid\",\n                            borderColor: \"transparent\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n    priceConfigs: {\n        gap: 4,\n        price: {\n            font: {\n                family: \"Inter\",\n                size: 14,\n                weight: 500,\n            },\n            color: \"#000000\",\n            saleFont: {\n                family: \"Inter\",\n                size: 14,\n                weight: 500,\n            },\n            saleColor: \"#000000\",\n        },\n        comparePrice: {\n            font: {\n                family: \"Inter\",\n                size: 14,\n                weight: 400,\n            },\n            color: \"#8B0000\",\n            strikethrough: true,\n            strikethroughColor: \"#8B0000\",\n        },\n        format: {\n            showSymbol: true,\n            showCurrency: false,\n            showDecimals: \"Always show\",\n            currencyCode: \"USD\",\n        },\n        // Keep for backward compatibility\n        showCurrencyCode: false,\n        showSymbol: true,\n    },\n    removeIconConfigs: {\n        type: ControlType.Object,\n        title: \"Remove Icon\",\n        controls: {\n            position: {\n                type: ControlType.Enum,\n                title: \"Position\",\n                options: [\"Top\", \"Bottom\"],\n                defaultValue: \"Bottom\",\n            },\n            iconType: {\n                type: ControlType.SegmentedEnum,\n                title: \"Icon\",\n                options: [\"Default\", \"Custom\"],\n                optionTitles: [\"Default\", \"Custom\"],\n                defaultValue: \"Default\",\n            },\n            iconWeight: {\n                type: ControlType.Number,\n                title: \"Weight\",\n                defaultValue: 2,\n                min: 0.5,\n                max: 5,\n                step: 0.1,\n                displayStepper: true,\n                hidden: ({ iconType }) => iconType !== \"Default\",\n            },\n            customImage: {\n                type: ControlType.Image,\n                title: \"Image\",\n                hidden: ({ iconType }) => iconType !== \"Custom\",\n            },\n            icon: {\n                type: ControlType.Color,\n                defaultValue: \"#000000\",\n                title: \"Icon\",\n                hidden: ({ iconType }) => iconType === \"Custom\",\n            },\n            iconSize: {\n                type: ControlType.Number,\n                title: \"Icon Size\",\n                defaultValue: 8,\n                min: 4,\n                max: 32,\n                unit: \"px\",\n                step: 1,\n                displayStepper: true,\n            },\n            bg: {\n                type: ControlType.Color,\n                defaultValue: \"#F5F5F5\",\n                title: \"BG\",\n            },\n            bgHover: {\n                type: ControlType.Color,\n                defaultValue: \"#EBEBEB\",\n                title: \"BG Hover\",\n            },\n            radius: {\n                type: ControlType.BorderRadius,\n                title: \"Radius\",\n                defaultValue: \"80px\",\n            },\n            border: {\n                type: ControlType.Border,\n                title: \"Border\",\n                defaultValue: {\n                    borderWidth: 0,\n                    borderStyle: \"solid\",\n                    borderColor: \"transparent\",\n                },\n            },\n        },\n    },\n}\n\naddPropertyControls(FC_CartProductCard, {\n    linkConfigs: {\n        type: ControlType.Object,\n        title: \"Link\",\n        controls: {\n            enabled: {\n                type: ControlType.Boolean,\n                title: \"Link\",\n                defaultValue: false,\n                enabledTitle: \"Yes\",\n                disabledTitle: \"No\",\n            },\n            slugPath: {\n                type: ControlType.String,\n                title: \"Path\",\n                defaultValue: \"\",\n                placeholder: \"shop/\",\n                description:\n                    \"The path between your domain and slug. [Learn more](https://framercommerce.com/resources/docs/components/cart#cart-product-card)\",\n                hidden: ({ enabled }) => !enabled,\n            },\n        },\n    },\n    imageConfigs: {\n        type: ControlType.Object,\n        title: \"Image\",\n        controls: {\n            visible: {\n                type: ControlType.Boolean,\n                title: \"Image\",\n                defaultValue: true,\n                enabledTitle: \"Show\",\n                disabledTitle: \"Hide\",\n            },\n            type: {\n                type: ControlType.SegmentedEnum,\n                title: \"Type\",\n                options: [\"Fill\", \"Fit\"],\n                defaultValue: \"Fill\",\n                optionTitles: [\"Fill\", \"Fit\"],\n                hidden: ({ visible }) => !visible,\n            },\n            width: {\n                type: ControlType.Number,\n                title: \"Width\",\n                defaultValue: 112,\n                min: 0,\n                max: 500,\n                unit: \"px\",\n                step: 8,\n                displayStepper: true,\n                hidden: ({ visible }) => !visible,\n            },\n            radius: {\n                type: ControlType.BorderRadius,\n                title: \"Radius\",\n                defaultValue: \"4px\",\n                hidden: ({ visible }) => !visible,\n            },\n            background: {\n                type: ControlType.Color,\n                title: \"BG\",\n                defaultValue: \"#F2F2F2\",\n                hidden: ({ visible }) => !visible,\n            },\n            border: {\n                type: ControlType.Border,\n                title: \"Border\",\n                defaultValue: {\n                    borderWidth: 0,\n                    borderStyle: \"solid\",\n                    borderColor: \"rgba(0,0,0,0)\",\n                },\n                hidden: ({ visible }) => !visible,\n            },\n            ratio: {\n                type: ControlType.Enum,\n                title: \"Ratio\",\n                options: [\"1:1\", \"3:2\", \"4:5\"],\n                defaultValue: \"1:1\",\n                hidden: ({ visible }) => !visible,\n            },\n            hover: {\n                type: ControlType.Enum,\n                title: \"Hover Type\",\n                options: [\"None\", \"Zoom\", \"Opacity\"],\n                defaultValue: \"None\",\n                hidden: ({ visible }) => !visible,\n            },\n            zoomScale: {\n                type: ControlType.Number,\n                title: \"Zoom Scale\",\n                defaultValue: 1.05,\n                min: 1,\n                max: 3,\n                step: 0.05,\n                displayStepper: true,\n                hidden: ({ hover }) => hover !== \"Zoom\",\n            },\n            opacity: {\n                type: ControlType.Number,\n                title: \"Opacity\",\n                defaultValue: 0.75,\n                min: 0,\n                max: 1,\n                step: 0.05,\n                hidden: ({ hover }) => hover !== \"Opacity\",\n            },\n        },\n    },\n    titleConfigs: {\n        type: ControlType.Object,\n        title: \"Title\",\n        controls: {\n            font: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Font\",\n            },\n            color: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Color\",\n            },\n            hoverColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Hover\",\n            },\n            textTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n            },\n        },\n    },\n    variantConfigs: {\n        type: ControlType.Object,\n        title: \"Variants\",\n        controls: {\n            titleFont: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Title Font\",\n            },\n            titleColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Title Color\",\n            },\n            titleTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n            },\n            valueFont: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Value Font\",\n            },\n            valueColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Value Color\",\n            },\n            valueTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n            },\n            gap: {\n                type: ControlType.Number,\n                title: \"Gap\",\n                defaultValue: 4,\n                min: 0,\n                max: 100,\n                unit: \"px\",\n                step: 1,\n            },\n        },\n    },\n    attributeConfigs: {\n        type: ControlType.Object,\n        title: \"Attributes\",\n        controls: {\n            uniqueFormatting: {\n                type: ControlType.Boolean,\n                title: \"Customize\",\n                defaultValue: false,\n                enabledTitle: \"Yes\",\n                disabledTitle: \"No\",\n                description:\n                    \"By default, attributes use same styling as Variants.\",\n            },\n            titleFont: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Title Font\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            titleColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Title Color\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            titleTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            valueFont: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Value Font\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            valueColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Value Color\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            valueTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n                hidden: ({ uniqueFormatting }) => !uniqueFormatting,\n            },\n            gap: {\n                type: ControlType.Number,\n                title: \"Gap\",\n                defaultValue: 4,\n                min: 0,\n                max: 100,\n                unit: \"px\",\n                step: 1,\n                hidden: (props) => !props.attributeConfigs?.uniqueFormatting,\n            },\n        },\n    },\n    subscriptionConfigs: {\n        type: ControlType.Object,\n        title: \"Subscription\",\n        controls: {\n            font: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Font\",\n            },\n            color: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Color\",\n            },\n            textTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n            },\n        },\n    },\n    quantityConfigs: {\n        type: ControlType.Object,\n        title: \"Quantity\",\n        controls: {\n            container: {\n                type: ControlType.Object,\n                title: \"Container\",\n                controls: {\n                    number: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Number\",\n                    },\n                    containerBg: {\n                        type: ControlType.Color,\n                        defaultValue: \"transparent\",\n                        title: \"BG\",\n                    },\n                    padding: {\n                        type: ControlType.Padding,\n                        title: \"Padding\",\n                        defaultValue: \"4px\",\n                    },\n                    containerRadius: {\n                        type: ControlType.BorderRadius,\n                        title: \"Radius\",\n                        defaultValue: \"4px\",\n                    },\n                    containerBorder: {\n                        type: ControlType.Border,\n                        title: \"Border\",\n                        defaultValue: {\n                            borderWidth: 1,\n                            borderStyle: \"solid\",\n                            borderColor: \"#E2E2E2\",\n                        },\n                    },\n                },\n            },\n            buttons: {\n                type: ControlType.Object,\n                title: \"Buttons\",\n                controls: {\n                    iconType: {\n                        type: ControlType.SegmentedEnum,\n                        title: \"Icon\",\n                        options: [\"Default\", \"Custom\"],\n                        optionTitles: [\"Default\", \"Custom\"],\n                        defaultValue: \"Default\",\n                    },\n                    iconWeight: {\n                        type: ControlType.Number,\n                        title: \"Weight\",\n                        defaultValue: 2,\n                        min: 0.5,\n                        max: 5,\n                        step: 0.1,\n                        displayStepper: true,\n                        hidden: ({ iconType }) => iconType !== \"Default\",\n                    },\n                    customPlusIcon: {\n                        type: ControlType.Image,\n                        title: \"Plus\",\n                        hidden: ({ iconType }) => iconType !== \"Custom\",\n                    },\n                    customMinusIcon: {\n                        type: ControlType.Image,\n                        title: \"Minus\",\n                        hidden: ({ iconType }) => iconType !== \"Custom\",\n                    },\n                    icons: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Icons\",\n                    },\n                    iconSize: {\n                        type: ControlType.Number,\n                        title: \"Icon Size\",\n                        defaultValue: 8,\n                        min: 4,\n                        max: 32,\n                        unit: \"px\",\n                        step: 1,\n                        displayStepper: true,\n                    },\n                    padding: {\n                        type: ControlType.Padding,\n                        title: \"Padding\",\n                        defaultValue: \"4px\",\n                    },\n                    iconBg: {\n                        type: ControlType.Color,\n                        defaultValue: \"#FFFFFF\",\n                        title: \"BG\",\n                    },\n                    iconBgHover: {\n                        type: ControlType.Color,\n                        defaultValue: \"#F5F5F5\",\n                        title: \"BG Hover\",\n                    },\n                    radius: {\n                        type: ControlType.BorderRadius,\n                        title: \"Radius\",\n                        defaultValue: \"4px\",\n                    },\n                    border: {\n                        type: ControlType.Border,\n                        title: \"Border\",\n                        defaultValue: {\n                            borderWidth: 0,\n                            borderStyle: \"solid\",\n                            borderColor: \"transparent\",\n                        },\n                    },\n                },\n            },\n        },\n    },\n    priceConfigs: {\n        type: ControlType.Object,\n        title: \"Price\",\n        controls: {\n            gap: {\n                type: ControlType.Number,\n                title: \"Gap\",\n                defaultValue: 4,\n                min: 0,\n                max: 40,\n                unit: \"px\",\n                step: 1,\n            },\n            price: {\n                type: ControlType.Object,\n                title: \"Price\",\n                controls: {\n                    font: {\n                        type: ControlType.Font,\n                        controls: \"extended\",\n                        title: \"Regular Font\",\n                    },\n                    color: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Regular Color\",\n                    },\n                    saleFont: {\n                        type: ControlType.Font,\n                        controls: \"extended\",\n                        title: \"Sale Font\",\n                    },\n                    saleColor: {\n                        type: ControlType.Color,\n                        defaultValue: \"#FF0000\",\n                        title: \"Sale Color\",\n                    },\n                },\n            },\n            comparePrice: {\n                type: ControlType.Object,\n                title: \"Compare Price\",\n                controls: {\n                    font: {\n                        type: ControlType.Font,\n                        controls: \"extended\",\n                        title: \"Font\",\n                    },\n                    color: {\n                        type: ControlType.Color,\n                        defaultValue: \"#000\",\n                        title: \"Color\",\n                    },\n                    strikethrough: {\n                        type: ControlType.Boolean,\n                        title: \"Strike\",\n                        defaultValue: true,\n                        enabledTitle: \"Yes\",\n                        disabledTitle: \"No\",\n                    },\n                    strikethroughColor: {\n                        type: ControlType.Color,\n                        title: \"Strike Color\",\n                        defaultValue: \"#000000\",\n                        hidden: ({ strikethrough }) => !strikethrough,\n                    },\n                },\n            },\n            format: {\n                type: ControlType.Object,\n                title: \"Format\",\n                controls: {\n                    showSymbol: {\n                        type: ControlType.Boolean,\n                        title: \"Symbol\",\n                        defaultValue: true,\n                        enabledTitle: \"Show\",\n                        disabledTitle: \"Hide\",\n                        description: \"$, £, €, etc.\",\n                    },\n                    showCurrency: {\n                        type: ControlType.Boolean,\n                        title: \"Code\",\n                        defaultValue: false,\n                        enabledTitle: \"Show\",\n                        disabledTitle: \"Hide\",\n                        description: \"USD, EUR, CHF, etc.\",\n                    },\n                    showDecimals: {\n                        type: ControlType.Enum,\n                        title: \"Decimals\",\n                        defaultValue: \"Always show\",\n                        options: [\"Always show\", \"Never show\", \"Hide when .00\"],\n                        optionTitles: [\n                            \"Always show\",\n                            \"Never show\",\n                            \"Hide when .00\",\n                        ],\n                        displaySegmentedControl: true,\n                        segmentedControlDirection: \"vertical\",\n                    },\n                    currencyCode: {\n                        type: ControlType.Enum,\n                        title: \"Preview\",\n                        defaultValue: \"USD\",\n                        options: [\n                            \"USD\",\n                            \"EUR\",\n                            \"GBP\",\n                            \"CHF\",\n                            \"JPY\",\n                            \"CAD\",\n                            \"AUD\",\n                            \"CNY\",\n                            \"HKD\",\n                            \"NZD\",\n                            \"SEK\",\n                            \"KRW\",\n                            \"SGD\",\n                            \"NOK\",\n                            \"MXN\",\n                            \"INR\",\n                            \"RUB\",\n                            \"ZAR\",\n                            \"TRY\",\n                            \"BRL\",\n                            \"TWD\",\n                            \"DKK\",\n                            \"PLN\",\n                            \"THB\",\n                            \"IDR\",\n                            \"HUF\",\n                            \"CZK\",\n                            \"ILS\",\n                            \"CLP\",\n                            \"PHP\",\n                            \"AED\",\n                            \"COP\",\n                            \"SAR\",\n                            \"MYR\",\n                            \"RON\",\n                        ],\n                        description: \"Currency is for canvas preview only.\",\n                    },\n                },\n            },\n        },\n    },\n    errorConfigs: {\n        type: ControlType.Object,\n        title: \"Errors\",\n        controls: {\n            errorFont: {\n                type: ControlType.Font,\n                controls: \"extended\",\n                title: \"Error Font\",\n            },\n            errorColor: {\n                type: ControlType.Color,\n                defaultValue: \"#000\",\n                title: \"Error Color\",\n            },\n            textTransform: {\n                type: ControlType.Enum,\n                title: \"Transform\",\n                options: [\"None\", \"Uppercase\", \"Lowercase\", \"Capitalize\"],\n                defaultValue: \"none\",\n            },\n        },\n    },\n    removeIconConfigs: {\n        type: ControlType.Object,\n        title: \"Remove Icon\",\n        controls: {\n            position: {\n                type: ControlType.Enum,\n                title: \"Position\",\n                options: [\"Top\", \"Bottom\"],\n                defaultValue: \"Bottom\",\n            },\n            iconType: {\n                type: ControlType.SegmentedEnum,\n                title: \"Icon\",\n                options: [\"Default\", \"Custom\"],\n                optionTitles: [\"Default\", \"Custom\"],\n                defaultValue: \"Default\",\n            },\n            iconWeight: {\n                type: ControlType.Number,\n                title: \"Weight\",\n                defaultValue: 2,\n                min: 0.5,\n                max: 5,\n                step: 0.1,\n                displayStepper: true,\n                hidden: ({ iconType }) => iconType !== \"Default\",\n            },\n            customImage: {\n                type: ControlType.Image,\n                title: \"Image\",\n                hidden: ({ iconType }) => iconType !== \"Custom\",\n            },\n            icon: {\n                type: ControlType.Color,\n                defaultValue: \"#000000\",\n                title: \"Icon\",\n                hidden: ({ iconType }) => iconType === \"Custom\",\n            },\n            iconSize: {\n                type: ControlType.Number,\n                title: \"Icon Size\",\n                defaultValue: 8,\n                min: 4,\n                max: 32,\n                unit: \"px\",\n                step: 1,\n                displayStepper: true,\n            },\n            bg: {\n                type: ControlType.Color,\n                defaultValue: \"#F5F5F5\",\n                title: \"BG\",\n            },\n            bgHover: {\n                type: ControlType.Color,\n                defaultValue: \"#EBEBEB\",\n                title: \"BG Hover\",\n            },\n            radius: {\n                type: ControlType.BorderRadius,\n                title: \"Radius\",\n                defaultValue: \"80px\",\n            },\n            border: {\n                type: ControlType.Border,\n                title: \"Border\",\n                defaultValue: {\n                    borderWidth: 0,\n                    borderStyle: \"solid\",\n                    borderColor: \"transparent\",\n                },\n            },\n        },\n    },\n    containerConfigs: {\n        type: ControlType.Object,\n        title: \"Container\",\n        controls: {\n            background: {\n                type: ControlType.Color,\n                title: \"BG\",\n                defaultValue: \"transparent\",\n            },\n            radius: {\n                type: ControlType.BorderRadius,\n                title: \"Radius\",\n                defaultValue: \"0px\",\n            },\n            padding: {\n                type: ControlType.Padding,\n                title: \"Outside Padding\",\n                defaultValue: \"0px\",\n            },\n            insidePadding: {\n                type: ControlType.Padding,\n                title: \"Inside Padding\",\n                defaultValue: \"0px\",\n            },\n            gap: {\n                type: ControlType.Number,\n                title: \"Content Gap\",\n                defaultValue: 4,\n                min: 0,\n                max: 100,\n                unit: \"px\",\n                step: 1,\n            },\n            imageGap: {\n                type: ControlType.Number,\n                title: \"Image Gap\",\n                defaultValue: 16,\n                min: 0,\n                max: 100,\n                unit: \"px\",\n                step: 1,\n            },\n            border: {\n                type: ControlType.Border,\n                title: \"Border\",\n            },\n        },\n    },\n    spacingConfigs: {\n        type: ControlType.Object,\n        title: \"Spacing\",\n        controls: {\n            dividerVisible: {\n                type: ControlType.Boolean,\n                title: \"Divider\",\n                defaultValue: true,\n                enabledTitle: \"Yes\",\n                disabledTitle: \"No\",\n            },\n            divider: {\n                type: ControlType.Border,\n                title: \"Style\",\n                defaultValue: {\n                    borderWidth: 1,\n                    borderStyle: \"solid\",\n                    borderColor: \"rgba(0,0,0,0.08)\",\n                },\n                hidden: ({ dividerVisible }) => !dividerVisible,\n            },\n            gap: {\n                type: ControlType.Number,\n                title: \"Gap\",\n                defaultValue: 24,\n                min: 0,\n                max: 100,\n                unit: \"px\",\n                step: 1,\n            },\n        },\n    },\n})\n\nfunction ShopXCartProductCard({\n    imageVisibility,\n    image,\n    quantityControlColor,\n    quantityNumberColor,\n    quantityContainerBgColor,\n    quantityControlBgColor,\n    quantityControlHoverColor,\n    xColor,\n    xBgColor,\n    xBgHoverColor,\n    shopifyProductTitle,\n    shopifyProductPriceAmount,\n    shopifyQuantity,\n    variants,\n    style = {},\n    onRemove,\n    onAddQuantity,\n    onSubtractQuantity,\n    imageConfigs,\n    quantityConfigs,\n    removeIconConfigs,\n    containerConfigs,\n    linkConfigs,\n    titleConfigs,\n    _lineItem,\n    quantityContainerBorder = \"1px solid #E2E2E2\",\n    quantityContainerRadius = \"8px\",\n    Radius,\n}) {\n    const [isHovered, setIsHovered] = useState(false)\n\n    const handleMouseEnter = (e) => {\n        // Only set hover if not clicking quantity or remove buttons\n        if (!e.target.closest(\"button\")) {\n            setIsHovered(true)\n        }\n    }\n\n    const handleMouseLeave = () => {\n        setIsHovered(false)\n    }\n\n    // Construct product URL if linking is enabled\n    const productUrl =\n        linkConfigs?.enabled && _lineItem?.merchandise?.product?.handle\n            ? `${window.location.origin}/${linkConfigs.slugPath || \"\"}${_lineItem.merchandise.product.handle}`\n            : null\n\n    const imageHeight =\n        imageConfigs?.ratio === \"4:5\"\n            ? (imageConfigs?.width || 112) * 1.25\n            : imageConfigs?.ratio === \"3:2\"\n              ? (imageConfigs?.width || 112) * (2 / 3)\n              : imageConfigs?.width || 112\n    const imageBorderStyle = imageConfigs?.border?.borderStyle || \"solid\"\n    const imageBorderWidth = imageConfigs?.border?.borderWidth || 0\n    const imageBorderColor = imageConfigs?.border?.borderColor || \"transparent\"\n    const imageRadius =\n        typeof imageConfigs?.radius === \"object\"\n            ? `${imageConfigs.radius.topLeft}px ${imageConfigs.radius.topRight}px ${imageConfigs.radius.bottomRight}px ${imageConfigs.radius.bottomLeft}px`\n            : `${imageConfigs?.radius || 4}px`\n\n    const XIcon = ({ size = 8, weight }) => (\n        <svg\n            width={size}\n            height={size}\n            viewBox=\"0 0 16 16\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            style={{ display: \"block\" }}\n        >\n            <line\n                x1=\"2\"\n                y1=\"2\"\n                x2=\"14\"\n                y2=\"14\"\n                stroke=\"currentColor\"\n                strokeWidth={weight}\n                strokeLinecap=\"round\"\n            />\n            <line\n                x1=\"2\"\n                y1=\"14\"\n                x2=\"14\"\n                y2=\"2\"\n                stroke=\"currentColor\"\n                strokeWidth={weight}\n                strokeLinecap=\"round\"\n            />\n        </svg>\n    )\n\n    const removeButton = (\n        <button\n            onClick={onRemove}\n            style={{\n                border: removeIconConfigs?.border\n                    ? `${removeIconConfigs.border.borderWidth}px ${removeIconConfigs.border.borderStyle} ${removeIconConfigs.border.borderColor}`\n                    : \"none\",\n                background: removeIconConfigs?.bg || \"#F5F5F5\",\n                color: removeIconConfigs?.icon || \"#000000\",\n                cursor: \"pointer\",\n                padding: \"4px\",\n                borderRadius:\n                    typeof removeIconConfigs?.radius === \"object\"\n                        ? `${removeIconConfigs.radius.topLeft}px ${removeIconConfigs.radius.topRight}px ${removeIconConfigs.radius.bottomRight}px ${removeIconConfigs.radius.bottomLeft}px`\n                        : typeof removeIconConfigs?.radius === \"string\"\n                          ? removeIconConfigs.radius\n                          : \"80px\",\n                display: \"flex\",\n                alignItems: \"center\",\n                justifyContent: \"center\",\n                flexShrink: 0,\n                width: \"24px\",\n                height: \"24px\",\n            }}\n            onMouseEnter={(e) =>\n                (e.currentTarget.style.background =\n                    removeIconConfigs?.bgHover || \"#EBEBEB\")\n            }\n            onMouseLeave={(e) =>\n                (e.currentTarget.style.background =\n                    removeIconConfigs?.bg || \"#F5F5F5\")\n            }\n        >\n            {removeIconConfigs?.iconType === \"Custom\" ? (\n                <img\n                    src={removeIconConfigs?.customImage}\n                    alt=\"Remove\"\n                    style={{\n                        width: removeIconConfigs?.iconSize,\n                        height: removeIconConfigs?.iconSize,\n                    }}\n                />\n            ) : (\n                <XIcon\n                    size={removeIconConfigs?.iconSize || 8}\n                    weight={removeIconConfigs?.iconWeight || 2}\n                />\n            )}\n        </button>\n    )\n\n    const containerStyle = {\n        display: \"flex\",\n        alignItems: \"stretch\",\n        width: \"100%\",\n        boxSizing: \"border-box\",\n        overflow: \"hidden\",\n        cursor: productUrl ? \"pointer\" : \"default\",\n        borderRadius:\n            typeof containerConfigs?.radius === \"object\"\n                ? `${containerConfigs.radius.topLeft}px ${containerConfigs.radius.topRight}px ${containerConfigs.radius.bottomRight}px ${containerConfigs.radius.bottomLeft}px`\n                : `${containerConfigs?.radius || 0}px`,\n        border: containerConfigs?.border\n            ? `${containerConfigs.border.borderWidth}px ${containerConfigs.border.borderStyle} ${containerConfigs.border.borderColor}`\n            : undefined,\n        padding:\n            typeof containerConfigs?.padding === \"object\"\n                ? `${containerConfigs.padding.top}px ${containerConfigs.padding.right}px ${containerConfigs.padding.bottom}px ${containerConfigs.padding.left}px`\n                : containerConfigs?.padding || \"0px\",\n        background: \"transparent\",\n        ...style,\n    }\n\n    const contentStyle = {\n        display: \"flex\",\n        gap: containerConfigs?.imageGap ?? 0,\n        flex: 1,\n        minWidth: 0,\n        padding: containerConfigs?.insidePadding || \"0px\",\n    }\n\n    const imageStyle = {\n        position: \"relative\",\n        width: imageConfigs?.width || 112,\n        height: imageHeight,\n        flexShrink: 0,\n        background: imageConfigs?.background || \"#F2F2F2\",\n        borderRadius: imageConfigs?.radius || \"4px\",\n        border: `${imageBorderWidth}px ${imageBorderStyle} ${imageBorderColor}`,\n        overflow: \"hidden\",\n    }\n\n    const imageInnerStyle = {\n        width: \"100%\",\n        height: \"100%\",\n        objectFit: imageConfigs?.type === \"Fit\" ? \"contain\" : \"cover\",\n        transition: \"transform 0.3s ease, opacity 0.3s ease\",\n        ...(isHovered &&\n            imageConfigs?.hover === \"Zoom\" && {\n                transform: `scale(${imageConfigs.zoomScale})`,\n            }),\n        ...(isHovered &&\n            imageConfigs?.hover === \"Opacity\" && {\n                opacity: imageConfigs.opacity,\n            }),\n    }\n\n    const titleStyle = {\n        ...(titleConfigs?.font || {}),\n        color: isHovered ? titleConfigs?.hoverColor : titleConfigs?.color,\n        margin: 0,\n        transition: \"color 0.3s ease\",\n        textTransform: titleConfigs?.textTransform || \"none\",\n    }\n\n    const handleClick = (e) => {\n        // Only navigate if not clicking quantity or remove buttons\n        if (productUrl && !e.target.closest(\"button\")) {\n            window.location.href = productUrl\n        }\n    }\n\n    return (\n        <div\n            style={containerStyle}\n            onMouseEnter={handleMouseEnter}\n            onMouseLeave={handleMouseLeave}\n            onClick={handleClick}\n        >\n            <div\n                style={{\n                    display: \"flex\",\n                    gap: containerConfigs?.imageGap ?? 0,\n                    flex: 1,\n                    minWidth: 0,\n                }}\n            >\n                {imageVisibility && image && (\n                    <div style={imageStyle}>\n                        <img\n                            src={image}\n                            style={imageInnerStyle}\n                            onError={(e) => {\n                                e.currentTarget.style.display = \"none\"\n                            }}\n                        />\n                    </div>\n                )}\n                <div\n                    style={{\n                        display: \"flex\",\n                        flexDirection: \"column\",\n                        flex: 1,\n                        minWidth: 0,\n                        gap: containerConfigs?.gap ?? 0,\n                        padding: containerConfigs?.insidePadding || \"0px\",\n                    }}\n                >\n                    <div\n                        style={{\n                            display: \"flex\",\n                            justifyContent: \"space-between\",\n                            alignItems: \"flex-start\",\n                            width: \"100%\",\n                            gap: \"16px\",\n                        }}\n                    >\n                        <div\n                            style={{\n                                display: \"flex\",\n                                flexDirection: \"column\",\n                                gap: containerConfigs?.gap ?? 0,\n                                flex: 1,\n                                minWidth: 0,\n                            }}\n                        >\n                            <div style={titleStyle}>\n                                {typeof shopifyProductTitle === \"string\"\n                                    ? shopifyProductTitle\n                                    : React.cloneElement(shopifyProductTitle, {\n                                          style: titleStyle,\n                                      })}\n                            </div>\n                            {variants}\n                        </div>\n                        {removeIconConfigs?.position === \"Top\"\n                            ? removeButton\n                            : shopifyProductPriceAmount}\n                    </div>\n                    <div\n                        style={{\n                            display: \"flex\",\n                            alignItems: \"center\",\n                            justifyContent: \"space-between\",\n                            gap: \"16px\",\n                            marginTop: \"auto\",\n                        }}\n                    >\n                        <div\n                            style={{\n                                display: \"flex\",\n                                alignItems: \"center\",\n                                backgroundColor:\n                                    quantityConfigs?.container?.containerBg ||\n                                    \"transparent\",\n                                borderRadius:\n                                    typeof quantityConfigs?.container\n                                        ?.containerRadius === \"object\"\n                                        ? `${quantityConfigs.container.containerRadius.topLeft}px ${quantityConfigs.container.containerRadius.topRight}px ${quantityConfigs.container.containerRadius.bottomRight}px ${quantityConfigs.container.containerRadius.bottomLeft}px`\n                                        : typeof quantityConfigs?.container\n                                                ?.containerRadius === \"string\"\n                                          ? quantityConfigs.container\n                                                .containerRadius\n                                          : \"8px\",\n                                padding:\n                                    quantityConfigs?.container?.padding ||\n                                    \"4px\",\n                                border: quantityConfigs?.container\n                                    ?.containerBorder\n                                    ? `${quantityConfigs.container.containerBorder.borderWidth}px ${quantityConfigs.container.containerBorder.borderStyle} ${quantityConfigs.container.containerBorder.borderColor}`\n                                    : \"1px solid #E2E2E2\",\n                                flexShrink: 0,\n                            }}\n                        >\n                            <button\n                                onClick={onSubtractQuantity}\n                                style={{\n                                    border: quantityConfigs?.buttons?.border\n                                        ? `${quantityConfigs.buttons.border.borderWidth}px ${quantityConfigs.buttons.border.borderStyle} ${quantityConfigs.buttons.border.borderColor}`\n                                        : \"none\",\n                                    background:\n                                        quantityConfigs?.buttons?.iconBg ||\n                                        \"#F5F5F5\",\n                                    color:\n                                        quantityConfigs?.buttons?.icons ||\n                                        \"#000000\",\n                                    cursor: \"pointer\",\n                                    padding:\n                                        quantityConfigs?.buttons?.padding ||\n                                        \"4px 8px\",\n                                    borderRadius:\n                                        typeof quantityConfigs?.buttons\n                                            ?.radius === \"object\"\n                                            ? `${quantityConfigs.buttons.radius.topLeft}px ${quantityConfigs.buttons.radius.topRight}px ${quantityConfigs.buttons.radius.bottomRight}px ${quantityConfigs.buttons.radius.bottomLeft}px`\n                                            : typeof quantityConfigs?.buttons\n                                                    ?.radius === \"string\"\n                                              ? quantityConfigs.buttons.radius\n                                              : \"4px\",\n                                    display: \"flex\",\n                                    alignItems: \"center\",\n                                    justifyContent: \"center\",\n                                }}\n                                onMouseEnter={(e) => {\n                                    e.currentTarget.style.background =\n                                        quantityConfigs?.buttons?.iconBgHover ||\n                                        \"#EBEBEB\"\n                                }}\n                                onMouseLeave={(e) => {\n                                    e.currentTarget.style.background =\n                                        quantityConfigs?.buttons?.iconBg ||\n                                        \"#F5F5F5\"\n                                }}\n                            >\n                                {quantityConfigs?.buttons?.iconType ===\n                                \"Custom\" ? (\n                                    <img\n                                        src={\n                                            quantityConfigs.buttons\n                                                .customMinusIcon\n                                        }\n                                        alt=\"Minus\"\n                                        style={{\n                                            width:\n                                                quantityConfigs.buttons\n                                                    .iconSize || 8,\n                                            height:\n                                                quantityConfigs.buttons\n                                                    .iconSize || 8,\n                                        }}\n                                    />\n                                ) : (\n                                    <MinusIcon\n                                        size={\n                                            quantityConfigs?.buttons\n                                                ?.iconSize || 8\n                                        }\n                                        weight={\n                                            quantityConfigs?.buttons\n                                                ?.iconWeight || 2\n                                        }\n                                    />\n                                )}\n                            </button>\n                            <span\n                                style={{\n                                    margin: \"0 8px\",\n                                    color:\n                                        quantityConfigs?.container?.number ||\n                                        \"#000000\",\n                                }}\n                            >\n                                {shopifyQuantity}\n                            </span>\n                            <button\n                                onClick={onAddQuantity}\n                                style={{\n                                    border: quantityConfigs?.buttons?.border\n                                        ? `${quantityConfigs.buttons.border.borderWidth}px ${quantityConfigs.buttons.border.borderStyle} ${quantityConfigs.buttons.border.borderColor}`\n                                        : \"none\",\n                                    background:\n                                        quantityConfigs?.buttons?.iconBg ||\n                                        \"#F5F5F5\",\n                                    color:\n                                        quantityConfigs?.buttons?.icons ||\n                                        \"#000000\",\n                                    cursor: \"pointer\",\n                                    padding:\n                                        quantityConfigs?.buttons?.padding ||\n                                        \"4px 8px\",\n                                    borderRadius:\n                                        typeof quantityConfigs?.buttons\n                                            ?.radius === \"object\"\n                                            ? `${quantityConfigs.buttons.radius.topLeft}px ${quantityConfigs.buttons.radius.topRight}px ${quantityConfigs.buttons.radius.bottomRight}px ${quantityConfigs.buttons.radius.bottomLeft}px`\n                                            : typeof quantityConfigs?.buttons\n                                                    ?.radius === \"string\"\n                                              ? quantityConfigs.buttons.radius\n                                              : \"4px\",\n                                    display: \"flex\",\n                                    alignItems: \"center\",\n                                    justifyContent: \"center\",\n                                }}\n                                onMouseEnter={(e) => {\n                                    e.currentTarget.style.background =\n                                        quantityConfigs?.buttons?.iconBgHover ||\n                                        \"#EBEBEB\"\n                                }}\n                                onMouseLeave={(e) => {\n                                    e.currentTarget.style.background =\n                                        quantityConfigs?.buttons?.iconBg ||\n                                        \"#F5F5F5\"\n                                }}\n                            >\n                                {quantityConfigs?.buttons?.iconType ===\n                                \"Custom\" ? (\n                                    <img\n                                        src={\n                                            quantityConfigs.buttons\n                                                .customPlusIcon\n                                        }\n                                        alt=\"Plus\"\n                                        style={{\n                                            width:\n                                                quantityConfigs.buttons\n                                                    .iconSize || 8,\n                                            height:\n                                                quantityConfigs.buttons\n                                                    .iconSize || 8,\n                                        }}\n                                    />\n                                ) : (\n                                    <PlusIcon\n                                        size={\n                                            quantityConfigs?.buttons\n                                                ?.iconSize || 8\n                                        }\n                                        weight={\n                                            quantityConfigs?.buttons\n                                                ?.iconWeight || 2\n                                        }\n                                    />\n                                )}\n                            </button>\n                        </div>\n                        {removeIconConfigs?.position === \"Bottom\"\n                            ? removeButton\n                            : shopifyProductPriceAmount}\n                    </div>\n                </div>\n            </div>\n        </div>\n    )\n}\n\nconst MinusIcon = ({ size = 8, weight }) => (\n    <svg\n        width={size}\n        height={size}\n        viewBox=\"0 0 16 16\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        style={{ display: \"block\" }}\n    >\n        <line\n            x1=\"2\"\n            y1=\"8\"\n            x2=\"14\"\n            y2=\"8\"\n            stroke=\"currentColor\"\n            strokeWidth={weight}\n            strokeLinecap=\"round\"\n        />\n    </svg>\n)\n\nconst PlusIcon = ({ size = 8, weight }) => (\n    <svg\n        width={size}\n        height={size}\n        viewBox=\"0 0 16 16\"\n        fill=\"none\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        style={{ display: \"block\" }}\n    >\n        <line\n            x1=\"8\"\n            y1=\"2\"\n            x2=\"8\"\n            y2=\"14\"\n            stroke=\"currentColor\"\n            strokeWidth={weight}\n            strokeLinecap=\"round\"\n        />\n        <line\n            x1=\"2\"\n            y1=\"8\"\n            x2=\"14\"\n            y2=\"8\"\n            stroke=\"currentColor\"\n            strokeWidth={weight}\n            strokeLinecap=\"round\"\n        />\n    </svg>\n)\n"],"names":[],"mappings":"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"}