@anker-in/headless-ui 1.3.7 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/biz-components/AnchorNavigation/index.js +1 -1
- package/dist/cjs/biz-components/AnchorNavigation/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/BizProductProvider.d.ts +5 -1
- package/dist/cjs/biz-components/Listing/BizProductProvider.js +1 -1
- package/dist/cjs/biz-components/Listing/BizProductProvider.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.d.ts +13 -0
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/CartActionButtons/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.d.ts +6 -8
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.d.ts +11 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/PurchaseBar/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/SlideUpModal/index.d.ts +9 -0
- package/dist/cjs/biz-components/Listing/components/SlideUpModal/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/SlideUpModal/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/const.d.ts +11 -0
- package/dist/cjs/biz-components/Listing/const.js +1 -1
- package/dist/cjs/biz-components/Listing/const.js.map +3 -3
- package/dist/cjs/biz-components/Listing/hooks/useComponentData.d.ts +1 -0
- package/dist/cjs/biz-components/Listing/hooks/useComponentData.js +2 -0
- package/dist/cjs/biz-components/Listing/hooks/useComponentData.js.map +7 -0
- package/dist/cjs/biz-components/index.d.ts +5 -1
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/cjs/components/Countdown.js +1 -1
- package/dist/cjs/components/Countdown.js.map +3 -3
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +3 -3
- package/dist/esm/biz-components/AnchorNavigation/index.js +1 -1
- package/dist/esm/biz-components/AnchorNavigation/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/BizProductProvider.d.ts +5 -1
- package/dist/esm/biz-components/Listing/BizProductProvider.js +1 -1
- package/dist/esm/biz-components/Listing/BizProductProvider.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.d.ts +13 -0
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/CartActionButtons/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +4 -4
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.d.ts +6 -8
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductOptions/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.d.ts +11 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductGallery/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductPaidShipping/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/PurchaseBar/ProductActions/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/PurchaseBar/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/PurchaseBar/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/SlideUpModal/index.d.ts +9 -0
- package/dist/esm/biz-components/Listing/components/SlideUpModal/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/SlideUpModal/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/const.d.ts +11 -0
- package/dist/esm/biz-components/Listing/const.js +1 -1
- package/dist/esm/biz-components/Listing/const.js.map +3 -3
- package/dist/esm/biz-components/Listing/hooks/useComponentData.d.ts +1 -0
- package/dist/esm/biz-components/Listing/hooks/useComponentData.js +2 -0
- package/dist/esm/biz-components/Listing/hooks/useComponentData.js.map +7 -0
- package/dist/esm/biz-components/index.d.ts +5 -1
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +3 -3
- package/dist/esm/components/Countdown.js +1 -1
- package/dist/esm/components/Countdown.js.map +3 -3
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/tabs.js.map +3 -3
- package/package.json +1 -1
- package/style.css +39 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/biz-components/Listing/components/ProductCard/ProductSummary/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Text, Button, Grid, GridItem, Picture, Heading } from '../../../../../components/index.js'\nimport { useBizProductContext } from '../../../BizProductProvider.js'\nimport { useEffect, useMemo, useState } from 'react'\nimport { formatPrice } from '../../../utils/index.js'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport type { BundleListItem, ProductVariant, ProductPrice, ProductOption } from '../../../types/product'\nimport Decimal from 'decimal.js'\nimport { replaceTemplate } from '../../../utils/textFormat.js'\nimport { withLayout } from '../../../../../shared/Styles.js'\nimport { ExposureDetector } from '../../../../../components/index.js'\nimport { gaTrack } from '../../../../../shared/track.js'\n\nconst ProductSummary = () => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const {\n product,\n variant,\n finalPrice,\n comparePrice,\n coupon,\n selectedOptions,\n selectedVariants,\n totalSavings,\n onAddToCart,\n onBuyNow,\n savingDetail,\n checkedBundle,\n joinedRecommendBuyProducts,\n setJoinedRecommendBuyProducts,\n setSavingDetail,\n addToCartLoading,\n buyNowLoading,\n profile,\n addOrder,\n setAddOrder,\n } = useBizProductContext()\n\n const productSummaryData = useMemo(() => {\n return product?.payload?.components?.find((item: any) => item.componentKey === 'ProductSummary')?.data || {}\n }, [product?.payload])\n\n const [currentProductVariant] = selectedVariants\n\n const summaryFinalPrice = useMemo(() => {\n const currentBundleVariant = checkedBundle?.variants.find(v => v.variant.sku === currentProductVariant?.sku)\n const currentBundlePrice = new Decimal(currentProductVariant?.price?.amount || 0)\n .minus(currentBundleVariant?.price || currentProductVariant?.price?.amount)\n .toNumber()\n let currentProductPrice = new Decimal(currentProductVariant?.price?.amount || 0)\n if (profile?.email) {\n currentProductPrice = currentProductPrice.minus(savingDetail?.member || 0)\n }\n const finalPrice = currentProductPrice.minus(savingDetail?.coupon).minus(currentBundlePrice).toNumber()\n return parseFloat(finalPrice.toFixed(2))\n }, [currentProductVariant, checkedBundle, profile, savingDetail?.member, savingDetail?.coupon])\n\n const { bundleVariant, giftVariant, exchangeVariant } = useRecommendBuyProducts() || {}\n\n const [initialRecommendBuyProducts, setInitialRecommendBuyProducts] = useState<{\n bundle?: BundleListItem\n gift?: ProductVariant\n exchange?: ProductVariant\n }>()\n\n useEffect(() => {\n setInitialRecommendBuyProducts({\n bundle: joinedRecommendBuyProducts.bundle?.value ? undefined : bundleVariant,\n gift: joinedRecommendBuyProducts.gift?.value ? undefined : giftVariant,\n exchange: joinedRecommendBuyProducts.exchange?.value ? undefined : exchangeVariant,\n })\n }, [bundleVariant, giftVariant, exchangeVariant, joinedRecommendBuyProducts])\n\n // \u6839\u636E\u6DFB\u52A0\u987A\u5E8F\u751F\u6210\u5DF2\u6DFB\u52A0\u4EA7\u54C1\u7684\u5217\u8868\n const orderedJoinedProducts = useMemo(() => {\n const result: Array<{ type: 'bundle' | 'gift' | 'exchange'; key: string }> = []\n\n // \u6309\u7167\u6DFB\u52A0\u987A\u5E8F\u6DFB\u52A0\n if (addOrder) {\n addOrder.forEach((type, index) => {\n if (joinedRecommendBuyProducts[type]?.value) {\n result.push({ type, key: `${type}-${index}` })\n }\n })\n }\n\n return result\n }, [addOrder, joinedRecommendBuyProducts])\n\n const productOptionsText = useMemo(() => {\n const quantity = selectedOptions?.quantity || ''\n const color = selectedOptions?.color || selectedOptions?.colour || selectedOptions?.couleur || ''\n return `${quantity && color ? `${quantity} | ${color}` : quantity || color}`\n }, [selectedOptions?.quantity, selectedOptions?.color, selectedOptions?.colour, selectedOptions?.couleur])\n\n const variantImage = useMemo(() => {\n const variantProductSummary =\n variant?.payload?.components?.find((item: any) => item.componentKey === 'ProductSummary')?.data || {}\n const { image_1920, image_1440, image_1024, image_768, image_390 } = variantProductSummary?.thumbnail || {}\n const variantProductGalleryItemImage = variantProductSummary?.thumbnail\n ? `${image_1920} 1920, ${image_1440} 1440, ${image_1024} 1024, ${image_768} 768, ${image_390} 390`\n : variant.image?.url\n return variantProductGalleryItemImage || variant.image?.url\n }, [variant.image?.url, variant?.payload?.components])\n\n const isAvailable = variant.availableForSale\n if (!isAvailable) return null\n\n return (\n <div className=\"ipc-product-summary laptop:px-16 laptop-md:px-0 laptop-md:mt-[96px] lg-desktop:mt-[128px] mt-16\">\n <div className=\"laptop:rounded-2xl bg-[#F5F5F7]\">\n <Grid className=\"tablet:p-8 tablet:!pb-0 px-4 pt-6\">\n <GridItem className=\"laptop:col-start-1 laptop:col-span-5 col-span-12 flex flex-col justify-between gap-4\">\n <Heading\n className=\"lg-desktop:text-[48px] laptop:text-[32px] laptop-md:text-[40px] mb-4 text-[24px] font-bold leading-none [&>span]:text-[#D1D1D1]\"\n html={productSummaryData?.readyWant?.replace?.('{title}', product?.title)}\n />\n <div className=\"\">\n <Picture\n source={variantImage}\n className=\"lg-desktop:aspect-[644/320] laptop-md:aspect-[503/270] laptop:aspect-[332/190] tablet:aspect-[704/380] aspect-[358/190]\"\n imgClassName=\"object-cover h-full\"\n />\n </div>\n </GridItem>\n <GridItem className=\"tablet:pb-8 laptop:col-start-7 laptop:mt-0 laptop:col-span-6 col-span-12 mt-8 flex flex-col justify-between gap-6 pb-6\">\n <div>\n <div className=\"flex flex-col gap-4\">\n <ExposureDetector\n exposureKey=\"listing_selector\"\n onExposure={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'component_impression',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n component_type: 'image',\n component_name: 'listing_selector',\n position: 1,\n },\n })\n }}\n >\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={variant.image?.url || product?.images?.[0]?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={product.title}\n />\n <Text\n className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\"\n html={productOptionsText}\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: summaryFinalPrice,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n {summaryFinalPrice < variant?.price?.amount && (\n <Text\n className=\"laptop-md:text-2xl laptop:text-xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: variant?.price?.amount,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n )}\n </div>\n </div>\n </ExposureDetector>\n {/* \u6309\u7167\u6DFB\u52A0\u987A\u5E8F\u6E32\u67D3\u5DF2\u6DFB\u52A0\u7684\u4EA7\u54C1 */}\n {orderedJoinedProducts.map(({ type, key }) => {\n if (type === 'gift' && joinedRecommendBuyProducts?.gift?.value) {\n return (\n <ProductGiftSummary\n key={key}\n giftOperation={gift => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n gift: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, gift })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'gift'))\n }}\n status={!!joinedRecommendBuyProducts?.gift}\n gift={joinedRecommendBuyProducts?.gift?.value}\n canOperate={joinedRecommendBuyProducts?.gift?.canOperate}\n />\n )\n }\n if (type === 'bundle' && joinedRecommendBuyProducts?.bundle?.value) {\n return (\n <ProductBundleSummary\n key={key}\n bundleOperation={bundle => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n bundle: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, bundle })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'bundle'))\n }}\n status={!!joinedRecommendBuyProducts?.bundle}\n bundleListItem={joinedRecommendBuyProducts?.bundle?.value}\n canOperate={joinedRecommendBuyProducts?.bundle?.canOperate}\n />\n )\n }\n if (type === 'exchange' && joinedRecommendBuyProducts?.exchange?.value) {\n return (\n <ProductExchangeSummary\n key={key}\n exchangeOperation={exchange => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n exchange: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, exchange })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'exchange'))\n }}\n status={!!joinedRecommendBuyProducts?.exchange}\n canOperate={joinedRecommendBuyProducts?.exchange?.canOperate}\n exchange={joinedRecommendBuyProducts?.exchange?.value}\n />\n )\n }\n return null\n })}\n </div>\n {(initialRecommendBuyProducts?.bundle ||\n initialRecommendBuyProducts?.gift ||\n initialRecommendBuyProducts?.exchange) && (\n <div className=\"laptop-md:mt-8 mt-6\">\n <Text className=\"laptop-md:text-[18px] text-sm font-bold\" html={productSummaryData?.recommendBuy} />\n <div className=\"laptop-md:gap-4 mt-4 flex flex-col gap-6\">\n {initialRecommendBuyProducts?.exchange && (\n <ProductExchangeSummary\n exchangeOperation={exchange => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n exchange: {\n value: exchange,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, exchange: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'exchange'])\n }}\n canOperate={joinedRecommendBuyProducts?.exchange?.canOperate}\n status={!initialRecommendBuyProducts?.exchange}\n exchange={initialRecommendBuyProducts?.exchange}\n />\n )}\n {initialRecommendBuyProducts?.bundle && (\n <ProductBundleSummary\n bundleOperation={bundle => {\n setSavingDetail?.({ ...savingDetail, exchangePurchase: 0 })\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n bundle: {\n value: bundle,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, bundle: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'bundle'])\n }}\n canOperate={joinedRecommendBuyProducts?.bundle?.canOperate}\n status={!initialRecommendBuyProducts?.bundle}\n bundleListItem={initialRecommendBuyProducts?.bundle}\n />\n )}\n {initialRecommendBuyProducts?.gift && (\n <ProductGiftSummary\n giftOperation={gift => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n gift: {\n value: gift,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, gift: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'gift'])\n }}\n canOperate={joinedRecommendBuyProducts?.gift?.canOperate}\n status={!initialRecommendBuyProducts?.gift}\n gift={initialRecommendBuyProducts?.gift}\n />\n )}\n </div>\n </div>\n )}\n </div>\n <div className=\"text-right\">\n <Text\n className=\"laptop:text-xl laptop-md:text-2xl text-right font-bold\"\n html={`${replaceTemplate(copyWriting?.totalPrice || '', { amount: formatPrice({ amount: parseFloat(finalPrice.toFixed(2)), currencyCode: variant.price.currencyCode, locale }) })}`}\n />\n\n {totalSavings > 0 && (\n <Text\n className=\"laptop:text-xl laptop-md:text-2xl ml-1 text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: comparePrice,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n )}\n <div className=\"mt-4 flex justify-end gap-3\">\n <Button\n size=\"lg\"\n variant=\"secondary\"\n loading={addToCartLoading}\n className=\"tablet:w-auto laptop:w-1/2 laptop-md:w-auto w-1/2\"\n onClick={() => onAddToCart?.()}\n >\n {copyWriting?.addToCart}\n </Button>\n <Button\n size=\"lg\"\n loading={buyNowLoading}\n variant=\"primary\"\n className=\"tablet:w-auto laptop:w-1/2 laptop-md:w-auto w-1/2\"\n onClick={() => onBuyNow?.()}\n >\n {copyWriting?.shopNow}\n </Button>\n </div>\n </div>\n </GridItem>\n </Grid>\n </div>\n </div>\n )\n}\n\nconst useRecommendBuyProducts = () => {\n const { bundle, variant, checkedBundle, freeGift, checkedGift, exchangePurchase, checkedExchangePurchase } =\n useBizProductContext()\n let bundleVariant = undefined\n let giftVariant = undefined\n let exchangeVariant = undefined\n const { bundleList } = bundle || {}\n\n const { giftList = [] } = freeGift || {}\n const { giftList: exchangeList = [] } = exchangePurchase || {}\n\n const availableBundleList =\n bundleList?.filter(bundle =>\n bundle.variants.slice(1, bundle.variants.length).every(v => v.variant.availableForSale)\n ) || []\n\n const [firstAvailableBundle] = availableBundleList\n bundleVariant = checkedBundle || firstAvailableBundle\n\n const [firstAvailableGift] = giftList?.filter(gift => gift.availableForSale) ?? []\n giftVariant = checkedGift || firstAvailableGift\n\n const [firstAvailableExchange] = exchangeList?.filter(exchange => exchange.availableForSale) ?? []\n exchangeVariant = checkedExchangePurchase || firstAvailableExchange\n\n return { bundleVariant, giftVariant, exchangeVariant }\n}\n\nconst ProductBundleSummary = ({\n bundleOperation,\n bundleListItem,\n canOperate,\n status,\n}: {\n bundleOperation: (bundle?: BundleListItem) => void\n bundleListItem?: BundleListItem\n canOperate?: boolean\n status?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { variant, setCheckedBundle } = useBizProductContext()\n const bundleVariants = bundleListItem?.variants.filter(v => v.variant.sku !== variant.sku)\n\n return (\n <div className=\"\">\n {bundleVariants?.map(bundleVariant => {\n return (\n <div className=\"flex items-center justify-between gap-4\" key={bundleVariant.variant.id}>\n <div className=\"flex items-center gap-4\">\n <Picture\n source={bundleVariant?.variant?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none line-clamp-2 flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold\"\n html={bundleVariant.variant.product.title}\n />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-1\">\n {!!bundleListItem && (\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: bundleVariant?.price || 0,\n locale,\n currencyCode: bundleVariant.variant?.price?.currencyCode || '',\n })}\n />\n {bundleVariant.price < bundleVariant.variant.price.amount && (\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: bundleVariant.variant.price.amount || 0,\n locale,\n currencyCode: bundleVariant.variant?.price?.currencyCode || '',\n })}\n />\n )}\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedBundle?.(status ? undefined : bundleListItem)\n bundleOperation?.(bundleListItem)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nconst ProductGiftSummary = ({\n giftOperation,\n gift,\n status,\n canOperate,\n}: {\n giftOperation: (gift?: ProductVariant) => void\n gift?: ProductVariant\n status?: boolean\n canOperate?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { freeGift, setCheckedGift } = useBizProductContext()\n const { freeLabel } = freeGift || {}\n const { options } = gift || {}\n\n const giftOptionsText = useMemo(() => {\n const giftColorOption = (options?.find(\n option => option.name === 'color' || option.name === 'colour' || option.name === 'couleur'\n ) || {}) as ProductOption\n const giftQuantityOption = options?.find(option => option.name === 'quantity') || ({} as ProductOption)\n const giftColorOptionText = giftColorOption ? giftColorOption.values?.[0]?.label : ''\n const giftQuantityOptionText = giftQuantityOption ? giftQuantityOption.values?.[0]?.label : ''\n return `${giftColorOptionText && giftQuantityOptionText ? giftQuantityOptionText + ' | ' + giftColorOptionText : giftQuantityOptionText || giftColorOptionText} | ${freeLabel}`\n }, [freeLabel, options])\n\n return (\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={gift?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={gift?.product?.title}\n />\n <Text\n className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\"\n html={giftOptionsText}\n />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-2\">\n {!!gift && (\n <div className=\"flex items-center gap-1\">\n <Text className=\"laptop-md:text-2xl text-base font-bold\" html={freeLabel} />\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: gift.price.amount,\n locale,\n currencyCode: gift.price.currencyCode,\n })}\n />\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedGift?.(status ? undefined : gift)\n giftOperation(gift)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst ProductExchangeSummary = ({\n exchangeOperation,\n exchange,\n canOperate,\n status,\n}: {\n exchangeOperation: (exchange?: ProductVariant) => void\n exchange?: ProductVariant & { finalPrice?: ProductPrice }\n canOperate?: boolean\n status?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { setCheckedExchangePurchase } = useBizProductContext()\n\n return (\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={exchange?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={exchange?.product?.title}\n />\n <Text className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\" />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-2\">\n {!!exchange && (\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: exchange.finalPrice?.amount || 0,\n locale,\n currencyCode: exchange.price.currencyCode,\n })}\n />\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: exchange.price?.amount || 0,\n locale,\n currencyCode: exchange.price.currencyCode,\n })}\n />\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedExchangePurchase?.(status ? undefined : exchange)\n exchangeOperation(exchange)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nexport default withLayout(ProductSummary)\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["jsx", "jsxs", "Text", "Button", "Grid", "GridItem", "Picture", "Heading", "useBizProductContext", "useEffect", "useMemo", "useState", "formatPrice", "useAiuiContext", "Decimal", "replaceTemplate", "withLayout", "ExposureDetector", "gaTrack", "ProductSummary", "locale", "copyWriting", "product", "variant", "finalPrice", "comparePrice", "coupon", "selectedOptions", "selectedVariants", "totalSavings", "onAddToCart", "onBuyNow", "savingDetail", "checkedBundle", "joinedRecommendBuyProducts", "setJoinedRecommendBuyProducts", "setSavingDetail", "addToCartLoading", "buyNowLoading", "profile", "addOrder", "setAddOrder", "productSummaryData", "
|
|
4
|
+
"sourcesContent": ["import { Text, Button, Grid, GridItem, Picture, Heading } from '../../../../../components/index.js'\nimport { useBizProductContext } from '../../../BizProductProvider.js'\nimport { useComponentData } from '../../../hooks/useComponentData.js'\nimport { useEffect, useMemo, useState } from 'react'\nimport { formatPrice } from '../../../utils/index.js'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport type { BundleListItem, ProductVariant, ProductPrice, ProductOption } from '../../../types/product'\nimport Decimal from 'decimal.js'\nimport { replaceTemplate } from '../../../utils/textFormat.js'\nimport { withLayout } from '../../../../../shared/Styles.js'\nimport { ExposureDetector } from '../../../../../components/index.js'\nimport { gaTrack } from '../../../../../shared/track.js'\nimport CartActionButtons from '../../CartActionButtons/index.js'\n\nconst ProductSummary = () => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const {\n product,\n variant,\n finalPrice,\n comparePrice,\n coupon,\n selectedOptions,\n selectedVariants,\n totalSavings,\n onAddToCart,\n onBuyNow,\n savingDetail,\n checkedBundle,\n joinedRecommendBuyProducts,\n setJoinedRecommendBuyProducts,\n setSavingDetail,\n addToCartLoading,\n buyNowLoading,\n profile,\n addOrder,\n setAddOrder,\n } = useBizProductContext()\n\n const productSummaryData = useComponentData('ProductSummary') ?? {}\n\n const [currentProductVariant] = selectedVariants\n\n const summaryFinalPrice = useMemo(() => {\n const currentBundleVariant = checkedBundle?.variants.find(v => v.variant.sku === currentProductVariant?.sku)\n const currentBundlePrice = new Decimal(currentProductVariant?.price?.amount || 0)\n .minus(currentBundleVariant?.price || currentProductVariant?.price?.amount)\n .toNumber()\n let currentProductPrice = new Decimal(currentProductVariant?.price?.amount || 0)\n if (profile?.email) {\n currentProductPrice = currentProductPrice.minus(savingDetail?.member || 0)\n }\n const finalPrice = currentProductPrice.minus(savingDetail?.coupon).minus(currentBundlePrice).toNumber()\n return parseFloat(finalPrice.toFixed(2))\n }, [currentProductVariant, checkedBundle, profile, savingDetail?.member, savingDetail?.coupon])\n\n const { bundleVariant, giftVariant, exchangeVariant } = useRecommendBuyProducts() || {}\n\n const [initialRecommendBuyProducts, setInitialRecommendBuyProducts] = useState<{\n bundle?: BundleListItem\n gift?: ProductVariant\n exchange?: ProductVariant\n }>()\n\n useEffect(() => {\n setInitialRecommendBuyProducts({\n bundle: joinedRecommendBuyProducts.bundle?.value ? undefined : bundleVariant,\n gift: joinedRecommendBuyProducts.gift?.value ? undefined : giftVariant,\n exchange: joinedRecommendBuyProducts.exchange?.value ? undefined : exchangeVariant,\n })\n }, [bundleVariant, giftVariant, exchangeVariant, joinedRecommendBuyProducts])\n\n // \u6839\u636E\u6DFB\u52A0\u987A\u5E8F\u751F\u6210\u5DF2\u6DFB\u52A0\u4EA7\u54C1\u7684\u5217\u8868\n const orderedJoinedProducts = useMemo(() => {\n const result: Array<{ type: 'bundle' | 'gift' | 'exchange'; key: string }> = []\n\n // \u6309\u7167\u6DFB\u52A0\u987A\u5E8F\u6DFB\u52A0\n if (addOrder) {\n addOrder.forEach((type, index) => {\n if (joinedRecommendBuyProducts[type]?.value) {\n result.push({ type, key: `${type}-${index}` })\n }\n })\n }\n\n return result\n }, [addOrder, joinedRecommendBuyProducts])\n\n const productOptionsText = useMemo(() => {\n const quantity = selectedOptions?.quantity || ''\n const color = selectedOptions?.color || selectedOptions?.colour || selectedOptions?.couleur || ''\n return `${quantity && color ? `${quantity} | ${color}` : quantity || color}`\n }, [selectedOptions?.quantity, selectedOptions?.color, selectedOptions?.colour, selectedOptions?.couleur])\n\n const variantImage = useMemo(() => {\n const { image_1920, image_1440, image_1024, image_768, image_390 } = productSummaryData?.thumbnail || {}\n const responsiveSource = productSummaryData?.thumbnail\n ? `${image_1920} 1920, ${image_1440} 1440, ${image_1024} 1024, ${image_768} 768, ${image_390} 390`\n : variant.image?.url\n return responsiveSource || variant.image?.url\n }, [productSummaryData?.thumbnail, variant.image?.url])\n\n const isAvailable = variant.availableForSale\n if (!isAvailable) return null\n\n return (\n <div className=\"ipc-product-summary laptop:px-16 laptop-md:px-0 laptop-md:mt-[96px] lg-desktop:mt-[128px] mt-16\">\n <div className=\"laptop:rounded-2xl bg-[#F5F5F7]\">\n <Grid className=\"tablet:p-8 tablet:!pb-0 px-4 pt-6\">\n <GridItem className=\"laptop:col-start-1 laptop:col-span-5 col-span-12 flex flex-col justify-between gap-4\">\n <Heading\n className=\"lg-desktop:text-[48px] laptop:text-[32px] laptop-md:text-[40px] mb-4 text-[24px] font-bold leading-none [&>span]:text-[#D1D1D1]\"\n html={productSummaryData?.readyWant?.replace?.('{title}', product?.title)}\n />\n <div className=\"\">\n <Picture\n source={variantImage}\n className=\"lg-desktop:aspect-[644/320] laptop-md:aspect-[503/270] laptop:aspect-[332/190] tablet:aspect-[704/380] aspect-[358/190]\"\n imgClassName=\"object-cover h-full\"\n />\n </div>\n </GridItem>\n <GridItem className=\"tablet:pb-8 laptop:col-start-7 laptop:mt-0 laptop:col-span-6 col-span-12 mt-8 flex flex-col justify-between gap-6 pb-6\">\n <div>\n <div className=\"flex flex-col gap-4\">\n <ExposureDetector\n exposureKey=\"listing_selector\"\n onExposure={() => {\n gaTrack({\n event: 'ga4Event',\n event_name: 'component_impression',\n event_parameters: {\n page_group: `Product Detail Page${variant.sku}`,\n component_type: 'image',\n component_name: 'listing_selector',\n position: 1,\n },\n })\n }}\n >\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={variant.image?.url || product?.images?.[0]?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={product.title}\n />\n <Text\n className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\"\n html={productOptionsText}\n />\n </div>\n </div>\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: summaryFinalPrice,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n {summaryFinalPrice < variant?.price?.amount && (\n <Text\n className=\"laptop-md:text-2xl laptop:text-xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: variant?.price?.amount,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n )}\n </div>\n </div>\n </ExposureDetector>\n {/* \u6309\u7167\u6DFB\u52A0\u987A\u5E8F\u6E32\u67D3\u5DF2\u6DFB\u52A0\u7684\u4EA7\u54C1 */}\n {orderedJoinedProducts.map(({ type, key }) => {\n if (type === 'gift' && joinedRecommendBuyProducts?.gift?.value) {\n return (\n <ProductGiftSummary\n key={key}\n giftOperation={gift => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n gift: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, gift })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'gift'))\n }}\n status={!!joinedRecommendBuyProducts?.gift}\n gift={joinedRecommendBuyProducts?.gift?.value}\n canOperate={joinedRecommendBuyProducts?.gift?.canOperate}\n />\n )\n }\n if (type === 'bundle' && joinedRecommendBuyProducts?.bundle?.value) {\n return (\n <ProductBundleSummary\n key={key}\n bundleOperation={bundle => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n bundle: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, bundle })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'bundle'))\n }}\n status={!!joinedRecommendBuyProducts?.bundle}\n bundleListItem={joinedRecommendBuyProducts?.bundle?.value}\n canOperate={joinedRecommendBuyProducts?.bundle?.canOperate}\n />\n )\n }\n if (type === 'exchange' && joinedRecommendBuyProducts?.exchange?.value) {\n return (\n <ProductExchangeSummary\n key={key}\n exchangeOperation={exchange => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n exchange: {\n value: undefined,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, exchange })\n // \u4ECE\u6DFB\u52A0\u987A\u5E8F\u4E2D\u79FB\u9664\n setAddOrder?.(prev => prev.filter(t => t !== 'exchange'))\n }}\n status={!!joinedRecommendBuyProducts?.exchange}\n canOperate={joinedRecommendBuyProducts?.exchange?.canOperate}\n exchange={joinedRecommendBuyProducts?.exchange?.value}\n />\n )\n }\n return null\n })}\n </div>\n {(initialRecommendBuyProducts?.bundle ||\n initialRecommendBuyProducts?.gift ||\n initialRecommendBuyProducts?.exchange) && (\n <div className=\"laptop-md:mt-8 mt-6\">\n <Text className=\"laptop-md:text-[18px] text-sm font-bold\" html={productSummaryData?.recommendBuy} />\n <div className=\"laptop-md:gap-4 mt-4 flex flex-col gap-6\">\n {initialRecommendBuyProducts?.exchange && (\n <ProductExchangeSummary\n exchangeOperation={exchange => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n exchange: {\n value: exchange,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, exchange: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'exchange'])\n }}\n canOperate={joinedRecommendBuyProducts?.exchange?.canOperate}\n status={!initialRecommendBuyProducts?.exchange}\n exchange={initialRecommendBuyProducts?.exchange}\n />\n )}\n {initialRecommendBuyProducts?.bundle && (\n <ProductBundleSummary\n bundleOperation={bundle => {\n setSavingDetail?.({ ...savingDetail, exchangePurchase: 0 })\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n bundle: {\n value: bundle,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, bundle: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'bundle'])\n }}\n canOperate={joinedRecommendBuyProducts?.bundle?.canOperate}\n status={!initialRecommendBuyProducts?.bundle}\n bundleListItem={initialRecommendBuyProducts?.bundle}\n />\n )}\n {initialRecommendBuyProducts?.gift && (\n <ProductGiftSummary\n giftOperation={gift => {\n setJoinedRecommendBuyProducts?.({\n ...joinedRecommendBuyProducts,\n gift: {\n value: gift,\n canOperate: true,\n },\n })\n setInitialRecommendBuyProducts?.({ ...initialRecommendBuyProducts, gift: undefined })\n // \u6DFB\u52A0\u5230\u987A\u5E8F\u6570\u7EC4\u7684\u672B\u5C3E\n setAddOrder?.(prev => [...prev, 'gift'])\n }}\n canOperate={joinedRecommendBuyProducts?.gift?.canOperate}\n status={!initialRecommendBuyProducts?.gift}\n gift={initialRecommendBuyProducts?.gift}\n />\n )}\n </div>\n </div>\n )}\n </div>\n <div className=\"text-right\">\n <Text\n className=\"laptop:text-xl laptop-md:text-2xl text-right font-bold\"\n html={`${replaceTemplate(copyWriting?.totalPrice || '', { amount: formatPrice({ amount: parseFloat(finalPrice.toFixed(2)), currencyCode: variant.price.currencyCode, locale }) })}`}\n />\n\n {totalSavings > 0 && (\n <Text\n className=\"laptop:text-xl laptop-md:text-2xl ml-1 text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: comparePrice,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n )}\n <div className=\"mt-4 flex justify-end gap-3\">\n <CartActionButtons\n availableForSale={variant.availableForSale}\n addToCartText={copyWriting?.addToCart}\n buyNowText={copyWriting?.shopNow}\n addToCartLoading={addToCartLoading}\n buyNowLoading={buyNowLoading}\n addToCartClassName=\"tablet:w-auto laptop:w-1/2 laptop-md:w-auto w-1/2\"\n buyNowClassName=\"tablet:w-auto laptop:w-1/2 laptop-md:w-auto w-1/2\"\n onAddToCart={onAddToCart}\n onBuyNow={onBuyNow}\n />\n </div>\n </div>\n </GridItem>\n </Grid>\n </div>\n </div>\n )\n}\n\nconst useRecommendBuyProducts = () => {\n const { bundle, variant, checkedBundle, freeGift, checkedGift, exchangePurchase, checkedExchangePurchase } =\n useBizProductContext()\n let bundleVariant = undefined\n let giftVariant = undefined\n let exchangeVariant = undefined\n const { bundleList } = bundle || {}\n\n const { giftList = [] } = freeGift || {}\n const { giftList: exchangeList = [] } = exchangePurchase || {}\n\n const availableBundleList =\n bundleList?.filter(bundle =>\n bundle.variants.slice(1, bundle.variants.length).every(v => v.variant.availableForSale)\n ) || []\n\n const [firstAvailableBundle] = availableBundleList\n bundleVariant = checkedBundle || firstAvailableBundle\n\n const [firstAvailableGift] = giftList?.filter(gift => gift.availableForSale) ?? []\n giftVariant = checkedGift || firstAvailableGift\n\n const [firstAvailableExchange] = exchangeList?.filter(exchange => exchange.availableForSale) ?? []\n exchangeVariant = checkedExchangePurchase || firstAvailableExchange\n\n return { bundleVariant, giftVariant, exchangeVariant }\n}\n\nconst ProductBundleSummary = ({\n bundleOperation,\n bundleListItem,\n canOperate,\n status,\n}: {\n bundleOperation: (bundle?: BundleListItem) => void\n bundleListItem?: BundleListItem\n canOperate?: boolean\n status?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { variant, setCheckedBundle } = useBizProductContext()\n const bundleVariants = bundleListItem?.variants.filter(v => v.variant.sku !== variant.sku)\n\n return (\n <div className=\"\">\n {bundleVariants?.map(bundleVariant => {\n return (\n <div className=\"flex items-center justify-between gap-4\" key={bundleVariant.variant.id}>\n <div className=\"flex items-center gap-4\">\n <Picture\n source={bundleVariant?.variant?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none line-clamp-2 flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] text-[14px] font-bold\"\n html={bundleVariant.variant.product.title}\n />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-1\">\n {!!bundleListItem && (\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: bundleVariant?.price || 0,\n locale,\n currencyCode: bundleVariant.variant?.price?.currencyCode || '',\n })}\n />\n {bundleVariant.price < bundleVariant.variant.price.amount && (\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: bundleVariant.variant.price.amount || 0,\n locale,\n currencyCode: bundleVariant.variant?.price?.currencyCode || '',\n })}\n />\n )}\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedBundle?.(status ? undefined : bundleListItem)\n bundleOperation?.(bundleListItem)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nconst ProductGiftSummary = ({\n giftOperation,\n gift,\n status,\n canOperate,\n}: {\n giftOperation: (gift?: ProductVariant) => void\n gift?: ProductVariant\n status?: boolean\n canOperate?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { freeGift, setCheckedGift } = useBizProductContext()\n const { freeLabel } = freeGift || {}\n const { options } = gift || {}\n\n const giftOptionsText = useMemo(() => {\n const giftColorOption = (options?.find(\n option => option.name === 'color' || option.name === 'colour' || option.name === 'couleur'\n ) || {}) as ProductOption\n const giftQuantityOption = options?.find(option => option.name === 'quantity') || ({} as ProductOption)\n const giftColorOptionText = giftColorOption ? giftColorOption.values?.[0]?.label : ''\n const giftQuantityOptionText = giftQuantityOption ? giftQuantityOption.values?.[0]?.label : ''\n return `${giftColorOptionText && giftQuantityOptionText ? giftQuantityOptionText + ' | ' + giftColorOptionText : giftQuantityOptionText || giftColorOptionText} | ${freeLabel}`\n }, [freeLabel, options])\n\n return (\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={gift?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={gift?.product?.title}\n />\n <Text\n className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\"\n html={giftOptionsText}\n />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-2\">\n {!!gift && (\n <div className=\"flex items-center gap-1\">\n <Text className=\"laptop-md:text-2xl text-base font-bold\" html={freeLabel} />\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: gift.price.amount,\n locale,\n currencyCode: gift.price.currencyCode,\n })}\n />\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedGift?.(status ? undefined : gift)\n giftOperation(gift)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nconst ProductExchangeSummary = ({\n exchangeOperation,\n exchange,\n canOperate,\n status,\n}: {\n exchangeOperation: (exchange?: ProductVariant) => void\n exchange?: ProductVariant & { finalPrice?: ProductPrice }\n canOperate?: boolean\n status?: boolean\n}) => {\n const { locale = 'us', copyWriting } = useAiuiContext()\n const { setCheckedExchangePurchase } = useBizProductContext()\n\n return (\n <div className=\"flex items-center justify-between gap-6\">\n <div className=\"flex items-center gap-4\">\n <Picture\n source={exchange?.image?.url}\n className=\"laptop:size-12 lg-desktop:size-16 border-1 size-10 shrink-0 rounded-lg border-[#E4E5E6] bg-[#EAEAEC] object-cover p-2\"\n />\n <div className=\"tablet:max-w-none flex max-w-[178px] flex-col gap-[6px]\">\n <Text\n className=\"laptop-md:text-[16px] lg-desktop:text-[18px] line-clamp-2 text-[14px] font-bold\"\n html={exchange?.product?.title}\n />\n <Text className=\"laptop:text-[14px] laptop-md:text-[18px] text-[12px] font-bold text-[#6D6D6F]\" />\n </div>\n </div>\n <div className=\"flex flex-col items-end justify-center gap-2\">\n {!!exchange && (\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"laptop-md:text-2xl text-base font-bold\"\n html={formatPrice({\n amount: exchange.finalPrice?.amount || 0,\n locale,\n currencyCode: exchange.price.currencyCode,\n })}\n />\n <Text\n className=\"laptop-md:text-2xl text-base font-bold text-[#6D6D6F] line-through\"\n html={formatPrice({\n amount: exchange.price?.amount || 0,\n locale,\n currencyCode: exchange.price.currencyCode,\n })}\n />\n </div>\n )}\n {canOperate && (\n <Button\n size=\"icon\"\n variant=\"link\"\n onClick={() => {\n setCheckedExchangePurchase?.(status ? undefined : exchange)\n exchangeOperation(exchange)\n }}\n className=\"size-auto shrink-0 underline\"\n >\n {status ? copyWriting?.remove : copyWriting?.add}\n </Button>\n )}\n </div>\n </div>\n )\n}\n\nexport default withLayout(ProductSummary)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "Text", "Button", "Grid", "GridItem", "Picture", "Heading", "useBizProductContext", "useComponentData", "useEffect", "useMemo", "useState", "formatPrice", "useAiuiContext", "Decimal", "replaceTemplate", "withLayout", "ExposureDetector", "gaTrack", "CartActionButtons", "ProductSummary", "locale", "copyWriting", "product", "variant", "finalPrice", "comparePrice", "coupon", "selectedOptions", "selectedVariants", "totalSavings", "onAddToCart", "onBuyNow", "savingDetail", "checkedBundle", "joinedRecommendBuyProducts", "setJoinedRecommendBuyProducts", "setSavingDetail", "addToCartLoading", "buyNowLoading", "profile", "addOrder", "setAddOrder", "productSummaryData", "currentProductVariant", "summaryFinalPrice", "currentBundleVariant", "v", "currentBundlePrice", "currentProductPrice", "bundleVariant", "giftVariant", "exchangeVariant", "useRecommendBuyProducts", "initialRecommendBuyProducts", "setInitialRecommendBuyProducts", "orderedJoinedProducts", "result", "type", "index", "productOptionsText", "quantity", "color", "variantImage", "image_1920", "image_1440", "image_1024", "image_768", "image_390", "key", "ProductGiftSummary", "gift", "prev", "t", "ProductBundleSummary", "bundle", "ProductExchangeSummary", "exchange", "freeGift", "checkedGift", "exchangePurchase", "checkedExchangePurchase", "bundleList", "giftList", "exchangeList", "availableBundleList", "firstAvailableBundle", "firstAvailableGift", "firstAvailableExchange", "bundleOperation", "bundleListItem", "canOperate", "status", "setCheckedBundle", "bundleVariants", "giftOperation", "setCheckedGift", "freeLabel", "options", "giftOptionsText", "giftColorOption", "option", "giftQuantityOption", "giftColorOptionText", "giftQuantityOptionText", "exchangeOperation", "setCheckedExchangePurchase", "ProductSummary_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o,jsxs as
|
|
1
|
+
import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Text as n,Container as A}from"../../../../../components/index.js";import{useAiuiContext as B}from"../../../../AiuiProvider/index.js";import{useBizProductContext as F}from"../../../BizProductProvider.js";import{useMemo as C}from"react";import{formatPrice as d}from"../../../utils/index.js";import{replaceTemplate as v}from"../../../utils/textFormat.js";import{useBenefits as M}from"../../../hooks/useBenefits.js";import L from"../../CartActionButtons/index.js";const E=({totalSavingsSlot:y}={})=>{const{copyWriting:e,locale:a="us"}=B(),{variant:t,finalPrice:u,totalSavings:l,isLogin:c,comparePrice:N,onAddToCart:S,onBuyNow:h,savingDetail:m,addToCartLoading:w,buyNowLoading:T,discount:R,memberFunctionResult:p}=F(),P=M({variant:t}),{commonCoupon:r,memberDiscount:i}=P;console.log(u,"finalPrice");const k=C(()=>v(e?.totalSavings||"",{amount:d({amount:l,currencyCode:t.price.currencyCode,locale:a})}),[e?.totalSavings,l,t.price.currencyCode,a]),x=C(()=>{if(!e?.unlockedSaving)return;const b=r?.enable?Number(r?.config?.fixed_value||0):0,f=i?.enable?i.config?.amount??0:0,g=Math.round((p?.withoutCouponMaxMemberTotalSave?Math.max(f,b):f+b)*100)/100;if(!(g<=0))return v(e.unlockedSaving,{amount:d({amount:g,currencyCode:t.price.currencyCode,locale:a})})},[e?.unlockedSaving,r?.enable,r?.config?.fixed_value,i?.enable,i?.config?.amount,p,t.price.currencyCode,a]);return s(A,{childClassName:"tablet:flex tablet:justify-end tablet:gap-8 laptop-md:px-0 desktop:px-0 tablet:items-center tablet:gap-4",className:"laptop-md:border-none laptop-md:py-0 border-t border-[#E4E5E6] bg-white py-3",children:[t.availableForSale?s("div",{className:"laptop-md:items-end flex flex-col justify-between",children:[s("div",{className:"flex items-center gap-1",children:[o(n,{className:"tablet:text-2xl laptop-md:text-xl lg-desktop:text-2xl text-xl font-bold !leading-[1.2]",html:d({amount:parseFloat(u.toFixed(2)),currencyCode:t.price.currencyCode,locale:a})}),(l>0||m?.member>0&&c)&&o(n,{className:"tablet:text-2xl laptop-md:text-xl lg-desktop:text-2xl text-xl font-bold !leading-[1.2] text-[#4A4C56] line-through",html:d({amount:N,currencyCode:t.price.currencyCode,locale:a})}),m?.member>0&&c&&o(n,{className:"bg-brand-0 rounded px-1 py-[2px] text-sm font-bold text-white",html:e?.memberPrice||"Member Price"})]}),y||(l>0||m?.member>0&&c?o(n,{className:"text-brand-0 tablet:text-end laptop-md:text-xl lg-desktop:text-2xl whitespace-nowrap text-[18px] font-bold !leading-[1.2]",html:`${k}`}):x?o(n,{className:"text-info-quaternary tablet:text-end laptop-md:text-xl lg-desktop:text-2xl whitespace-nowrap text-[18px] font-bold !leading-[1.2]",html:x}):null)]}):o(n,{className:"text-[20px] font-bold text-[#999999]",html:e?.soldOut??"Sold Out"}),o("div",{className:"tablet:mt-0 mt-2 flex items-center gap-2",children:o(L,{availableForSale:t.availableForSale,addToCartText:e?.addToCart??"Add to Cart",buyNowText:e?.buyNow??"Buy Now",addToCartLoading:w,buyNowLoading:T,onAddToCart:S,onBuyNow:h})})]})};var $=E;export{$ as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/biz-components/Listing/components/PurchaseBar/ProductActions/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Text,
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["jsx", "jsxs", "Text", "
|
|
4
|
+
"sourcesContent": ["import { Text, Container } from '../../../../../components/index.js'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport { useBizProductContext } from '../../../BizProductProvider.js'\nimport { useMemo, type ReactNode } from 'react'\nimport { formatPrice } from '../../../utils/index.js'\nimport { replaceTemplate } from '../../../utils/textFormat.js'\nimport { useBenefits } from '../../../hooks/useBenefits.js'\nimport CartActionButtons from '../../CartActionButtons/index.js'\n\nexport interface ProductActionsProps {\n /** \u81EA\u5B9A\u4E49\u603B\u8282\u7701\u7EC4\u4EF6\uFF0C\u4F20\u5165\u65F6\u4F1A\u66FF\u4EE3\u9ED8\u8BA4\u7684 totalSavings \u663E\u793A */\n totalSavingsSlot?: ReactNode\n}\n\nconst ProductActions = ({ totalSavingsSlot }: ProductActionsProps = {}) => {\n const { copyWriting, locale = 'us' } = useAiuiContext()\n const {\n variant,\n finalPrice,\n totalSavings,\n isLogin,\n comparePrice,\n onAddToCart,\n onBuyNow,\n savingDetail,\n addToCartLoading,\n buyNowLoading,\n discount,\n memberFunctionResult,\n } = useBizProductContext()\n const benefits = useBenefits({ variant })\n const { commonCoupon, memberDiscount } = benefits\n console.log(finalPrice, 'finalPrice')\n\n const totalSavingsText = useMemo(() => {\n return replaceTemplate(copyWriting?.totalSavings || '', {\n amount: formatPrice({ amount: totalSavings, currencyCode: variant.price.currencyCode, locale }),\n })\n }, [copyWriting?.totalSavings, totalSavings, variant.price.currencyCode, locale])\n\n const unlockedSavingText = useMemo(() => {\n if (!copyWriting?.unlockedSaving) return undefined\n\n const couponSaving = commonCoupon?.enable ? Number(commonCoupon?.config?.fixed_value || 0) : 0\n const memberSaving = memberDiscount?.enable ? (memberDiscount.config?.amount ?? 0) : 0\n\n // \u4E0D\u53EF\u53E0\u52A0\u65F6\u53D6\u4F1A\u5458\u4EF7\u4E0E code \u6298\u6263\u7684\u6700\u5927\u503C\uFF0C\u53EF\u53E0\u52A0\u65F6\u53D6\u4E8C\u8005\u4E4B\u548C\n const totalUnlocked = Math.round((\n memberFunctionResult?.withoutCouponMaxMemberTotalSave\n ? Math.max(memberSaving, couponSaving)\n : memberSaving + couponSaving\n ) * 100) / 100\n\n if (totalUnlocked <= 0) return undefined\n\n return replaceTemplate(copyWriting.unlockedSaving, {\n amount: formatPrice({\n amount: totalUnlocked,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n })\n }, [\n copyWriting?.unlockedSaving,\n commonCoupon?.enable,\n commonCoupon?.config?.fixed_value,\n memberDiscount?.enable,\n memberDiscount?.config?.amount,\n memberFunctionResult,\n variant.price.currencyCode,\n locale,\n ])\n\n return (\n <Container\n childClassName=\"tablet:flex tablet:justify-end tablet:gap-8 laptop-md:px-0 desktop:px-0 tablet:items-center tablet:gap-4\"\n className=\"laptop-md:border-none laptop-md:py-0 border-t border-[#E4E5E6] bg-white py-3\"\n >\n {variant.availableForSale ? (\n <div className=\"laptop-md:items-end flex flex-col justify-between\">\n <div className=\"flex items-center gap-1\">\n <Text\n className=\"tablet:text-2xl laptop-md:text-xl lg-desktop:text-2xl text-xl font-bold !leading-[1.2]\"\n html={formatPrice({\n amount: parseFloat(finalPrice.toFixed(2)),\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n {(totalSavings > 0 || (savingDetail?.member > 0 && isLogin)) && (\n <Text\n className=\"tablet:text-2xl laptop-md:text-xl lg-desktop:text-2xl text-xl font-bold !leading-[1.2] text-[#4A4C56] line-through\"\n html={formatPrice({\n amount: comparePrice,\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n />\n )}\n {savingDetail?.member > 0 && isLogin && (\n <Text\n className=\"bg-brand-0 rounded px-1 py-[2px] text-sm font-bold text-white\"\n html={copyWriting?.memberPrice || 'Member Price'}\n />\n )}\n </div>\n {totalSavingsSlot ||\n (totalSavings > 0 || (savingDetail?.member > 0 && isLogin) ? (\n <Text\n className=\"text-brand-0 tablet:text-end laptop-md:text-xl lg-desktop:text-2xl whitespace-nowrap text-[18px] font-bold !leading-[1.2]\"\n html={`${totalSavingsText}`}\n />\n ) : unlockedSavingText ? (\n <Text\n className=\"text-info-quaternary tablet:text-end laptop-md:text-xl lg-desktop:text-2xl whitespace-nowrap text-[18px] font-bold !leading-[1.2]\"\n html={unlockedSavingText}\n />\n ) : null)}\n </div>\n ) : (\n <Text className=\"text-[20px] font-bold text-[#999999]\" html={copyWriting?.soldOut ?? 'Sold Out'} />\n )}\n <div className=\"tablet:mt-0 mt-2 flex items-center gap-2\">\n <CartActionButtons\n availableForSale={variant.availableForSale}\n addToCartText={copyWriting?.addToCart ?? 'Add to Cart'}\n buyNowText={copyWriting?.buyNow ?? 'Buy Now'}\n addToCartLoading={addToCartLoading}\n buyNowLoading={buyNowLoading}\n onAddToCart={onAddToCart}\n onBuyNow={onBuyNow}\n />\n </div>\n </Container>\n )\n}\n\nexport default ProductActions\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "Text", "Container", "useAiuiContext", "useBizProductContext", "useMemo", "formatPrice", "replaceTemplate", "useBenefits", "CartActionButtons", "ProductActions", "totalSavingsSlot", "copyWriting", "locale", "variant", "finalPrice", "totalSavings", "isLogin", "comparePrice", "onAddToCart", "onBuyNow", "savingDetail", "addToCartLoading", "buyNowLoading", "discount", "memberFunctionResult", "benefits", "commonCoupon", "memberDiscount", "totalSavingsText", "unlockedSavingText", "couponSaving", "memberSaving", "totalUnlocked", "ProductActions_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as t,jsxs as a}from"react/jsx-runtime";import{Heading as m,Container as i}from"../../../../components/index.js";import{ProductActions as n}from"../index.js";import{useBizProductContext as c}from"../../BizProductProvider.js";import{useComponentData as u}from"../../hooks/useComponentData.js";import l from"./ScrollSpyNav/index.js";import{withLayout as f}from"../../../../shared/Styles.js";const b=({onSpyNavItemClick:e,totalSavingsSlot:p,actionsSlot:s})=>{const{product:d,renderRating:r}=c(),o=u("PurchaseBar")??[];return a("div",{id:"purchase-bar",className:"sticky left-0 top-0 z-[45] w-full border-b border-[#E4E5E6] bg-white",children:[t(i,{children:a("div",{className:"tablet:justify-between laptop-md:gap-16 tablet:gap-0 tablet:w-full flex flex-wrap items-center gap-[10px]",children:[a("div",{className:"laptop-md:pt-6 laptop-md:pb-0 min-w-0 flex-1 py-3",children:[t(m,{size:2,className:"line-clamp-2 text-wrap",html:d?.title}),t("div",{className:"laptop-md:block mt-3 hidden",children:t(l,{tabs:o,className:"",renderRating:r,onSpyNavItemClick:e})})]}),t("div",{className:"laptop-md:block hidden shrink-0",children:s??t(n,{totalSavingsSlot:p})})]})}),a(i,{className:"laptop-md:hidden relative",children:[t("div",{className:"absolute left-0 top-0 h-px w-full bg-[#E4E5E6]"}),t(l,{tabs:o,renderRating:r,onSpyNavItemClick:e})]})]})};var y=f(b);export{y as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/biz-components/Listing/components/PurchaseBar/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["jsx", "jsxs", "
|
|
4
|
+
"sourcesContent": ["import { Heading, Container } from '../../../../components/index.js'\nimport type { PurchaseBarProps } from './types.js'\nimport { ProductActions } from '../index.js'\nimport { useBizProductContext } from '../../BizProductProvider.js'\nimport { useComponentData } from '../../hooks/useComponentData.js'\nimport ScrollSpyNav from './ScrollSpyNav/index.js'\nimport { withLayout } from '../../../../shared/Styles.js'\n\nconst PurchaseBar = ({ onSpyNavItemClick, totalSavingsSlot, actionsSlot }: PurchaseBarProps) => {\n const { product, renderRating } = useBizProductContext()\n\n const PurchaseBarData = useComponentData('PurchaseBar') ?? []\n\n return (\n <div id=\"purchase-bar\" className=\"sticky left-0 top-0 z-[45] w-full border-b border-[#E4E5E6] bg-white\">\n <Container>\n <div className=\"tablet:justify-between laptop-md:gap-16 tablet:gap-0 tablet:w-full flex flex-wrap items-center gap-[10px]\">\n <div className=\"laptop-md:pt-6 laptop-md:pb-0 min-w-0 flex-1 py-3\">\n <Heading size={2} className=\"line-clamp-2 text-wrap\" html={product?.title} />\n <div className=\"laptop-md:block mt-3 hidden\">\n <ScrollSpyNav\n tabs={PurchaseBarData}\n className=\"\"\n renderRating={renderRating}\n onSpyNavItemClick={onSpyNavItemClick}\n />\n </div>\n </div>\n <div className=\"laptop-md:block hidden shrink-0\">\n {actionsSlot ?? <ProductActions totalSavingsSlot={totalSavingsSlot} />}\n </div>\n </div>\n </Container>\n <Container className=\"laptop-md:hidden relative\">\n <div className=\"absolute left-0 top-0 h-px w-full bg-[#E4E5E6]\"></div>\n <ScrollSpyNav tabs={PurchaseBarData} renderRating={renderRating} onSpyNavItemClick={onSpyNavItemClick} />\n </Container>\n </div>\n )\n}\n\nexport default withLayout(PurchaseBar)\n"],
|
|
5
|
+
"mappings": "AAiBU,OACE,OAAAA,EADF,QAAAC,MAAA,oBAjBV,OAAS,WAAAC,EAAS,aAAAC,MAAiB,kCAEnC,OAAS,kBAAAC,MAAsB,cAC/B,OAAS,wBAAAC,MAA4B,8BACrC,OAAS,oBAAAC,MAAwB,kCACjC,OAAOC,MAAkB,0BACzB,OAAS,cAAAC,MAAkB,+BAE3B,MAAMC,EAAc,CAAC,CAAE,kBAAAC,EAAmB,iBAAAC,EAAkB,YAAAC,CAAY,IAAwB,CAC9F,KAAM,CAAE,QAAAC,EAAS,aAAAC,CAAa,EAAIT,EAAqB,EAEjDU,EAAkBT,EAAiB,aAAa,GAAK,CAAC,EAE5D,OACEL,EAAC,OAAI,GAAG,eAAe,UAAU,uEAC/B,UAAAD,EAACG,EAAA,CACC,SAAAF,EAAC,OAAI,UAAU,4GACb,UAAAA,EAAC,OAAI,UAAU,oDACb,UAAAD,EAACE,EAAA,CAAQ,KAAM,EAAG,UAAU,yBAAyB,KAAMW,GAAS,MAAO,EAC3Eb,EAAC,OAAI,UAAU,8BACb,SAAAA,EAACO,EAAA,CACC,KAAMQ,EACN,UAAU,GACV,aAAcD,EACd,kBAAmBJ,EACrB,EACF,GACF,EACAV,EAAC,OAAI,UAAU,kCACZ,SAAAY,GAAeZ,EAACI,EAAA,CAAe,iBAAkBO,EAAkB,EACtE,GACF,EACF,EACAV,EAACE,EAAA,CAAU,UAAU,4BACnB,UAAAH,EAAC,OAAI,UAAU,iDAAiD,EAChEA,EAACO,EAAA,CAAa,KAAMQ,EAAiB,aAAcD,EAAc,kBAAmBJ,EAAmB,GACzG,GACF,CAEJ,EAEA,IAAOM,EAAQR,EAAWC,CAAW",
|
|
6
|
+
"names": ["jsx", "jsxs", "Heading", "Container", "ProductActions", "useBizProductContext", "useComponentData", "ScrollSpyNav", "withLayout", "PurchaseBar", "onSpyNavItemClick", "totalSavingsSlot", "actionsSlot", "product", "renderRating", "PurchaseBarData", "PurchaseBar_default"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PropsWithChildren } from 'react';
|
|
2
|
+
export interface SlideUpModalProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
showModal: boolean;
|
|
5
|
+
closeModal: () => void;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
declare const SlideUpModal: ({ title, showModal, closeModal, children, className, }: PropsWithChildren<SlideUpModalProps>) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export default SlideUpModal;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Heading as r}from"../../../../components/index.js";import{cn as m}from"../../../../helpers/index.js";import"react";import{motion as i}from"framer-motion";import n from"../../../HeaderNavigation/icons/Close.js";const b=({title:a,showModal:o,closeModal:l,children:s,className:d})=>t(i.div,{animate:o?{opacity:1}:{opacity:0,pointerEvents:"none"},transition:{duration:.15,bounce:0},className:"fixed inset-0 z-[1000] bg-black/50 opacity-0 tablet:flex tablet:items-center tablet:justify-center",children:e(i.div,{animate:o?{y:0}:{y:"100%"},transition:{duration:.2,ease:"easeOut"},className:m("absolute bottom-0 left-0 right-0 rounded-t-box overflow-hidden bg-white","tablet:static tablet:rounded-box tablet:h-auto tablet:max-h-[80vh] tablet:w-[896px] tablet:max-w-[90vw]",d),children:[t(i.div,{animate:o?{scale:1}:{scale:.95},transition:{duration:.15,bounce:0},className:"hidden size-full tablet:block",children:e("div",{className:"relative size-full overflow-auto",children:[e("div",{className:"sticky top-0 z-[2] bg-white",children:[a&&t(r,{size:2,className:"w-full py-6 px-4 text-xl tablet:px-8 tablet:pt-4 tablet:pb-2 font-bold",children:a}),t("button",{onClick:l,className:"absolute right-4 top-4 z-[2]","aria-label":"Close modal",children:t(n,{className:"size-6"})})]}),s]})}),e("div",{className:"flex flex-col max-h-[80vh] tablet:hidden",children:[e("div",{className:"relative shrink-0 bg-white",children:[a&&t("p",{className:"w-full py-4 pl-5 pr-12 text-xl font-bold",children:a}),t("button",{onClick:l,className:"absolute right-4 top-4 z-[2]","aria-label":"Close modal",children:t(n,{className:"size-6"})})]}),t("div",{className:"overflow-y-auto min-h-0 flex-1",children:s})]})]})});var h=b;export{h as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/SlideUpModal/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Heading } from '../../../../components/index.js'\nimport { cn } from '../../../../helpers/index.js'\nimport { type PropsWithChildren } from 'react'\nimport { motion } from 'framer-motion'\nimport Close from '../../../HeaderNavigation/icons/Close.js'\n\nexport interface SlideUpModalProps {\n title?: string\n showModal: boolean\n closeModal: () => void\n className?: string\n}\n\nconst SlideUpModal = ({\n title,\n showModal,\n closeModal,\n children,\n className,\n}: PropsWithChildren<SlideUpModalProps>) => {\n return (\n <motion.div\n animate={showModal ? { opacity: 1 } : { opacity: 0, pointerEvents: 'none'}}\n transition={{ duration: 0.15, bounce: 0 }}\n className=\"fixed inset-0 z-[1000] bg-black/50 opacity-0 tablet:flex tablet:items-center tablet:justify-center\"\n >\n <motion.div\n animate={showModal ? { y: 0 } : { y: '100%'}}\n transition={{ duration: 0.2, ease: 'easeOut'}}\n className={cn(\n 'absolute bottom-0 left-0 right-0 rounded-t-box overflow-hidden bg-white',\n 'tablet:static tablet:rounded-box tablet:h-auto tablet:max-h-[80vh] tablet:w-[896px] tablet:max-w-[90vw]',\n className\n )}\n >\n <motion.div\n animate={showModal ? { scale: 1 } : { scale: 0.95 }}\n transition={{ duration: 0.15, bounce: 0 }}\n className=\"hidden size-full tablet:block\"\n >\n <div className=\"relative size-full overflow-auto\">\n <div className=\"sticky top-0 z-[2] bg-white\">\n {title && (\n <Heading size={2} className=\"w-full py-6 px-4 text-xl tablet:px-8 tablet:pt-4 tablet:pb-2 font-bold\">\n {title}\n </Heading>\n )}\n <button onClick={closeModal} className=\"absolute right-4 top-4 z-[2]\" aria-label=\"Close modal\">\n <Close className=\"size-6\" />\n </button>\n </div>\n {children}\n </div>\n </motion.div>\n <div className=\"flex flex-col max-h-[80vh] tablet:hidden\">\n <div className=\"relative shrink-0 bg-white\">\n {title && <p className=\"w-full py-4 pl-5 pr-12 text-xl font-bold\">{title}</p>}\n <button onClick={closeModal} className=\"absolute right-4 top-4 z-[2]\" aria-label=\"Close modal\">\n <Close className=\"size-6\" />\n </button>\n </div>\n <div className=\"overflow-y-auto min-h-0 flex-1\">{children}</div>\n </div>\n </motion.div>\n </motion.div>\n )\n}\n\nexport default SlideUpModal\n"],
|
|
5
|
+
"mappings": "AAyCY,OAEI,OAAAA,EAFJ,QAAAC,MAAA,oBAzCZ,OAAS,WAAAC,MAAe,kCACxB,OAAS,MAAAC,MAAU,+BACnB,MAAuC,QACvC,OAAS,UAAAC,MAAc,gBACvB,OAAOC,MAAW,2CASlB,MAAMC,EAAe,CAAC,CACpB,MAAAC,EACA,UAAAC,EACA,WAAAC,EACA,SAAAC,EACA,UAAAC,CACF,IAEIX,EAACI,EAAO,IAAP,CACC,QAASI,EAAY,CAAE,QAAS,CAAE,EAAI,CAAE,QAAS,EAAG,cAAe,MAAM,EACzE,WAAY,CAAE,SAAU,IAAM,OAAQ,CAAE,EACxC,UAAU,qGAEV,SAAAP,EAACG,EAAO,IAAP,CACC,QAASI,EAAY,CAAE,EAAG,CAAE,EAAI,CAAE,EAAG,MAAM,EAC3C,WAAY,CAAE,SAAU,GAAK,KAAM,SAAS,EAC5C,UAAWL,EACT,0EACA,0GACAQ,CACF,EAEA,UAAAX,EAACI,EAAO,IAAP,CACC,QAASI,EAAY,CAAE,MAAO,CAAE,EAAI,CAAE,MAAO,GAAK,EAClD,WAAY,CAAE,SAAU,IAAM,OAAQ,CAAE,EACxC,UAAU,gCAEV,SAAAP,EAAC,OAAI,UAAU,mCACb,UAAAA,EAAC,OAAI,UAAU,8BACZ,UAAAM,GACCP,EAACE,EAAA,CAAQ,KAAM,EAAG,UAAU,yEACzB,SAAAK,EACH,EAEFP,EAAC,UAAO,QAASS,EAAY,UAAU,+BAA+B,aAAW,cAC/E,SAAAT,EAACK,EAAA,CAAM,UAAU,SAAS,EAC5B,GACF,EACCK,GACH,EACF,EACAT,EAAC,OAAI,UAAU,2CACb,UAAAA,EAAC,OAAI,UAAU,6BACZ,UAAAM,GAASP,EAAC,KAAE,UAAU,2CAA4C,SAAAO,EAAM,EACzEP,EAAC,UAAO,QAASS,EAAY,UAAU,+BAA+B,aAAW,cAC/E,SAAAT,EAACK,EAAA,CAAM,UAAU,SAAS,EAC5B,GACF,EACAL,EAAC,OAAI,UAAU,iCAAkC,SAAAU,EAAS,GAC5D,GACF,EACF,EAIJ,IAAOE,EAAQN",
|
|
6
|
+
"names": ["jsx", "jsxs", "Heading", "cn", "motion", "Close", "SlideUpModal", "title", "showModal", "closeModal", "children", "className", "SlideUpModal_default"]
|
|
7
|
+
}
|
|
@@ -27,3 +27,14 @@ export declare const PRICE_SYMBOL: {
|
|
|
27
27
|
es: string;
|
|
28
28
|
};
|
|
29
29
|
export declare const COLOR_LABEL: string[];
|
|
30
|
+
/**
|
|
31
|
+
* 黑名单:这些 componentKey 有独立的 variant 取值逻辑,
|
|
32
|
+
* 不参与"是否整体切换到 variant 数据源"的判断。
|
|
33
|
+
* - ProductGallery:自己做 product + variant 字段级 merge
|
|
34
|
+
* - ProductBanner:纯 variant.payload 取值,无 product fallback
|
|
35
|
+
*
|
|
36
|
+
* 规则:variant.payload.components 中,排除这些 key 之后,
|
|
37
|
+
* 如果还有其他 componentKey 存在,才整体切换到 variant 数据源。
|
|
38
|
+
* 如果排除后为空(如 variant 只配了 ProductGallery),则继续用 Product 数据源。
|
|
39
|
+
*/
|
|
40
|
+
export declare const VARIANT_PAYLOAD_EXCLUDED_KEYS: readonly ["ProductGallery", "ProductBanner"];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t=(e=>(e.fixedAmount="fixed_amount",e.percentage="percentage",e.fixedDiscountAmount="fix_discount_amount",e))(t||{}),
|
|
1
|
+
var t=(e=>(e.fixedAmount="fixed_amount",e.percentage="percentage",e.fixedDiscountAmount="fix_discount_amount",e))(t||{}),c=(r=>(r.LIGHTNING_DEAL="LIGHTNING_DEAL",r.DEAL="LIGHTNING_DEAL",r.COUPON="COUPON",r.PED="PED",r.WS24="WS24",r.WSTD="WSTD",r.WSCH="WSCH",r))(c||{});const L={us:"$",uk:"\xA3",ca:"$",eu:"\u20AC",pl:"z\u0142",fr:"\u20AC",de:"\u20AC",vn:"\u20AB",cl:"$",sg:"$",ae:"AED",es:"\u20AC"},A=["color","colour","couleur","cor","colore","farbe","\uC0C9","\u8272","\u30AB\u30E9\u30FC","f\xE4rg","farve"],E=["ProductGallery","ProductBanner"];export{A as COLOR_LABEL,c as CouponChannel,t as DiscountType,L as PRICE_SYMBOL,E as VARIANT_PAYLOAD_EXCLUDED_KEYS};
|
|
2
2
|
//# sourceMappingURL=const.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/biz-components/Listing/const.ts"],
|
|
4
|
-
"sourcesContent": ["export enum DiscountType {\n fixedAmount = 'fixed_amount',\n percentage = 'percentage',\n fixedDiscountAmount = 'fix_discount_amount',\n}\n\nexport enum CouponChannel {\n LIGHTNING_DEAL = 'LIGHTNING_DEAL',\n DEAL = 'LIGHTNING_DEAL',\n COUPON = 'COUPON',\n PED = 'PED',\n WS24 = 'WS24',\n WSTD = 'WSTD',\n WSCH = 'WSCH',\n}\n\nexport const PRICE_SYMBOL = {\n us: '$',\n uk: '\u00A3',\n ca: '$',\n eu: '\u20AC',\n pl: 'z\u0142',\n fr: '\u20AC',\n de: '\u20AC',\n vn: '\u20AB',\n cl: '$',\n sg: '$',\n ae: 'AED',\n es: '\u20AC',\n}\n\nexport const COLOR_LABEL = [\n 'color',\n 'colour',\n 'couleur',\n 'cor',\n 'colore',\n 'farbe',\n '\uC0C9',\n '\u8272',\n '\u30AB\u30E9\u30FC',\n 'f\u00E4rg',\n 'farve',\n]\n"],
|
|
5
|
-
"mappings": "AAAO,IAAKA,OACVA,EAAA,YAAc,eACdA,EAAA,WAAa,aACbA,EAAA,oBAAsB,sBAHZA,OAAA,IAMAC,OACVA,EAAA,eAAiB,iBACjBA,EAAA,KAAO,iBACPA,EAAA,OAAS,SACTA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,KAAO,OAPGA,OAAA,IAUL,MAAMC,EAAe,CAC1B,GAAI,IACJ,GAAI,OACJ,GAAI,IACJ,GAAI,SACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,MACJ,GAAI,QACN,EAEaC,EAAc,CACzB,QACA,SACA,UACA,MACA,SACA,QACA,SACA,SACA,qBACA,UACA,OACF",
|
|
6
|
-
"names": ["DiscountType", "CouponChannel", "PRICE_SYMBOL", "COLOR_LABEL"]
|
|
4
|
+
"sourcesContent": ["export enum DiscountType {\n fixedAmount = 'fixed_amount',\n percentage = 'percentage',\n fixedDiscountAmount = 'fix_discount_amount',\n}\n\nexport enum CouponChannel {\n LIGHTNING_DEAL = 'LIGHTNING_DEAL',\n DEAL = 'LIGHTNING_DEAL',\n COUPON = 'COUPON',\n PED = 'PED',\n WS24 = 'WS24',\n WSTD = 'WSTD',\n WSCH = 'WSCH',\n}\n\nexport const PRICE_SYMBOL = {\n us: '$',\n uk: '\u00A3',\n ca: '$',\n eu: '\u20AC',\n pl: 'z\u0142',\n fr: '\u20AC',\n de: '\u20AC',\n vn: '\u20AB',\n cl: '$',\n sg: '$',\n ae: 'AED',\n es: '\u20AC',\n}\n\nexport const COLOR_LABEL = [\n 'color',\n 'colour',\n 'couleur',\n 'cor',\n 'colore',\n 'farbe',\n '\uC0C9',\n '\u8272',\n '\u30AB\u30E9\u30FC',\n 'f\u00E4rg',\n 'farve',\n]\n\n/**\n * \u9ED1\u540D\u5355\uFF1A\u8FD9\u4E9B componentKey \u6709\u72EC\u7ACB\u7684 variant \u53D6\u503C\u903B\u8F91\uFF0C\n * \u4E0D\u53C2\u4E0E\"\u662F\u5426\u6574\u4F53\u5207\u6362\u5230 variant \u6570\u636E\u6E90\"\u7684\u5224\u65AD\u3002\n * - ProductGallery\uFF1A\u81EA\u5DF1\u505A product + variant \u5B57\u6BB5\u7EA7 merge\n * - ProductBanner\uFF1A\u7EAF variant.payload \u53D6\u503C\uFF0C\u65E0 product fallback\n *\n * \u89C4\u5219\uFF1Avariant.payload.components \u4E2D\uFF0C\u6392\u9664\u8FD9\u4E9B key \u4E4B\u540E\uFF0C\n * \u5982\u679C\u8FD8\u6709\u5176\u4ED6 componentKey \u5B58\u5728\uFF0C\u624D\u6574\u4F53\u5207\u6362\u5230 variant \u6570\u636E\u6E90\u3002\n * \u5982\u679C\u6392\u9664\u540E\u4E3A\u7A7A\uFF08\u5982 variant \u53EA\u914D\u4E86 ProductGallery\uFF09\uFF0C\u5219\u7EE7\u7EED\u7528 Product \u6570\u636E\u6E90\u3002\n */\nexport const VARIANT_PAYLOAD_EXCLUDED_KEYS = ['ProductGallery', 'ProductBanner'] as const\n"],
|
|
5
|
+
"mappings": "AAAO,IAAKA,OACVA,EAAA,YAAc,eACdA,EAAA,WAAa,aACbA,EAAA,oBAAsB,sBAHZA,OAAA,IAMAC,OACVA,EAAA,eAAiB,iBACjBA,EAAA,KAAO,iBACPA,EAAA,OAAS,SACTA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,KAAO,OACPA,EAAA,KAAO,OAPGA,OAAA,IAUL,MAAMC,EAAe,CAC1B,GAAI,IACJ,GAAI,OACJ,GAAI,IACJ,GAAI,SACJ,GAAI,UACJ,GAAI,SACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,MACJ,GAAI,QACN,EAEaC,EAAc,CACzB,QACA,SACA,UACA,MACA,SACA,QACA,SACA,SACA,qBACA,UACA,OACF,EAYaC,EAAgC,CAAC,iBAAkB,eAAe",
|
|
6
|
+
"names": ["DiscountType", "CouponChannel", "PRICE_SYMBOL", "COLOR_LABEL", "VARIANT_PAYLOAD_EXCLUDED_KEYS"]
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useComponentData<T = any>(componentKey: string): T | undefined;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as e}from"react";import{useBizProductContext as r}from"../BizProductProvider.js";function d(n){const{resolvedPayload:o}=r();return e(()=>o?.components?.find(t=>t.componentKey===n)?.data,[o,n])}export{d as useComponentData};
|
|
2
|
+
//# sourceMappingURL=useComponentData.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/biz-components/Listing/hooks/useComponentData.ts"],
|
|
4
|
+
"sourcesContent": ["import { useMemo } from 'react'\nimport { useBizProductContext } from '../BizProductProvider.js'\n\nexport function useComponentData<T = any>(componentKey: string): T | undefined {\n const { resolvedPayload } = useBizProductContext()\n return useMemo(() => {\n return resolvedPayload?.components?.find((item: any) => item.componentKey === componentKey)?.data\n }, [resolvedPayload, componentKey])\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,WAAAA,MAAe,QACxB,OAAS,wBAAAC,MAA4B,2BAE9B,SAASC,EAA0BC,EAAqC,CAC7E,KAAM,CAAE,gBAAAC,CAAgB,EAAIH,EAAqB,EACjD,OAAOD,EAAQ,IACNI,GAAiB,YAAY,KAAMC,GAAcA,EAAK,eAAiBF,CAAY,GAAG,KAC5F,CAACC,EAAiBD,CAAY,CAAC,CACpC",
|
|
6
|
+
"names": ["useMemo", "useBizProductContext", "useComponentData", "componentKey", "resolvedPayload", "item"]
|
|
7
|
+
}
|
|
@@ -42,7 +42,7 @@ export { default as CreativeModule } from './CreativeModule/index.js';
|
|
|
42
42
|
export { default as GraphicOverlay } from './GraphicOverlay/index.js';
|
|
43
43
|
export { default as Specs } from './Specs/index.js';
|
|
44
44
|
export { default as TabGroup } from './TabsGroup/index.js';
|
|
45
|
-
export { default as BizProductProvider } from './Listing/BizProductProvider.js';
|
|
45
|
+
export { default as BizProductProvider, useBizProductContext } from './Listing/BizProductProvider.js';
|
|
46
46
|
export { default as PurchaseBar } from './Listing/components/PurchaseBar/index.js';
|
|
47
47
|
export { default as ProductActions } from './Listing/components/PurchaseBar/ProductActions/index.js';
|
|
48
48
|
export type { ProductActionsProps } from './Listing/components/PurchaseBar/ProductActions/index.js';
|
|
@@ -62,6 +62,10 @@ export { default as ProductDetail } from './Listing/components/ProductCard/Produ
|
|
|
62
62
|
export { default as ProductSummary } from './Listing/components/ProductCard/ProductSummary/index.js';
|
|
63
63
|
export { default as BenefitsTab } from './Listing/components/ProductCard/ProductDetail/BenefitsTab.js';
|
|
64
64
|
export { default as PaidShipping } from './Listing/components/PaidShipping/index.js';
|
|
65
|
+
export { default as CartActionButtons } from './Listing/components/CartActionButtons/index.js';
|
|
66
|
+
export type { CartActionButtonsProps } from './Listing/components/CartActionButtons/index.js';
|
|
67
|
+
export { default as ProductServiceBenefits } from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js';
|
|
68
|
+
export type { ProductServiceBenefitsProps, ServiceBenefitItem, } from './Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js';
|
|
65
69
|
export { default as ProductPaidShipping } from './Listing/components/ProductCard/ProductPaidShipping/index.js';
|
|
66
70
|
export { default as GraphicMore } from './GraphicMore/index.js';
|
|
67
71
|
export { default as Features } from './Features/index.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{default as a}from"./ActivitySchedule/index.js";import{default as i}from"./GiftShelf/index.js";import{default as s}from"./GiftTierShelf/index.js";import{default as d}from"./ActivityMechanism/index.js";import{default as l}from"./BrandEquity/index.js";import{default as m}from"./MemberEquity/index.js";import{default as x}from"./Slogan/index.js";import{default as h}from"./Title/index.js";import{default as P}from"./Spacer/index.js";import{default as g}from"./ShelfDisplay/index.js";import{default as v}from"./Evaluate/index.js";import{default as B}from"./Category/index.js";import{default as j}from"./HeroBanner/index.js";import{default as D}from"./AccordionCards/index.js";import{default as G}from"./Graphic/index.js";import{default as k}from"./MediaPlayerBase/index.js";import{default as L}from"./MediaPlayerSticky/index.js";import{default as V}from"./MediaPlayerMulti/index.js";import{default as W}from"./Marquee/index.js";import{default as N}from"./MarqueeReview/index.js";import{default as H}from"./WhyChoose/index.js";import{default as _}from"./Faq/index.js";import{MarqueeItem as z,MarqueeImageContent as Y,MarqueeTextContent as J}from"./Marquee/index.js";import{default as X}from"./MultiLayoutGraphicBlock/index.js";import{default as $}from"./GraphicAttractionBlock/index.js";import{default as te}from"./HeaderNavigation/index.js";import{default as ae}from"./FooterNavigation/index.js";import{default as ie}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as se,SearchPageTabType as fe}from"./SearchPage/types.js";import{withLayout as ce}from"../shared/Styles.js";import{default as ue}from"./AiuiProvider/index.js";import{default as ne}from"./Tabs/index.js";import{default as ye}from"./CreativeModule/index.js";import{default as Se}from"./GraphicOverlay/index.js";import{default as Ce}from"./Specs/index.js";import{default as Me}from"./TabsGroup/index.js";import{default as Te}from"./Listing/BizProductProvider.js";import{default as Ie}from"./Listing/components/PurchaseBar/index.js";import{default as be}from"./Listing/components/PurchaseBar/ProductActions/index.js";import{default as Fe}from"./Listing/components/ProductCard/index.js";import{default as Ae}from"./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js";import{default as we}from"./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js";import{default as Oe}from"./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js";import{default as Ee}from"./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js";import{default as qe}from"./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js";import{default as Re}from"./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js";import{default as Ke}from"./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js";import{default as Ue}from"./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js";import{default as Ye}from"./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js";import{default as Qe}from"./Listing/components/ProductCard/ProductGridBox.js";import{default as Ze}from"./Listing/components/ProductCard/ProductGallery/index.js";import{default as et}from"./Listing/components/ProductCard/ProductDetail/index.js";import{default as rt}from"./Listing/components/ProductCard/ProductSummary/index.js";import{default as ot}from"./Listing/components/ProductCard/ProductDetail/BenefitsTab.js";import{default as pt}from"./Listing/components/PaidShipping/index.js";import{default as ft}from"./Listing/components/ProductCard/ProductPaidShipping/index.js";import{default as ct}from"./GraphicMore/index.js";import{default as ut}from"./Features/index.js";import{default as nt}from"./AplusDesc/index.js";import{default as yt}from"./GiftBox/index.js";import{default as St}from"./SelectStore/index.js";import{default as Ct}from"./DownLoad/index.js";import{default as Mt}from"./FootCharger/index.js";import{default as Tt}from"./BrandCardLink/index.js";import*as Bt from"./IPRedirect/index.js";import{default as jt}from"./WheelLottery/index.js";import{default as Dt}from"./ProductLottery/index.js";import{default as Gt}from"./ProductCompare/index.js";import{default as kt}from"./Ksp/index.js";import{default as Lt}from"./ImageTextFeature/index.js";import{default as Vt}from"./FeatureCards/index.js";import{default as Wt}from"./FeaturedBlogPosts/index.js";import{default as Nt}from"./ImageWithText/index.js";import{default as Ht}from"./VideoFeature/index.js";import{default as _t}from"./TabsWithMedia/index.js";import{default as zt}from"./TabWithImage/index.js";import{default as Jt}from"./FeatureShowcase/index.js";import{default as Xt}from"./ProductHero/index.js";import{default as $t}from"./SpecsComparison/index.js";import{default as tr}from"./MediaSceneSwitcher/index.js";import{default as ar}from"./MediaSceneSwitcherV2/index.js";import{default as ir}from"./ThreeDCarousel/index.js";import{default as sr}from"./ProductNav/index.js";import{default as dr}from"./AnchorNavigation/index.js";import{default as lr}from"./PromotionalBar/index.js";import{default as mr}from"./EventSchedule/index.js";import{default as xr}from"./SecondaryBanner/index.js";import{default as hr}from"./BuyOneGetOneShelf/index.js";import{default as Pr}from"./ActiveShelf/index.js";import{default as gr}from"./MediaShelf/index.js";import{default as vr,CreditsProductCard as Tr}from"./CreditsShelf/index.js";import{default as Ir,SceneProductCard as jr}from"./SceneShelf/index.js";import{default as Dr,SceneShelfV2ProductCard as Fr}from"./SceneShelfV2/index.js";import{default as Ar}from"./SceneShelfV3/index.js";import{default as wr}from"./MediaEndorsement/index.js";import{default as Or}from"./MediaTextOverlay/index.js";import{default as Er}from"./ImageOverlayShelf/index.js";import{default as qr}from"./ImageTextOverlay/index.js";import{default as Rr}from"./MiniCart/index.js";import{default as Kr}from"./MiniCart/CircleProgress.js";import{default as Ur,MiniCartDialog as zr}from"./MiniCart/MiniCartDialog.js";import{default as Jr}from"./WebPushPopup/index.js";import{useEmarsysWebPush as Xr}from"../hooks/useEmarsysWebPush.js";const e={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"TabsBlock","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};export{D as AccordionCards,Pr as ActiveShelf,d as ActivityMechanism,a as ActivitySchedule,ue as AiuiProvider,dr as AnchorNavigation,nt as AplusDesc,ot as BenefitsTab,Te as BizProductProvider,Tt as BrandCardLink,l as BrandEquity,hr as BuyOneGetOneShelf,B as Category,ye as CreativeModule,Tr as CreditsProductCard,vr as CreditsShelf,Ct as DownLoad,v as Evaluate,mr as EventSchedule,_ as Faq,Vt as FeatureCards,Jt as FeatureShowcase,Wt as FeaturedBlogPosts,ut as Features,Mt as FootCharger,ae as FooterNavigation,yt as GiftBox,i as GiftShelf,s as GiftTierShelf,G as Graphic,$ as GraphicAttractionBlock,ct as GraphicMore,Se as GraphicOverlay,te as HeaderNavigation,j as HeroBanner,se as IPC_SEARCH_PAGE,Bt as IPRedirect,Er as ImageOverlayShelf,Lt as ImageTextFeature,qr as ImageTextOverlay,Nt as ImageWithText,kt as Ksp,W as Marquee,Y as MarqueeImageContent,z as MarqueeItem,N as MarqueeReview,J as MarqueeTextContent,wr as MediaEndorsement,k as MediaPlayerBase,V as MediaPlayerMulti,L as MediaPlayerSticky,tr as MediaSceneSwitcher,ar as MediaSceneSwitcherV2,gr as MediaShelf,Or as MediaTextOverlay,m as MemberEquity,Rr as MiniCart,Kr as MiniCartCircleProgress,Ur as MiniCartDialog,zr as MiniCartDialogComponent,X as MultiLayoutGraphicBlock,e as PAYLOAD_COMPONENT_MAP,pt as PaidShipping,be as ProductActions,Ye as ProductBanner,we as ProductBenefits,Ae as ProductBenefitsTabs,Ke as ProductBundle,Fe as ProductCard,Gt as ProductCompare,Ue as ProductCoupon,et as ProductDetail,qe as ProductExchangePurchase,Ee as ProductFreeGift,Ze as ProductGallery,Qe as ProductGridBox,Xt as ProductHero,Oe as ProductHighlight,Dt as ProductLottery,sr as ProductNav,Re as ProductOptions,ft as ProductPaidShipping,rt as ProductSummary,lr as PromotionalBar,Ie as PurchaseBar,jr as SceneProductCard,Ir as SceneShelf,Dr as SceneShelfV2,Fr as SceneShelfV2ProductCard,Ar as SceneShelfV3,ie as SearchPage,fe as SearchPageTabType,xr as SecondaryBanner,St as SelectStore,g as ShelfDisplay,x as Slogan,P as Spacer,Ce as Specs,$t as SpecsComparison,Me as TabGroup,zt as TabWithImage,ne as Tabs,_t as TabsWithMedia,ir as ThreeDCarousel,h as Title,Ht as VideoFeature,Jr as WebPushPopup,jt as WheelLottery,H as WhyChoose,Xr as useEmarsysWebPush,ce as withLayout};
|
|
1
|
+
import{default as a}from"./ActivitySchedule/index.js";import{default as i}from"./GiftShelf/index.js";import{default as s}from"./GiftTierShelf/index.js";import{default as d}from"./ActivityMechanism/index.js";import{default as u}from"./BrandEquity/index.js";import{default as l}from"./MemberEquity/index.js";import{default as x}from"./Slogan/index.js";import{default as h}from"./Title/index.js";import{default as P}from"./Spacer/index.js";import{default as g}from"./ShelfDisplay/index.js";import{default as v}from"./Evaluate/index.js";import{default as T}from"./Category/index.js";import{default as j}from"./HeroBanner/index.js";import{default as D}from"./AccordionCards/index.js";import{default as A}from"./Graphic/index.js";import{default as L}from"./MediaPlayerBase/index.js";import{default as w}from"./MediaPlayerSticky/index.js";import{default as V}from"./MediaPlayerMulti/index.js";import{default as W}from"./Marquee/index.js";import{default as N}from"./MarqueeReview/index.js";import{default as H}from"./WhyChoose/index.js";import{default as _}from"./Faq/index.js";import{MarqueeItem as U,MarqueeImageContent as Y,MarqueeTextContent as J}from"./Marquee/index.js";import{default as X}from"./MultiLayoutGraphicBlock/index.js";import{default as $}from"./GraphicAttractionBlock/index.js";import{default as te}from"./HeaderNavigation/index.js";import{default as ae}from"./FooterNavigation/index.js";import{default as ie}from"./SearchPage/index.js";import{IPC_SEARCH_PAGE as se,SearchPageTabType as fe}from"./SearchPage/types.js";import{withLayout as ce}from"../shared/Styles.js";import{default as ne}from"./AiuiProvider/index.js";import{default as me}from"./Tabs/index.js";import{default as ye}from"./CreativeModule/index.js";import{default as Se}from"./GraphicOverlay/index.js";import{default as Ce}from"./Specs/index.js";import{default as Me}from"./TabsGroup/index.js";import{default as Be,useBizProductContext as Te}from"./Listing/BizProductProvider.js";import{default as je}from"./Listing/components/PurchaseBar/index.js";import{default as De}from"./Listing/components/PurchaseBar/ProductActions/index.js";import{default as Ae}from"./Listing/components/ProductCard/index.js";import{default as Le}from"./Listing/components/ProductCard/ProductDetail/ProductBenefitsTabs/index.js";import{default as we}from"./Listing/components/ProductCard/ProductDetail/ProductBenefits/index.js";import{default as Ve}from"./Listing/components/ProductCard/ProductDetail/ProductHighlight/index.js";import{default as We}from"./Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js";import{default as Ne}from"./Listing/components/ProductCard/ProductDetail/ProductExchangePurchase/index.js";import{default as He}from"./Listing/components/ProductCard/ProductDetail/ProductOptions/index.js";import{default as _e}from"./Listing/components/ProductCard/ProductDetail/ProductBundle/index.js";import{default as Ue}from"./Listing/components/ProductCard/ProductDetail/ProductCoupon/index.js";import{default as Je}from"./Listing/components/ProductCard/ProductDetail/ProductBanner/index.js";import{default as Xe}from"./Listing/components/ProductCard/ProductGridBox.js";import{default as $e}from"./Listing/components/ProductCard/ProductGallery/index.js";import{default as tt}from"./Listing/components/ProductCard/ProductDetail/index.js";import{default as at}from"./Listing/components/ProductCard/ProductSummary/index.js";import{default as it}from"./Listing/components/ProductCard/ProductDetail/BenefitsTab.js";import{default as st}from"./Listing/components/PaidShipping/index.js";import{default as dt}from"./Listing/components/CartActionButtons/index.js";import{default as ut}from"./Listing/components/ProductCard/ProductDetail/ProductServiceBenefits/index.js";import{default as lt}from"./Listing/components/ProductCard/ProductPaidShipping/index.js";import{default as xt}from"./GraphicMore/index.js";import{default as ht}from"./Features/index.js";import{default as Pt}from"./AplusDesc/index.js";import{default as gt}from"./GiftBox/index.js";import{default as vt}from"./SelectStore/index.js";import{default as Tt}from"./DownLoad/index.js";import{default as jt}from"./FootCharger/index.js";import{default as Dt}from"./BrandCardLink/index.js";import*as Ft from"./IPRedirect/index.js";import{default as Gt}from"./WheelLottery/index.js";import{default as kt}from"./ProductLottery/index.js";import{default as Ot}from"./ProductCompare/index.js";import{default as Et}from"./Ksp/index.js";import{default as qt}from"./ImageTextFeature/index.js";import{default as Rt}from"./FeatureCards/index.js";import{default as Kt}from"./FeaturedBlogPosts/index.js";import{default as zt}from"./ImageWithText/index.js";import{default as Yt}from"./VideoFeature/index.js";import{default as Qt}from"./TabsWithMedia/index.js";import{default as Zt}from"./TabWithImage/index.js";import{default as er}from"./FeatureShowcase/index.js";import{default as rr}from"./ProductHero/index.js";import{default as or}from"./SpecsComparison/index.js";import{default as pr}from"./MediaSceneSwitcher/index.js";import{default as fr}from"./MediaSceneSwitcherV2/index.js";import{default as cr}from"./ThreeDCarousel/index.js";import{default as nr}from"./ProductNav/index.js";import{default as mr}from"./AnchorNavigation/index.js";import{default as yr}from"./PromotionalBar/index.js";import{default as Sr}from"./EventSchedule/index.js";import{default as Cr}from"./SecondaryBanner/index.js";import{default as Mr}from"./BuyOneGetOneShelf/index.js";import{default as Br}from"./ActiveShelf/index.js";import{default as Ir}from"./MediaShelf/index.js";import{default as br,CreditsProductCard as Dr}from"./CreditsShelf/index.js";import{default as Ar,SceneProductCard as Gr}from"./SceneShelf/index.js";import{default as kr,SceneShelfV2ProductCard as wr}from"./SceneShelfV2/index.js";import{default as Vr}from"./SceneShelfV3/index.js";import{default as Wr}from"./MediaEndorsement/index.js";import{default as Nr}from"./MediaTextOverlay/index.js";import{default as Hr}from"./ImageOverlayShelf/index.js";import{default as _r}from"./ImageTextOverlay/index.js";import{default as Ur}from"./MiniCart/index.js";import{default as Jr}from"./MiniCart/CircleProgress.js";import{default as Xr,MiniCartDialog as Zr}from"./MiniCart/MiniCartDialog.js";import{default as ea}from"./WebPushPopup/index.js";import{useEmarsysWebPush as ra}from"../hooks/useEmarsysWebPush.js";const e={"ipc-accordioncards":"AccordionCards","ipc-aplusdesc":"AplusDesc","ipc-banner":"HeroBanner","ipc-brand-equity":"BrandEquity","ipc-category":"Category","ipc-collection-banner":"CollectionBanner","ipc-collection-shelves":"CollectionShelves","ipc-creativemodule":"CreativeModule","ipc-download":"DownLoad","ipc-evaluate":"Evaluate","ipc-faq":"Faq","ipc-features":"Features","ipc-footcharger":"FootCharger","ipc-ga-block":"GraphicAttractionBlock","ipc-giftbox":"GiftBox","ipc-giftshelf":"GiftShelf","ipc-graphic":"Graphic","ipc-graphicmore":"GraphicMore","ipc-graphicoverlay":"GraphicOverlay","ipc-marquee":"Marquee","ipc-mediaplayerbase":"MediaPlayerBase","ipc-mediaplayermulti":"MediaPlayerMulti","ipc-mediaplayersticky":"MediaPlayerSticky","ipc-member-equity":"MemberEquity","ipc-mlg-block":"MultiLayoutGraphicBlock","ipc-search-page-tabs":"SearchPageBlock","ipc-selectstore":"SelectStore","ipc-shelfdisplay":"ShelfDisplay","ipc-slogan":"Slogan","ipc-spacer":"Spacer","ipc-specs":"Specs","ipc-tabs":"Tabs","ipc-text-marquee":"TextMarquee","ipc-title":"Title","ipc-whychoose":"WhyChoose","ipc-product-nav":"ProductNav","ipc-brand-card-link":"BrandCardLink","ipc-ipredirect":"IPRedirect",ksp:"Ksp","ipc-secondary-banner":"SecondaryBanner","ipc-active-shelf":"ActiveShelf","ipc-media-shelf":"MediaShelf","ipc-bogo-shelf":"BuyOneGetOneShelf","ipc-media-endorsement":"MediaEndorsement","ipc-media-scene-switcher-v2":"MediaSceneSwitcherV2","ipc-featured-blog-posts":"FeaturedBlogPosts"};export{D as AccordionCards,Br as ActiveShelf,d as ActivityMechanism,a as ActivitySchedule,ne as AiuiProvider,mr as AnchorNavigation,Pt as AplusDesc,it as BenefitsTab,Be as BizProductProvider,Dt as BrandCardLink,u as BrandEquity,Mr as BuyOneGetOneShelf,dt as CartActionButtons,T as Category,ye as CreativeModule,Dr as CreditsProductCard,br as CreditsShelf,Tt as DownLoad,v as Evaluate,Sr as EventSchedule,_ as Faq,Rt as FeatureCards,er as FeatureShowcase,Kt as FeaturedBlogPosts,ht as Features,jt as FootCharger,ae as FooterNavigation,gt as GiftBox,i as GiftShelf,s as GiftTierShelf,A as Graphic,$ as GraphicAttractionBlock,xt as GraphicMore,Se as GraphicOverlay,te as HeaderNavigation,j as HeroBanner,se as IPC_SEARCH_PAGE,Ft as IPRedirect,Hr as ImageOverlayShelf,qt as ImageTextFeature,_r as ImageTextOverlay,zt as ImageWithText,Et as Ksp,W as Marquee,Y as MarqueeImageContent,U as MarqueeItem,N as MarqueeReview,J as MarqueeTextContent,Wr as MediaEndorsement,L as MediaPlayerBase,V as MediaPlayerMulti,w as MediaPlayerSticky,pr as MediaSceneSwitcher,fr as MediaSceneSwitcherV2,Ir as MediaShelf,Nr as MediaTextOverlay,l as MemberEquity,Ur as MiniCart,Jr as MiniCartCircleProgress,Xr as MiniCartDialog,Zr as MiniCartDialogComponent,X as MultiLayoutGraphicBlock,e as PAYLOAD_COMPONENT_MAP,st as PaidShipping,De as ProductActions,Je as ProductBanner,we as ProductBenefits,Le as ProductBenefitsTabs,_e as ProductBundle,Ae as ProductCard,Ot as ProductCompare,Ue as ProductCoupon,tt as ProductDetail,Ne as ProductExchangePurchase,We as ProductFreeGift,$e as ProductGallery,Xe as ProductGridBox,rr as ProductHero,Ve as ProductHighlight,kt as ProductLottery,nr as ProductNav,He as ProductOptions,lt as ProductPaidShipping,ut as ProductServiceBenefits,at as ProductSummary,yr as PromotionalBar,je as PurchaseBar,Gr as SceneProductCard,Ar as SceneShelf,kr as SceneShelfV2,wr as SceneShelfV2ProductCard,Vr as SceneShelfV3,ie as SearchPage,fe as SearchPageTabType,Cr as SecondaryBanner,vt as SelectStore,g as ShelfDisplay,x as Slogan,P as Spacer,Ce as Specs,or as SpecsComparison,Me as TabGroup,Zt as TabWithImage,me as Tabs,Qt as TabsWithMedia,cr as ThreeDCarousel,h as Title,Yt as VideoFeature,ea as WebPushPopup,Gt as WheelLottery,H as WhyChoose,Te as useBizProductContext,ra as useEmarsysWebPush,ce as withLayout};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|