@anker-in/headless-ui 1.0.20-alpha.1761126577041 → 1.0.20-alpha.1761134202138
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/Listing/ProductProvider.d.ts +57 -1
- package/dist/cjs/biz-components/Listing/ProductProvider.js +1 -1
- package/dist/cjs/biz-components/Listing/ProductProvider.js.map +3 -3
- package/dist/cjs/biz-components/Listing/components/PaidShipping/LearnMore.d.ts +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/LearnMore.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/LearnMore.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingMethod.d.ts +10 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingMethod.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingMethod.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.d.ts +25 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.d.ts +12 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/index.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/type.d.ts +30 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/type.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/type.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/utils.d.ts +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/utils.js +2 -0
- package/dist/cjs/biz-components/Listing/components/PaidShipping/utils.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +40 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +22 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +7 -0
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +3 -3
- 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/ProductSummary/index.js +1 -1
- package/dist/cjs/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.d.ts +50 -0
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.js +2 -0
- package/dist/cjs/biz-components/Listing/hooks/useBenefits.js.map +7 -0
- package/dist/cjs/biz-components/Listing/hooks/useCopy.d.ts +3 -6
- package/dist/cjs/biz-components/Listing/hooks/useCopy.js +1 -1
- package/dist/cjs/biz-components/Listing/hooks/useCopy.js.map +3 -3
- package/dist/cjs/biz-components/Listing/index.js +1 -1
- package/dist/cjs/biz-components/Listing/index.js.map +3 -3
- package/dist/cjs/biz-components/Listing/utils/helper.d.ts +15 -0
- package/dist/cjs/biz-components/Listing/utils/helper.js +1 -1
- package/dist/cjs/biz-components/Listing/utils/helper.js.map +3 -3
- package/dist/cjs/biz-components/Listing/utils/textFormat.d.ts +73 -0
- package/dist/cjs/biz-components/Listing/utils/textFormat.js +2 -0
- package/dist/cjs/biz-components/Listing/utils/textFormat.js.map +7 -0
- package/dist/cjs/biz-components/index.d.ts +2 -0
- package/dist/cjs/biz-components/index.js +1 -1
- package/dist/cjs/biz-components/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/ProductProvider.d.ts +57 -1
- package/dist/esm/biz-components/Listing/ProductProvider.js +1 -1
- package/dist/esm/biz-components/Listing/ProductProvider.js.map +3 -3
- package/dist/esm/biz-components/Listing/components/PaidShipping/LearnMore.d.ts +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/LearnMore.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/LearnMore.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingMethod.d.ts +10 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingMethod.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingMethod.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.d.ts +25 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.d.ts +12 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/index.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/type.d.ts +30 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/type.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/type.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/utils.d.ts +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/utils.js +2 -0
- package/dist/esm/biz-components/Listing/components/PaidShipping/utils.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.d.ts +40 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js +22 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map +7 -0
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductFreeGift/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/index.js.map +3 -3
- 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/ProductSummary/index.js +1 -1
- package/dist/esm/biz-components/Listing/components/ProductCard/ProductSummary/index.js.map +2 -2
- package/dist/esm/biz-components/Listing/hooks/useBenefits.d.ts +50 -0
- package/dist/esm/biz-components/Listing/hooks/useBenefits.js +2 -0
- package/dist/esm/biz-components/Listing/hooks/useBenefits.js.map +7 -0
- package/dist/esm/biz-components/Listing/hooks/useCopy.d.ts +3 -6
- package/dist/esm/biz-components/Listing/hooks/useCopy.js +1 -1
- package/dist/esm/biz-components/Listing/hooks/useCopy.js.map +3 -3
- package/dist/esm/biz-components/Listing/index.js +1 -1
- package/dist/esm/biz-components/Listing/index.js.map +3 -3
- package/dist/esm/biz-components/Listing/utils/helper.d.ts +15 -0
- package/dist/esm/biz-components/Listing/utils/helper.js +1 -1
- package/dist/esm/biz-components/Listing/utils/helper.js.map +3 -3
- package/dist/esm/biz-components/Listing/utils/textFormat.d.ts +73 -0
- package/dist/esm/biz-components/Listing/utils/textFormat.js +2 -0
- package/dist/esm/biz-components/Listing/utils/textFormat.js.map +7 -0
- package/dist/esm/biz-components/index.d.ts +2 -0
- package/dist/esm/biz-components/index.js +1 -1
- package/dist/esm/biz-components/index.js.map +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o,jsxs as i}from"react/jsx-runtime";import{formatPrice as u}from"../../utils/index.js";import{useAiuiContext as f}from"../../../AiuiProvider/index.js";import{Text as r}from"../../../../components/index.js";import{cn as t}from"../../../../helpers/index.js";import{ShippingMethodMode as g}from"./type.js";const y=({item:e,index:n,active:l,toggleShipping:p,currencyCode:d,metafields:s,className:x=""})=>{const{trackingData:m,locale:c="us"}=f(),b=m?.common?.copywriting;return i("div",{role:"button",tabIndex:0,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&p(e,n)},className:t("relative flex cursor-pointer items-center gap-[16px] overflow-hidden rounded-[8px] border border-[#E8E8E8] px-[16px] py-[24px] text-[#1F2021] md:py-[16px]",{"cursor-not-allowed opacity-60":e.disabled,"border-brand outline-1 outline-brand [outline-style:solid]":l},x),onClick:()=>p(e,n),children:[i("div",{className:"relative",children:[o(r,{className:t("text-[14px] font-bold leading-[1.4] laptop:text-[16px] lg-desktop:text-[18px]",{}),as:"p",html:e.title}),o(r,{className:t("mt-[8px] text-[12px] font-semibold leading-[1.4] text-[#999999] laptop:text-[14px]",{}),as:"p",html:e.subtitle})]}),o(r,{className:t("relative text-xl font-bold",{}),as:"p",html:e.price?u({amount:e.price,currencyCode:d,locale:c,removeTrailingZeros:!0}):b?.free}),e.mode!==g.FREE&&o("div",{className:t("absolute -right-[1px] -top-[1px] rounded-bl-[8px] rounded-tr-[8px] bg-brand px-[8px] py-[3px] text-[12px] font-bold leading-[1.4] text-white"),children:s?.memberOnly})]})};var w=y;export{w as default};
|
|
2
|
+
//# sourceMappingURL=ShippingMethod.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/PaidShipping/ShippingMethod.tsx"],
|
|
4
|
+
"sourcesContent": ["import { formatPrice } from '../../utils/index.js'\nimport { useAiuiContext } from '../../../AiuiProvider/index.js'\nimport { Text } from '../../../../components/index.js'\nimport { cn } from '../../../../helpers/index.js'\nimport { ShippingMethodMode } from './type.js'\n\nconst ShippingMethod = ({\n item,\n index,\n active,\n toggleShipping,\n currencyCode,\n metafields,\n className = '',\n}: {\n item: any\n index: number\n active: boolean\n toggleShipping: (item: any, index: number) => void\n currencyCode: string\n metafields: any\n className?: string\n}) => {\n const { trackingData, locale = 'us' } = useAiuiContext()\n const shopCommon = trackingData?.common?.copywriting\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n toggleShipping(item, index)\n }\n }}\n className={cn(\n 'relative flex cursor-pointer items-center gap-[16px] overflow-hidden rounded-[8px] border border-[#E8E8E8] px-[16px] py-[24px] text-[#1F2021] md:py-[16px]',\n {\n 'cursor-not-allowed opacity-60': item.disabled,\n 'border-brand outline-1 outline-brand [outline-style:solid]': active,\n },\n className\n )}\n onClick={() => toggleShipping(item, index)}\n >\n <div className=\"relative\">\n <Text\n className={cn('text-[14px] font-bold leading-[1.4] laptop:text-[16px] lg-desktop:text-[18px]', {})}\n as=\"p\"\n html={item.title}\n />\n <Text\n className={cn('mt-[8px] text-[12px] font-semibold leading-[1.4] text-[#999999] laptop:text-[14px]', {})}\n as=\"p\"\n html={item.subtitle}\n />\n </div>\n\n <Text\n className={cn('relative text-xl font-bold', {})}\n as=\"p\"\n html={\n item.price\n ? formatPrice({\n amount: item.price,\n currencyCode,\n locale,\n removeTrailingZeros: true,\n })\n : shopCommon?.free\n }\n />\n {item.mode !== ShippingMethodMode.FREE && (\n <div\n className={cn(\n 'absolute -right-[1px] -top-[1px] rounded-bl-[8px] rounded-tr-[8px] bg-brand px-[8px] py-[3px] text-[12px] font-bold leading-[1.4] text-white'\n )}\n >\n {metafields?.memberOnly}\n </div>\n )}\n </div>\n )\n}\n\nexport default ShippingMethod"],
|
|
5
|
+
"mappings": "AA6CM,OACE,OAAAA,EADF,QAAAC,MAAA,oBA7CN,OAAS,eAAAC,MAAmB,uBAC5B,OAAS,kBAAAC,MAAsB,iCAC/B,OAAS,QAAAC,MAAY,kCACrB,OAAS,MAAAC,MAAU,+BACnB,OAAS,sBAAAC,MAA0B,YAEnC,MAAMC,EAAiB,CAAC,CACtB,KAAAC,EACA,MAAAC,EACA,OAAAC,EACA,eAAAC,EACA,aAAAC,EACA,WAAAC,EACA,UAAAC,EAAY,EACd,IAQM,CACJ,KAAM,CAAE,aAAAC,EAAc,OAAAC,EAAS,IAAK,EAAIb,EAAe,EACjDc,EAAaF,GAAc,QAAQ,YAEzC,OACEd,EAAC,OACC,KAAK,SACL,SAAU,EACV,UAAWiB,GAAK,EACVA,EAAE,MAAQ,SAAWA,EAAE,MAAQ,MACjCP,EAAeH,EAAMC,CAAK,CAE9B,EACA,UAAWJ,EACT,6JACA,CACE,gCAAiCG,EAAK,SACtC,6DAA8DE,CAChE,EACAI,CACF,EACA,QAAS,IAAMH,EAAeH,EAAMC,CAAK,EAEzC,UAAAR,EAAC,OAAI,UAAU,WACb,UAAAD,EAACI,EAAA,CACC,UAAWC,EAAG,gFAAiF,CAAC,CAAC,EACjG,GAAG,IACH,KAAMG,EAAK,MACb,EACAR,EAACI,EAAA,CACC,UAAWC,EAAG,qFAAsF,CAAC,CAAC,EACtG,GAAG,IACH,KAAMG,EAAK,SACb,GACF,EAEAR,EAACI,EAAA,CACC,UAAWC,EAAG,6BAA8B,CAAC,CAAC,EAC9C,GAAG,IACH,KACEG,EAAK,MACDN,EAAY,CACV,OAAQM,EAAK,MACb,aAAAI,EACA,OAAAI,EACA,oBAAqB,EACvB,CAAC,EACDC,GAAY,KAEpB,EACCT,EAAK,OAASF,EAAmB,MAChCN,EAAC,OACC,UAAWK,EACT,8IACF,EAEC,SAAAQ,GAAY,WACf,GAEJ,CAEJ,EAEA,IAAOM,EAAQZ",
|
|
6
|
+
"names": ["jsx", "jsxs", "formatPrice", "useAiuiContext", "Text", "cn", "ShippingMethodMode", "ShippingMethod", "item", "index", "active", "toggleShipping", "currencyCode", "metafields", "className", "trackingData", "locale", "shopCommon", "e", "ShippingMethod_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface Terms {
|
|
2
|
+
text: string;
|
|
3
|
+
url: string;
|
|
4
|
+
}
|
|
5
|
+
interface List {
|
|
6
|
+
title: string;
|
|
7
|
+
list: string[];
|
|
8
|
+
}
|
|
9
|
+
interface ShippingService {
|
|
10
|
+
title: string;
|
|
11
|
+
list: List[];
|
|
12
|
+
}
|
|
13
|
+
interface Data {
|
|
14
|
+
title: string;
|
|
15
|
+
shippingCoupon: List;
|
|
16
|
+
shippingService: ShippingService;
|
|
17
|
+
terms: Terms;
|
|
18
|
+
}
|
|
19
|
+
interface Props {
|
|
20
|
+
data: Data;
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
open: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const ShippingPolicyModal: ({ data, onClose, open }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Text as s,Link as m}from"../../../../components/index.js";import{Dialog as d,DialogContent as g}from"../../../../components/dialog";import{useRouter as x}from"next/router";import{useMemo as c}from"react";const S=({data:i,onClose:f,open:v})=>{const{asPath:o}=x(),a=c(()=>o?.split("?")?.[0]?.substring(1)?.replace(/\//g,"_"),[o]);return e(d,{children:e(g,{children:t("div",{className:"w-[729px] p-[40px] md:w-[358px] md:px-[24px]",children:[e(s,{className:"text-[32px] font-bold leading-[1.2] md:text-[20px]",html:i?.title}),t("div",{className:"mt-[16px]",children:[e(s,{className:"text-[20px] font-bold leading-[1.2] md:text-[16px]",html:i?.shippingCoupon?.title}),e("ul",{className:"mt-3 grid grid-flow-row gap-[4px] font-semibold leading-[1.4]",children:i?.shippingCoupon?.list.map((l,p)=>t("li",{className:"text-[16px]",children:[t("span",{children:[p+1,"."]}),e("span",{className:"ml-[4px]",children:l})]},p))}),t("div",{className:"mt-[24px] md:mt-[16px]",children:[e(s,{className:"text-[20px] font-bold leading-[1.2] md:text-[16px]",html:i?.shippingService?.title}),e("div",{className:"mt-[12px] grid w-full grid-cols-2 gap-[12px] md:grid-cols-1",children:i?.shippingService?.list.map((l,p)=>t("div",{className:"rounded-[12px] bg-[#F5F5F7] p-[16px] md:p-[12px]",children:[e(s,{as:"p",className:"text-[20px] font-bold leading-[1.2] md:text-[16px]",html:l.title}),e("div",{className:"mt-[12px] grid grid-flow-row gap-[4px]",children:l.list.map((n,r)=>e(s,{as:"p",className:"text-[16px] font-semibold leading-[1.2]",children:n},r))})]},p))})]}),e(m,{className:"mt-[16px] block text-[16px] font-semibold leading-[1.2] underline",href:`${i?.terms?.url}?ref=${a}`,children:i?.terms?.text})]})]})})})};export{S as ShippingPolicyModal};
|
|
2
|
+
//# sourceMappingURL=ShippingPolicyModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/PaidShipping/ShippingPolicyModal.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Text, Link } from '../../../../components/index.js'\nimport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '../../../../components/dialog'\nimport { useRouter } from 'next/router'\nimport { useMemo } from 'react'\n\ninterface Terms {\n text: string\n url: string\n}\n\ninterface List {\n title: string\n list: string[]\n}\n\ninterface ShippingService {\n title: string\n list: List[]\n}\n\ninterface Data {\n title: string\n shippingCoupon: List\n shippingService: ShippingService\n terms: Terms\n}\n\ninterface Props {\n data: Data\n onClose: () => void\n open: boolean\n}\n\nexport const ShippingPolicyModal = ({ data, onClose, open }: Props) => {\n const { asPath } = useRouter()\n const ref = useMemo(() => {\n return asPath?.split('?')?.[0]?.substring(1)?.replace(/\\//g, '_')\n }, [asPath])\n return (\n <Dialog>\n <DialogContent>\n <div\n className=\"w-[729px] p-[40px] md:w-[358px] md:px-[24px]\"\n // closeModal={onClose}\n // showModal={open}\n // stickyHeader={false}\n >\n <Text className=\"text-[32px] font-bold leading-[1.2] md:text-[20px]\" html={data?.title} />\n <div className=\"mt-[16px]\">\n <Text className=\"text-[20px] font-bold leading-[1.2] md:text-[16px]\" html={data?.shippingCoupon?.title} />\n <ul className=\"mt-3 grid grid-flow-row gap-[4px] font-semibold leading-[1.4]\">\n {data?.shippingCoupon?.list.map((item, index) => (\n <li className=\"text-[16px]\" key={index}>\n <span>{index + 1}.</span>\n <span className=\"ml-[4px]\">{item}</span>\n </li>\n ))}\n </ul>\n <div className=\"mt-[24px] md:mt-[16px]\">\n <Text\n className=\"text-[20px] font-bold leading-[1.2] md:text-[16px]\"\n html={data?.shippingService?.title}\n />\n <div className=\"mt-[12px] grid w-full grid-cols-2 gap-[12px] md:grid-cols-1\">\n {data?.shippingService?.list.map((item, index) => (\n <div className=\"rounded-[12px] bg-[#F5F5F7] p-[16px] md:p-[12px]\" key={index}>\n <Text as=\"p\" className=\"text-[20px] font-bold leading-[1.2] md:text-[16px]\" html={item.title} />\n <div className=\"mt-[12px] grid grid-flow-row gap-[4px]\">\n {item.list.map((subItem, subIndex) => (\n <Text as=\"p\" className=\"text-[16px] font-semibold leading-[1.2]\" key={subIndex}>\n {subItem}\n </Text>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n <Link\n className=\"mt-[16px] block text-[16px] font-semibold leading-[1.2] underline\"\n href={`${data?.terms?.url}?ref=${ref}`}\n >\n {data?.terms?.text}\n </Link>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n"],
|
|
5
|
+
"mappings": "AA+CU,cAAAA,EAMQ,QAAAC,MANR,oBA/CV,OAAS,QAAAC,EAAM,QAAAC,MAAY,kCAC3B,OAAS,UAAAC,EAAQ,iBAAAC,MAA+D,gCAChF,OAAS,aAAAC,MAAiB,cAC1B,OAAS,WAAAC,MAAe,QA8BjB,MAAMC,EAAsB,CAAC,CAAE,KAAAC,EAAM,QAAAC,EAAS,KAAAC,CAAK,IAAa,CACrE,KAAM,CAAE,OAAAC,CAAO,EAAIN,EAAU,EACvBO,EAAMN,EAAQ,IACXK,GAAQ,MAAM,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,QAAQ,MAAO,GAAG,EAC/D,CAACA,CAAM,CAAC,EACX,OACEZ,EAACI,EAAA,CACC,SAAAJ,EAACK,EAAA,CACC,SAAAJ,EAAC,OACC,UAAU,+CAKV,UAAAD,EAACE,EAAA,CAAK,UAAU,qDAAqD,KAAMO,GAAM,MAAO,EACxFR,EAAC,OAAI,UAAU,YACb,UAAAD,EAACE,EAAA,CAAK,UAAU,qDAAqD,KAAMO,GAAM,gBAAgB,MAAO,EACxGT,EAAC,MAAG,UAAU,gEACX,SAAAS,GAAM,gBAAgB,KAAK,IAAI,CAACK,EAAMC,IACrCd,EAAC,MAAG,UAAU,cACZ,UAAAA,EAAC,QAAM,UAAAc,EAAQ,EAAE,KAAC,EAClBf,EAAC,QAAK,UAAU,WAAY,SAAAc,EAAK,IAFFC,CAGjC,CACD,EACH,EACAd,EAAC,OAAI,UAAU,yBACb,UAAAD,EAACE,EAAA,CACC,UAAU,qDACV,KAAMO,GAAM,iBAAiB,MAC/B,EACAT,EAAC,OAAI,UAAU,8DACZ,SAAAS,GAAM,iBAAiB,KAAK,IAAI,CAACK,EAAMC,IACtCd,EAAC,OAAI,UAAU,mDACb,UAAAD,EAACE,EAAA,CAAK,GAAG,IAAI,UAAU,qDAAqD,KAAMY,EAAK,MAAO,EAC9Fd,EAAC,OAAI,UAAU,yCACZ,SAAAc,EAAK,KAAK,IAAI,CAACE,EAASC,IACvBjB,EAACE,EAAA,CAAK,GAAG,IAAI,UAAU,0CACpB,SAAAc,GADmEC,CAEtE,CACD,EACH,IARqEF,CASvE,CACD,EACH,GACF,EAEAf,EAACG,EAAA,CACC,UAAU,oEACV,KAAM,GAAGM,GAAM,OAAO,GAAG,QAAQI,CAAG,GAEnC,SAAAJ,GAAM,OAAO,KAChB,GACF,GACF,EACF,EACF,CAEJ",
|
|
6
|
+
"names": ["jsx", "jsxs", "Text", "Link", "Dialog", "DialogContent", "useRouter", "useMemo", "ShippingPolicyModal", "data", "onClose", "open", "asPath", "ref", "item", "index", "subItem", "subIndex"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Product, ProductVariant } from '../../types/product';
|
|
2
|
+
import type { DeliveryCustom } from './type';
|
|
3
|
+
declare const PaidShipping: ({ metafields, productList, onShippingInfoChange, variant, className, }: {
|
|
4
|
+
metafields: any;
|
|
5
|
+
productList: Array<Product & {
|
|
6
|
+
variant: ProductVariant;
|
|
7
|
+
}>;
|
|
8
|
+
variant: ProductVariant;
|
|
9
|
+
onShippingInfoChange: (deliveryCustom: DeliveryCustom) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export default PaidShipping;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as o,jsxs as T}from"react/jsx-runtime";import{Text as c}from"../../../../components/index.js";import{useCallback as h,useEffect as O,useMemo as v,useState as g}from"react";import{cn as D}from"../../../../helpers";import E from"./ShippingMethod";import{ShippingPolicyModal as I}from"./ShippingPolicyModal";import{isWeightAvailable as b}from"./utils";import L from"./LearnMore";import{useProductContext as V}from"../../ProductProvider";const W=({metafields:i,productList:m,onShippingInfoChange:u,variant:y,className:P})=>{const{isLogin:_,openSignInPopup:w}=V(),[C,M]=g(!1),[S,N]=g(!1),[k,f]=g(null),x=v(()=>m.reduce((e,t)=>e+(t?.variant?.weight||0),0),[m]),r=h((e,t,n)=>({id:`${e.__code}__${e.price}`,code:e.__code,mode:e.__mode,title:e.title,disabled:!b(t,e),price:e.price,subtitle:e.subtitle,tag:n!==0?i?.memberOnly:"",error:b(t,e)?"":i.overWeightError}),[i?.memberOnly,i.overWeightError]),l=v(()=>{const e=i?.list?.map((t,n)=>r(t,x,n));return e?.reduce((t,n)=>{const d=e.filter(p=>p.code==n.code);let s;return d.every(p=>p.disabled)?s=d[d.length-1]:s=d.find(p=>!p.disabled),t.find(p=>s.id===p.id)?t:[...t,s]},[])},[r,i?.list,x]),a=h(e=>{u({selected_delivery_code:e.code,selected_delivery_mode:e.mode})},[u]);O(()=>{if(i?.list?.length>0&&!S){const e=r(i?.list[0],0,0);f(e),a(e),N(!0)}},[r,i?.list,a,S]);const A=h(e=>{e.disabled||(f(e),a(e))},[_,l,y.sku,a,w]);return T("div",{className:D("mt-[40px]",P),children:[o("div",{className:"flex flex-wrap justify-between space-x-2 md:space-x-1",children:o(c,{className:"text-[20px] font-bold leading-[1.4] text-[#1F2021] md:text-[16px]",html:i?.title})}),T("div",{className:"mt-[16px] flex flex-wrap gap-[12px] overflow-hidden md:mt-[12px] desktop:flex-nowrap",children:[l.map((e,t)=>o(E,{index:t,item:e,active:k?.code===e.code,toggleShipping:()=>A(e),currencyCode:y.price.currencyCode,metafields:i,className:"w-full laptop:w-[calc(50%-6px)] desktop:flex-1"},t)),o(L,{setOpenShippingPolicyModal:M,metafields:i,className:"w-full laptop:w-[calc(50%-6px)] desktop:w-1/3"})]}),l.find(e=>e?.error)&&o(c,{className:"mt-[16px] font-bold leading-[1.4] text-[#D41435] md:mt-[12px]",html:l.find(e=>e.error)?.error,as:"p"}),i?.seeAvailableArea&&o(c,{as:"div",className:"mt-[16px] font-bold leading-[1.4] text-[#1F2021] [&_a]:text-[#595959] [&_a]:underline",html:i?.seeAvailableArea}),i?.shippingPolicy&&o(I,{data:i?.shippingPolicy,onClose:()=>M(!1),open:C})]})};var Q=W;export{Q as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/PaidShipping/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Container, Text } from '../../../../components/index.js'\nimport type { Product, ProductVariant } from '../../types/product'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\nimport { cn } from '../../../../helpers'\n\nimport ShippingMethod from './ShippingMethod'\nimport { ShippingPolicyModal } from './ShippingPolicyModal'\nimport type { DeliveryCustom, shippingMetafields, ShippingMethodType } from './type'\nimport { isWeightAvailable } from './utils'\nimport LearnMore from './LearnMore'\nimport { useProductContext } from '../../ProductProvider'\n\nconst PaidShipping = ({\n metafields,\n productList,\n onShippingInfoChange,\n variant,\n className,\n}: {\n metafields: any\n productList: Array<Product & { variant: ProductVariant }>\n variant: ProductVariant\n onShippingInfoChange: (deliveryCustom: DeliveryCustom) => void\n className?: string\n}) => {\n const { isLogin, openSignInPopup } = useProductContext()\n const [openShippingPolicyModal, setOpenShippingPolicyModal] = useState(false)\n const [init, setInit] = useState(false)\n\n const [selectedMethod, setSelectedMethod] = useState<ShippingMethodType | null>(null)\n\n const weight = useMemo(() => {\n return productList.reduce((acc, product) => acc + (product?.variant?.weight || 0), 0)\n }, [productList])\n\n const normalizedMethod = useCallback(\n (method: shippingMetafields, weight: number, index: number) => {\n return {\n id: `${method.__code}__${method.price}`,\n code: method.__code,\n mode: method.__mode,\n title: method.title,\n disabled: !isWeightAvailable(weight, method),\n price: method.price,\n subtitle: method.subtitle,\n tag: index !== 0 ? metafields?.memberOnly : '',\n error: !isWeightAvailable(weight, method) ? metafields.overWeightError : '',\n }\n },\n [metafields?.memberOnly, metafields.overWeightError],\n )\n\n const list = useMemo(() => {\n const normalizedList: ShippingMethodType[] = metafields?.list?.map((method: shippingMetafields, index: number) => normalizedMethod(method, weight, index))\n\n return normalizedList?.reduce((prev: ShippingMethodType[], method: ShippingMethodType) => {\n // \u5982\u679C\u8D85\u91CD\uFF0C\u540C\u4E00\u4E2A\u7269\u6D41\u9009\u9879\u7C7B\u578B\u4E0B\uFF0C\u5C55\u793A\u5176\u4E2D\u4E00\u4E2A\u4E14\u4E0D\u53EF\u9009\n const sameTypeMethod = normalizedList.filter((m: ShippingMethodType) => m.code == method.code)\n let availableMethod: ShippingMethodType\n // \u6240\u6709\u7269\u6D41\u9009\u9879\u90FD\u4E0D\u53EF\u9009\n if (sameTypeMethod.every((m: ShippingMethodType) => m.disabled)) {\n availableMethod = sameTypeMethod[sameTypeMethod.length - 1]\n } else {\n // \u53EF\u9009\u7269\u6D41\u9009\u9879\n availableMethod = sameTypeMethod.find((m: ShippingMethodType) => !m.disabled)!\n }\n // \u5F53\u524D\u7269\u6D41\u9009\u9879\u5DF2\u5B58\u5728\n const hasSameMethod = prev.find((m: ShippingMethodType) => availableMethod.id === m.id)\n if (!hasSameMethod) {\n return [...prev, availableMethod]\n } else {\n return prev\n }\n }, [] as ShippingMethodType[])\n }, [normalizedMethod, metafields?.list, weight])\n\n const handleChangeShippingInfo = useCallback(\n (selectedMethod: ShippingMethodType) => {\n onShippingInfoChange({\n selected_delivery_code: selectedMethod.code,\n selected_delivery_mode: selectedMethod.mode,\n })\n },\n [onShippingInfoChange],\n )\n\n useEffect(() => {\n // \u9ED8\u8BA4\u9009\u4E2D\u7B2C\u4E00\u4E2A\u7269\u6D41\u9009\u9879\n if (metafields?.list?.length > 0 && !init) {\n const standardShippingMethod = normalizedMethod(metafields?.list[0], 0, 0)\n setSelectedMethod(standardShippingMethod)\n handleChangeShippingInfo(standardShippingMethod)\n setInit(true)\n }\n }, [normalizedMethod, metafields?.list, handleChangeShippingInfo, init])\n\n const toggleShipping = useCallback(\n (method: ShippingMethodType) => {\n if (method.disabled) {\n return\n }\n setSelectedMethod(method)\n handleChangeShippingInfo(method)\n // gaTrack({\n // event: 'ga4Event',\n // event_name: 'lp_button',\n // member_active_status: isLogin ? 'active' : 'not active', //\u7528\u4E8E\u8F93\u5165code\u6FC0\u6D3B\u4F1A\u5458\u5F39'\u7A97\u7684\u6309\u94AE\uFF0C\u533A\u5206\u4F1A\u5458\u6FC0\u6D3B\u72B6\u6001\uFF0C\u4F20active\u6216not active\n // event_parameters: {\n // page_group: 'Product Detail Page' + variant.sku, //\u5982\u679C\u662F\u9996\u9875\uFF0C\u5219\u4F20\"Home Page\";\u5982\u679C\u662Flisting\u7684\u9996\u5C4F\u6309\u94AE\uFF0C\u4F20Product Detail Page+$SKU\n // position: 'masterbanner1', //\u4F4D\u7F6E\u6807\u8BB0\u3002\u9996\u9875\u9996\u5C4F\u8F6E\u64AD\u4F4D\u7F6E\u4F20masterbanner1\u3001masterbanner2\u3001masterbanner3\uFF0C\u7B2C\u4E8C\u5C4F\u4F202nd_banner\uFF0C\u7B2C\u4E09\u5C4F\u4F203rd_banner\uFF0C\u6216\u8005\u53D6\u8BE5\u6A21\u5757\u5C0F\u6807\u9898\uFF0C\u6216\u80FD\u8BC6\u522B\u51FA\u662F\u54EA\u4E2A\u6A21\u5757\u4F4D\u7F6E\u7684\u6587\u6848\uFF0C\u5F39\u7A97\u4F20pop;\u5982\u679C\u662F\u8D2D\u7269\u8F66\u4FA7\u8FB9\u680F\uFF0C\u5219\u4F20\"Cart Pop Up\"\n // button_name: method.title, //\u53D6\u6309\u94AE\u6587\u6848\uFF0C\u6216\u80FD\u8BC6\u522B\u51FA\u662F\u54EA\u4E2A\u6309\u94AE\u7684\u6587\u6848,\u6BD4\u5982\u53F3\u4E0A\u89D2\u5173\u95ED\u4F20close,\u793E\u5A92\u5206\u4EAB\u56FE\u6807\u4F20\u5BF9\u5E94\u5E73\u53F0\u540D\u5B57\u5982Facebook,\u56FE\u7247\u5207\u6362\u5219\u4F20\u5BF9\u5E94\u5C55\u793A\u56FE\u7247\u7684\u540D\u5B57\n // info: '', //\u9ED8\u8BA4\u7A7A\u503C\uFF0C\u4E00\u822C\u4F20\u590D\u9009\u6846\u7684\u6587\u6848\u5185\u5BB9\uFF0C\u7279\u6B8A\u60C5\u51B5\u53EF\u6307\u5B9Ainfo\u503C\n // },\n // })\n },\n\n [isLogin, list, variant.sku, handleChangeShippingInfo, openSignInPopup],\n )\n\n return (\n <div className={cn('mt-[40px]', className)}>\n <div className='flex flex-wrap justify-between space-x-2 md:space-x-1'>\n <Text\n className='text-[20px] font-bold leading-[1.4] text-[#1F2021] md:text-[16px]'\n html={metafields?.title}\n ></Text>\n {/* <button\n onClick={() => {\n setOpenShippingPolicyModal(true)\n }}\n className='text-brand-color text-[16px] font-semibold text-[#595959] underline md:text-[14px]'\n >\n {metafields?.policy}\n </button> */}\n </div>\n <div className='mt-[16px] flex flex-wrap gap-[12px] overflow-hidden md:mt-[12px] desktop:flex-nowrap'>\n {list.map((method: ShippingMethodType, index: number) => (\n <ShippingMethod\n key={index}\n index={index}\n item={method}\n active={selectedMethod?.code === method.code}\n toggleShipping={() => toggleShipping(method)}\n currencyCode={variant.price.currencyCode}\n metafields={metafields}\n className='w-full laptop:w-[calc(50%-6px)] desktop:flex-1'\n />\n ))}\n {/* learn more \u5361\u7247 */}\n <LearnMore\n setOpenShippingPolicyModal={setOpenShippingPolicyModal}\n metafields={metafields}\n className='w-full laptop:w-[calc(50%-6px)] desktop:w-1/3'\n />\n </div>\n {list.find((method: ShippingMethodType) => method?.error) && (\n <Text\n className='mt-[16px] font-bold leading-[1.4] text-[#D41435] md:mt-[12px]'\n html={list.find((method: ShippingMethodType) => method.error)?.error as string}\n as='p'\n />\n )}\n\n {metafields?.seeAvailableArea && (\n <Text\n as='div'\n className='mt-[16px] font-bold leading-[1.4] text-[#1F2021] [&_a]:text-[#595959] [&_a]:underline'\n html={metafields?.seeAvailableArea}\n />\n )}\n {metafields?.shippingPolicy && (\n <ShippingPolicyModal\n data={metafields?.shippingPolicy}\n onClose={() => setOpenShippingPolicyModal(false)}\n open={openShippingPolicyModal}\n />\n )}\n </div>\n )\n}\n\nexport default PaidShipping"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "Text", "useCallback", "useEffect", "useMemo", "useState", "cn", "ShippingMethod", "ShippingPolicyModal", "isWeightAvailable", "LearnMore", "useProductContext", "PaidShipping", "metafields", "productList", "onShippingInfoChange", "variant", "className", "isLogin", "openSignInPopup", "openShippingPolicyModal", "setOpenShippingPolicyModal", "init", "setInit", "selectedMethod", "setSelectedMethod", "weight", "acc", "product", "normalizedMethod", "method", "index", "list", "normalizedList", "prev", "sameTypeMethod", "m", "availableMethod", "handleChangeShippingInfo", "standardShippingMethod", "toggleShipping", "PaidShipping_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare enum ShippingMethodMode {
|
|
2
|
+
FREE = "free",
|
|
3
|
+
TDD = "tdd",
|
|
4
|
+
NDD = "ndd"
|
|
5
|
+
}
|
|
6
|
+
export type shippingMetafields = {
|
|
7
|
+
__mode: ShippingMethodMode;
|
|
8
|
+
__code: string;
|
|
9
|
+
title: string;
|
|
10
|
+
subtitle: string;
|
|
11
|
+
price: number;
|
|
12
|
+
weight_low?: number | null;
|
|
13
|
+
weight_high?: number | null;
|
|
14
|
+
__plus?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type ShippingMethodType = {
|
|
17
|
+
error: unknown;
|
|
18
|
+
code: string;
|
|
19
|
+
mode: ShippingMethodMode;
|
|
20
|
+
title: string;
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
tag: string;
|
|
23
|
+
price: number;
|
|
24
|
+
subtitle: string;
|
|
25
|
+
id: string;
|
|
26
|
+
};
|
|
27
|
+
export type DeliveryCustom = {
|
|
28
|
+
selected_delivery_code?: string;
|
|
29
|
+
selected_delivery_mode?: ShippingMethodMode;
|
|
30
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/PaidShipping/type.ts"],
|
|
4
|
+
"sourcesContent": ["export enum ShippingMethodMode {\n FREE = 'free',\n TDD = 'tdd',\n NDD = 'ndd',\n}\n\nexport type shippingMetafields = {\n __mode: ShippingMethodMode\n __code: string\n title: string\n subtitle: string\n price: number\n weight_low?: number | null\n weight_high?: number | null\n __plus?: boolean\n}\n\nexport type ShippingMethodType = {\n error: unknown\n code: string\n mode: ShippingMethodMode\n title: string\n disabled: boolean\n tag: string\n price: number\n subtitle: string\n id: string\n}\n\nexport type DeliveryCustom = {\n selected_delivery_code?: string\n selected_delivery_mode?: ShippingMethodMode\n}\n"],
|
|
5
|
+
"mappings": "AAAO,IAAKA,OACVA,EAAA,KAAO,OACPA,EAAA,IAAM,MACNA,EAAA,IAAM,MAHIA,OAAA",
|
|
6
|
+
"names": ["ShippingMethodMode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/biz-components/Listing/components/PaidShipping/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import type { shippingMetafields } from './type.js'\n\nexport const isWeightAvailable = (weight: number, method: shippingMetafields) => {\n if (method.weight_high && method.weight_low) {\n return weight >= method.weight_low && weight <= method.weight_high\n } else if (method.weight_high && !method.weight_low) {\n return weight <= method.weight_high\n } else if (method.weight_low && !method.weight_high) {\n return weight >= method.weight_low\n } else {\n return true\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEO,MAAMA,EAAoB,CAACC,EAAgBC,IAC5CA,EAAO,aAAeA,EAAO,WACxBD,GAAUC,EAAO,YAAcD,GAAUC,EAAO,YAC9CA,EAAO,aAAe,CAACA,EAAO,WAChCD,GAAUC,EAAO,YACfA,EAAO,YAAc,CAACA,EAAO,YAC/BD,GAAUC,EAAO,WAEjB",
|
|
6
|
+
"names": ["isWeightAvailable", "weight", "method"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BenefitsTabTextConfig {
|
|
3
|
+
couponCode?: string;
|
|
4
|
+
copyCode?: string;
|
|
5
|
+
copied?: string;
|
|
6
|
+
expired?: string;
|
|
7
|
+
offCoupon?: string;
|
|
8
|
+
offMemberOnly?: string;
|
|
9
|
+
loginNow?: string;
|
|
10
|
+
selectFreeGift?: string;
|
|
11
|
+
bundleSaveUpTo?: string;
|
|
12
|
+
bundleOffer?: string;
|
|
13
|
+
creditsTitle?: string;
|
|
14
|
+
creditsDesc?: string;
|
|
15
|
+
yourBenefits?: string;
|
|
16
|
+
off?: string;
|
|
17
|
+
memberBenefits?: string;
|
|
18
|
+
memberBenefitsNotLogin?: string;
|
|
19
|
+
installment?: string;
|
|
20
|
+
forNewMember?: string;
|
|
21
|
+
expressShipping?: string;
|
|
22
|
+
creditsAfterActivation?: string;
|
|
23
|
+
active?: string;
|
|
24
|
+
flexibleInstallment?: string;
|
|
25
|
+
}
|
|
26
|
+
export type ModalData = {
|
|
27
|
+
needClickAway?: boolean;
|
|
28
|
+
className?: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
content?: string;
|
|
31
|
+
domContent?: React.ReactNode;
|
|
32
|
+
};
|
|
33
|
+
interface BenefitsTabProps {
|
|
34
|
+
textConfig?: BenefitsTabTextConfig;
|
|
35
|
+
openModal?: (modal: ModalData) => void;
|
|
36
|
+
openSignInPopup?: () => void;
|
|
37
|
+
openAuthCodePopup?: () => void;
|
|
38
|
+
}
|
|
39
|
+
declare const BenefitsTab: ({ textConfig, openModal, openSignInPopup, openAuthCodePopup, }: BenefitsTabProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
40
|
+
export default BenefitsTab;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import{Fragment as N,jsx as e,jsxs as t}from"react/jsx-runtime";import{Button as O,Checkbox as G,Text as d,Picture as k,Heading as V}from"../../../../../components/index.js";import a from"./ProductBenefitsTabs/index.js";import{useProductContext as P}from"../../../ProductProvider";import{useBenefits as z}from"../../../hooks/useBenefits";import{formatPrice as m}from"../../../utils/index.js";import{replaceTemplate as D}from"../../../utils/textFormat";import _ from"classnames";import"react";import{useAiuiContext as I}from"../../../../AiuiProvider/index.js";import E from"../../../../../hooks/useCountDown.js";import Y from"../../../hooks/useCopy";const j={couponCode:"Code",copyCode:"Copy Code",copied:"Copied",expired:"Expired",offCoupon:"{discount} off coupon",offMemberOnly:"{amount} off Member Only",loginNow:"Login now",selectFreeGift:"You can select the free gift below.",bundleSaveUpTo:"Bundle purchases save extra up to",bundleOffer:"We offer {count} bundle for you",creditsTitle:"Soundcore credits for cash",creditsDesc:"100 Soundcore credits=$1",yourBenefits:"Your Benefits",off:" off",memberBenefits:"Member Benefits",memberBenefitsNotLogin:"You will enjoy a {amount} member discount after logging in.",installment:"Installment",forNewMember:"{amount} for New Member",expressShipping:"Express Shipping Method",creditsAfterActivation:"You will get soundcoreCredits after activation. ",active:"Active",flexibleInstallment:"Flexible installment payment "},q=({item:o,textConfig:c})=>{const{trackingData:p}=I(),{copied:g,copy:b}=Y(),i=p?.common?.coupon,{days:C,hours:l,minutes:T,seconds:w}=E({endTime:o?.ends_at||""}),{openModal:h}=P();return t(N,{children:[e("style",{jsx:!0,children:`
|
|
2
|
+
.coupon-card {
|
|
3
|
+
/* \u4F7F\u7528mask\u521B\u5EFA\u5185\u5207\u5706\u89D2 */
|
|
4
|
+
mask:
|
|
5
|
+
radial-gradient(circle at 0 0, transparent 12px, white 12px),
|
|
6
|
+
radial-gradient(circle at 100% 0, transparent 12px, white 12px),
|
|
7
|
+
radial-gradient(circle at 100% 100%, transparent 12px, white 12px),
|
|
8
|
+
radial-gradient(circle at 0 100%, transparent 12px, white 12px);
|
|
9
|
+
mask-size: 50% 50%;
|
|
10
|
+
mask-position:
|
|
11
|
+
top left,
|
|
12
|
+
top right,
|
|
13
|
+
bottom right,
|
|
14
|
+
bottom left;
|
|
15
|
+
mask-repeat: no-repeat;
|
|
16
|
+
}
|
|
17
|
+
`}),t("div",{className:_("relative h-[130px] overflow-hidden bg-white",o.borderStyle==="inset"?"coupon-card ":"rounded-[8px]"),children:[o?.bgImage?.url&&e(k,{source:o.bgImage.url,alt:o.bgImage.alt,className:"absolute bottom-0 right-0 w-auto",imgClassName:"object-contain"}),t("div",{className:"relative z-1 p-3",children:[t("div",{className:"flex items-center justify-start",children:[o.useAble&&e(G,{className:"mr-2",defaultChecked:o.isAutoUse,onCheckedChange:B=>{o?.onUseChange?.(B)}}),e(d,{html:o.title,className:"text-[16px] font-bold laptop:text-[20px] lg-desktop:text-[24px]"})]}),e(d,{...typeof o.description=="string"?{html:o.description}:{},as:"p",className:"mt-2 pr-8 text-[14px] font-bold text-[#3D3D3F] lg-desktop:text-[16px]",children:o.description}),o.code&&t("div",{className:"mt-6 flex items-center gap-2",children:[e(d,{html:`${c.couponCode}: ${o.code}`,className:"text-base font-bold text-[#3D3D3F]"}),e("button",{className:"text-brand-0 text-base font-bold underline",onClick:()=>b(o.code??""),children:g?i?.copied||c.copied:i?.copy||c.copyCode})]}),o.ends_at&&e("button",{onClick:()=>{i?.modal&&h(i?.modal)},className:"mt-[4px] text-left text-[14px] font-semibold text-[#1F2021] x:text-[12px] md-l:hidden",children:Number(C)<Number(i?.hurry?.daysLeft)?t(N,{children:[e("span",{children:i?.ends}),e("span",{className:"font-bold",children:` ${C} ${i?.days} ${l.toString().padStart(2,"0")}:${T.toString().padStart(2,"0")}:${w.toString().padStart(2,"0")}`})]}):i?.hurry?.label||c.expired})]})]})]})},W=({coupons:o,className:c,textConfig:p})=>e("div",{className:_("flex flex-col gap-3",c),children:o?.map((g,b)=>e(q,{item:g,textConfig:p},b))}),K=({textConfig:o,openModal:c,openSignInPopup:p,openAuthCodePopup:g})=>{const{setSavingDetail:b,isLogin:i,profile:C,variant:l,renderAffirm:T,renderKlarna:w,renderPaypal:h}=P(),B=z({variant:l}),{trackingData:A,locale:u="us",copyWriting:Z}=I(),n={...j,...o},{activated:$=!1}=C||{},{memberDiscount:f,commonCoupon:r,creditsRedemption:v,freeGift:H,bundle:M,paidShipping:F,fullGift:L,levelDiscount:S}=B,U=A?.product?.support??{},{thirdParty:J={}}=A?.common||{},y=[r?.enable?{...r.config,isAutoUse:!0,useAble:!0,borderStyle:"rounded",code:r?.config?.title??"",description:r?.config?.desc??"",title:D(n.offCoupon,{discount:r?.config?.value_type=="percentage"?Math.abs(Number(r?.config?.value||0))+"%":m({amount:Math.abs(Number(r?.config?.fixed_value||0)),currencyCode:l.price.currencyCode,locale:u})})}:null,f.enable?{useAble:!0,isAutoUse:i,title:D(n.offMemberOnly,{amount:m({amount:f?.config?.amount??0,currencyCode:l.price.currencyCode,locale:u})}),description:t(N,{children:[i?f?.config?.description??"":n.memberBenefitsNotLogin.replace("{amount}",m({amount:f?.config?.amount??0,currencyCode:l.price.currencyCode,locale:u}))??""," ",i?"":e("span",{role:"button",tabIndex:0,onClick:()=>p?.(),className:"underline",children:n.loginNow})]}),borderStyle:"rounded",onUseChange:s=>{i?b(x=>({...x,member:s?f?.config?.amount??0:0})):p?.()}}:null,S.enable?{title:S?.config?.title??"",description:S?.config?.tag??"",borderStyle:"inset",bgImage:{url:"https://cdn.shopify.com/s/files/1/0521/9411/5753/files/levelDiscount.png?v=1760437385"}}:null,H.enable?{title:H?.config?.title??"",description:n.selectFreeGift,borderStyle:"inset",bgImage:{url:"https://cdn.shopify.com/s/files/1/0516/3761/6830/files/gift.png?v=1759113534"}}:null,M.enable?{title:`${n.bundleSaveUpTo} ${m({amount:Math.max(...M?.config?.bundleList?.map(s=>s.savings??0)??[]),currencyCode:l.price.currencyCode,locale:u})}`,borderStyle:"inset",description:n.bundleOffer.replace("{count}",M?.config?.bundleList?.length?.toString()??""),bgImage:{url:"https://cdn.shopify.com/s/files/1/0516/3761/6830/files/bundle.png?v=1759113534"}}:null,L.enable?{title:L?.config?.title??"",description:L?.config?.desc??"",borderStyle:"inset",bgImage:{url:"https://cdn.shopify.com/s/files/1/0516/3761/6830/files/fullGift.png?v=1759141790"}}:null,v.enable?{title:n.creditsTitle,description:n.creditsDesc,borderStyle:"inset",bgImage:{url:"https://cdn.shopify.com/s/files/1/0516/3761/6830/files/cash.png?v=1759113534"}}:null].filter(Boolean),R=()=>{g?.()};return a?t(a,{defaultValue:y?.length?"coupon":"membership",children:[t(a.List,{children:[y?.length?t(a.Trigger,{value:"coupon",children:[n.yourBenefits,r?.enable&&t(a.Badge,{children:[r?.config?.value_type=="percentage"?Math.abs(Number(r?.config?.value||0))+"%":m({amount:Math.abs(Number(r?.config?.fixed_value||0)),currencyCode:l.price.currencyCode,locale:u}),n.off]})]}):null,e(a.Trigger,{value:"membership",children:n.memberBenefits}),e(a.Trigger,{value:"installment",children:n.installment})]}),y?.length?e(a.Content,{value:"coupon",className:"",children:e("div",{className:"h-[240px] overflow-y-auto px-4",children:e(W,{coupons:y,className:"",textConfig:n})})}):null,t(a.Content,{value:"membership",className:"",children:[e("h3",{className:"mx-4 mb-2 text-left text-lg font-bold",children:n.memberBenefits}),e("div",{className:`overflow-y-auto rounded-[16px] px-4 ${i?"max-h-[240px]":"max-h-[160px]"}`,children:t("ul",{className:`list-none [&_li:first-child]:rounded-t-[16px]
|
|
18
|
+
[&_li:last-child]:rounded-b-[16px] [&_li:last-child]:last:border-b-0 [&_li]:flex [&_li]:items-center [&_li]:gap-2
|
|
19
|
+
[&_li]:border-b [&_li]:border-b-[#E4E5E6] [&_li]:bg-white [&_li]:px-4
|
|
20
|
+
[&_li]:py-4
|
|
21
|
+
[&_li]:text-left`,children:[f.enable&&t("li",{children:[e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z",fill:"#1D1D1F"})}),e(d,{as:"p",className:"text-left text-[16px] font-medium x:text-[14px]",children:D(n.forNewMember,{amount:m({amount:f?.config?.amount??0,currencyCode:l.price.currencyCode,locale:u})})})]}),U.items?.map((s,x)=>s.modalText?e("li",{children:t("button",{onClick:()=>c?.({title:s.text,content:s.modalText}),className:"flex",children:[e(k,{source:s.icon,alt:s.text,className:"mr-[8px] size-[20px] shrink-0"}),e(d,{className:"text-left text-[16px] font-medium x:text-[14px]",children:s.text})]},x)},x):t("li",{className:"flex",children:[e(k,{source:s.icon,alt:s.text,className:"mr-[8px] size-[20px] shrink-0"}),e(d,{as:"p",className:"text-left text-[16px] font-medium x:text-[14px]",children:s.text})]},x)),F.enable?t("li",{children:[e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M19 3C19.5523 3 20 3.44772 20 4C20 4.55228 19.5523 5 19 5H10V16H21C21.5523 16 22 16.4477 22 17C22 17.5523 21.5523 18 21 18H19.9961C19.9961 19.6559 18.6547 21 16.998 21C15.3414 21 14 19.6559 14 18H10C10 19.6568 8.65684 21 7 21C5.34317 21 4 19.6568 4 18H2C1.44772 18 1 17.5523 1 17V10.6738L1.00488 10.5771C1.02632 10.3554 1.12145 10.146 1.27637 9.9834L4.77637 6.31055L4.84961 6.24023C5.02993 6.08586 5.26042 6 5.5 6H8V5C8 3.89544 8.89541 3 10 3H19ZM6.00488 18.1025C6.05622 18.6067 6.48234 19 7 19C7.51766 19 7.94378 18.6067 7.99512 18.1025L8 18H6L6.00488 18.1025ZM16.0049 18.1025C16.0561 18.6074 16.4823 19 16.998 19C17.5138 19 17.94 18.6074 17.9912 18.1025L17.9961 18H16L16.0049 18.1025ZM3 11.0723V16H8V8H5.92773L3 11.0723ZM21.6621 6.8252C22.0348 6.41765 22.6676 6.38902 23.0752 6.76172C23.4827 7.13443 23.5104 7.76725 23.1377 8.1748L18.0518 13.7363C17.6625 14.162 17.003 14.1954 16.5732 13.8105L13.333 10.9092C12.9216 10.5408 12.8865 9.90853 13.2549 9.49707C13.6232 9.08565 14.2555 9.05066 14.667 9.41895L17.208 11.6943L21.6621 6.8252Z",fill:"#1D1D1F"})}),e(d,{as:"p",className:"text-left text-[16px] font-medium x:text-[14px]",children:n.expressShipping})]}):null,v.enable?t("li",{children:[e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e("path",{d:"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z",fill:"#1D1D1F"})}),e(d,{as:"p",className:"text-left text-[16px] font-medium x:text-[14px]",children:$?v?.config?.label?.replace("{{amount}}",m({amount:v?.config?.amount??0,currencyCode:l.price.currencyCode,locale:u})):t(N,{children:[n.creditsAfterActivation,e("span",{role:"button",tabIndex:0,onClick:()=>R(),className:"underline",children:n.active})]})})]}):null]})}),!i&&e("div",{className:"px-4 pt-4",children:e(O,{variant:"primary",className:"w-full",onClick:()=>p?.(),children:Z?.signIn})})]}),t(a.Content,{value:"installment",className:"px-4",children:[e(V,{size:2,className:"mb-2 text-left text-lg font-bold",children:n.flexibleInstallment}),t("div",{className:"overflow-hidden rounded-[16px] bg-white",children:[T,w,h&&e("div",{className:"border-b border-[#D9D9D9] bg-white px-4 py-4 last:border-b-0",children:h})]})]})]}):null};var de=K;export{de as default};
|
|
22
|
+
//# sourceMappingURL=BenefitsTab.js.map
|
package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/biz-components/Listing/components/ProductCard/ProductDetail/BenefitsTab.tsx"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport { Button, Checkbox, Text, Picture, Heading } from '../../../../../components/index.js'\nimport ProductBenefitsTabs from './ProductBenefitsTabs/index.js'\nimport { useProductContext } from '../../../ProductProvider'\nimport { useBenefits } from '../../../hooks/useBenefits'\nimport { formatPrice } from '../../../utils/index.js'\nimport { replaceTemplate } from '../../../utils/textFormat'\nimport classNames from 'classnames'\nimport React from 'react'\nimport { useAiuiContext } from '../../../../AiuiProvider/index.js'\nimport useCountDown from '../../../../../hooks/useCountDown.js'\nimport useCopy from '../../../hooks/useCopy'\n\n// \u6587\u6848\u914D\u7F6E\u63A5\u53E3\ninterface BenefitsTabTextConfig {\n // Coupon \u76F8\u5173\n couponCode?: string // \"Code\"\n copyCode?: string // \"Copy Code\"\n copied?: string // \"Copied\"\n expired?: string // \"Expired\"\n offCoupon?: string // \"off coupon\"\n offMemberOnly?: string // \"{amount} off Member Only\"\n loginNow?: string // \"login now\"\n selectFreeGift?: string // \"You can select the free gift below.\"\n bundleSaveUpTo?: string // \"Bundle purchases save extra up to\"\n bundleOffer?: string // \"We offer {count} bundle for you\"\n creditsTitle?: string // \"Soundcore credits for cash\"\n creditsDesc?: string // \"100 Soundcore credits=$1\"\n\n // Tab \u6807\u7B7E\n yourBenefits?: string // \"Your Benefits\"\n off?: string // \"off\"\n memberBenefits?: string // \"Member Benefits\"\n memberBenefitsNotLogin?: string // \"Member Benefits\"\n installment?: string // \"Installment\"\n\n // Member Benefits \u90E8\u5206\n forNewMember?: string // \"for New Member\"\n expressShipping?: string // \"Express Shipping Method\"\n creditsAfterActivation?: string // \"You will get soundcoreCredits after activation.\"\n active?: string // \"Active\"\n\n // Installment \u90E8\u5206\n flexibleInstallment?: string // \"Flexible installment payment\"\n}\n\nexport type ModalData = {\n needClickAway?: boolean\n className?: string\n title?: string\n content?: string\n domContent?: React.ReactNode\n}\n\ninterface BenefitsTabProps {\n textConfig?: BenefitsTabTextConfig\n openModal?: (modal: ModalData) => void\n openSignInPopup?: () => void\n openAuthCodePopup?: () => void\n}\n\n// \u9ED8\u8BA4\u6587\u6848\u914D\u7F6E\nconst defaultTextConfig: Required<BenefitsTabTextConfig> = {\n couponCode: 'Code',\n copyCode: 'Copy Code',\n copied: 'Copied',\n expired: 'Expired',\n offCoupon: '{discount} off coupon',\n offMemberOnly: '{amount} off Member Only',\n loginNow: 'Login now',\n selectFreeGift: 'You can select the free gift below.',\n bundleSaveUpTo: 'Bundle purchases save extra up to',\n bundleOffer: 'We offer {count} bundle for you',\n creditsTitle: 'Soundcore credits for cash',\n creditsDesc: '100 Soundcore credits=$1',\n yourBenefits: 'Your Benefits',\n off: ' off',\n memberBenefits: 'Member Benefits',\n memberBenefitsNotLogin: 'You will enjoy a {amount} member discount after logging in.',\n installment: 'Installment',\n forNewMember: '{amount} for New Member',\n expressShipping: 'Express Shipping Method',\n creditsAfterActivation: 'You will get soundcoreCredits after activation. ',\n active: 'Active',\n flexibleInstallment: 'Flexible installment payment ',\n}\n\n// Coupon content component (commonly used)\ninterface CouponContentProps {\n coupons?: Array<{\n borderStyle: 'inset' | 'rounded' // \u8FD9\u4E24\u79CD\u6837\u5F0F\u4E0D\u4E00\u6837\uFF0C inset \u56DB\u89D2\u662F\u5185\u5207\u5706\u89D2\uFF0C rounded \u56DB\u89D2\u662F\u666E\u901A\u5706\u89D2\n useAble?: boolean\n isAutoUse?: boolean\n onUseChange?: (useAble: boolean) => void\n code?: string\n title: string\n description: string | React.ReactNode\n discount?: number\n bgImage?: { url: string; alt?: string }\n ends_at?: string\n }>\n className?: string\n}\n\nconst CouponItem = ({\n item,\n textConfig,\n}: {\n item: NonNullable<CouponContentProps['coupons']>[number]\n textConfig: Required<BenefitsTabTextConfig>\n}) => {\n const { trackingData } = useAiuiContext()\n const { copied: isCopied, copy: copyToClipboard } = useCopy()\n const couponCopy = trackingData?.common?.coupon\n const { days, hours, minutes, seconds } = useCountDown({ endTime: item?.ends_at || '' })\n const { openModal } = useProductContext()\n return (\n <>\n <style jsx>{`\n .coupon-card {\n /* \u4F7F\u7528mask\u521B\u5EFA\u5185\u5207\u5706\u89D2 */\n mask:\n radial-gradient(circle at 0 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 0, transparent 12px, white 12px),\n radial-gradient(circle at 100% 100%, transparent 12px, white 12px),\n radial-gradient(circle at 0 100%, transparent 12px, white 12px);\n mask-size: 50% 50%;\n mask-position:\n top left,\n top right,\n bottom right,\n bottom left;\n mask-repeat: no-repeat;\n }\n `}</style>\n <div\n className={classNames(\n 'relative h-[130px] overflow-hidden bg-white',\n item.borderStyle === 'inset' ? 'coupon-card ' : 'rounded-[8px]'\n )}\n >\n {item?.bgImage?.url && (\n <Picture\n source={item.bgImage.url}\n alt={item.bgImage.alt}\n className=\"absolute bottom-0 right-0 w-auto\"\n imgClassName=\"object-contain\"\n />\n )}\n <div className=\"relative z-1 p-3\">\n <div className=\"flex items-center justify-start\">\n {item.useAble && (\n <Checkbox\n className=\"mr-2\"\n defaultChecked={item.isAutoUse}\n onCheckedChange={(e: boolean) => {\n item?.onUseChange?.(e)\n }}\n />\n )}\n <Text html={item.title} className=\"text-[16px] font-bold laptop:text-[20px] lg-desktop:text-[24px]\" />\n </div>\n <Text\n {...(typeof item.description === 'string' ? { html: item.description } : {})}\n as=\"p\"\n className=\"mt-2 pr-8 text-[14px] font-bold text-[#3D3D3F] lg-desktop:text-[16px]\"\n >\n {item.description}\n </Text>\n {item.code && (\n <div className=\"mt-6 flex items-center gap-2\">\n <Text html={`${textConfig.couponCode}: ${item.code}`} className=\"text-base font-bold text-[#3D3D3F]\" />\n <button className=\"text-brand-0 text-base font-bold underline\" onClick={() => copyToClipboard(item.code ?? '')}>\n {isCopied ? couponCopy?.copied || textConfig.copied : couponCopy?.copy || textConfig.copyCode}\n </button>\n </div>\n )}\n {item.ends_at && (\n <button\n onClick={() => {\n if (couponCopy?.modal) {\n openModal(couponCopy?.modal!)\n }\n }}\n className=\"mt-[4px] text-left text-[14px] font-semibold text-[#1F2021] x:text-[12px] md-l:hidden\"\n >\n {Number(days) < Number(couponCopy?.hurry?.daysLeft) ? (\n <>\n <span>{couponCopy?.ends}</span>\n <span className=\"font-bold\">\n {` ${days} ${couponCopy?.days} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`}\n </span>\n </>\n ) : (\n couponCopy?.hurry?.label || textConfig.expired\n )}\n </button>\n )}\n </div>\n </div>\n </>\n )\n}\n\nconst CouponContent = ({\n coupons,\n className,\n textConfig,\n}: CouponContentProps & { textConfig: Required<BenefitsTabTextConfig> }) => {\n return (\n <div className={classNames('flex flex-col gap-3', className)}>\n {coupons?.map((item, index) => <CouponItem key={index} item={item} textConfig={textConfig} />)}\n </div>\n )\n}\n\nconst BenefitsTab = ({\n textConfig,\n openModal,\n openSignInPopup,\n openAuthCodePopup,\n}: BenefitsTabProps) => {\n const { setSavingDetail, isLogin, profile, variant, renderAffirm, renderKlarna, renderPaypal } = useProductContext()\n const benefits = useBenefits({ variant })\n const { trackingData, locale = 'us', copyWriting } = useAiuiContext()\n\n // \u5408\u5E76\u9ED8\u8BA4\u914D\u7F6E\u548C\u4F20\u5165\u7684\u914D\u7F6E\n const mergedTextConfig = { ...defaultTextConfig, ...textConfig }\n\n\n const { activated = false } = profile || {} // \u7528\u6237\u662F\u5426\u6FC0\u6D3B\n const { memberDiscount, commonCoupon, creditsRedemption, freeGift, bundle, paidShipping, fullGift, levelDiscount } =\n benefits\n\n const productsBenefits = trackingData?.product?.support ?? {}\n const { thirdParty = {} } = trackingData?.common || {}\n\n const coupons = [\n commonCoupon?.enable\n ? {\n ...commonCoupon.config,\n isAutoUse: true,\n useAble: true,\n borderStyle: 'rounded',\n code: commonCoupon?.config?.title ?? '',\n description: commonCoupon?.config?.desc ?? '',\n title: replaceTemplate(mergedTextConfig.offCoupon, {\n discount:\n commonCoupon?.config?.value_type == 'percentage'\n ? Math.abs(Number(commonCoupon?.config?.value || 0)) + '%'\n : formatPrice({\n amount: Math.abs(Number(commonCoupon?.config?.fixed_value || 0)),\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n }\n : null,\n memberDiscount.enable\n ? {\n useAble: true,\n isAutoUse: isLogin,\n\n title: replaceTemplate(mergedTextConfig.offMemberOnly, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n }),\n description: (\n <>\n {isLogin\n ? memberDiscount?.config?.description ?? ''\n : (mergedTextConfig.memberBenefitsNotLogin.replace(\n '{amount}',\n formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n ) ?? '')}{' '}\n {isLogin ? (\n ''\n ) : (\n <span role=\"button\" tabIndex={0} onClick={() => openSignInPopup?.()} className=\"underline\">\n {mergedTextConfig.loginNow}\n </span>\n )}\n </>\n ),\n borderStyle: 'rounded',\n onUseChange: (value: boolean) => {\n if (isLogin) {\n setSavingDetail(prev => ({\n ...prev,\n member: value ? memberDiscount?.config?.amount ?? 0 : 0,\n }))\n } else {\n openSignInPopup?.()\n }\n },\n }\n : null,\n levelDiscount.enable\n ? {\n title: levelDiscount?.config?.title ?? '',\n description: levelDiscount?.config?.tag ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: 'https://cdn.shopify.com/s/files/1/0521/9411/5753/files/levelDiscount.png?v=1760437385',\n },\n }\n : null,\n freeGift.enable\n ? {\n title: freeGift?.config?.title ?? '',\n description: mergedTextConfig.selectFreeGift,\n borderStyle: 'inset',\n bgImage: {\n url: 'https://cdn.shopify.com/s/files/1/0516/3761/6830/files/gift.png?v=1759113534',\n },\n }\n : null,\n bundle.enable\n ? {\n title: `${mergedTextConfig.bundleSaveUpTo} ${formatPrice({\n amount: Math.max(...bundle?.config?.bundleList?.map((item: any) => item.savings ?? 0) ?? []),\n currencyCode: variant.price.currencyCode,\n locale,\n })}`,\n borderStyle: 'inset',\n description: mergedTextConfig.bundleOffer.replace('{count}', bundle?.config?.bundleList?.length?.toString() ?? ''),\n bgImage: {\n url: 'https://cdn.shopify.com/s/files/1/0516/3761/6830/files/bundle.png?v=1759113534',\n },\n }\n : null,\n fullGift.enable\n ? {\n title: fullGift?.config?.title ?? '',\n description: fullGift?.config?.desc ?? '',\n borderStyle: 'inset',\n bgImage: {\n url: 'https://cdn.shopify.com/s/files/1/0516/3761/6830/files/fullGift.png?v=1759141790',\n },\n }\n : null,\n creditsRedemption.enable\n ? {\n title: mergedTextConfig.creditsTitle,\n description: mergedTextConfig.creditsDesc,\n borderStyle: 'inset',\n bgImage: {\n url: 'https://cdn.shopify.com/s/files/1/0516/3761/6830/files/cash.png?v=1759113534',\n },\n }\n : null,\n ].filter(Boolean)\n\n const handleActivate = () => {\n openAuthCodePopup?.()\n }\n\n if (!ProductBenefitsTabs) return null\n\n return (\n <ProductBenefitsTabs defaultValue={coupons?.length ? 'coupon' : 'membership'}>\n <ProductBenefitsTabs.List>\n {coupons?.length ? (\n <ProductBenefitsTabs.Trigger value=\"coupon\">\n {mergedTextConfig.yourBenefits}\n {commonCoupon?.enable && (\n <ProductBenefitsTabs.Badge>\n {commonCoupon?.config?.value_type == 'percentage'\n ? Math.abs(Number(commonCoupon?.config?.value || 0)) + '%'\n : formatPrice({\n amount: Math.abs(Number(commonCoupon?.config?.fixed_value || 0)),\n currencyCode: variant.price.currencyCode,\n locale,\n })}\n {mergedTextConfig.off}\n </ProductBenefitsTabs.Badge>\n )}\n </ProductBenefitsTabs.Trigger>\n ) : null}\n <ProductBenefitsTabs.Trigger value=\"membership\">{mergedTextConfig.memberBenefits}</ProductBenefitsTabs.Trigger>\n <ProductBenefitsTabs.Trigger value=\"installment\">{mergedTextConfig.installment}</ProductBenefitsTabs.Trigger>\n </ProductBenefitsTabs.List>\n\n {/* \u4F7F\u7528\u5185\u7F6E\u7684 CouponContent \u5B50\u7EC4\u4EF6 */}\n {coupons?.length ? (\n <ProductBenefitsTabs.Content value=\"coupon\" className=\"\">\n <div className=\"h-[240px] overflow-y-auto px-4\">\n <CouponContent\n coupons={coupons as NonNullable<CouponContentProps['coupons']>}\n className=\"\"\n textConfig={mergedTextConfig}\n />\n </div>\n </ProductBenefitsTabs.Content>\n ) : null}\n\n <ProductBenefitsTabs.Content value=\"membership\" className=\"\">\n <h3 className=\"mx-4 mb-2 text-left text-lg font-bold\">{mergedTextConfig.memberBenefits}</h3>\n <div className={`overflow-y-auto rounded-[16px] px-4 ${isLogin ? 'max-h-[240px]' : 'max-h-[160px]'}`}>\n <ul\n className={`list-none [&_li:first-child]:rounded-t-[16px] \n [&_li:last-child]:rounded-b-[16px] [&_li:last-child]:last:border-b-0 [&_li]:flex [&_li]:items-center [&_li]:gap-2\n [&_li]:border-b [&_li]:border-b-[#E4E5E6] [&_li]:bg-white [&_li]:px-4\n [&_li]:py-4 \n [&_li]:text-left`}\n >\n {memberDiscount.enable && (\n <li>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"text-left text-[16px] font-medium x:text-[14px]\">\n {replaceTemplate(mergedTextConfig.forNewMember, {\n amount: formatPrice({\n amount: memberDiscount?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n }),\n })}\n </Text>\n </li>\n )}\n {productsBenefits.items?.map((item: any, index: number) =>\n item.modalText ? (\n <li key={index}>\n <button\n onClick={() => openModal?.({ title: item.text, content: item.modalText })}\n key={index}\n className=\"flex\"\n >\n <Picture source={item.icon} alt={item.text} className=\"mr-[8px] size-[20px] shrink-0\" />\n <Text className=\"text-left text-[16px] font-medium x:text-[14px]\">{item.text}</Text>\n </button>\n </li>\n ) : (\n <li key={index} className=\"flex\">\n <Picture source={item.icon} alt={item.text} className=\"mr-[8px] size-[20px] shrink-0\" />\n <Text as=\"p\" className=\"text-left text-[16px] font-medium x:text-[14px]\">\n {item.text}\n </Text>\n </li>\n )\n )}\n {/* \u9AD8\u6807\u7269\u6D41 */}\n {paidShipping.enable ? (\n <li>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19 3C19.5523 3 20 3.44772 20 4C20 4.55228 19.5523 5 19 5H10V16H21C21.5523 16 22 16.4477 22 17C22 17.5523 21.5523 18 21 18H19.9961C19.9961 19.6559 18.6547 21 16.998 21C15.3414 21 14 19.6559 14 18H10C10 19.6568 8.65684 21 7 21C5.34317 21 4 19.6568 4 18H2C1.44772 18 1 17.5523 1 17V10.6738L1.00488 10.5771C1.02632 10.3554 1.12145 10.146 1.27637 9.9834L4.77637 6.31055L4.84961 6.24023C5.02993 6.08586 5.26042 6 5.5 6H8V5C8 3.89544 8.89541 3 10 3H19ZM6.00488 18.1025C6.05622 18.6067 6.48234 19 7 19C7.51766 19 7.94378 18.6067 7.99512 18.1025L8 18H6L6.00488 18.1025ZM16.0049 18.1025C16.0561 18.6074 16.4823 19 16.998 19C17.5138 19 17.94 18.6074 17.9912 18.1025L17.9961 18H16L16.0049 18.1025ZM3 11.0723V16H8V8H5.92773L3 11.0723ZM21.6621 6.8252C22.0348 6.41765 22.6676 6.38902 23.0752 6.76172C23.4827 7.13443 23.5104 7.76725 23.1377 8.1748L18.0518 13.7363C17.6625 14.162 17.003 14.1954 16.5732 13.8105L13.333 10.9092C12.9216 10.5408 12.8865 9.90853 13.2549 9.49707C13.6232 9.08565 14.2555 9.05066 14.667 9.41895L17.208 11.6943L21.6621 6.8252Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"text-left text-[16px] font-medium x:text-[14px]\">\n {mergedTextConfig.expressShipping}\n </Text>\n </li>\n ) : null}\n {/* \u79EF\u5206\u62B5\u73B0 */}\n {creditsRedemption.enable ? (\n <li>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 1C18.0751 1 23 5.92487 23 12C23 18.0751 18.0751 23 12 23C5.92487 23 1 18.0751 1 12C1 5.92487 5.92487 1 12 1ZM12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3ZM17 13C17.5523 13 18 13.4477 18 14C18 14.5523 17.5523 15 17 15H9.41406L9.70703 15.293C10.0976 15.6835 10.0976 16.3165 9.70703 16.707C9.31651 17.0976 8.68349 17.0976 8.29297 16.707L6.29297 14.707C6.00697 14.421 5.92139 13.9909 6.07617 13.6172C6.23098 13.2436 6.59558 13 7 13H17ZM14.293 7.29297C14.6835 6.90244 15.3165 6.90244 15.707 7.29297L17.707 9.29297C17.993 9.57897 18.0786 10.0091 17.9238 10.3828C17.769 10.7564 17.4044 11 17 11H7C6.44772 11 6 10.5523 6 10C6 9.44771 6.44772 9 7 9H14.5859L14.293 8.70703C13.9024 8.31651 13.9024 7.68349 14.293 7.29297Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n <Text as=\"p\" className=\"text-left text-[16px] font-medium x:text-[14px]\">\n {activated ? (\n creditsRedemption?.config?.label?.replace(\n '{{amount}}',\n formatPrice({\n amount: creditsRedemption?.config?.amount ?? 0,\n currencyCode: variant.price.currencyCode,\n locale,\n })\n )\n ) : (\n <>\n {mergedTextConfig.creditsAfterActivation}\n <span role=\"button\" tabIndex={0} onClick={() => handleActivate()} className=\"underline\">\n {mergedTextConfig.active}\n </span>\n </>\n )}\n </Text>\n </li>\n ) : null}\n </ul>\n </div>\n {!isLogin && (\n <div className=\"px-4 pt-4\">\n <Button variant=\"primary\" className=\"w-full\" onClick={() => openSignInPopup?.()}>\n {copyWriting?.signIn}\n </Button>\n </div>\n )}\n </ProductBenefitsTabs.Content>\n {/* \u81EA\u5B9A\u4E49\u5185\u5BB9 */}\n <ProductBenefitsTabs.Content value=\"installment\" className=\"px-4\">\n <Heading size={2} className=\"mb-2 text-left text-lg font-bold\">\n {mergedTextConfig.flexibleInstallment}\n </Heading>\n <div className=\"overflow-hidden rounded-[16px] bg-white\">\n {renderAffirm}\n {renderKlarna}\n {renderPaypal && (\n <div className=\"border-b border-[#D9D9D9] bg-white px-4 py-4 last:border-b-0\">{renderPaypal}</div>\n )}\n </div>\n </ProductBenefitsTabs.Content>\n </ProductBenefitsTabs>\n )\n}\n\nexport default BenefitsTab\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Fragment", "jsx", "jsxs", "Button", "Checkbox", "Text", "Picture", "Heading", "ProductBenefitsTabs", "useProductContext", "useBenefits", "formatPrice", "replaceTemplate", "classNames", "useAiuiContext", "useCountDown", "useCopy", "defaultTextConfig", "CouponItem", "item", "textConfig", "trackingData", "isCopied", "copyToClipboard", "couponCopy", "days", "hours", "minutes", "seconds", "openModal", "e", "CouponContent", "coupons", "className", "index", "BenefitsTab", "openSignInPopup", "openAuthCodePopup", "setSavingDetail", "isLogin", "profile", "variant", "renderAffirm", "renderKlarna", "renderPaypal", "benefits", "locale", "copyWriting", "mergedTextConfig", "activated", "memberDiscount", "commonCoupon", "creditsRedemption", "freeGift", "bundle", "paidShipping", "fullGift", "levelDiscount", "productsBenefits", "thirdParty", "value", "prev", "handleActivate", "BenefitsTab_default"]
|
|
7
|
+
}
|
package/dist/esm/biz-components/Listing/components/ProductCard/ProductDetail/ProductBundle/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as i,jsxs as o}from"react/jsx-runtime";import{Text as r,Picture as
|
|
1
|
+
import{jsx as i,jsxs as o}from"react/jsx-runtime";import{Text as r,Picture as y,Checkbox as g}from"../../../../../../components";import{cn as C}from"../../../../../../helpers/index.js";import{useAiuiContext as N}from"../../../../../AiuiProvider";import{useProductContext as B}from"../../../../ProductProvider";import{formatPrice as p}from"../../../../utils";const b=()=>{const{locale:l="us"}=N(),{variant:m,bundle:u,checkedBundle:s,setCheckedBundle:d,setCheckedGift:f,setJoinedRecommendBuyProducts:c,joinedRecommendBuyProducts:P}=B(),{title:x,bundleList:v,showAtListing:h}=u||{},n=v?.filter(e=>e.variants.slice(1,e.variants.length).every(a=>a.variant.availableForSale));if(!n?.length&&h)return null;const k=e=>{s?.id===e.id?(d?.(void 0),c?.({bundle:void 0})):(f?.(void 0),d?.(e),c?.({bundle:e}))};return o("div",{className:"ipc-product-detail-bundle",children:[i(r,{size:3,className:"font-bold",html:x}),n?.map(e=>{const a=e.variants.filter(t=>t.variant.sku!==m.sku);return i("div",{className:"flex flex-col gap-4 mt-3 desktop:mt-4",children:o("div",{className:C("flex items-center gap-2 text-left font-bold px-4 py-6 rounded-2xl border-[#E4E5E6] border",{"border-brand outline outline-1 outline-brand":s?.id===e.id}),children:[i(g,{onCheckedChange:()=>k(e),size:"lg",id:e.id,value:e.id,checked:s?.id===e.id}),i("label",{htmlFor:e.id,className:"size-full cursor-pointer",children:a?.map(t=>o("div",{className:"flex justify-between items-center gap-6 ",children:[o("div",{className:"flex items-center gap-2",children:[i(y,{source:t?.variant?.image?.url,className:"size-12 flex-shrink-0"}),i(r,{className:"text-sm laptop:text-[16px] laptop:text-[20px] desktop:text-[18px] font-bold",html:t.variant.product.title})]}),o("div",{className:"flex items-center justify-end gap-1 laptop:flex-row flex-col shrink-0",children:[i(r,{className:"text-base laptop:text-[20px] desktop:text-2xl font-bold",html:p({amount:t.price,locale:l,currencyCode:t.variant.price.currencyCode})}),t.price<t.variant.price.amount&&i(r,{className:"text-base laptop:text-[20px] desktop:text-2xl font-bold line-through text-[#6D6D6F]",html:p({amount:t.variant.price.amount,locale:l,currencyCode:t.variant.price.currencyCode})})]})]},t.variant.id))})]})},e.id)})]})};var A=b;export{A 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/ProductCard/ProductDetail/ProductBundle/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Text, Picture, Button, Checkbox } from '../../../../../../components'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useAiuiContext } from '../../../../../AiuiProvider'\nimport { useProductContext } from '../../../../ProductProvider'\nimport { formatPrice } from '../../../../utils'\nimport type { BundleListItem } from '../../../../types/product'\n\nconst ProductBundle = () => {\n const { locale = 'us' } = useAiuiContext()\n const {\n variant,\n bundle,\n checkedBundle,\n setCheckedBundle,\n setCheckedGift,\n setJoinedRecommendBuyProducts,\n joinedRecommendBuyProducts,\n } = useProductContext()\n\n const { title, bundleList, showAtListing } = bundle || {}\n\n const availableBundleList = bundleList?.filter(bundle =>\n bundle.variants.slice(1, bundle.variants.length).every(v => v.variant.availableForSale)\n )\n\n if (!availableBundleList?.length && showAtListing) return null\n\n const handleSelectedChange = (bundleItem: BundleListItem) => {\n if (checkedBundle?.id === bundleItem.id) {\n setCheckedBundle?.(undefined)\n setJoinedRecommendBuyProducts?.({
|
|
5
|
-
"mappings": "AAwCM,cAAAA,EAwBgB,QAAAC,MAxBhB,oBAxCN,OAAS,QAAAC,EAAM,WAAAC,EAAiB,YAAAC,MAAgB,+BAChD,OAAS,MAAAC,MAAU,qCACnB,OAAS,kBAAAC,MAAsB,8BAC/B,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,eAAAC,MAAmB,oBAG5B,MAAMC,EAAgB,IAAM,CAC1B,KAAM,CAAE,OAAAC,EAAS,IAAK,EAAIJ,EAAe,EACnC,CACJ,QAAAK,EACA,OAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,8BAAAC,EACA,2BAAAC,CACF,EAAIV,EAAkB,EAEhB,CAAE,MAAAW,EAAO,WAAAC,EAAY,cAAAC,CAAc,EAAIR,GAAU,CAAC,EAElDS,EAAsBF,GAAY,OAAOP,GAC7CA,EAAO,SAAS,MAAM,EAAGA,EAAO,SAAS,MAAM,EAAE,MAAMU,GAAKA,EAAE,QAAQ,gBAAgB,CACxF,EAEA,GAAI,CAACD,GAAqB,QAAUD,EAAe,OAAO,KAE1D,MAAMG,EAAwBC,GAA+B,CACvDX,GAAe,KAAOW,EAAW,IACnCV,IAAmB,MAAS,EAC5BE,IAAgC,CAAE,
|
|
4
|
+
"sourcesContent": ["import { Text, Picture, Button, Checkbox } from '../../../../../../components'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useAiuiContext } from '../../../../../AiuiProvider'\nimport { useProductContext } from '../../../../ProductProvider'\nimport { formatPrice } from '../../../../utils'\nimport type { BundleListItem } from '../../../../types/product'\n\nconst ProductBundle = () => {\n const { locale = 'us' } = useAiuiContext()\n const {\n variant,\n bundle,\n checkedBundle,\n setCheckedBundle,\n setCheckedGift,\n setJoinedRecommendBuyProducts,\n joinedRecommendBuyProducts,\n } = useProductContext()\n\n const { title, bundleList, showAtListing } = bundle || {}\n\n const availableBundleList = bundleList?.filter(bundle =>\n bundle.variants.slice(1, bundle.variants.length).every(v => v.variant.availableForSale)\n )\n\n if (!availableBundleList?.length && showAtListing) return null\n\n const handleSelectedChange = (bundleItem: BundleListItem) => {\n if (checkedBundle?.id === bundleItem.id) {\n setCheckedBundle?.(undefined)\n setJoinedRecommendBuyProducts?.({ bundle: undefined })\n } else {\n setCheckedGift?.(undefined)\n setCheckedBundle?.(bundleItem)\n setJoinedRecommendBuyProducts?.({ bundle: bundleItem })\n }\n }\n\n return (\n <div className=\"ipc-product-detail-bundle\">\n <Text size={3} className=\"font-bold\" html={title} />\n {availableBundleList?.map(bundle => {\n const bundleVariants = bundle.variants.filter(v => v.variant.sku !== variant.sku)\n return (\n <div key={bundle.id} className=\"flex flex-col gap-4 mt-3 desktop:mt-4\">\n <div\n className={cn(\n 'flex items-center gap-2 text-left font-bold px-4 py-6 rounded-2xl border-[#E4E5E6] border',\n {\n ['border-brand outline outline-1 outline-brand']: checkedBundle?.id === bundle.id,\n }\n )}\n >\n <Checkbox\n onCheckedChange={() => handleSelectedChange(bundle)}\n size=\"lg\"\n id={bundle.id}\n value={bundle.id}\n checked={checkedBundle?.id === bundle.id}\n />\n <label htmlFor={bundle.id} className=\"size-full cursor-pointer\">\n {bundleVariants?.map(bundleVariant => {\n return (\n <div className=\"flex justify-between items-center gap-6 \" key={bundleVariant.variant.id}>\n <div className=\"flex items-center gap-2\">\n <Picture source={bundleVariant?.variant?.image?.url} className=\"size-12 flex-shrink-0\" />\n <Text\n className=\"text-sm laptop:text-[16px] laptop:text-[20px] desktop:text-[18px] font-bold\"\n html={bundleVariant.variant.product.title}\n />\n </div>\n <div className=\"flex items-center justify-end gap-1 laptop:flex-row flex-col shrink-0\">\n <Text\n className=\"text-base laptop:text-[20px] desktop:text-2xl font-bold\"\n html={formatPrice({\n amount: bundleVariant.price,\n locale,\n currencyCode: bundleVariant.variant.price.currencyCode,\n })}\n />\n {bundleVariant.price < bundleVariant.variant.price.amount && (\n <Text\n className=\"text-base laptop:text-[20px] desktop:text-2xl font-bold line-through text-[#6D6D6F]\"\n html={formatPrice({\n amount: bundleVariant.variant.price.amount,\n locale,\n currencyCode: bundleVariant.variant.price.currencyCode,\n })}\n />\n )}\n </div>\n </div>\n )\n })}\n </label>\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n\nexport default ProductBundle\n"],
|
|
5
|
+
"mappings": "AAwCM,cAAAA,EAwBgB,QAAAC,MAxBhB,oBAxCN,OAAS,QAAAC,EAAM,WAAAC,EAAiB,YAAAC,MAAgB,+BAChD,OAAS,MAAAC,MAAU,qCACnB,OAAS,kBAAAC,MAAsB,8BAC/B,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,eAAAC,MAAmB,oBAG5B,MAAMC,EAAgB,IAAM,CAC1B,KAAM,CAAE,OAAAC,EAAS,IAAK,EAAIJ,EAAe,EACnC,CACJ,QAAAK,EACA,OAAAC,EACA,cAAAC,EACA,iBAAAC,EACA,eAAAC,EACA,8BAAAC,EACA,2BAAAC,CACF,EAAIV,EAAkB,EAEhB,CAAE,MAAAW,EAAO,WAAAC,EAAY,cAAAC,CAAc,EAAIR,GAAU,CAAC,EAElDS,EAAsBF,GAAY,OAAOP,GAC7CA,EAAO,SAAS,MAAM,EAAGA,EAAO,SAAS,MAAM,EAAE,MAAMU,GAAKA,EAAE,QAAQ,gBAAgB,CACxF,EAEA,GAAI,CAACD,GAAqB,QAAUD,EAAe,OAAO,KAE1D,MAAMG,EAAwBC,GAA+B,CACvDX,GAAe,KAAOW,EAAW,IACnCV,IAAmB,MAAS,EAC5BE,IAAgC,CAAE,OAAQ,MAAU,CAAC,IAErDD,IAAiB,MAAS,EAC1BD,IAAmBU,CAAU,EAC7BR,IAAgC,CAAE,OAAQQ,CAAW,CAAC,EAE1D,EAEA,OACEvB,EAAC,OAAI,UAAU,4BACb,UAAAD,EAACE,EAAA,CAAK,KAAM,EAAG,UAAU,YAAY,KAAMgB,EAAO,EACjDG,GAAqB,IAAIT,GAAU,CAClC,MAAMa,EAAiBb,EAAO,SAAS,OAAOU,GAAKA,EAAE,QAAQ,MAAQX,EAAQ,GAAG,EAChF,OACEX,EAAC,OAAoB,UAAU,wCAC7B,SAAAC,EAAC,OACC,UAAWI,EACT,4FACA,CACG,+CAAiDQ,GAAe,KAAOD,EAAO,EACjF,CACF,EAEA,UAAAZ,EAACI,EAAA,CACC,gBAAiB,IAAMmB,EAAqBX,CAAM,EAClD,KAAK,KACL,GAAIA,EAAO,GACX,MAAOA,EAAO,GACd,QAASC,GAAe,KAAOD,EAAO,GACxC,EACAZ,EAAC,SAAM,QAASY,EAAO,GAAI,UAAU,2BAClC,SAAAa,GAAgB,IAAIC,GAEjBzB,EAAC,OAAI,UAAU,2CACb,UAAAA,EAAC,OAAI,UAAU,0BACb,UAAAD,EAACG,EAAA,CAAQ,OAAQuB,GAAe,SAAS,OAAO,IAAK,UAAU,wBAAwB,EACvF1B,EAACE,EAAA,CACC,UAAU,8EACV,KAAMwB,EAAc,QAAQ,QAAQ,MACtC,GACF,EACAzB,EAAC,OAAI,UAAU,yEACb,UAAAD,EAACE,EAAA,CACC,UAAU,0DACV,KAAMM,EAAY,CAChB,OAAQkB,EAAc,MACtB,OAAAhB,EACA,aAAcgB,EAAc,QAAQ,MAAM,YAC5C,CAAC,EACH,EACCA,EAAc,MAAQA,EAAc,QAAQ,MAAM,QACjD1B,EAACE,EAAA,CACC,UAAU,sFACV,KAAMM,EAAY,CAChB,OAAQkB,EAAc,QAAQ,MAAM,OACpC,OAAAhB,EACA,aAAcgB,EAAc,QAAQ,MAAM,YAC5C,CAAC,EACH,GAEJ,IA3B6DA,EAAc,QAAQ,EA4BrF,CAEH,EACH,GACF,GAnDQd,EAAO,EAoDjB,CAEJ,CAAC,GACH,CAEJ,EAEA,IAAOe,EAAQlB",
|
|
6
6
|
"names": ["jsx", "jsxs", "Text", "Picture", "Checkbox", "cn", "useAiuiContext", "useProductContext", "formatPrice", "ProductBundle", "locale", "variant", "bundle", "checkedBundle", "setCheckedBundle", "setCheckedGift", "setJoinedRecommendBuyProducts", "joinedRecommendBuyProducts", "title", "bundleList", "showAtListing", "availableBundleList", "v", "handleSelectedChange", "bundleItem", "bundleVariants", "bundleVariant", "ProductBundle_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{Text as l,Picture as
|
|
1
|
+
import{jsx as t,jsxs as o}from"react/jsx-runtime";import{Text as l,Picture as x,Checkbox as b}from"../../../../../../components";import{cn as h}from"../../../../../../helpers/index.js";import{useMemo as k}from"react";import{useProductContext as C}from"../../../../ProductProvider";import{formatPrice as v}from"../../../../utils";import{useAiuiContext as N}from"../../../../../AiuiProvider";const y=()=>{const{locale:c="us"}=N(),{freeGift:n,checkedGift:d,setCheckedGift:i,setCheckedBundle:m,setJoinedRecommendBuyProducts:r,joinedRecommendBuyProducts:P}=C(),{title:p,giftList:a=[],freeLabel:u}=n||{},s=k(()=>a?.filter(e=>e.availableForSale),[a]),f=e=>{d?.id===e.id?(i?.(void 0),r?.({gift:void 0})):(m?.(void 0),i?.(e),r?.({gift:e}))};return s?.length?o("div",{className:"ipc-product-detail-free-gift",children:[t(l,{size:3,className:"font-bold",html:p}),t("div",{className:"mt-3 flex flex-col gap-4 desktop:mt-4",children:s.map(e=>o("div",{className:h("flex items-center gap-2 text-left font-bold px-4 py-6 rounded-2xl border-[#E4E5E6] border-2",{"border-brand":d?.id===e.id}),children:[t(b,{onCheckedChange:()=>f(e),size:"lg",id:e.id,checked:d?.id===e.id,value:e.id}),o("label",{htmlFor:e.id,className:"flex justify-between items-center gap-4 laptop:gap-0 w-full",children:[o("div",{className:"flex items-center gap-2",children:[t(x,{source:e.image?.url,className:"size-12 flex-shrink-0"}),t(l,{className:"text-sm laptop:text-[16px] desktop:text-[18px] font-bold",html:e.product.title})]}),o("div",{className:"flex items-center gap-1 tablet:flex-row flex-col shrink-0",children:[t(l,{className:"text-base laptop:text-[20px] desktop:text-2xl font-bold",html:u}),t(l,{className:"text-base laptop:text-[20px] desktop:text-2xl font-bold line-through",html:v({amount:e.price.amount,locale:c,currencyCode:e.price.currencyCode})})]})]})]},e.id))})]}):null};var V=y;export{V 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/ProductCard/ProductDetail/ProductFreeGift/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import { Text, Picture, Button, RadioGroup, RadioGroupItem, Checkbox } from '../../../../../../components'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useMemo } from 'react'\nimport { useProductContext } from '../../../../ProductProvider'\nimport { formatPrice } from '../../../../utils'\nimport { useAiuiContext } from '../../../../../AiuiProvider'\nimport type { ProductVariant } from '../../../../types/product'\n\nconst ProductFreeGift = () => {\n const { locale = 'us' } = useAiuiContext()\n const { freeGift, checkedGift, setCheckedGift, setCheckedBundle, setJoinedRecommendBuyProducts, joinedRecommendBuyProducts } = useProductContext()\n const { title, giftList = [], freeLabel } = freeGift || {}\n const availableGifts = useMemo(() => giftList?.filter(item => item.availableForSale), [giftList])\n\n const handleCheckboxClick = (value: ProductVariant) => {\n if (checkedGift?.id === value.id) {\n setCheckedGift?.(undefined)\n setJoinedRecommendBuyProducts?.({
|
|
5
|
-
"mappings": "AA6BM,cAAAA,EAoBQ,QAAAC,MApBR,oBA7BN,OAAS,QAAAC,EAAM,WAAAC,EAA6C,YAAAC,MAAgB,+BAC5E,OAAS,MAAAC,MAAU,qCACnB,OAAS,WAAAC,MAAe,QACxB,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,eAAAC,MAAmB,oBAC5B,OAAS,kBAAAC,MAAsB,8BAG/B,MAAMC,EAAkB,IAAM,CAC5B,KAAM,CAAE,OAAAC,EAAS,IAAK,EAAIF,EAAe,EACnC,CAAE,SAAAG,EAAU,YAAAC,EAAa,eAAAC,EAAgB,iBAAAC,EAAkB,8BAAAC,EAA+B,2BAAAC,CAA2B,EAAIV,EAAkB,EAC3I,CAAE,MAAAW,EAAO,SAAAC,EAAW,CAAC,EAAG,UAAAC,CAAU,EAAIR,GAAY,CAAC,EACnDS,EAAiBf,EAAQ,IAAMa,GAAU,OAAOG,GAAQA,EAAK,gBAAgB,EAAG,CAACH,CAAQ,CAAC,EAE1FI,EAAuBC,GAA0B,CACjDX,GAAa,KAAOW,EAAM,IAC5BV,IAAiB,MAAS,EAC1BE,IAAgC,CAAE,
|
|
4
|
+
"sourcesContent": ["import { Text, Picture, Button, RadioGroup, RadioGroupItem, Checkbox } from '../../../../../../components'\nimport { cn } from '../../../../../../helpers/index.js'\nimport { useMemo } from 'react'\nimport { useProductContext } from '../../../../ProductProvider'\nimport { formatPrice } from '../../../../utils'\nimport { useAiuiContext } from '../../../../../AiuiProvider'\nimport type { ProductVariant } from '../../../../types/product'\n\nconst ProductFreeGift = () => {\n const { locale = 'us' } = useAiuiContext()\n const { freeGift, checkedGift, setCheckedGift, setCheckedBundle, setJoinedRecommendBuyProducts, joinedRecommendBuyProducts } = useProductContext()\n const { title, giftList = [], freeLabel } = freeGift || {}\n const availableGifts = useMemo(() => giftList?.filter(item => item.availableForSale), [giftList])\n\n const handleCheckboxClick = (value: ProductVariant) => {\n if (checkedGift?.id === value.id) {\n setCheckedGift?.(undefined)\n setJoinedRecommendBuyProducts?.({ gift: undefined })\n } else {\n setCheckedBundle?.(undefined)\n setCheckedGift?.(value)\n setJoinedRecommendBuyProducts?.({ gift: value })\n }\n }\n\n if (!availableGifts?.length) return null\n\n return (\n <div className=\"ipc-product-detail-free-gift\">\n <Text size={3} className=\"font-bold\" html={title} />\n <div className=\"mt-3 flex flex-col gap-4 desktop:mt-4\">\n {availableGifts.map(gift => (\n <div\n key={gift.id}\n className={cn(\n 'flex items-center gap-2 text-left font-bold px-4 py-6 rounded-2xl border-[#E4E5E6] border-2',\n {\n ['border-brand']: checkedGift?.id === gift.id,\n }\n )}\n >\n <Checkbox\n onCheckedChange={() => handleCheckboxClick(gift)}\n size=\"lg\"\n id={gift.id}\n checked={checkedGift?.id === gift.id}\n value={gift.id}\n ></Checkbox>\n <label htmlFor={gift.id} className=\"flex justify-between items-center gap-4 laptop:gap-0 w-full\">\n <div className=\"flex items-center gap-2\">\n <Picture source={gift.image?.url} className=\"size-12 flex-shrink-0\" />\n <Text className=\"text-sm laptop:text-[16px] desktop:text-[18px] font-bold\" html={gift.product.title} />\n </div>\n <div className=\"flex items-center gap-1 tablet:flex-row flex-col shrink-0\">\n <Text className=\"text-base laptop:text-[20px] desktop:text-2xl font-bold\" html={freeLabel} />\n <Text\n className=\"text-base laptop:text-[20px] desktop:text-2xl font-bold line-through\"\n html={formatPrice({\n amount: gift.price.amount,\n locale,\n currencyCode: gift.price.currencyCode,\n })}\n />\n </div>\n </label>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ProductFreeGift\n"],
|
|
5
|
+
"mappings": "AA6BM,cAAAA,EAoBQ,QAAAC,MApBR,oBA7BN,OAAS,QAAAC,EAAM,WAAAC,EAA6C,YAAAC,MAAgB,+BAC5E,OAAS,MAAAC,MAAU,qCACnB,OAAS,WAAAC,MAAe,QACxB,OAAS,qBAAAC,MAAyB,8BAClC,OAAS,eAAAC,MAAmB,oBAC5B,OAAS,kBAAAC,MAAsB,8BAG/B,MAAMC,EAAkB,IAAM,CAC5B,KAAM,CAAE,OAAAC,EAAS,IAAK,EAAIF,EAAe,EACnC,CAAE,SAAAG,EAAU,YAAAC,EAAa,eAAAC,EAAgB,iBAAAC,EAAkB,8BAAAC,EAA+B,2BAAAC,CAA2B,EAAIV,EAAkB,EAC3I,CAAE,MAAAW,EAAO,SAAAC,EAAW,CAAC,EAAG,UAAAC,CAAU,EAAIR,GAAY,CAAC,EACnDS,EAAiBf,EAAQ,IAAMa,GAAU,OAAOG,GAAQA,EAAK,gBAAgB,EAAG,CAACH,CAAQ,CAAC,EAE1FI,EAAuBC,GAA0B,CACjDX,GAAa,KAAOW,EAAM,IAC5BV,IAAiB,MAAS,EAC1BE,IAAgC,CAAE,KAAM,MAAU,CAAC,IAEnDD,IAAmB,MAAS,EAC5BD,IAAiBU,CAAK,EACtBR,IAAgC,CAAE,KAAMQ,CAAM,CAAC,EAEnD,EAEA,OAAKH,GAAgB,OAGnBpB,EAAC,OAAI,UAAU,+BACb,UAAAD,EAACE,EAAA,CAAK,KAAM,EAAG,UAAU,YAAY,KAAMgB,EAAO,EAClDlB,EAAC,OAAI,UAAU,wCACZ,SAAAqB,EAAe,IAAII,GAClBxB,EAAC,OAEC,UAAWI,EACT,8FACA,CACG,eAAiBQ,GAAa,KAAOY,EAAK,EAC7C,CACF,EAEA,UAAAzB,EAACI,EAAA,CACC,gBAAiB,IAAMmB,EAAoBE,CAAI,EAC/C,KAAK,KACL,GAAIA,EAAK,GACT,QAASZ,GAAa,KAAOY,EAAK,GAClC,MAAOA,EAAK,GACb,EACDxB,EAAC,SAAM,QAASwB,EAAK,GAAI,UAAU,8DACjC,UAAAxB,EAAC,OAAI,UAAU,0BACb,UAAAD,EAACG,EAAA,CAAQ,OAAQsB,EAAK,OAAO,IAAK,UAAU,wBAAwB,EACpEzB,EAACE,EAAA,CAAK,UAAU,2DAA2D,KAAMuB,EAAK,QAAQ,MAAO,GACvG,EACAxB,EAAC,OAAI,UAAU,4DACb,UAAAD,EAACE,EAAA,CAAK,UAAU,0DAA0D,KAAMkB,EAAW,EAC3FpB,EAACE,EAAA,CACC,UAAU,uEACV,KAAMM,EAAY,CAChB,OAAQiB,EAAK,MAAM,OACnB,OAAAd,EACA,aAAcc,EAAK,MAAM,YAC3B,CAAC,EACH,GACF,GACF,IA/BKA,EAAK,EAgCZ,CACD,EACH,GACF,EA3CkC,IA6CtC,EAEA,IAAOC,EAAQhB",
|
|
6
6
|
"names": ["jsx", "jsxs", "Text", "Picture", "Checkbox", "cn", "useMemo", "useProductContext", "formatPrice", "useAiuiContext", "ProductFreeGift", "locale", "freeGift", "checkedGift", "setCheckedGift", "setCheckedBundle", "setJoinedRecommendBuyProducts", "joinedRecommendBuyProducts", "title", "giftList", "freeLabel", "availableGifts", "item", "handleCheckboxClick", "value", "gift", "ProductFreeGift_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as o,jsxs as
|
|
1
|
+
import{jsx as o,jsxs as f}from"react/jsx-runtime";import"./ProductBenefitsTabs/index.js";import t from"./ProductHighlight/index.js";import r from"./ProductFreeGift/index.js";import p from"./ProductOptions/index.js";import i from"./ProductBundle/index.js";import e from"./BenefitsTab";const d=m=>f("div",{id:"ipc-product-detail",className:"flex flex-col gap-12 tablet:px-8 laptop:px-16 desktop:px-0 px-4",children:[o(e,{}),o(t,{}),o(p,{}),o(r,{}),o(i,{})]});var P=d;export{P 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/ProductCard/ProductDetail/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import ProductBenefitsTabs from './ProductBenefitsTabs/index.js'\nimport ProductHighlight from './ProductHighlight/index.js'\nimport ProductFreeGift from './ProductFreeGift/index.js'\nimport ProductOptions from './ProductOptions/index.js'\nimport ProductBundle from './ProductBundle/index.js'\n\n\nconst ProductDetail = (props: any) => {\n return (\n <div id=\"ipc-product-detail\" className=\"flex flex-col gap-12 tablet:px-8 laptop:px-16 desktop:px-0 px-4\">\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["jsx", "jsxs", "ProductHighlight", "ProductFreeGift", "ProductOptions", "ProductBundle", "ProductDetail", "props", "ProductDetail_default"]
|
|
4
|
+
"sourcesContent": ["import ProductBenefitsTabs from './ProductBenefitsTabs/index.js'\nimport ProductHighlight from './ProductHighlight/index.js'\nimport ProductFreeGift from './ProductFreeGift/index.js'\nimport ProductOptions from './ProductOptions/index.js'\nimport ProductBundle from './ProductBundle/index.js'\nimport BenefitsTab from './BenefitsTab'\n\n\nconst ProductDetail = (props: any) => {\n return (\n <div id=\"ipc-product-detail\" className=\"flex flex-col gap-12 tablet:px-8 laptop:px-16 desktop:px-0 px-4\">\n <BenefitsTab />\n <ProductHighlight />\n <ProductOptions />\n <ProductFreeGift />\n <ProductBundle />\n </div>\n )\n}\n\nexport default ProductDetail\n"],
|
|
5
|
+
"mappings": "AAUI,OACE,OAAAA,EADF,QAAAC,MAAA,oBAVJ,MAAgC,iCAChC,OAAOC,MAAsB,8BAC7B,OAAOC,MAAqB,6BAC5B,OAAOC,MAAoB,4BAC3B,OAAOC,MAAmB,2BAC1B,OAAOC,MAAiB,gBAGxB,MAAMC,EAAiBC,GAEnBP,EAAC,OAAI,GAAG,qBAAqB,UAAU,kEACrC,UAAAD,EAACM,EAAA,EAAY,EACbN,EAACE,EAAA,EAAiB,EAClBF,EAACI,EAAA,EAAe,EAChBJ,EAACG,EAAA,EAAgB,EACjBH,EAACK,EAAA,EAAc,GACjB,EAIJ,IAAOI,EAAQF",
|
|
6
|
+
"names": ["jsx", "jsxs", "ProductHighlight", "ProductFreeGift", "ProductOptions", "ProductBundle", "BenefitsTab", "ProductDetail", "props", "ProductDetail_default"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Fragment as ee,jsx as e,jsxs as i}from"react/jsx-runtime";import{useAiuiContext as M}from"../../../../AiuiProvider/index.js";import{Text as D,Picture as T,Badge as j}from"../../../../../components";import{useMemo as V,useState as b,forwardRef as F,useRef as E}from"react";import{Swiper as k,SwiperSlide as N}from"swiper/react";import{Navigation as L,Mousewheel as I,Thumbs as G,Pagination as z}from"swiper/modules";import{cn as y}from"../../../../../helpers/index.js";import{GalleryTabType as R}from"./types.js";import{Content as _,List as O,Root as W,Trigger as Y}from"@radix-ui/react-tabs";import{useProductContext as P}from"../../../ProductProvider.js";import{useVariantMedia as Z}from"../../../hooks/use-variant-media.js";import{SpecsModal as H}from"./components/SpecsModal.js";import K from"./components/CompareModal.js";import{formatPrice as q}from"../../../utils/index.js";const A=t=>i("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[e("rect",{x:"48",y:"48",width:"48",height:"48",rx:"24",transform:"rotate(-180 48 48)",fill:"white"}),e("path",{d:"M25.1035 16.8545C25.5372 16.3818 26.246 16.3818 26.6797 16.8545C27.1067 17.3201 27.1067 18.0706 26.6797 18.5361L21.668 24L26.6797 29.4639C27.1067 29.9294 27.1067 30.6799 26.6797 31.1455C26.246 31.6182 25.5372 31.6182 25.1035 31.1455L19.3203 24.8408C18.8933 24.3752 18.8933 23.6248 19.3203 23.1592L25.1035 16.8545Z",fill:"currentColor"})]}),B=t=>i("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[e("rect",{width:"48",height:"48",rx:"24",transform:"matrix(1 -8.74228e-08 -8.74228e-08 -1 0 48)",fill:"white"}),e("path",{d:"M22.8965 16.8545C22.4628 16.3818 21.754 16.3818 21.3203 16.8545C20.8933 17.3201 20.8933 18.0706 21.3203 18.5361L26.332 24L21.3203 29.4639C20.8933 29.9294 20.8933 30.6799 21.3203 31.1455C21.754 31.6182 22.4628 31.6182 22.8965 31.1455L28.6797 24.8408C29.1067 24.3752 29.1067 23.6248 28.6797 23.1592L22.8965 16.8545Z",fill:"currentColor"})]}),J=()=>{const{copyWriting:t}=M(),{product:o,variant:s,isMobile:v}=P(),a=Z({product:o,variant:s}),[w,h]=b(null),n=s?.metafields?.component?.custom_media_list;let p,u,g,m;n&&n?.available?(p=n?.product||[],u=n?.scenarios||[],g=n?.keyFeatures||[],m=n?.video||[]):(p=a?.productList,u=a?.sceneList,g=a?.keyFeaturesList,m=a?.videoList);const C=V(()=>[...p,...u,...m],[p,u,m]),S={productList:p,sceneList:u,keyFeaturesList:g,videoList:m},c=V(()=>(o?.payload?.components?.find(r=>r.componentKey==="ProductGallery")?.data||[])?.map(r=>({...r,galleries:S[r?.galleries]||[]})).filter(r=>r.galleries.length>0),[o?.payload,S]),l=E({}),[f,x]=b(c?.[0]),$=(d,r)=>{switch(d?.galleryTabType){case R.GALLERY_IMAGE:return e(U,{...d,onCurrentTabLoopEnd:()=>{x(c?.[r])},onCurrentTabLoopStart:()=>{x(c?.[r])},index:r});case R.GALLERY_VIDEO:return e(X,{...d});default:return null}};return e("div",{id:"ipc-product-gallery",children:i(W,{className:"relative",defaultValue:c?.[0]?.tabValue,children:[e("div",{className:"h-[420px] tablet:h-[620px] desktop:rounded-2xl desktop:h-[560px] lg-desktop:h-[700px] bg-[#EAEAEC] desktop:relative ",children:c.map((d,r)=>e(_,{className:"h-full",value:d.tabValue,children:$(d,r)},d.tabValue))}),e(Q,{galleryTabs:c,activeGalleryTab:f,setActiveGalleryTab:x})]})})},Q=({galleryTabs:t,activeGalleryTab:o,setActiveGalleryTab:s})=>{const{product:v}=P();return i("div",{className:"absolute z-[2] bottom-4 left-4 right-4 laptop:left-16 laptop:right-16 flex justify-between items-center tablet:mt-3 desktop:static",children:[e(O,{className:"rounded-full bg-[#EAEAEC] p-1 laptop:p-0 desktop:p-1 overflow-x-auto",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:e("div",{className:"whitespace-nowrap",children:t?.map(a=>e(Y,{className:y("lg-desktop:px-7 lg-desktop:pb-[14px] rounded-full font-bold lg-desktop:pt-[15px] lg-desktop:text-[16px] px-5 pb-[10px] pt-[11px] text-[14px] leading-tight",a.tabValue===o?.tabValue&&"bg-white"),onClick:()=>s(a),value:a.tabValue,children:a.tabLabel},a.tabValue))})}),e("div",{className:"laptop:gap-2 hidden laptop:flex",children:v.metafields?.global?.specifications&&i(ee,{children:[e(H,{})," | ",e(K,{})]})})]})},U=F((t,o)=>{const{locale:s="us",copyWriting:v}=M(),{variant:a,totalSavings:w}=P(),h=E(null),[n,p]=b(null),[u,g]=b(!0),[m,C]=b(!1),[S,c]=b(null);return i("div",{className:"h-full",children:[e(k,{ref:o,className:"h-full",navigation:{nextEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-next`,prevEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-prev`},onSwiper:c,onProgress:l=>{g(l.isBeginning),C(l.isEnd)},pagination:{clickable:!0,el:h.current},onSlideChange:l=>{l&&(l.isEnd?t?.onCurrentTabLoopEnd?.():l.isBeginning&&t?.onCurrentTabLoopStart?.())},thumbs:{swiper:n},modules:[I,G,L,z],mousewheel:{forceToAxis:!0},breakpoints:{0:{slidesPerView:1,freeMode:!1}},children:t?.galleries?.map((l,f)=>e(N,{className:"h-full",children:e(T,{source:l?.image?.url,alt:l?.image?.altText,className:"h-full",imgClassName:"object-contain h-full "})},t?.id+"SwiperSlideItem"+f))}),a.availableForSale&&!!w&&!t.index&&e(j,{size:"lg",className:"absolute bg-brand text-white top-3 laptop:left-16 laptop:top-5 left-4 z-[2] desktop:left-6 desktop:top-6",children:`${q({amount:w,currencyCode:a?.price?.currencyCode,locale:s})} ${v?.off}`}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 tablet:left-6 z-10 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-prev`),children:e(A,{className:"tablet:size-10 lg-desktop:size-12"})}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 tablet:right-6 z-10 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-next`),children:e(B,{className:"tablet:size-10 lg-desktop:size-12"})}),i("div",{className:"absolute bottom-[94px] tablet:bottom-[70px] left-4 right-4 z-10 items-center tablet:flex justify-between laptop:left-16 laptop:right-16 desktop:bottom-[20px] desktop:right-
|
|
1
|
+
import{Fragment as ee,jsx as e,jsxs as i}from"react/jsx-runtime";import{useAiuiContext as M}from"../../../../AiuiProvider/index.js";import{Text as D,Picture as T,Badge as j}from"../../../../../components";import{useMemo as V,useState as b,forwardRef as F,useRef as E}from"react";import{Swiper as k,SwiperSlide as N}from"swiper/react";import{Navigation as L,Mousewheel as I,Thumbs as G,Pagination as z}from"swiper/modules";import{cn as y}from"../../../../../helpers/index.js";import{GalleryTabType as R}from"./types.js";import{Content as _,List as O,Root as W,Trigger as Y}from"@radix-ui/react-tabs";import{useProductContext as P}from"../../../ProductProvider.js";import{useVariantMedia as Z}from"../../../hooks/use-variant-media.js";import{SpecsModal as H}from"./components/SpecsModal.js";import K from"./components/CompareModal.js";import{formatPrice as q}from"../../../utils/index.js";const A=t=>i("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[e("rect",{x:"48",y:"48",width:"48",height:"48",rx:"24",transform:"rotate(-180 48 48)",fill:"white"}),e("path",{d:"M25.1035 16.8545C25.5372 16.3818 26.246 16.3818 26.6797 16.8545C27.1067 17.3201 27.1067 18.0706 26.6797 18.5361L21.668 24L26.6797 29.4639C27.1067 29.9294 27.1067 30.6799 26.6797 31.1455C26.246 31.6182 25.5372 31.6182 25.1035 31.1455L19.3203 24.8408C18.8933 24.3752 18.8933 23.6248 19.3203 23.1592L25.1035 16.8545Z",fill:"currentColor"})]}),B=t=>i("svg",{width:"48",height:"48",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...t,children:[e("rect",{width:"48",height:"48",rx:"24",transform:"matrix(1 -8.74228e-08 -8.74228e-08 -1 0 48)",fill:"white"}),e("path",{d:"M22.8965 16.8545C22.4628 16.3818 21.754 16.3818 21.3203 16.8545C20.8933 17.3201 20.8933 18.0706 21.3203 18.5361L26.332 24L21.3203 29.4639C20.8933 29.9294 20.8933 30.6799 21.3203 31.1455C21.754 31.6182 22.4628 31.6182 22.8965 31.1455L28.6797 24.8408C29.1067 24.3752 29.1067 23.6248 28.6797 23.1592L22.8965 16.8545Z",fill:"currentColor"})]}),J=()=>{const{copyWriting:t}=M(),{product:o,variant:s,isMobile:v}=P(),a=Z({product:o,variant:s}),[w,h]=b(null),n=s?.metafields?.component?.custom_media_list;let p,u,g,m;n&&n?.available?(p=n?.product||[],u=n?.scenarios||[],g=n?.keyFeatures||[],m=n?.video||[]):(p=a?.productList,u=a?.sceneList,g=a?.keyFeaturesList,m=a?.videoList);const C=V(()=>[...p,...u,...m],[p,u,m]),S={productList:p,sceneList:u,keyFeaturesList:g,videoList:m},c=V(()=>(o?.payload?.components?.find(r=>r.componentKey==="ProductGallery")?.data||[])?.map(r=>({...r,galleries:S[r?.galleries]||[]})).filter(r=>r.galleries.length>0),[o?.payload,S]),l=E({}),[f,x]=b(c?.[0]),$=(d,r)=>{switch(d?.galleryTabType){case R.GALLERY_IMAGE:return e(U,{...d,onCurrentTabLoopEnd:()=>{x(c?.[r])},onCurrentTabLoopStart:()=>{x(c?.[r])},index:r});case R.GALLERY_VIDEO:return e(X,{...d});default:return null}};return e("div",{id:"ipc-product-gallery",children:i(W,{className:"relative",defaultValue:c?.[0]?.tabValue,children:[e("div",{className:"h-[420px] tablet:h-[620px] desktop:rounded-2xl desktop:h-[560px] lg-desktop:h-[700px] bg-[#EAEAEC] desktop:relative ",children:c.map((d,r)=>e(_,{className:"h-full",value:d.tabValue,children:$(d,r)},d.tabValue))}),e(Q,{galleryTabs:c,activeGalleryTab:f,setActiveGalleryTab:x})]})})},Q=({galleryTabs:t,activeGalleryTab:o,setActiveGalleryTab:s})=>{const{product:v}=P();return i("div",{className:"absolute z-[2] bottom-4 left-4 right-4 laptop:left-16 laptop:right-16 flex justify-between items-center tablet:mt-3 desktop:static",children:[e(O,{className:"rounded-full bg-[#EAEAEC] p-1 laptop:p-0 desktop:p-1 overflow-x-auto",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:e("div",{className:"whitespace-nowrap",children:t?.map(a=>e(Y,{className:y("lg-desktop:px-7 lg-desktop:pb-[14px] rounded-full font-bold lg-desktop:pt-[15px] lg-desktop:text-[16px] px-5 pb-[10px] pt-[11px] text-[14px] leading-tight",a.tabValue===o?.tabValue&&"bg-white"),onClick:()=>s(a),value:a.tabValue,children:a.tabLabel},a.tabValue))})}),e("div",{className:"laptop:gap-2 hidden laptop:flex",children:v.metafields?.global?.specifications&&i(ee,{children:[e(H,{})," | ",e(K,{})]})})]})},U=F((t,o)=>{const{locale:s="us",copyWriting:v}=M(),{variant:a,totalSavings:w}=P(),h=E(null),[n,p]=b(null),[u,g]=b(!0),[m,C]=b(!1),[S,c]=b(null);return i("div",{className:"h-full",children:[e(k,{ref:o,className:"h-full",navigation:{nextEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-next`,prevEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-prev`},onSwiper:c,onProgress:l=>{g(l.isBeginning),C(l.isEnd)},pagination:{clickable:!0,el:h.current},onSlideChange:l=>{l&&(l.isEnd?t?.onCurrentTabLoopEnd?.():l.isBeginning&&t?.onCurrentTabLoopStart?.())},thumbs:{swiper:n},modules:[I,G,L,z],mousewheel:{forceToAxis:!0},breakpoints:{0:{slidesPerView:1,freeMode:!1}},children:t?.galleries?.map((l,f)=>e(N,{className:"h-full",children:e(T,{source:l?.image?.url,alt:l?.image?.altText,className:"h-full",imgClassName:"object-contain h-full "})},t?.id+"SwiperSlideItem"+f))}),a.availableForSale&&!!w&&!t.index&&e(j,{size:"lg",className:"absolute bg-brand text-white top-3 laptop:left-16 laptop:top-5 left-4 z-[2] desktop:left-6 desktop:top-6",children:`${q({amount:w,currencyCode:a?.price?.currencyCode,locale:s})} ${v?.off}`}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 laptop:left-16 tablet:left-6 desktop:left-6 z-10 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-prev`),children:e(A,{className:"tablet:size-10 lg-desktop:size-12"})}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 laptop:right-16 tablet:right-6 z-10 desktop:right-6 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-next`),children:e(B,{className:"tablet:size-10 lg-desktop:size-12"})}),i("div",{className:"absolute bottom-[94px] tablet:bottom-[70px] left-4 right-4 z-10 items-center tablet:flex justify-between laptop:left-16 laptop:right-16 desktop:bottom-[20px] desktop:right-6 desktop:left-6",children:[e("div",{className:"hidden tablet:block",children:e(k,{className:"flex items-center justify-between",onSwiper:p,spaceBetween:12,slidesPerView:6,freeMode:!0,watchSlidesProgress:!0,modules:[L,G],children:t?.galleries?.map((l,f)=>e(N,{className:"!w-auto [&.swiper-slide-thumb-active]:border [&.swiper-slide-thumb-active]:border-brand",children:e(T,{source:l.image?.url,alt:l.image?.altText,className:"size-10 lg-desktop:size-12 rounded",imgClassName:"object-contain h-full"})},t?.id+"SwiperSlideThumbItem"+f))})}),!t?.index&&i("div",{className:"flex items-center gap-2",children:[e(T,{source:t?.comment?.avatar?.url,className:"size-10 rounded-full shrink-0",imgClassName:"object-cover "}),e(D,{html:t?.comment?.content,className:"text-sm lg-desktop:text-base max-w-[528px] font-bold text-[#6D6D6F] line-clamp-2"})]})]}),e("div",{ref:h,className:"tablet:hidden text-center absolute !bottom-[70px] left-4 right-4 z-10"})]})}),X=t=>i("div",{className:"h-full",children:[e(k,{className:"h-full",navigation:{nextEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-next`,prevEl:`.ipc-product-gallery-${t?.id}-custom-swiper-button-prev`},modules:[I,G,L,z],mousewheel:{forceToAxis:!0},breakpoints:{0:{slidesPerView:1,freeMode:!1}},children:t?.galleries?.map((o,s)=>e(N,{className:"h-full",children:i("video",{controls:!0,className:"size-full",children:[e("track",{kind:"captions"}),e("source",{src:o?.sources?.[0]?.url,type:"video/mp4"}),e("source",{src:o?.sources?.[0]?.url,type:"video/webm"}),e("source",{src:o?.sources?.[0]?.url,type:"video/ogg"})]})},t?.id+"SwiperSlideItem"+s))}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 tablet:left-6 z-10 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-prev`),children:e(A,{className:"tablet:size-10 lg-desktop:size-12"})}),e("div",{className:y("hidden tablet:block tablet:absolute tablet:top-1/2 tablet:right-6 z-10 -translate-y-1/2 cursor-pointer",`ipc-product-gallery-${t?.id}-custom-swiper-button-next`),children:e(B,{className:"tablet:size-10 lg-desktop:size-12"})})]}),ye=t=>e("div",{children:"3D View"});var ve=J;export{ve as default};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|