@anker-in/campaign-ui 0.5.3-beta.1 → 0.5.3-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/cjs/components/credits/context/const.js +1 -1
  2. package/dist/cjs/components/credits/context/const.js.map +2 -2
  3. package/dist/cjs/components/credits/context/utils.d.ts +1 -1
  4. package/dist/cjs/components/credits/context/utils.js +1 -1
  5. package/dist/cjs/components/credits/context/utils.js.map +3 -3
  6. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js +1 -1
  7. package/dist/cjs/components/credits/creditsCash/RedeemableItem.js.map +2 -2
  8. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  9. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  10. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  11. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  12. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +1 -1
  13. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +3 -3
  14. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  15. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +3 -3
  16. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +1 -1
  17. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +3 -3
  18. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  19. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
  20. package/dist/esm/components/credits/context/const.js +1 -1
  21. package/dist/esm/components/credits/context/const.js.map +2 -2
  22. package/dist/esm/components/credits/context/utils.d.ts +1 -1
  23. package/dist/esm/components/credits/context/utils.js +1 -1
  24. package/dist/esm/components/credits/context/utils.js.map +3 -3
  25. package/dist/esm/components/credits/creditsCash/RedeemableItem.js +1 -1
  26. package/dist/esm/components/credits/creditsCash/RedeemableItem.js.map +2 -2
  27. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  28. package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
  29. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  30. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  31. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +1 -1
  32. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +3 -3
  33. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  34. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +3 -3
  35. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +1 -1
  36. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +3 -3
  37. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  38. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
  39. package/package.json +1 -1
  40. package/src/components/credits/context/const.ts +3 -0
  41. package/src/components/credits/context/utils.ts +10 -2
  42. package/src/components/credits/creditsCash/RedeemableItem.tsx +1 -1
  43. package/src/components/credits/creditsInfoCard/index.tsx +3 -3
  44. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +2 -2
  45. package/src/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.tsx +3 -1
  46. package/src/components/credits/creditsRedeemList/RedeemProductModal/Init.tsx +3 -1
  47. package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.tsx +3 -1
  48. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsRedeemList/CreditsRedeemList.tsx"],
4
- "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport RedeemCouponModal from './RedeemCouponModal'\nimport RedeemProductModal from './RedeemProductModal'\nimport RedeemVirtualProductModal from './RedeemVirtualProductModal'\nimport { useCreditsContext } from '../context/provider'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { AlpcConsumeType, AlpcErrorCode, ConsumeType } from '../context/const'\nimport { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport RulesModal from '../modal/RulesModal'\nimport { CreditsRedeemListCopy } from './type'\nimport { useRegistration } from '../../../components/registration'\nimport { numberFormat } from '../context/utils'\nimport useMyRewards from '../context/hooks/useMyRewards'\n\nexport const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; id?: string }) => {\n const {\n profile,\n openSignUpPopup,\n gtm: { pageGroup },\n pageCommon,\n creditInfo,\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const [activeTab, setActiveTab] = useState<string>(copy.list?.[0]?.label || '')\n\n const [popRedeemData, setPopRedeemData] = useState<RedeemableItemType | undefined>(undefined)\n\n const [rules, setRules] = useState<string | string[]>()\n\n const { listLoading, redeemableList, getRedeemableList } = useRedeemableList()\n\n // \u83B7\u53D6\u7528\u6237\u7684 ExternalProduct \u5151\u6362\u8BB0\u5F55\n const { myRewards } = useMyRewards({\n page: 1,\n pageSize: 100,\n consumeType: AlpcConsumeType.ExternalProduct,\n })\n\n // \u5408\u5E76 redeemModal \u6587\u6848\uFF0C\u4F18\u5148\u4F7F\u7528 copy.redeemModal\uFF0Cfallback \u5230 pageCommon.redeemModal\n const redeemModalCopy = useMemo(() => {\n return {\n ...(pageCommon?.redeemModal || {}),\n ...(copy.redeemModal || {}),\n }\n }, [copy.redeemModal, pageCommon?.redeemModal])\n\n const alpcList = useMemo(() => {\n return redeemableList.map(item => {\n return {\n id: item.id.toString(),\n title: item.name,\n consumeCredits: item.consume_credits,\n remainingInventory: item.remaining_inventory,\n isLimited: !!item.is_limited,\n consumeType: item.consume_type,\n handle: item.sku_handle,\n sku: item.goods_sku,\n image: item.goods_url,\n }\n })\n }, [copy.list, activeTab, redeemableList])\n\n const handles = alpcList.map(item => item.handle)\n const { data: products } = useProductsByHandles({ handles })\n\n const list = useMemo(() => {\n const currentList = copy.list?.find(item => item.label === activeTab)\n return (currentList?.list || [])\n .filter(item => alpcList.some(alpcItem => String(alpcItem.id) === String(item.id)))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => String(alpcItem.id) === String(item.id))\n const product = products?.find(product => product.handle === alpcItem?.handle)\n const variant = product?.variants.find(variant => variant.sku === alpcItem?.sku)\n // \u8FC7\u6EE4\u6389\u5E93\u5B58\u4E0D\u8DB3\u7684\u5546\u54C1\n if (alpcItem?.isLimited && (!alpcItem?.remainingInventory || alpcItem.remainingInventory <= 0)) return null\n if (alpcItem?.consumeType === AlpcConsumeType.Product && (!product || !variant)) return null\n\n // \u68C0\u67E5 GoGift \u662F\u5426\u5DF2\u7ECF\u5151\u6362\u8FC7\uFF08\u53EA\u6709 GoGift \u9650\u5236\u5151\u6362\u4E00\u6B21\uFF09\n const hasRedeemed = item.type === ConsumeType.GoGift &&\n isLogin &&\n myRewards.some(reward => reward.rule_id === Number(item.id))\n\n return {\n alpc: alpcList.find(alpcItem => String(alpcItem.id) === String(item.id)),\n config: item,\n product,\n variant,\n hasRedeemed,\n }\n })\n .filter(item => item !== null) as unknown as RedeemableItemType[]\n }, [alpcList, products, isLogin, myRewards])\n\n const handleRedeemError = useCallback(\n (errorCode: AlpcErrorCode) => {\n if (errorCode === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n getRedeemableList()\n }\n },\n [getRedeemableList]\n )\n\n return (\n <Container id={id} className={classNames('relative bg-[#F5F5F7]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n {/* \u53EF\u7528\u79EF\u5206\u5C55\u793A */}\n {isLogin && copy.availableCredits && (\n <p className=\"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]\">\n {copy.availableCredits.includes('$credits') ? (\n <>\n {copy.availableCredits.split('$credits')[0]}\n <span\n className={cn(\n 'text-brand-color-0',\n brand === 'ankersolix' &&\n 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'\n )}\n >\n {numberFormat(creditInfo?.available_credit || 0).toString()}\n </span>\n {copy.availableCredits.split('$credits')[1] || ''}\n </>\n ) : (\n copy.availableCredits\n )}\n </p>\n )}\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('py-[24px] md:justify-center')}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_navigation',\n event_parameters: {\n navigation: value,\n page_group: pageGroup,\n },\n })\n }}\n >\n <TabsList>\n {(copy.list || []).map(item => (\n <TabsTrigger key={item.label} value={item.label}>\n {item.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n {/* PC\u7AEF */}\n {!!alpcList?.length && !listLoading && (\n <div\n className={classNames('relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3')}\n >\n {list?.map(item => (\n <RedeemableItem\n key={item?.alpc?.id}\n copy={copy}\n item={item}\n onRedeem={(item: RedeemableItemType) => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n } else {\n setPopRedeemData(item)\n }\n }}\n onRulesOpen={setRules}\n />\n ))}\n </div>\n )}\n\n {(popRedeemData?.config?.type === ConsumeType.Coupon ||\n popRedeemData?.config?.type === ConsumeType.ShippingCoupon) &&\n redeemModalCopy?.coupon &&\n popRedeemData && (\n <RedeemCouponModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {popRedeemData?.config?.type === ConsumeType.Product && redeemModalCopy?.product && popRedeemData && (\n <RedeemProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {(popRedeemData?.config?.type === ConsumeType.GiftCard || popRedeemData?.config?.type === ConsumeType.GoGift) &&\n redeemModalCopy?.virtualProduct &&\n popRedeemData && (\n <RedeemVirtualProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
- "mappings": "AAmHM,OAMM,YAAAA,GANN,OAAAC,EAMM,QAAAC,MANN,oBAnHN,OAAS,aAAAC,EAAW,WAAAC,EAAS,QAAAC,EAAM,YAAAC,EAAU,eAAAC,MAAmB,wBAChE,OAAOC,MAAgB,aACvB,OAAS,eAAAC,EAAa,WAAAC,EAAS,YAAAC,MAAgB,QAE/C,OAAOC,MAAuB,sBAC9B,OAAOC,MAAwB,uBAC/B,OAAOC,MAA+B,8BACtC,OAAS,qBAAAC,MAAyB,sBAClC,OAAOC,MAAuB,qCAC9B,OAAS,mBAAAC,EAAiB,iBAAAC,EAAe,eAAAC,MAAmB,mBAC5D,OAAS,sBAAAC,GAAoB,wBAAAC,GAAsB,WAAAC,GAAS,cAAcC,MAAU,gBAEpF,OAAS,kBAAAC,OAAsB,mBAC/B,OAAS,kBAAAC,OAAsB,qBAC/B,OAAOC,OAAgB,sBAEvB,OAAS,mBAAAC,OAAuB,mCAChC,OAAS,gBAAAC,OAAoB,mBAC7B,OAAOC,OAAkB,gCAElB,MAAMC,GAAoB,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,IAAoD,CAC/F,KAAM,CACJ,QAAAC,EACA,gBAAAC,EACA,IAAK,CAAE,UAAAC,CAAU,EACjB,WAAAC,EACA,WAAAC,CACF,EAAItB,EAAkB,EAChB,CAAE,iBAAAuB,CAAiB,EAAIX,GAAgB,EACvC,CAAE,MAAAY,CAAM,EAAInB,GAAmB,EAC/BoB,EAAUf,GAAe,SAASc,CAAK,EAEvCE,EAAU,OAAO,KAAKR,GAAW,CAAC,CAAC,EAAE,OAAS,EAE9C,CAACS,EAAWC,CAAY,EAAIhC,EAAiBoB,EAAK,OAAO,CAAC,GAAG,OAAS,EAAE,EAExE,CAACa,EAAeC,CAAgB,EAAIlC,EAAyC,MAAS,EAEtF,CAACmC,EAAOC,CAAQ,EAAIpC,EAA4B,EAEhD,CAAE,YAAAqC,EAAa,eAAAC,EAAgB,kBAAAC,CAAkB,EAAIlC,EAAkB,EAGvE,CAAE,UAAAmC,CAAU,EAAItB,GAAa,CACjC,KAAM,EACN,SAAU,IACV,YAAaZ,EAAgB,eAC/B,CAAC,EAGKmC,EAAkB1C,EAAQ,KACvB,CACL,GAAI0B,GAAY,aAAe,CAAC,EAChC,GAAIL,EAAK,aAAe,CAAC,CAC3B,GACC,CAACA,EAAK,YAAaK,GAAY,WAAW,CAAC,EAExCiB,EAAW3C,EAAQ,IAChBuC,EAAe,IAAIK,IACjB,CACL,GAAIA,EAAK,GAAG,SAAS,EACrB,MAAOA,EAAK,KACZ,eAAgBA,EAAK,gBACrB,mBAAoBA,EAAK,oBACzB,UAAW,CAAC,CAACA,EAAK,WAClB,YAAaA,EAAK,aAClB,OAAQA,EAAK,WACb,IAAKA,EAAK,UACV,MAAOA,EAAK,SACd,EACD,EACA,CAACvB,EAAK,KAAMW,EAAWO,CAAc,CAAC,EAEnCM,EAAUF,EAAS,IAAIC,GAAQA,EAAK,MAAM,EAC1C,CAAE,KAAME,CAAS,EAAInC,GAAqB,CAAE,QAAAkC,CAAQ,CAAC,EAErDE,EAAO/C,EAAQ,KACCqB,EAAK,MAAM,KAAKuB,GAAQA,EAAK,QAAUZ,CAAS,GAC/C,MAAQ,CAAC,GAC3B,OAAOY,GAAQD,EAAS,KAAKK,GAAY,OAAOA,EAAS,EAAE,IAAM,OAAOJ,EAAK,EAAE,CAAC,CAAC,EACjF,IAAIA,GAAQ,CACX,MAAMI,EAAWL,EAAS,KAAKK,GAAY,OAAOA,EAAS,EAAE,IAAM,OAAOJ,EAAK,EAAE,CAAC,EAC5EK,EAAUH,GAAU,KAAKG,GAAWA,EAAQ,SAAWD,GAAU,MAAM,EACvEE,EAAUD,GAAS,SAAS,KAAKC,GAAWA,EAAQ,MAAQF,GAAU,GAAG,EAG/E,GADIA,GAAU,YAAc,CAACA,GAAU,oBAAsBA,EAAS,oBAAsB,IACxFA,GAAU,cAAgBzC,EAAgB,UAAY,CAAC0C,GAAW,CAACC,GAAU,OAAO,KAGxF,MAAMC,EAAcP,EAAK,OAASnC,EAAY,QAC5CsB,GACAU,EAAU,KAAKW,GAAUA,EAAO,UAAY,OAAOR,EAAK,EAAE,CAAC,EAE7D,MAAO,CACL,KAAMD,EAAS,KAAKK,GAAY,OAAOA,EAAS,EAAE,IAAM,OAAOJ,EAAK,EAAE,CAAC,EACvE,OAAQA,EACR,QAAAK,EACA,QAAAC,EACA,YAAAC,CACF,CACF,CAAC,EACA,OAAOP,GAAQA,IAAS,IAAI,EAC9B,CAACD,EAAUG,EAAUf,EAASU,CAAS,CAAC,EAErCY,EAAoBtD,EACvBuD,GAA6B,CACxBA,IAAc9C,EAAc,+BAC9BgC,EAAkB,CAEtB,EACA,CAACA,CAAiB,CACpB,EAEA,OACEhD,EAACC,EAAA,CAAU,GAAI6B,EAAI,UAAWxB,EAAW,uBAAuB,EAC9D,UAAAP,EAACG,EAAA,CAAQ,GAAG,KAAK,KAAK,IAAI,KAAM2B,EAAK,MAAO,EAG3CU,GAAWV,EAAK,kBACf9B,EAAC,KAAE,UAAU,iFACV,SAAA8B,EAAK,iBAAiB,SAAS,UAAU,EACxC7B,EAAAF,GAAA,CACG,UAAA+B,EAAK,iBAAiB,MAAM,UAAU,EAAE,CAAC,EAC1C9B,EAAC,QACC,UAAWsB,EACT,qBACAgB,IAAU,cACV,oGACF,EAEC,SAAAX,GAAaS,GAAY,kBAAoB,CAAC,EAAE,SAAS,EAC5D,EACCN,EAAK,iBAAiB,MAAM,UAAU,EAAE,CAAC,GAAK,IACjD,EAEAA,EAAK,iBAET,EAGF9B,EAACI,EAAA,CACC,MAAOmC,EAAU,UAAY,SAC7B,MAAM,OACN,UAAWhC,EAAW,6BAA6B,EACnD,MAAOkC,EAAU,SAAS,EAC1B,cAAeuB,GAAS,CACtBtB,EAAasB,CAAK,EAClB3C,GAAQ,CACN,MAAO,WACP,WAAY,gBACZ,iBAAkB,CAChB,WAAY2C,EACZ,WAAY9B,CACd,CACF,CAAC,CACH,EAEA,SAAAlC,EAACK,EAAA,CACG,UAAAyB,EAAK,MAAQ,CAAC,GAAG,IAAIuB,GACrBrD,EAACM,EAAA,CAA6B,MAAO+C,EAAK,MACvC,SAAAA,EAAK,OADUA,EAAK,KAEvB,CACD,EACH,EACF,EAEC,CAAC,CAACD,GAAU,QAAU,CAACL,GACtB/C,EAAC,OACC,UAAWO,EAAW,qFAAqF,EAE1G,SAAAiD,GAAM,IAAIH,GACTrD,EAACuB,GAAA,CAEC,KAAMO,EACN,KAAMuB,EACN,SAAWA,GAA6B,CACjCb,EAEM,CAACR,GAAS,WAAa,CAACK,EAAiB,mBAClDA,EAAiB,iBAAiB,EAAI,EACtCA,EAAiB,KAAK,GAEtBO,EAAiBS,CAAI,EALrBpB,EAAgB,CAOpB,EACA,YAAaa,GAbRO,GAAM,MAAM,EAcnB,CACD,EACH,GAGAV,GAAe,QAAQ,OAASzB,EAAY,QAC5CyB,GAAe,QAAQ,OAASzB,EAAY,iBAC5CiC,GAAiB,QACjBR,GACE3C,EAACW,EAAA,CACC,KAAMgC,EACN,KAAMQ,EACN,QAASW,EACT,QAAS,IAAM,CACblB,EAAiB,MAAS,CAC5B,EACF,EAEHD,GAAe,QAAQ,OAASzB,EAAY,SAAWiC,GAAiB,SAAWR,GAClF3C,EAACY,EAAA,CACC,KAAM+B,EACN,KAAMQ,EACN,QAASW,EACT,QAAS,IAAM,CACblB,EAAiB,MAAS,CAC5B,EACF,GAEAD,GAAe,QAAQ,OAASzB,EAAY,UAAYyB,GAAe,QAAQ,OAASzB,EAAY,SACpGiC,GAAiB,gBACjBR,GACE3C,EAACa,EAAA,CACC,KAAM8B,EACN,KAAMQ,EACN,QAASW,EACT,QAAS,IAAM,CACblB,EAAiB,MAAS,CAC5B,EACF,EAEHC,GACC7C,EAACyB,GAAA,CACC,iBAAiB,+BACjB,UAAWH,EAAG,+BAAgC,CAACiB,GAAW,iBAAiB,EAC3E,OAAQM,EAAM,OAAS,EACvB,QAAS,IAAMC,EAAS,CAAC,CAAC,EAC1B,eAAe,gCACf,MAAOD,EACP,gBAAgB,mCAChB,MAAOV,GAAY,UACnB,cAAc,2BAChB,GAEJ,CAEJ",
6
- "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "RedeemVirtualProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "ConsumeType", "useHeadlessContext", "useProductsByHandles", "gaTrack", "cn", "RedeemableItem", "ROUNDED_BRANDS", "RulesModal", "useRegistration", "numberFormat", "useMyRewards", "CreditsRedeemList", "copy", "id", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "creditInfo", "authCodeActivate", "brand", "rounded", "isLogin", "activeTab", "setActiveTab", "popRedeemData", "setPopRedeemData", "rules", "setRules", "listLoading", "redeemableList", "getRedeemableList", "myRewards", "redeemModalCopy", "alpcList", "item", "handles", "products", "list", "alpcItem", "product", "variant", "hasRedeemed", "reward", "handleRedeemError", "errorCode", "value"]
4
+ "sourcesContent": ["import { Container, Heading, Tabs, TabsList, TabsTrigger } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { useCallback, useMemo, useState } from 'react'\n\nimport RedeemCouponModal from './RedeemCouponModal'\nimport RedeemProductModal from './RedeemProductModal'\nimport RedeemVirtualProductModal from './RedeemVirtualProductModal'\nimport { useCreditsContext } from '../context/provider'\nimport useRedeemableList from '../context/hooks/useRedeemableList'\nimport { AlpcConsumeType, AlpcErrorCode, ConsumeType } from '../context/const'\nimport { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { RedeemableItem } from './RedeemableItem'\nimport { ROUNDED_BRANDS } from '../../../constants'\nimport RulesModal from '../modal/RulesModal'\nimport { CreditsRedeemListCopy } from './type'\nimport { useRegistration } from '../../../components/registration'\nimport { numberFormat } from '../context/utils'\nimport useMyRewards from '../context/hooks/useMyRewards'\n\nexport const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; id?: string }) => {\n const {\n profile,\n openSignUpPopup,\n gtm: { pageGroup },\n pageCommon,\n creditInfo,\n } = useCreditsContext()\n const { authCodeActivate } = useRegistration()\n const { brand, locale } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = Object.keys(profile || {}).length > 0\n\n const [activeTab, setActiveTab] = useState<string>(copy.list?.[0]?.label || '')\n\n const [popRedeemData, setPopRedeemData] = useState<RedeemableItemType | undefined>(undefined)\n\n const [rules, setRules] = useState<string | string[]>()\n\n const { listLoading, redeemableList, getRedeemableList } = useRedeemableList()\n\n // \u83B7\u53D6\u7528\u6237\u7684 ExternalProduct \u5151\u6362\u8BB0\u5F55\n const { myRewards } = useMyRewards({\n page: 1,\n pageSize: 100,\n consumeType: AlpcConsumeType.ExternalProduct,\n })\n\n // \u5408\u5E76 redeemModal \u6587\u6848\uFF0C\u4F18\u5148\u4F7F\u7528 copy.redeemModal\uFF0Cfallback \u5230 pageCommon.redeemModal\n const redeemModalCopy = useMemo(() => {\n return {\n ...(pageCommon?.redeemModal || {}),\n ...(copy.redeemModal || {}),\n }\n }, [copy.redeemModal, pageCommon?.redeemModal])\n\n const alpcList = useMemo(() => {\n return redeemableList.map(item => {\n return {\n id: item.id.toString(),\n title: item.name,\n consumeCredits: item.consume_credits,\n remainingInventory: item.remaining_inventory,\n isLimited: !!item.is_limited,\n consumeType: item.consume_type,\n handle: item.sku_handle,\n sku: item.goods_sku,\n image: item.goods_url,\n }\n })\n }, [copy.list, activeTab, redeemableList])\n\n const handles = alpcList.map(item => item.handle)\n const { data: products } = useProductsByHandles({ handles })\n\n const list = useMemo(() => {\n const currentList = copy.list?.find(item => item.label === activeTab)\n return (currentList?.list || [])\n .filter(item => alpcList.some(alpcItem => String(alpcItem.id) === String(item.id)))\n .map(item => {\n const alpcItem = alpcList.find(alpcItem => String(alpcItem.id) === String(item.id))\n const product = products?.find(product => product.handle === alpcItem?.handle)\n const variant = product?.variants.find(variant => variant.sku === alpcItem?.sku)\n // \u8FC7\u6EE4\u6389\u5E93\u5B58\u4E0D\u8DB3\u7684\u5546\u54C1\n if (alpcItem?.isLimited && (!alpcItem?.remainingInventory || alpcItem.remainingInventory <= 0)) return null\n if (alpcItem?.consumeType === AlpcConsumeType.Product && (!product || !variant)) return null\n\n // \u68C0\u67E5 GoGift \u662F\u5426\u5DF2\u7ECF\u5151\u6362\u8FC7\uFF08\u53EA\u6709 GoGift \u9650\u5236\u5151\u6362\u4E00\u6B21\uFF09\n const hasRedeemed = item.type === ConsumeType.GoGift &&\n isLogin &&\n myRewards.some(reward => reward.rule_id === Number(item.id))\n\n return {\n alpc: alpcList.find(alpcItem => String(alpcItem.id) === String(item.id)),\n config: item,\n product,\n variant,\n hasRedeemed,\n }\n })\n .filter(item => item !== null) as unknown as RedeemableItemType[]\n }, [alpcList, products, isLogin, myRewards])\n\n const handleRedeemError = useCallback(\n (errorCode: AlpcErrorCode) => {\n if (errorCode === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n getRedeemableList()\n }\n },\n [getRedeemableList]\n )\n\n return (\n <Container id={id} className={classNames('relative bg-[#F5F5F7]')}>\n <Heading as=\"h2\" size=\"4\" html={copy.title} />\n\n {/* \u53EF\u7528\u79EF\u5206\u5C55\u793A */}\n {isLogin && copy.availableCredits && (\n <p className=\"mt-[12px] text-[20px] l-xxl:text-[18px] l:text-[16px] font-bold text-[#4A4C56]\">\n {copy.availableCredits.includes('$credits') ? (\n <>\n {copy.availableCredits.split('$credits')[0]}\n <span\n className={cn(\n 'text-brand-color-0',\n brand === 'ankersolix' &&\n 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'\n )}\n >\n {numberFormat(creditInfo?.available_credit || 0, locale).toString()}\n </span>\n {copy.availableCredits.split('$credits')[1] || ''}\n </>\n ) : (\n copy.availableCredits\n )}\n </p>\n )}\n\n <Tabs\n shape={rounded ? 'rounded' : 'square'}\n align=\"left\"\n className={classNames('py-[24px] md:justify-center')}\n value={activeTab.toString()}\n onValueChange={value => {\n setActiveTab(value)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_navigation',\n event_parameters: {\n navigation: value,\n page_group: pageGroup,\n },\n })\n }}\n >\n <TabsList>\n {(copy.list || []).map(item => (\n <TabsTrigger key={item.label} value={item.label}>\n {item.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n {/* PC\u7AEF */}\n {!!alpcList?.length && !listLoading && (\n <div\n className={classNames('relative grid grid-cols-4 gap-[16px] md:grid-cols-2 md:gap-[12px] md-xl:grid-cols-3')}\n >\n {list?.map(item => (\n <RedeemableItem\n key={item?.alpc?.id}\n copy={copy}\n item={item}\n onRedeem={(item: RedeemableItemType) => {\n if (!isLogin) {\n openSignUpPopup()\n } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {\n authCodeActivate.setAutoSendEmail(true)\n authCodeActivate.open()\n } else {\n setPopRedeemData(item)\n }\n }}\n onRulesOpen={setRules}\n />\n ))}\n </div>\n )}\n\n {(popRedeemData?.config?.type === ConsumeType.Coupon ||\n popRedeemData?.config?.type === ConsumeType.ShippingCoupon) &&\n redeemModalCopy?.coupon &&\n popRedeemData && (\n <RedeemCouponModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {popRedeemData?.config?.type === ConsumeType.Product && redeemModalCopy?.product && popRedeemData && (\n <RedeemProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {(popRedeemData?.config?.type === ConsumeType.GiftCard || popRedeemData?.config?.type === ConsumeType.GoGift) &&\n redeemModalCopy?.virtualProduct &&\n popRedeemData && (\n <RedeemVirtualProductModal\n item={popRedeemData}\n copy={redeemModalCopy}\n onError={handleRedeemError}\n onClose={() => {\n setPopRedeemData(undefined)\n }}\n />\n )}\n {rules && (\n <RulesModal\n overlayClassName=\"md:px-[16px] md:items-center\"\n className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}\n isOpen={rules.length > 0}\n onClose={() => setRules([])}\n titleClassName=\"border-b-transparent h-[56px]\"\n rules={rules}\n scrollClassName=\"md:mt-[8px] md:mb-[24px] md:pt-0\"\n title={pageCommon?.ruleLabel}\n ruleClassName=\"text-[#1d1d1f] font-bold\"\n />\n )}\n </Container>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Container", "Heading", "Tabs", "TabsList", "TabsTrigger", "classNames", "useCallback", "useMemo", "useState", "RedeemCouponModal", "RedeemProductModal", "RedeemVirtualProductModal", "useCreditsContext", "useRedeemableList", "AlpcConsumeType", "AlpcErrorCode", "ConsumeType", "useHeadlessContext", "useProductsByHandles", "gaTrack", "cn", "RedeemableItem", "ROUNDED_BRANDS", "RulesModal", "useRegistration", "numberFormat", "useMyRewards", "CreditsRedeemList", "copy", "id", "profile", "openSignUpPopup", "pageGroup", "pageCommon", "creditInfo", "authCodeActivate", "brand", "locale", "rounded", "isLogin", "activeTab", "setActiveTab", "popRedeemData", "setPopRedeemData", "rules", "setRules", "listLoading", "redeemableList", "getRedeemableList", "myRewards", "redeemModalCopy", "alpcList", "item", "handles", "products", "list", "alpcItem", "product", "variant", "hasRedeemed", "reward", "handleRedeemError", "errorCode", "value"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as b,jsx as e,jsxs as o}from"react/jsx-runtime";import{Button as r,Picture as c,Text as m}from"@anker-in/headless-ui";import p from"classnames";import{numberFormat as u}from"../../context/utils";import{NoneProductValue as f}from"../RedeemProductModal/NonProductValue";import{useCreditsContext as g}from"../../context/provider";const w=({item:t,copy:a,loading:i,disabled:d,onConfirm:n})=>{const{pageCommon:l}=g();return o(b,{children:[o("div",{className:p("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:[o("div",{className:"relative mx-auto h-[164px] w-[324px]",children:[l?.imageMapping?.[t.config?.type]?.url&&e(c,{source:l.imageMapping[t.config.type].url,className:"h-full [&_img]:h-full"}),e("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:t.config.value?e(f,{item:t}):e(m,{size:3,html:t.alpc?.title})})]}),o(m,{as:"p",className:p("mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]"),children:[u(t.alpc?.consumeCredits)," ",l?.pointUnit]}),t.config?.rules?.length>0&&o("div",{className:"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]",children:[o("div",{className:"mb-[4px]",children:[l?.ruleLabel,":"]}),e("ul",{className:"ml-4 grid grid-flow-row gap-[4px]",children:t.config?.rules?.map((x,s)=>e("li",{className:"list-disc",children:e(m,{html:x})},s))})]})]}),o("div",{className:"bg-white px-[48px] pt-[24px] text-center md:px-[16px]",children:[e(m,{className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:a.confirmTitle}),e(r,{loading:i,variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:n,disabled:d,children:a.confirmButton})]})]})};export{w as CouponInit};
1
+ import{Fragment as N,jsx as e,jsxs as o}from"react/jsx-runtime";import{Button as c,Picture as u,Text as m}from"@anker-in/headless-ui";import p from"classnames";import{numberFormat as f}from"../../context/utils";import{NoneProductValue as g}from"../RedeemProductModal/NonProductValue";import{useCreditsContext as b}from"../../context/provider";import{useHeadlessContext as v}from"@anker-in/lib";const F=({item:t,copy:a,loading:i,disabled:d,onConfirm:n})=>{const{pageCommon:l}=b(),{locale:s}=v();return o(N,{children:[o("div",{className:p("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:[o("div",{className:"relative mx-auto h-[164px] w-[324px]",children:[l?.imageMapping?.[t.config?.type]?.url&&e(u,{source:l.imageMapping[t.config.type].url,className:"h-full [&_img]:h-full"}),e("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:t.config.value?e(g,{item:t}):e(m,{size:3,html:t.alpc?.title})})]}),o(m,{as:"p",className:p("mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]"),children:[f(t.alpc?.consumeCredits,s)," ",l?.pointUnit]}),t.config?.rules?.length>0&&o("div",{className:"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]",children:[o("div",{className:"mb-[4px]",children:[l?.ruleLabel,":"]}),e("ul",{className:"ml-4 grid grid-flow-row gap-[4px]",children:t.config?.rules?.map((x,r)=>e("li",{className:"list-disc",children:e(m,{html:x})},r))})]})]}),o("div",{className:"bg-white px-[48px] pt-[24px] text-center md:px-[16px]",children:[e(m,{className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:a.confirmTitle}),e(c,{loading:i,variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:n,disabled:d,children:a.confirmButton})]})]})};export{F as CouponInit};
2
2
  //# sourceMappingURL=CouponInit.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.tsx"],
4
- "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { NoneProductValue } from '../RedeemProductModal/NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\n\ntype CouponInitProps = {\n item: RedeemableItemType\n copy: RedeemModalCommon\n loading: boolean\n disabled: boolean\n onConfirm: () => void\n}\n\nexport const CouponInit = ({ item, copy, loading, disabled, onConfirm }: CouponInitProps) => {\n const { pageCommon } = useCreditsContext()\n\n return (\n <>\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <div className=\"relative mx-auto h-[164px] w-[324px]\">\n {pageCommon?.imageMapping?.[item.config?.type]?.url && (\n <Picture source={pageCommon.imageMapping[item.config.type].url} className=\"h-full [&_img]:h-full\" />\n )}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value ? (\n <NoneProductValue item={item} />\n ) : (\n <Text size={3} html={item.alpc?.title} />\n )}\n </div>\n </div>\n <Text\n as=\"p\"\n className={classNames(\n 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}\n </Text>\n {item.config?.rules?.length > 0 && (\n <div className=\"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]\">\n <div className=\"mb-[4px]\">{pageCommon?.ruleLabel}:</div>\n <ul className=\"ml-4 grid grid-flow-row gap-[4px]\">\n {item.config?.rules?.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text html={text} />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <div className=\"bg-white px-[48px] pt-[24px] text-center md:px-[16px]\">\n <Text\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={onConfirm}\n disabled={disabled}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </>\n )\n}\n"],
5
- "mappings": "AAmBI,mBAAAA,EAQQ,OAAAC,EAFJ,QAAAC,MANJ,oBAnBJ,OAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,wBACtC,OAAOC,MAAgB,aACvB,OAAS,gBAAAC,MAAoB,sBAE7B,OAAS,oBAAAC,MAAwB,wCACjC,OAAS,qBAAAC,MAAyB,yBAU3B,MAAMC,EAAa,CAAC,CAAE,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,IAAuB,CAC3F,KAAM,CAAE,WAAAC,CAAW,EAAIP,EAAkB,EAEzC,OACEP,EAAAF,EAAA,CACE,UAAAE,EAAC,OACC,UAAWI,EACT,8FACF,EAEA,UAAAJ,EAAC,OAAI,UAAU,uCACZ,UAAAc,GAAY,eAAeL,EAAK,QAAQ,IAAI,GAAG,KAC9CV,EAACG,EAAA,CAAQ,OAAQY,EAAW,aAAaL,EAAK,OAAO,IAAI,EAAE,IAAK,UAAU,wBAAwB,EAEpGV,EAAC,OAAI,UAAU,8DACZ,SAAAU,EAAK,OAAO,MACXV,EAACO,EAAA,CAAiB,KAAMG,EAAM,EAE9BV,EAACI,EAAA,CAAK,KAAM,EAAG,KAAMM,EAAK,MAAM,MAAO,EAE3C,GACF,EACAT,EAACG,EAAA,CACC,GAAG,IACH,UAAWC,EACT,wGACF,EAEC,UAAAC,EAAaI,EAAK,MAAM,cAAc,EAAE,IAAEK,GAAY,WACzD,EACCL,EAAK,QAAQ,OAAO,OAAS,GAC5BT,EAAC,OAAI,UAAU,kGACb,UAAAA,EAAC,OAAI,UAAU,WAAY,UAAAc,GAAY,UAAU,KAAC,EAClDf,EAAC,MAAG,UAAU,oCACX,SAAAU,EAAK,QAAQ,OAAO,IAAI,CAACM,EAAMC,IAC9BjB,EAAC,MAAG,UAAU,YACZ,SAAAA,EAACI,EAAA,CAAK,KAAMY,EAAM,GADWC,CAE/B,CACD,EACH,GACF,GAEJ,EACAhB,EAAC,OAAI,UAAU,wDACb,UAAAD,EAACI,EAAA,CACC,UAAU,4EACV,KAAMO,EAAK,aACZ,EACDX,EAACE,EAAA,CACC,QAASU,EACT,QAAQ,UACR,KAAK,KACL,UAAU,mBACV,QAASE,EACT,SAAUD,EAET,SAAAF,EAAK,cACR,GACF,GACF,CAEJ",
6
- "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "numberFormat", "NoneProductValue", "useCreditsContext", "CouponInit", "item", "copy", "loading", "disabled", "onConfirm", "pageCommon", "text", "index"]
4
+ "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { NoneProductValue } from '../RedeemProductModal/NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\ntype CouponInitProps = {\n item: RedeemableItemType\n copy: RedeemModalCommon\n loading: boolean\n disabled: boolean\n onConfirm: () => void\n}\n\nexport const CouponInit = ({ item, copy, loading, disabled, onConfirm }: CouponInitProps) => {\n const { pageCommon } = useCreditsContext()\n const { locale } = useHeadlessContext()\n\n return (\n <>\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <div className=\"relative mx-auto h-[164px] w-[324px]\">\n {pageCommon?.imageMapping?.[item.config?.type]?.url && (\n <Picture source={pageCommon.imageMapping[item.config.type].url} className=\"h-full [&_img]:h-full\" />\n )}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value ? (\n <NoneProductValue item={item} />\n ) : (\n <Text size={3} html={item.alpc?.title} />\n )}\n </div>\n </div>\n <Text\n as=\"p\"\n className={classNames(\n 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}\n </Text>\n {item.config?.rules?.length > 0 && (\n <div className=\"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]\">\n <div className=\"mb-[4px]\">{pageCommon?.ruleLabel}:</div>\n <ul className=\"ml-4 grid grid-flow-row gap-[4px]\">\n {item.config?.rules?.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text html={text} />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <div className=\"bg-white px-[48px] pt-[24px] text-center md:px-[16px]\">\n <Text\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={onConfirm}\n disabled={disabled}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </>\n )\n}\n"],
5
+ "mappings": "AAqBI,mBAAAA,EAQQ,OAAAC,EAFJ,QAAAC,MANJ,oBArBJ,OAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,wBACtC,OAAOC,MAAgB,aACvB,OAAS,gBAAAC,MAAoB,sBAE7B,OAAS,oBAAAC,MAAwB,wCACjC,OAAS,qBAAAC,MAAyB,yBAClC,OAAS,sBAAAC,MAA0B,gBAU5B,MAAMC,EAAa,CAAC,CAAE,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,IAAuB,CAC3F,KAAM,CAAE,WAAAC,CAAW,EAAIR,EAAkB,EACnC,CAAE,OAAAS,CAAO,EAAIR,EAAmB,EAEtC,OACER,EAAAF,EAAA,CACE,UAAAE,EAAC,OACC,UAAWI,EACT,8FACF,EAEA,UAAAJ,EAAC,OAAI,UAAU,uCACZ,UAAAe,GAAY,eAAeL,EAAK,QAAQ,IAAI,GAAG,KAC9CX,EAACG,EAAA,CAAQ,OAAQa,EAAW,aAAaL,EAAK,OAAO,IAAI,EAAE,IAAK,UAAU,wBAAwB,EAEpGX,EAAC,OAAI,UAAU,8DACZ,SAAAW,EAAK,OAAO,MACXX,EAACO,EAAA,CAAiB,KAAMI,EAAM,EAE9BX,EAACI,EAAA,CAAK,KAAM,EAAG,KAAMO,EAAK,MAAM,MAAO,EAE3C,GACF,EACAV,EAACG,EAAA,CACC,GAAG,IACH,UAAWC,EACT,wGACF,EAEC,UAAAC,EAAaK,EAAK,MAAM,eAAgBM,CAAM,EAAE,IAAED,GAAY,WACjE,EACCL,EAAK,QAAQ,OAAO,OAAS,GAC5BV,EAAC,OAAI,UAAU,kGACb,UAAAA,EAAC,OAAI,UAAU,WAAY,UAAAe,GAAY,UAAU,KAAC,EAClDhB,EAAC,MAAG,UAAU,oCACX,SAAAW,EAAK,QAAQ,OAAO,IAAI,CAACO,EAAMC,IAC9BnB,EAAC,MAAG,UAAU,YACZ,SAAAA,EAACI,EAAA,CAAK,KAAMc,EAAM,GADWC,CAE/B,CACD,EACH,GACF,GAEJ,EACAlB,EAAC,OAAI,UAAU,wDACb,UAAAD,EAACI,EAAA,CACC,UAAU,4EACV,KAAMQ,EAAK,aACZ,EACDZ,EAACE,EAAA,CACC,QAASW,EACT,QAAQ,UACR,KAAK,KACL,UAAU,mBACV,QAASE,EACT,SAAUD,EAET,SAAAF,EAAK,cACR,GACF,GACF,CAEJ",
6
+ "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "numberFormat", "NoneProductValue", "useCreditsContext", "useHeadlessContext", "CouponInit", "item", "copy", "loading", "disabled", "onConfirm", "pageCommon", "locale", "text", "index"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as w,jsx as e,jsxs as o}from"react/jsx-runtime";import{Button as u,Picture as i,Text as a}from"@anker-in/headless-ui";import d from"classnames";import{Fragment as f,useMemo as g}from"react";import{numberFormat as v}from"../../context/utils";import{ConsumeType as b}from"../../context/const";import{NoneProductValue as N}from"./NonProductValue";import{useCreditsContext as h}from"../../context/provider";const k=({copy:s,item:t,loading:x,disabled:n,setStatus:c})=>{const{pageCommon:p}=h(),r=g(()=>t.config.rules?.length?t.config.rules:[...t.config.desc?.split("<br>")||[],...s.product.rules||[]],[t.config.rules,t.config.desc,s.product.rules]);return o("div",{className:"flex flex-col",children:[e("div",{className:d("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:o(w,{children:[o("div",{className:"relative mx-auto h-[164px] w-fit",children:[e(i,{source:t.config?.type===b.Product?t.product?.images[0]?.url:p?.imageMapping?.[t.config.type]?.url||t.config.image?.url,className:"h-full w-auto [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"}),e("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:t.config.value&&e(N,{item:t})})]}),o("div",{className:"mt-[30px] md:mt-[18px]",children:[t.config.type==="product"&&e("div",{className:d("mb-[4px] text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"),children:t.config.title}),o(a,{as:"p",className:d(" text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"),children:[v(t.alpc?.consumeCredits)," ",p?.pointUnit]})]}),o("div",{className:"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]",children:[e("div",{className:"text-[16px] font-bold leading-[1.4]",children:s.product.stepTitle}),e("div",{className:"mt-[4px] flex items-center justify-center",children:s.product.steps?.map((l,m)=>o(f,{children:[o("div",{className:"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]",children:[e(i,{source:l.imageUrl,className:"mb-[4px] h-[58px] w-[58px]"}),e("div",{className:"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]",children:l.title})]}),m!==s.product.steps.length-1&&e(i,{source:"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150",className:"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]"})]},m))}),e("div",{className:"overflow-auto",children:r?.length&&e("ul",{className:"ml-[18px] mt-[16px] grid grid-flow-row gap-[4px] text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px]",children:r.map((l,m)=>e("li",{className:"list-disc",children:e(a,{as:"div",html:l,className:"font-bold"})},m))})})]})]})}),o("div",{className:"flex-1 bg-white px-[48px] py-[24px] text-center md:px-[16px]",children:[e(a,{as:"p",className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:s.confirmTitle}),e(u,{loading:x,disabled:n,variant:"primary",size:"lg",className:"mt-[16px] w-full md:mt-[12px]",onClick:()=>{c("address")},children:s.confirmButton})]})]})};export{k as Init};
1
+ import{Fragment as C,jsx as e,jsxs as o}from"react/jsx-runtime";import{Button as f,Picture as a,Text as i}from"@anker-in/headless-ui";import d from"classnames";import{Fragment as g,useMemo as v}from"react";import{numberFormat as b}from"../../context/utils";import{ConsumeType as N}from"../../context/const";import{NoneProductValue as h}from"./NonProductValue";import{useCreditsContext as w}from"../../context/provider";import{useHeadlessContext as y}from"@anker-in/lib";const _=({copy:s,item:t,loading:x,disabled:n,setStatus:c})=>{const{pageCommon:p}=w(),{locale:u}=y(),r=v(()=>t.config.rules?.length?t.config.rules:[...t.config.desc?.split("<br>")||[],...s.product.rules||[]],[t.config.rules,t.config.desc,s.product.rules]);return o("div",{className:"flex flex-col",children:[e("div",{className:d("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:o(C,{children:[o("div",{className:"relative mx-auto h-[164px] w-fit",children:[e(a,{source:t.config?.type===N.Product?t.product?.images[0]?.url:p?.imageMapping?.[t.config.type]?.url||t.config.image?.url,className:"h-full w-auto [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"}),e("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:t.config.value&&e(h,{item:t})})]}),o("div",{className:"mt-[30px] md:mt-[18px]",children:[t.config.type==="product"&&e("div",{className:d("mb-[4px] text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"),children:t.config.title}),o(i,{as:"p",className:d(" text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"),children:[b(t.alpc?.consumeCredits,u)," ",p?.pointUnit]})]}),o("div",{className:"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]",children:[e("div",{className:"text-[16px] font-bold leading-[1.4]",children:s.product.stepTitle}),e("div",{className:"mt-[4px] flex items-center justify-center",children:s.product.steps?.map((l,m)=>o(g,{children:[o("div",{className:"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]",children:[e(a,{source:l.imageUrl,className:"mb-[4px] h-[58px] w-[58px]"}),e("div",{className:"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]",children:l.title})]}),m!==s.product.steps.length-1&&e(a,{source:"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150",className:"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]"})]},m))}),e("div",{className:"overflow-auto",children:r?.length&&e("ul",{className:"ml-[18px] mt-[16px] grid grid-flow-row gap-[4px] text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px]",children:r.map((l,m)=>e("li",{className:"list-disc",children:e(i,{as:"div",html:l,className:"font-bold"})},m))})})]})]})}),o("div",{className:"flex-1 bg-white px-[48px] py-[24px] text-center md:px-[16px]",children:[e(i,{as:"p",className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:s.confirmTitle}),e(f,{loading:x,disabled:n,variant:"primary",size:"lg",className:"mt-[16px] w-full md:mt-[12px]",onClick:()=>{c("address")},children:s.confirmButton})]})]})};export{_ as Init};
2
2
  //# sourceMappingURL=Init.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemProductModal/Init.tsx"],
4
- "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { Fragment, useMemo } from 'react'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { ConsumeType } from '../../context/const'\nimport { NoneProductValue } from './NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\n\ntype InitProps = {\n copy: RedeemModalCommon\n item: RedeemableItemType\n loading: boolean\n disabled: boolean\n setStatus: (status: 'address' | 'init' | 'success' | 'error') => void\n}\n\nexport const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) => {\n const { pageCommon } = useCreditsContext()\n const rules = useMemo(() => {\n if (item.config.rules?.length) {\n return item.config.rules\n }\n const descriptions = item.config.desc?.split('<br>') || []\n return [...descriptions, ...(copy.product.rules || [])]\n }, [item.config.rules, item.config.desc, copy.product.rules])\n\n return (\n <div className=\"flex flex-col\">\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <>\n <div className=\"relative mx-auto h-[164px] w-fit\">\n <Picture\n source={\n item.config?.type === ConsumeType.Product\n ? item.product?.images[0]?.url\n : pageCommon?.imageMapping?.[item.config.type]?.url || item.config.image?.url\n }\n className=\"h-full w-auto [&_img]:h-full [&_img]:w-auto [&_img]:object-contain\"\n ></Picture>\n {/* \u793C\u54C1\u5361\u5C55\u793A */}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value && <NoneProductValue item={item} />}\n </div>\n </div>\n <div className=\"mt-[30px] md:mt-[18px]\">\n {item.config.type === 'product' && (\n <div\n className={classNames(\n 'mb-[4px] text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {item.config.title}\n </div>\n )}\n <Text\n as=\"p\"\n className={classNames(' text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]')}\n >\n {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}\n </Text>\n </div>\n <div className=\"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{copy.product.stepTitle}</div>\n <div className=\"mt-[4px] flex items-center justify-center\">\n {copy.product.steps?.map((item, index) => (\n <Fragment key={index}>\n <div className=\"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]\">\n <Picture source={item.imageUrl} className=\"mb-[4px] h-[58px] w-[58px]\"></Picture>\n <div className=\"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]\">\n {item.title}\n </div>\n </div>\n {index !== copy.product.steps.length - 1 && (\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150\"\n className=\"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]\"\n ></Picture>\n )}\n </Fragment>\n ))}\n </div>\n <div className=\"overflow-auto\">\n {rules?.length && (\n <ul className=\"ml-[18px] mt-[16px] grid grid-flow-row gap-[4px] text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px]\">\n {rules.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text as=\"div\" html={text} className=\"font-bold\" />\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n </>\n </div>\n <div className=\"flex-1 bg-white px-[48px] py-[24px] text-center md:px-[16px]\">\n <Text\n as=\"p\"\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n disabled={disabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full md:mt-[12px]\"\n onClick={() => {\n setStatus('address')\n }}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "AAkCQ,mBAAAA,EAEI,OAAAC,EADF,QAAAC,MADF,oBAlCR,OAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,wBACtC,OAAOC,MAAgB,aACvB,OAAS,YAAAN,EAAU,WAAAO,MAAe,QAClC,OAAS,gBAAAC,MAAoB,sBAE7B,OAAS,eAAAC,MAAmB,sBAC5B,OAAS,oBAAAC,MAAwB,oBACjC,OAAS,qBAAAC,MAAyB,yBAU3B,MAAMC,EAAO,CAAC,CAAE,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,IAAiB,CAC/E,KAAM,CAAE,WAAAC,CAAW,EAAIP,EAAkB,EACnCQ,EAAQZ,EAAQ,IAChBO,EAAK,OAAO,OAAO,OACdA,EAAK,OAAO,MAGd,CAAC,GADaA,EAAK,OAAO,MAAM,MAAM,MAAM,GAAK,CAAC,EAChC,GAAID,EAAK,QAAQ,OAAS,CAAC,CAAE,EACrD,CAACC,EAAK,OAAO,MAAOA,EAAK,OAAO,KAAMD,EAAK,QAAQ,KAAK,CAAC,EAE5D,OACEX,EAAC,OAAI,UAAU,gBACb,UAAAD,EAAC,OACC,UAAWK,EACT,8FACF,EAEA,SAAAJ,EAAAF,EAAA,CACE,UAAAE,EAAC,OAAI,UAAU,mCACb,UAAAD,EAACG,EAAA,CACC,OACEU,EAAK,QAAQ,OAASL,EAAY,QAC9BK,EAAK,SAAS,OAAO,CAAC,GAAG,IACzBI,GAAY,eAAeJ,EAAK,OAAO,IAAI,GAAG,KAAOA,EAAK,OAAO,OAAO,IAE9E,UAAU,qEACX,EAEDb,EAAC,OAAI,UAAU,8DACZ,SAAAa,EAAK,OAAO,OAASb,EAACS,EAAA,CAAiB,KAAMI,EAAM,EACtD,GACF,EACAZ,EAAC,OAAI,UAAU,yBACZ,UAAAY,EAAK,OAAO,OAAS,WACpBb,EAAC,OACC,UAAWK,EACT,0FACF,EAEC,SAAAQ,EAAK,OAAO,MACf,EAEFZ,EAACG,EAAA,CACC,GAAG,IACH,UAAWC,EAAW,kFAAkF,EAEvG,UAAAE,EAAaM,EAAK,MAAM,cAAc,EAAE,IAAEI,GAAY,WACzD,GACF,EACAhB,EAAC,OAAI,UAAU,sEACb,UAAAD,EAAC,OAAI,UAAU,sCAAuC,SAAAY,EAAK,QAAQ,UAAU,EAC7EZ,EAAC,OAAI,UAAU,4CACZ,SAAAY,EAAK,QAAQ,OAAO,IAAI,CAACC,EAAMM,IAC9BlB,EAACF,EAAA,CACC,UAAAE,EAAC,OAAI,UAAU,8EACb,UAAAD,EAACG,EAAA,CAAQ,OAAQU,EAAK,SAAU,UAAU,6BAA6B,EACvEb,EAAC,OAAI,UAAU,gFACZ,SAAAa,EAAK,MACR,GACF,EACCM,IAAUP,EAAK,QAAQ,MAAM,OAAS,GACrCZ,EAACG,EAAA,CACC,OAAO,qFACP,UAAU,kEACX,IAXUgB,CAaf,CACD,EACH,EACAnB,EAAC,OAAI,UAAU,gBACZ,SAAAkB,GAAO,QACNlB,EAAC,MAAG,UAAU,mHACX,SAAAkB,EAAM,IAAI,CAACE,EAAMD,IAChBnB,EAAC,MAAG,UAAU,YACZ,SAAAA,EAACI,EAAA,CAAK,GAAG,MAAM,KAAMgB,EAAM,UAAU,YAAY,GADpBD,CAE/B,CACD,EACH,EAEJ,GACF,GACF,EACF,EACAlB,EAAC,OAAI,UAAU,+DACb,UAAAD,EAACI,EAAA,CACC,GAAG,IACH,UAAU,4EACV,KAAMQ,EAAK,aACZ,EACDZ,EAACE,EAAA,CACC,QAASY,EACT,SAAUC,EACV,QAAQ,UACR,KAAK,KACL,UAAU,gCACV,QAAS,IAAM,CACbC,EAAU,SAAS,CACrB,EAEC,SAAAJ,EAAK,cACR,GACF,GACF,CAEJ",
6
- "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "useMemo", "numberFormat", "ConsumeType", "NoneProductValue", "useCreditsContext", "Init", "copy", "item", "loading", "disabled", "setStatus", "pageCommon", "rules", "index", "text"]
4
+ "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { Fragment, useMemo } from 'react'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { ConsumeType } from '../../context/const'\nimport { NoneProductValue } from './NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\ntype InitProps = {\n copy: RedeemModalCommon\n item: RedeemableItemType\n loading: boolean\n disabled: boolean\n setStatus: (status: 'address' | 'init' | 'success' | 'error') => void\n}\n\nexport const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) => {\n const { pageCommon } = useCreditsContext()\n const { locale } = useHeadlessContext()\n const rules = useMemo(() => {\n if (item.config.rules?.length) {\n return item.config.rules\n }\n const descriptions = item.config.desc?.split('<br>') || []\n return [...descriptions, ...(copy.product.rules || [])]\n }, [item.config.rules, item.config.desc, copy.product.rules])\n\n return (\n <div className=\"flex flex-col\">\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <>\n <div className=\"relative mx-auto h-[164px] w-fit\">\n <Picture\n source={\n item.config?.type === ConsumeType.Product\n ? item.product?.images[0]?.url\n : pageCommon?.imageMapping?.[item.config.type]?.url || item.config.image?.url\n }\n className=\"h-full w-auto [&_img]:h-full [&_img]:w-auto [&_img]:object-contain\"\n ></Picture>\n {/* \u793C\u54C1\u5361\u5C55\u793A */}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value && <NoneProductValue item={item} />}\n </div>\n </div>\n <div className=\"mt-[30px] md:mt-[18px]\">\n {item.config.type === 'product' && (\n <div\n className={classNames(\n 'mb-[4px] text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {item.config.title}\n </div>\n )}\n <Text\n as=\"p\"\n className={classNames(' text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]')}\n >\n {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}\n </Text>\n </div>\n <div className=\"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{copy.product.stepTitle}</div>\n <div className=\"mt-[4px] flex items-center justify-center\">\n {copy.product.steps?.map((item, index) => (\n <Fragment key={index}>\n <div className=\"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]\">\n <Picture source={item.imageUrl} className=\"mb-[4px] h-[58px] w-[58px]\"></Picture>\n <div className=\"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]\">\n {item.title}\n </div>\n </div>\n {index !== copy.product.steps.length - 1 && (\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150\"\n className=\"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]\"\n ></Picture>\n )}\n </Fragment>\n ))}\n </div>\n <div className=\"overflow-auto\">\n {rules?.length && (\n <ul className=\"ml-[18px] mt-[16px] grid grid-flow-row gap-[4px] text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px]\">\n {rules.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text as=\"div\" html={text} className=\"font-bold\" />\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n </>\n </div>\n <div className=\"flex-1 bg-white px-[48px] py-[24px] text-center md:px-[16px]\">\n <Text\n as=\"p\"\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n disabled={disabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full md:mt-[12px]\"\n onClick={() => {\n setStatus('address')\n }}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "useMemo", "numberFormat", "ConsumeType", "NoneProductValue", "useCreditsContext", "useHeadlessContext", "Init", "copy", "item", "loading", "disabled", "setStatus", "pageCommon", "locale", "rules", "index", "text"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as b,jsx as t,jsxs as e}from"react/jsx-runtime";import{Button as c,Picture as d,Text as p}from"@anker-in/headless-ui";import s from"classnames";import{Fragment as u}from"react";import{numberFormat as f}from"../../context/utils";import{NoneProductValue as v}from"../RedeemProductModal/NonProductValue";import{useCreditsContext as g}from"../../context/provider";const F=({item:l,copy:m,loading:x,disabled:r,onConfirm:n})=>{const{pageCommon:a}=g();return e(b,{children:[e("div",{className:s("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:[e("div",{className:"relative mx-auto h-[164px] w-[324px]",children:[a?.imageMapping?.[l.config?.type]?.url&&t(d,{source:a.imageMapping[l.config.type].url,className:"h-full [&_img]:h-full"}),t("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:l.config.value?t(v,{item:l}):t(p,{size:3,html:l.alpc?.title})})]}),e(p,{as:"p",className:s("mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]"),children:[f(l.alpc?.consumeCredits)," ",a?.pointUnit]}),m?.virtualProduct?.steps&&m.virtualProduct.steps.length>0&&e("div",{className:"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]",children:[t("div",{className:"text-[16px] font-bold leading-[1.4]",children:m.virtualProduct.stepTitle}),t("div",{className:"mt-[4px] flex items-center justify-center",children:m.virtualProduct.steps.map((i,o)=>e(u,{children:[e("div",{className:"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]",children:[t(d,{source:i.imageUrl,className:"mb-[4px] h-[58px] w-[58px]"}),t("div",{className:"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]",children:i.title})]}),o!==m.virtualProduct.steps.length-1&&t(d,{source:"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150",className:"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]"})]},o))})]}),l.config?.rules?.length>0&&e("div",{className:"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]",children:[e("div",{className:"mb-[4px]",children:[a?.ruleLabel,":"]}),t("ul",{className:"ml-4 grid grid-flow-row gap-[4px]",children:l.config?.rules?.map((i,o)=>t("li",{className:"list-disc",children:t(p,{html:i})},o))})]})]}),e("div",{className:"bg-white px-[48px] pt-[24px] text-center md:px-[16px]",children:[t(p,{className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:m.confirmTitle}),t(c,{loading:x,variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:n,disabled:r,children:m.confirmButton})]})]})};export{F as VirtualProductInit};
1
+ import{Fragment as N,jsx as t,jsxs as e}from"react/jsx-runtime";import{Button as u,Picture as s,Text as p}from"@anker-in/headless-ui";import d from"classnames";import{Fragment as f}from"react";import{numberFormat as v}from"../../context/utils";import{NoneProductValue as g}from"../RedeemProductModal/NonProductValue";import{useCreditsContext as b}from"../../context/provider";import{useHeadlessContext as h}from"@anker-in/lib";const R=({item:l,copy:m,loading:x,disabled:r,onConfirm:n})=>{const{pageCommon:a}=b(),{locale:c}=h();return e(N,{children:[e("div",{className:d("max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]"),children:[e("div",{className:"relative mx-auto h-[164px] w-[324px]",children:[a?.imageMapping?.[l.config?.type]?.url&&t(s,{source:a.imageMapping[l.config.type].url,className:"h-full [&_img]:h-full"}),t("div",{className:"absolute bottom-[8px] left-[16px] font-extrabold text-white",children:l.config.value?t(g,{item:l}):t(p,{size:3,html:l.alpc?.title})})]}),e(p,{as:"p",className:d("mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]"),children:[v(l.alpc?.consumeCredits,c)," ",a?.pointUnit]}),m?.virtualProduct?.steps&&m.virtualProduct.steps.length>0&&e("div",{className:"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]",children:[t("div",{className:"text-[16px] font-bold leading-[1.4]",children:m.virtualProduct.stepTitle}),t("div",{className:"mt-[4px] flex items-center justify-center",children:m.virtualProduct.steps.map((i,o)=>e(f,{children:[e("div",{className:"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]",children:[t(s,{source:i.imageUrl,className:"mb-[4px] h-[58px] w-[58px]"}),t("div",{className:"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]",children:i.title})]}),o!==m.virtualProduct.steps.length-1&&t(s,{source:"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150",className:"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]"})]},o))})]}),l.config?.rules?.length>0&&e("div",{className:"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]",children:[e("div",{className:"mb-[4px]",children:[a?.ruleLabel,":"]}),t("ul",{className:"ml-4 grid grid-flow-row gap-[4px]",children:l.config?.rules?.map((i,o)=>t("li",{className:"list-disc",children:t(p,{html:i})},o))})]})]}),e("div",{className:"bg-white px-[48px] pt-[24px] text-center md:px-[16px]",children:[t(p,{className:"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]",html:m.confirmTitle}),t(u,{loading:x,variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:n,disabled:r,children:m.confirmButton})]})]})};export{R as VirtualProductInit};
2
2
  //# sourceMappingURL=VirtualProductInit.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.tsx"],
4
- "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { Fragment } from 'react'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { NoneProductValue } from '../RedeemProductModal/NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\n\ntype VirtualProductInitProps = {\n item: RedeemableItemType\n copy: RedeemModalCommon\n loading: boolean\n disabled: boolean\n onConfirm: () => void\n}\n\nexport const VirtualProductInit = ({ item, copy, loading, disabled, onConfirm }: VirtualProductInitProps) => {\n const { pageCommon } = useCreditsContext()\n\n return (\n <>\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <div className=\"relative mx-auto h-[164px] w-[324px]\">\n {pageCommon?.imageMapping?.[item.config?.type]?.url && (\n <Picture source={pageCommon.imageMapping[item.config.type].url} className=\"h-full [&_img]:h-full\" />\n )}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value ? (\n <NoneProductValue item={item} />\n ) : (\n <Text size={3} html={item.alpc?.title} />\n )}\n </div>\n </div>\n <Text\n as=\"p\"\n className={classNames(\n 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}\n </Text>\n {copy?.virtualProduct?.steps && copy.virtualProduct.steps.length > 0 && (\n <div className=\"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{copy.virtualProduct.stepTitle}</div>\n <div className=\"mt-[4px] flex items-center justify-center\">\n {copy.virtualProduct.steps.map((step, index) => (\n <Fragment key={index}>\n <div className=\"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]\">\n <Picture source={step.imageUrl} className=\"mb-[4px] h-[58px] w-[58px]\"></Picture>\n <div className=\"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]\">\n {step.title}\n </div>\n </div>\n {index !== copy.virtualProduct.steps!.length - 1 && (\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150\"\n className=\"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]\"\n ></Picture>\n )}\n </Fragment>\n ))}\n </div>\n </div>\n )}\n {item.config?.rules?.length > 0 && (\n <div className=\"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]\">\n <div className=\"mb-[4px]\">{pageCommon?.ruleLabel}:</div>\n <ul className=\"ml-4 grid grid-flow-row gap-[4px]\">\n {item.config?.rules?.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text html={text} />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <div className=\"bg-white px-[48px] pt-[24px] text-center md:px-[16px]\">\n <Text\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={onConfirm}\n disabled={disabled}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </>\n )\n}\n"],
5
- "mappings": "AAoBI,mBAAAA,EAQQ,OAAAC,EAFJ,QAAAC,MANJ,oBApBJ,OAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,wBACtC,OAAOC,MAAgB,aACvB,OAAS,YAAAN,MAAgB,QACzB,OAAS,gBAAAO,MAAoB,sBAE7B,OAAS,oBAAAC,MAAwB,wCACjC,OAAS,qBAAAC,MAAyB,yBAU3B,MAAMC,EAAqB,CAAC,CAAE,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,IAA+B,CAC3G,KAAM,CAAE,WAAAC,CAAW,EAAIP,EAAkB,EAEzC,OACEP,EAAAF,EAAA,CACE,UAAAE,EAAC,OACC,UAAWI,EACT,8FACF,EAEA,UAAAJ,EAAC,OAAI,UAAU,uCACZ,UAAAc,GAAY,eAAeL,EAAK,QAAQ,IAAI,GAAG,KAC9CV,EAACG,EAAA,CAAQ,OAAQY,EAAW,aAAaL,EAAK,OAAO,IAAI,EAAE,IAAK,UAAU,wBAAwB,EAEpGV,EAAC,OAAI,UAAU,8DACZ,SAAAU,EAAK,OAAO,MACXV,EAACO,EAAA,CAAiB,KAAMG,EAAM,EAE9BV,EAACI,EAAA,CAAK,KAAM,EAAG,KAAMM,EAAK,MAAM,MAAO,EAE3C,GACF,EACAT,EAACG,EAAA,CACC,GAAG,IACH,UAAWC,EACT,wGACF,EAEC,UAAAC,EAAaI,EAAK,MAAM,cAAc,EAAE,IAAEK,GAAY,WACzD,EACCJ,GAAM,gBAAgB,OAASA,EAAK,eAAe,MAAM,OAAS,GACjEV,EAAC,OAAI,UAAU,sEACb,UAAAD,EAAC,OAAI,UAAU,sCAAuC,SAAAW,EAAK,eAAe,UAAU,EACpFX,EAAC,OAAI,UAAU,4CACZ,SAAAW,EAAK,eAAe,MAAM,IAAI,CAACK,EAAMC,IACpChB,EAACF,EAAA,CACC,UAAAE,EAAC,OAAI,UAAU,8EACb,UAAAD,EAACG,EAAA,CAAQ,OAAQa,EAAK,SAAU,UAAU,6BAA6B,EACvEhB,EAAC,OAAI,UAAU,gFACZ,SAAAgB,EAAK,MACR,GACF,EACCC,IAAUN,EAAK,eAAe,MAAO,OAAS,GAC7CX,EAACG,EAAA,CACC,OAAO,qFACP,UAAU,kEACX,IAXUc,CAaf,CACD,EACH,GACF,EAEDP,EAAK,QAAQ,OAAO,OAAS,GAC5BT,EAAC,OAAI,UAAU,kGACb,UAAAA,EAAC,OAAI,UAAU,WAAY,UAAAc,GAAY,UAAU,KAAC,EAClDf,EAAC,MAAG,UAAU,oCACX,SAAAU,EAAK,QAAQ,OAAO,IAAI,CAACQ,EAAMD,IAC9BjB,EAAC,MAAG,UAAU,YACZ,SAAAA,EAACI,EAAA,CAAK,KAAMc,EAAM,GADWD,CAE/B,CACD,EACH,GACF,GAEJ,EACAhB,EAAC,OAAI,UAAU,wDACb,UAAAD,EAACI,EAAA,CACC,UAAU,4EACV,KAAMO,EAAK,aACZ,EACDX,EAACE,EAAA,CACC,QAASU,EACT,QAAQ,UACR,KAAK,KACL,UAAU,mBACV,QAASE,EACT,SAAUD,EAET,SAAAF,EAAK,cACR,GACF,GACF,CAEJ",
6
- "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "numberFormat", "NoneProductValue", "useCreditsContext", "VirtualProductInit", "item", "copy", "loading", "disabled", "onConfirm", "pageCommon", "step", "index", "text"]
4
+ "sourcesContent": ["import { Button, Picture, Text } from '@anker-in/headless-ui'\nimport classNames from 'classnames'\nimport { Fragment } from 'react'\nimport { numberFormat } from '../../context/utils'\nimport type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'\nimport { NoneProductValue } from '../RedeemProductModal/NonProductValue'\nimport { useCreditsContext } from '../../context/provider'\nimport { useHeadlessContext } from '@anker-in/lib'\n\ntype VirtualProductInitProps = {\n item: RedeemableItemType\n copy: RedeemModalCommon\n loading: boolean\n disabled: boolean\n onConfirm: () => void\n}\n\nexport const VirtualProductInit = ({ item, copy, loading, disabled, onConfirm }: VirtualProductInitProps) => {\n const { pageCommon } = useCreditsContext()\n const { locale } = useHeadlessContext()\n\n return (\n <>\n <div\n className={classNames(\n 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'\n )}\n >\n <div className=\"relative mx-auto h-[164px] w-[324px]\">\n {pageCommon?.imageMapping?.[item.config?.type]?.url && (\n <Picture source={pageCommon.imageMapping[item.config.type].url} className=\"h-full [&_img]:h-full\" />\n )}\n <div className=\"absolute bottom-[8px] left-[16px] font-extrabold text-white\">\n {item.config.value ? (\n <NoneProductValue item={item} />\n ) : (\n <Text size={3} html={item.alpc?.title} />\n )}\n </div>\n </div>\n <Text\n as=\"p\"\n className={classNames(\n 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'\n )}\n >\n {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}\n </Text>\n {copy?.virtualProduct?.steps && copy.virtualProduct.steps.length > 0 && (\n <div className=\"mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]\">\n <div className=\"text-[16px] font-bold leading-[1.4]\">{copy.virtualProduct.stepTitle}</div>\n <div className=\"mt-[4px] flex items-center justify-center\">\n {copy.virtualProduct.steps.map((step, index) => (\n <Fragment key={index}>\n <div className=\"flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]\">\n <Picture source={step.imageUrl} className=\"mb-[4px] h-[58px] w-[58px]\"></Picture>\n <div className=\"min-h-[34px] text-[14px] font-bold text-[#777] md:min-h-[28px] md:text-[12px]\">\n {step.title}\n </div>\n </div>\n {index !== copy.virtualProduct.steps!.length - 1 && (\n <Picture\n source=\"https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150\"\n className=\"mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]\"\n ></Picture>\n )}\n </Fragment>\n ))}\n </div>\n </div>\n )}\n {item.config?.rules?.length > 0 && (\n <div className=\"mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]\">\n <div className=\"mb-[4px]\">{pageCommon?.ruleLabel}:</div>\n <ul className=\"ml-4 grid grid-flow-row gap-[4px]\">\n {item.config?.rules?.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text html={text} />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n <div className=\"bg-white px-[48px] pt-[24px] text-center md:px-[16px]\">\n <Text\n className=\"block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]\"\n html={copy.confirmTitle}\n ></Text>\n <Button\n loading={loading}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={onConfirm}\n disabled={disabled}\n >\n {copy.confirmButton}\n </Button>\n </div>\n </>\n )\n}\n"],
5
+ "mappings": "AAsBI,mBAAAA,EAQQ,OAAAC,EAFJ,QAAAC,MANJ,oBAtBJ,OAAS,UAAAC,EAAQ,WAAAC,EAAS,QAAAC,MAAY,wBACtC,OAAOC,MAAgB,aACvB,OAAS,YAAAN,MAAgB,QACzB,OAAS,gBAAAO,MAAoB,sBAE7B,OAAS,oBAAAC,MAAwB,wCACjC,OAAS,qBAAAC,MAAyB,yBAClC,OAAS,sBAAAC,MAA0B,gBAU5B,MAAMC,EAAqB,CAAC,CAAE,KAAAC,EAAM,KAAAC,EAAM,QAAAC,EAAS,SAAAC,EAAU,UAAAC,CAAU,IAA+B,CAC3G,KAAM,CAAE,WAAAC,CAAW,EAAIR,EAAkB,EACnC,CAAE,OAAAS,CAAO,EAAIR,EAAmB,EAEtC,OACER,EAAAF,EAAA,CACE,UAAAE,EAAC,OACC,UAAWI,EACT,8FACF,EAEA,UAAAJ,EAAC,OAAI,UAAU,uCACZ,UAAAe,GAAY,eAAeL,EAAK,QAAQ,IAAI,GAAG,KAC9CX,EAACG,EAAA,CAAQ,OAAQa,EAAW,aAAaL,EAAK,OAAO,IAAI,EAAE,IAAK,UAAU,wBAAwB,EAEpGX,EAAC,OAAI,UAAU,8DACZ,SAAAW,EAAK,OAAO,MACXX,EAACO,EAAA,CAAiB,KAAMI,EAAM,EAE9BX,EAACI,EAAA,CAAK,KAAM,EAAG,KAAMO,EAAK,MAAM,MAAO,EAE3C,GACF,EACAV,EAACG,EAAA,CACC,GAAG,IACH,UAAWC,EACT,wGACF,EAEC,UAAAC,EAAaK,EAAK,MAAM,eAAgBM,CAAM,EAAE,IAAED,GAAY,WACjE,EACCJ,GAAM,gBAAgB,OAASA,EAAK,eAAe,MAAM,OAAS,GACjEX,EAAC,OAAI,UAAU,sEACb,UAAAD,EAAC,OAAI,UAAU,sCAAuC,SAAAY,EAAK,eAAe,UAAU,EACpFZ,EAAC,OAAI,UAAU,4CACZ,SAAAY,EAAK,eAAe,MAAM,IAAI,CAACM,EAAMC,IACpClB,EAACF,EAAA,CACC,UAAAE,EAAC,OAAI,UAAU,8EACb,UAAAD,EAACG,EAAA,CAAQ,OAAQe,EAAK,SAAU,UAAU,6BAA6B,EACvElB,EAAC,OAAI,UAAU,gFACZ,SAAAkB,EAAK,MACR,GACF,EACCC,IAAUP,EAAK,eAAe,MAAO,OAAS,GAC7CZ,EAACG,EAAA,CACC,OAAO,qFACP,UAAU,kEACX,IAXUgB,CAaf,CACD,EACH,GACF,EAEDR,EAAK,QAAQ,OAAO,OAAS,GAC5BV,EAAC,OAAI,UAAU,kGACb,UAAAA,EAAC,OAAI,UAAU,WAAY,UAAAe,GAAY,UAAU,KAAC,EAClDhB,EAAC,MAAG,UAAU,oCACX,SAAAW,EAAK,QAAQ,OAAO,IAAI,CAACS,EAAMD,IAC9BnB,EAAC,MAAG,UAAU,YACZ,SAAAA,EAACI,EAAA,CAAK,KAAMgB,EAAM,GADWD,CAE/B,CACD,EACH,GACF,GAEJ,EACAlB,EAAC,OAAI,UAAU,wDACb,UAAAD,EAACI,EAAA,CACC,UAAU,4EACV,KAAMQ,EAAK,aACZ,EACDZ,EAACE,EAAA,CACC,QAASW,EACT,QAAQ,UACR,KAAK,KACL,UAAU,mBACV,QAASE,EACT,SAAUD,EAET,SAAAF,EAAK,cACR,GACF,GACF,CAEJ",
6
+ "names": ["Fragment", "jsx", "jsxs", "Button", "Picture", "Text", "classNames", "numberFormat", "NoneProductValue", "useCreditsContext", "useHeadlessContext", "VirtualProductInit", "item", "copy", "loading", "disabled", "onConfirm", "pageCommon", "locale", "step", "index", "text"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as I,Text as v,Picture as d}from"@anker-in/headless-ui";import{useMemo as c}from"react";import u from"classnames";import{useCreditsContext as P}from"../context/provider";import{AlpcConsumeType as g,ConsumeType as b}from"../context/const";import{numberFormat as k,extractVariantId as h}from"../context/utils";import{gaTrack as y,useHeadlessContext as S}from"@anker-in/lib";import{NoneProductValue as z}from"./NonProductValue";import{ROUNDED_BRANDS as E}from"../../../constants";function U({copy:a,className:_,item:e,onRulesOpen:N,onRedeem:R}){const{creditInfo:m,profile:n,gtm:{pageGroup:x,pageHandle:r},pageCommon:o}=P(),{brand:C,locale:s}=S(),p=Object.keys(n||{}).length>0,T=E.includes(C),$=c(()=>!!(e.hasRedeemed||e.alpc?.remainingInventory<=0&&e.alpc?.isLimited||e.alpc?.consumeType===g.Product&&!e.variant?.availableForSale||p&&n?.activated&&e.alpc?.consumeCredits>Number(m?.available_credit||0)),[e.hasRedeemed,e.alpc?.remainingInventory,e.alpc?.isLimited,e.alpc?.consumeType,e.alpc?.consumeCredits,p,n?.activated,m?.available_credit,e.variant?.availableForSale]),f=c(()=>p?e.alpc?.consumeType===g.Product?e.variant?.availableForSale?a.btnRedeem:o?.soldOut||"Sold Out":a.btnRedeem:a.unlockRewards,[p,e.alpc?.consumeType,e.variant?.availableForSale,a.btnRedeem,a.unlockRewards,o?.soldOut]),w=c(()=>{if(e.config?.type!==b.Product||!e.product?.handle)return;const l=s==="us"?"":`/${s}`;return h(e.variant?.id)?`${l}/products/${e.product.handle}?variant=${h(e.variant?.id)}${r?`&ref=${r}`:""}`:`${l}/products/${e.product.handle}${r?`?ref=${r}`:""}`},[e.config?.type,e.product?.handle,e.variant?.id,r,s]);return i("div",{className:u("flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]",!T&&"rounded-none md:rounded-none",_),children:[e.config?.type===b.Product?t("a",{href:w,className:u("relative mx-auto h-[224px] w-fit md:my-[10px] l:h-[120px] l-xxl:h-[138px]"),children:t(d,{className:"h-full w-auto [&_img]:h-full [&_img]:object-contain",source:e.config?.image?.url||e.product?.images?.[0]?.url})}):i("div",{className:"relative mx-auto my-[30px] h-[164px] md:my-0 md:h-[66px] l-xxl:h-[138px] md-l:h-[80px]",children:[t(d,{source:o?.imageMapping?.[e.config?.type]?.url,className:"h-full [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"}),t(z,{item:e})]}),i("div",{className:u("mt-[10px] xl:mt-[8px] flex w-full flex-1 flex-col justify-between"),children:[t(v,{html:e.config?.title||e.alpc?.title,title:e.config?.title||e.alpc?.title,size:2,className:"line-clamp-2 h-[58px] text-[24px] leading-[1.2] l:h-[40px] l:text-[16px] l-xxl:h-[48px] l-xxl:text-[20px]"}),e.config?.rules?.length>0&&t("button",{type:"button",onClick:()=>{N(e.config?.rules||[]),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.activated?"active":"not active",event_parameters:{page_group:x,position:a.title,button_name:o?.ruleLabel,info:e.alpc?.id?.toString()}})},className:"mt-[8px] w-fit text-[16px] font-bold underline md:text-[14px] l:mt-0",tabIndex:0,onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&l.preventDefault()},children:o?.ruleLabel}),i("div",{children:[i("div",{className:"mt-[26px] flex items-center l:mt-[12px] l-xl:mt-[16px]",children:[t(d,{className:"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"}),t(v,{html:`${k(e.alpc?.consumeCredits)}`,size:2,as:"p",className:"ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] "})]}),t(I,{disabled:$,variant:"primary",size:"lg",className:"mt-[8px] md:px-[8px] l:w-full",onClick:()=>{R(e),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.activated?"active":"not active",event_parameters:{page_group:x,position:a.title,button_name:f,info:e.alpc?.id?.toString()}})},children:f})]})]})]})}export{U as RedeemableItem};
1
+ import{jsx as t,jsxs as i}from"react/jsx-runtime";import{Button as I,Text as v,Picture as d}from"@anker-in/headless-ui";import{useMemo as c}from"react";import u from"classnames";import{useCreditsContext as P}from"../context/provider";import{AlpcConsumeType as g,ConsumeType as b}from"../context/const";import{numberFormat as k,extractVariantId as h}from"../context/utils";import{gaTrack as y,useHeadlessContext as S}from"@anker-in/lib";import{NoneProductValue as z}from"./NonProductValue";import{ROUNDED_BRANDS as E}from"../../../constants";function U({copy:a,className:_,item:e,onRulesOpen:N,onRedeem:R}){const{creditInfo:m,profile:n,gtm:{pageGroup:x,pageHandle:r},pageCommon:o}=P(),{brand:C,locale:p}=S(),s=Object.keys(n||{}).length>0,T=E.includes(C),$=c(()=>!!(e.hasRedeemed||e.alpc?.remainingInventory<=0&&e.alpc?.isLimited||e.alpc?.consumeType===g.Product&&!e.variant?.availableForSale||s&&n?.activated&&e.alpc?.consumeCredits>Number(m?.available_credit||0)),[e.hasRedeemed,e.alpc?.remainingInventory,e.alpc?.isLimited,e.alpc?.consumeType,e.alpc?.consumeCredits,s,n?.activated,m?.available_credit,e.variant?.availableForSale]),f=c(()=>s?e.alpc?.consumeType===g.Product?e.variant?.availableForSale?a.btnRedeem:o?.soldOut||"Sold Out":a.btnRedeem:a.unlockRewards,[s,e.alpc?.consumeType,e.variant?.availableForSale,a.btnRedeem,a.unlockRewards,o?.soldOut]),w=c(()=>{if(e.config?.type!==b.Product||!e.product?.handle)return;const l=p==="us"?"":`/${p}`;return h(e.variant?.id)?`${l}/products/${e.product.handle}?variant=${h(e.variant?.id)}${r?`&ref=${r}`:""}`:`${l}/products/${e.product.handle}${r?`?ref=${r}`:""}`},[e.config?.type,e.product?.handle,e.variant?.id,r,p]);return i("div",{className:u("flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]",!T&&"rounded-none md:rounded-none",_),children:[e.config?.type===b.Product?t("a",{href:w,className:u("relative mx-auto h-[224px] w-fit md:my-[10px] l:h-[120px] l-xxl:h-[138px]"),children:t(d,{className:"h-full w-auto [&_img]:h-full [&_img]:object-contain",source:e.config?.image?.url||e.product?.images?.[0]?.url})}):i("div",{className:"relative mx-auto my-[30px] h-[164px] md:my-0 md:h-[66px] l-xxl:h-[138px] md-l:h-[80px]",children:[t(d,{source:o?.imageMapping?.[e.config?.type]?.url,className:"h-full [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"}),t(z,{item:e})]}),i("div",{className:u("mt-[10px] xl:mt-[8px] flex w-full flex-1 flex-col justify-between"),children:[t(v,{html:e.config?.title||e.alpc?.title,title:e.config?.title||e.alpc?.title,size:2,className:"line-clamp-2 h-[58px] text-[24px] leading-[1.2] l:h-[40px] l:text-[16px] l-xxl:h-[48px] l-xxl:text-[20px]"}),e.config?.rules?.length>0&&t("button",{type:"button",onClick:()=>{N(e.config?.rules||[]),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.activated?"active":"not active",event_parameters:{page_group:x,position:a.title,button_name:o?.ruleLabel,info:e.alpc?.id?.toString()}})},className:"mt-[8px] w-fit text-[16px] font-bold underline md:text-[14px] l:mt-0",tabIndex:0,onKeyDown:l=>{(l.key==="Enter"||l.key===" ")&&l.preventDefault()},children:o?.ruleLabel}),i("div",{children:[i("div",{className:"mt-[26px] flex items-center l:mt-[12px] l-xl:mt-[16px]",children:[t(d,{className:"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]",source:"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"}),t(v,{html:`${k(e.alpc?.consumeCredits,p)}`,size:2,as:"p",className:"ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] "})]}),t(I,{disabled:$,variant:"primary",size:"lg",className:"mt-[8px] md:px-[8px] l:w-full",onClick:()=>{R(e),y({event:"ga4Event",event_name:"lp_button",member_active_status:n?.activated?"active":"not active",event_parameters:{page_group:x,position:a.title,button_name:f,info:e.alpc?.id?.toString()}})},children:f})]})]})]})}export{U as RedeemableItem};
2
2
  //# sourceMappingURL=RedeemableItem.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/credits/creditsRedeemList/RedeemableItem.tsx"],
4
- "sourcesContent": ["import { Button, Text, Picture } from '@anker-in/headless-ui'\n\nimport { useMemo } from 'react'\n\nimport classNames from 'classnames'\nimport { useCreditsContext } from '../context/provider'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { AlpcConsumeType, ConsumeType } from '../context/const'\nimport { numberFormat, extractVariantId } from '../context/utils'\nimport type { CreditsRedeemListCopy } from './type'\nimport { gaTrack, useHeadlessContext } from '@anker-in/lib'\nimport { NoneProductValue } from './NonProductValue'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport function RedeemableItem({\n copy,\n className,\n item,\n onRulesOpen,\n onRedeem,\n}: {\n copy: CreditsRedeemListCopy\n className?: string\n item: RedeemableItemType\n onRulesOpen: (rules: string[]) => void\n onRedeem: (item: RedeemableItemType) => void\n}) {\n const {\n creditInfo,\n profile,\n gtm: { pageGroup, pageHandle },\n pageCommon,\n } = useCreditsContext()\n const { brand, locale } = useHeadlessContext()\n const isLogin = Object.keys(profile || {}).length > 0\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isDisabled = useMemo(() => {\n if (item.hasRedeemed) {\n return true\n }\n\n if (item.alpc?.remainingInventory <= 0 && item.alpc?.isLimited) {\n // \u6709\u5E93\u5B58\u9650\u5236\n return true\n }\n\n if (item.alpc?.consumeType === AlpcConsumeType.Product) {\n if (!item.variant?.availableForSale) {\n return true\n }\n }\n if (isLogin && profile?.activated && item.alpc?.consumeCredits > Number(creditInfo?.available_credit || 0)) {\n return true\n }\n return false\n }, [\n item.hasRedeemed,\n item.alpc?.remainingInventory,\n item.alpc?.isLimited,\n item.alpc?.consumeType,\n item.alpc?.consumeCredits,\n isLogin,\n profile?.activated,\n creditInfo?.available_credit,\n item.variant?.availableForSale,\n ])\n\n const redeemButtonText = useMemo(() => {\n if (!isLogin) {\n return copy.unlockRewards\n }\n\n // \u7F3A\u8D27\u6587\u6848\n if (item.alpc?.consumeType === AlpcConsumeType.Product) {\n return item.variant?.availableForSale ? copy.btnRedeem : pageCommon?.soldOut || 'Sold Out'\n }\n return copy.btnRedeem\n }, [\n isLogin,\n item.alpc?.consumeType,\n item.variant?.availableForSale,\n copy.btnRedeem,\n copy.unlockRewards,\n pageCommon?.soldOut,\n ])\n\n // \u751F\u6210\u4EA7\u54C1 listing \u9875\u9762\u94FE\u63A5\n const productUrl = useMemo(() => {\n if (item.config?.type !== ConsumeType.Product || !item.product?.handle) {\n return undefined\n }\n const localePrefix = locale === 'us' ? '' : `/${locale}`\n return extractVariantId(item.variant?.id)\n ? `${localePrefix}/products/${item.product.handle}?variant=${extractVariantId(item.variant?.id)}${pageHandle ? `&ref=${pageHandle}` : ''}`\n : `${localePrefix}/products/${item.product.handle}${pageHandle ? `?ref=${pageHandle}` : ''}`\n }, [item.config?.type, item.product?.handle, item.variant?.id, pageHandle, locale])\n\n return (\n <div\n className={classNames(\n 'flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]',\n !rounded && 'rounded-none md:rounded-none',\n className\n )}\n >\n {item.config?.type === ConsumeType.Product ? (\n <a\n href={productUrl}\n className={classNames('relative mx-auto h-[224px] w-fit md:my-[10px] l:h-[120px] l-xxl:h-[138px]')}\n >\n <Picture\n className=\"h-full w-auto [&_img]:h-full [&_img]:object-contain\"\n source={item.config?.image?.url || item.product?.images?.[0]?.url}\n ></Picture>\n </a>\n ) : (\n <div className=\"relative mx-auto my-[30px] h-[164px] md:my-0 md:h-[66px] l-xxl:h-[138px] md-l:h-[80px]\">\n <Picture\n source={pageCommon?.imageMapping?.[item.config?.type]?.url}\n className=\"h-full [&_img]:h-full [&_img]:w-auto [&_img]:object-contain\"\n ></Picture>\n\n <NoneProductValue item={item} />\n </div>\n )}\n <div className={classNames('mt-[10px] xl:mt-[8px] flex w-full flex-1 flex-col justify-between')}>\n <Text\n html={item.config?.title || item.alpc?.title}\n title={item.config?.title || item.alpc?.title}\n size={2}\n className=\"line-clamp-2 h-[58px] text-[24px] leading-[1.2] l:h-[40px] l:text-[16px] l-xxl:h-[48px] l-xxl:text-[20px]\"\n />\n {item.config?.rules?.length > 0 && (\n <button\n type=\"button\"\n onClick={() => {\n onRulesOpen(item.config?.rules || [])\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: pageCommon?.ruleLabel,\n info: item.alpc?.id?.toString(),\n },\n })\n }}\n className=\"mt-[8px] w-fit text-[16px] font-bold underline md:text-[14px] l:mt-0\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {pageCommon?.ruleLabel}\n </button>\n )}\n <div>\n <div className=\"mt-[26px] flex items-center l:mt-[12px] l-xl:mt-[16px]\">\n <Picture\n className=\"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783\"\n />\n <Text\n html={`${numberFormat(item.alpc?.consumeCredits)}`}\n size={2}\n as=\"p\"\n className=\"ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] \"\n />\n </div>\n\n <Button\n disabled={isDisabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[8px] md:px-[8px] l:w-full\"\n onClick={() => {\n onRedeem(item)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: redeemButtonText,\n info: item.alpc?.id?.toString(),\n },\n })\n }}\n >\n {redeemButtonText}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Button, Text, Picture } from '@anker-in/headless-ui'\n\nimport { useMemo } from 'react'\n\nimport classNames from 'classnames'\nimport { useCreditsContext } from '../context/provider'\nimport type { RedeemableItem as RedeemableItemType } from '../type'\nimport { AlpcConsumeType, ConsumeType } from '../context/const'\nimport { numberFormat, extractVariantId } from '../context/utils'\nimport type { CreditsRedeemListCopy } from './type'\nimport { gaTrack, useHeadlessContext } from '@anker-in/lib'\nimport { NoneProductValue } from './NonProductValue'\nimport { ROUNDED_BRANDS } from '../../../constants'\n\nexport function RedeemableItem({\n copy,\n className,\n item,\n onRulesOpen,\n onRedeem,\n}: {\n copy: CreditsRedeemListCopy\n className?: string\n item: RedeemableItemType\n onRulesOpen: (rules: string[]) => void\n onRedeem: (item: RedeemableItemType) => void\n}) {\n const {\n creditInfo,\n profile,\n gtm: { pageGroup, pageHandle },\n pageCommon,\n } = useCreditsContext()\n const { brand, locale } = useHeadlessContext()\n const isLogin = Object.keys(profile || {}).length > 0\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isDisabled = useMemo(() => {\n if (item.hasRedeemed) {\n return true\n }\n\n if (item.alpc?.remainingInventory <= 0 && item.alpc?.isLimited) {\n // \u6709\u5E93\u5B58\u9650\u5236\n return true\n }\n\n if (item.alpc?.consumeType === AlpcConsumeType.Product) {\n if (!item.variant?.availableForSale) {\n return true\n }\n }\n if (isLogin && profile?.activated && item.alpc?.consumeCredits > Number(creditInfo?.available_credit || 0)) {\n return true\n }\n return false\n }, [\n item.hasRedeemed,\n item.alpc?.remainingInventory,\n item.alpc?.isLimited,\n item.alpc?.consumeType,\n item.alpc?.consumeCredits,\n isLogin,\n profile?.activated,\n creditInfo?.available_credit,\n item.variant?.availableForSale,\n ])\n\n const redeemButtonText = useMemo(() => {\n if (!isLogin) {\n return copy.unlockRewards\n }\n\n // \u7F3A\u8D27\u6587\u6848\n if (item.alpc?.consumeType === AlpcConsumeType.Product) {\n return item.variant?.availableForSale ? copy.btnRedeem : pageCommon?.soldOut || 'Sold Out'\n }\n return copy.btnRedeem\n }, [\n isLogin,\n item.alpc?.consumeType,\n item.variant?.availableForSale,\n copy.btnRedeem,\n copy.unlockRewards,\n pageCommon?.soldOut,\n ])\n\n // \u751F\u6210\u4EA7\u54C1 listing \u9875\u9762\u94FE\u63A5\n const productUrl = useMemo(() => {\n if (item.config?.type !== ConsumeType.Product || !item.product?.handle) {\n return undefined\n }\n const localePrefix = locale === 'us' ? '' : `/${locale}`\n return extractVariantId(item.variant?.id)\n ? `${localePrefix}/products/${item.product.handle}?variant=${extractVariantId(item.variant?.id)}${pageHandle ? `&ref=${pageHandle}` : ''}`\n : `${localePrefix}/products/${item.product.handle}${pageHandle ? `?ref=${pageHandle}` : ''}`\n }, [item.config?.type, item.product?.handle, item.variant?.id, pageHandle, locale])\n\n return (\n <div\n className={classNames(\n 'flex flex-col items-center rounded-[16px] bg-[#EAEAEC] p-[24px] md:rounded-[12px] md:px-[8px] xl:py-[16px] md-xl:px-[16px]',\n !rounded && 'rounded-none md:rounded-none',\n className\n )}\n >\n {item.config?.type === ConsumeType.Product ? (\n <a\n href={productUrl}\n className={classNames('relative mx-auto h-[224px] w-fit md:my-[10px] l:h-[120px] l-xxl:h-[138px]')}\n >\n <Picture\n className=\"h-full w-auto [&_img]:h-full [&_img]:object-contain\"\n source={item.config?.image?.url || item.product?.images?.[0]?.url}\n ></Picture>\n </a>\n ) : (\n <div className=\"relative mx-auto my-[30px] h-[164px] md:my-0 md:h-[66px] l-xxl:h-[138px] md-l:h-[80px]\">\n <Picture\n source={pageCommon?.imageMapping?.[item.config?.type]?.url}\n className=\"h-full [&_img]:h-full [&_img]:w-auto [&_img]:object-contain\"\n ></Picture>\n\n <NoneProductValue item={item} />\n </div>\n )}\n <div className={classNames('mt-[10px] xl:mt-[8px] flex w-full flex-1 flex-col justify-between')}>\n <Text\n html={item.config?.title || item.alpc?.title}\n title={item.config?.title || item.alpc?.title}\n size={2}\n className=\"line-clamp-2 h-[58px] text-[24px] leading-[1.2] l:h-[40px] l:text-[16px] l-xxl:h-[48px] l-xxl:text-[20px]\"\n />\n {item.config?.rules?.length > 0 && (\n <button\n type=\"button\"\n onClick={() => {\n onRulesOpen(item.config?.rules || [])\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: pageCommon?.ruleLabel,\n info: item.alpc?.id?.toString(),\n },\n })\n }}\n className=\"mt-[8px] w-fit text-[16px] font-bold underline md:text-[14px] l:mt-0\"\n tabIndex={0}\n onKeyDown={e => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n }\n }}\n >\n {pageCommon?.ruleLabel}\n </button>\n )}\n <div>\n <div className=\"mt-[26px] flex items-center l:mt-[12px] l-xl:mt-[16px]\">\n <Picture\n className=\"size-[24px] l-xxl:size-[22px] md-l:size-[18px] md:size-[16px]\"\n source=\"https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783\"\n />\n <Text\n html={`${numberFormat(item.alpc?.consumeCredits, locale)}`}\n size={2}\n as=\"p\"\n className=\"ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] \"\n />\n </div>\n\n <Button\n disabled={isDisabled}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[8px] md:px-[8px] l:w-full\"\n onClick={() => {\n onRedeem(item)\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n member_active_status: profile?.activated ? 'active' : 'not active',\n event_parameters: {\n page_group: pageGroup,\n position: copy.title,\n button_name: redeemButtonText,\n info: item.alpc?.id?.toString(),\n },\n })\n }}\n >\n {redeemButtonText}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["jsx", "jsxs", "Button", "Text", "Picture", "useMemo", "classNames", "useCreditsContext", "AlpcConsumeType", "ConsumeType", "numberFormat", "extractVariantId", "gaTrack", "useHeadlessContext", "NoneProductValue", "ROUNDED_BRANDS", "RedeemableItem", "copy", "className", "item", "onRulesOpen", "onRedeem", "creditInfo", "profile", "pageGroup", "pageHandle", "pageCommon", "brand", "locale", "isLogin", "rounded", "isDisabled", "redeemButtonText", "productUrl", "localePrefix", "e"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/campaign-ui",
3
- "version": "0.5.3-beta.01",
3
+ "version": "0.5.3-beta.03",
4
4
  "description": "Campaign UI components and utilities for Anker projects",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -88,6 +88,9 @@ export const ALPC_COUNTRY_MAP = new Map<string, string>([
88
88
  ['eu-en', 'eu'],
89
89
  ['eu-de', 'de'],
90
90
  ['eu-fr', 'fr'],
91
+ ['eu-es', 'es'],
92
+ ['eu-it', 'it'],
93
+ ['sg-en', 'sg'],
91
94
  ])
92
95
 
93
96
  export enum ApprovalStatus {
@@ -27,12 +27,18 @@ export function getAlpcPath(locale = '', apiBaseUrl?: string) {
27
27
  return '/api/multipass/alpc'
28
28
  }
29
29
 
30
- export function numberFormat(num: number = 0) {
30
+ export function numberFormat(num: number = 0, locale?: string) {
31
31
  if (typeof Intl === 'undefined') {
32
32
  return num
33
33
  }
34
34
 
35
- return new Intl.NumberFormat().format(num)
35
+ const formatted = new Intl.NumberFormat(languageTerritory(locale || '') || locale).format(num)
36
+
37
+ if (locale && ['fr', 'eu-fr', 'fra'].includes(locale)) {
38
+ return formatted.replace(/[\u202f\u00a0]/g, ' ')
39
+ }
40
+
41
+ return formatted
36
42
  }
37
43
 
38
44
  export const emailValidate = (email: any) => {
@@ -50,11 +56,13 @@ export const languageTerritory = (locale: string) =>
50
56
  au: 'en-au',
51
57
  nz: 'en-nz',
52
58
  eu: 'en-eu',
59
+ 'eu-en': 'en-eu',
53
60
  pl: 'pl-pl',
54
61
  fr: 'fr-fr',
55
62
  'eu-fr': 'fr-fr',
56
63
  fra: 'fr-fr',
57
64
  de: 'de-de',
65
+ 'eu-de': 'de-de',
58
66
  vn: 'vi-vn',
59
67
  sg: 'en-sg',
60
68
  'ae-en': 'en-ae',
@@ -195,7 +195,7 @@ function RedeemableItem({
195
195
  source="https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"
196
196
  />
197
197
  <Text
198
- html={`${numberFormat(itemData?.alpcData?.consumeCredits)} + ${formatPrice({
198
+ html={`${numberFormat(itemData?.alpcData?.consumeCredits, locale)} + ${formatPrice({
199
199
  amount: Number(itemData?.config?.price),
200
200
  currencyCode: itemData?.productVariant?.price.currencyCode || 'USD',
201
201
  locale: locale,
@@ -20,7 +20,7 @@ export type CreditsInfoCardCopy = {
20
20
  export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {
21
21
  const [hover, setHover] = useState<boolean>(false)
22
22
  const { creditInfo, pageCommon, setOpenMyRewardsModal, setOpenActivitiesModal } = useCreditsContext()
23
- const { brand } = useHeadlessContext()
23
+ const { brand, locale } = useHeadlessContext()
24
24
  const rounded = ROUNDED_BRANDS.includes(brand)
25
25
 
26
26
  const handleButtonClick = useCallback((buttonConfig: ButtonConfig) => {
@@ -75,7 +75,7 @@ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?:
75
75
  'min-xl:text-[56px]'
76
76
  )}
77
77
  >
78
- {creditInfo ? numberFormat(creditInfo.available_credit) : 0}
78
+ {creditInfo ? numberFormat(creditInfo.available_credit, locale) : 0}
79
79
  </div>
80
80
  <div className="text-[16px]">{pageCommon?.pointUnit}</div>
81
81
  </div>
@@ -126,7 +126,7 @@ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?:
126
126
  </div>
127
127
  <div className="flex items-baseline ">
128
128
  <div className={cn('mr-[8px] text-[36px] font-extrabold', 'min-l:text-[44px]', 'min-xl:text-[56px]')}>
129
- {creditInfo ? numberFormat(creditInfo.pending_credit) : 0}
129
+ {creditInfo ? numberFormat(creditInfo.pending_credit, locale) : 0}
130
130
  </div>
131
131
  <div className="text-[16px]">{pageCommon?.pointUnit}</div>
132
132
  </div>
@@ -27,7 +27,7 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
27
27
  creditInfo,
28
28
  } = useCreditsContext()
29
29
  const { authCodeActivate } = useRegistration()
30
- const { brand } = useHeadlessContext()
30
+ const { brand, locale } = useHeadlessContext()
31
31
  const rounded = ROUNDED_BRANDS.includes(brand)
32
32
 
33
33
  const isLogin = Object.keys(profile || {}).length > 0
@@ -128,7 +128,7 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
128
128
  'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'
129
129
  )}
130
130
  >
131
- {numberFormat(creditInfo?.available_credit || 0).toString()}
131
+ {numberFormat(creditInfo?.available_credit || 0, locale).toString()}
132
132
  </span>
133
133
  {copy.availableCredits.split('$credits')[1] || ''}
134
134
  </>
@@ -4,6 +4,7 @@ import { numberFormat } from '../../context/utils'
4
4
  import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
5
5
  import { NoneProductValue } from '../RedeemProductModal/NonProductValue'
6
6
  import { useCreditsContext } from '../../context/provider'
7
+ import { useHeadlessContext } from '@anker-in/lib'
7
8
 
8
9
  type CouponInitProps = {
9
10
  item: RedeemableItemType
@@ -15,6 +16,7 @@ type CouponInitProps = {
15
16
 
16
17
  export const CouponInit = ({ item, copy, loading, disabled, onConfirm }: CouponInitProps) => {
17
18
  const { pageCommon } = useCreditsContext()
19
+ const { locale } = useHeadlessContext()
18
20
 
19
21
  return (
20
22
  <>
@@ -41,7 +43,7 @@ export const CouponInit = ({ item, copy, loading, disabled, onConfirm }: CouponI
41
43
  'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'
42
44
  )}
43
45
  >
44
- {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}
46
+ {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}
45
47
  </Text>
46
48
  {item.config?.rules?.length > 0 && (
47
49
  <div className="mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]">
@@ -6,6 +6,7 @@ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '..
6
6
  import { ConsumeType } from '../../context/const'
7
7
  import { NoneProductValue } from './NonProductValue'
8
8
  import { useCreditsContext } from '../../context/provider'
9
+ import { useHeadlessContext } from '@anker-in/lib'
9
10
 
10
11
  type InitProps = {
11
12
  copy: RedeemModalCommon
@@ -17,6 +18,7 @@ type InitProps = {
17
18
 
18
19
  export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) => {
19
20
  const { pageCommon } = useCreditsContext()
21
+ const { locale } = useHeadlessContext()
20
22
  const rules = useMemo(() => {
21
23
  if (item.config.rules?.length) {
22
24
  return item.config.rules
@@ -61,7 +63,7 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
61
63
  as="p"
62
64
  className={classNames(' text-center text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]')}
63
65
  >
64
- {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}
66
+ {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}
65
67
  </Text>
66
68
  </div>
67
69
  <div className="mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]">
@@ -5,6 +5,7 @@ import { numberFormat } from '../../context/utils'
5
5
  import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
6
6
  import { NoneProductValue } from '../RedeemProductModal/NonProductValue'
7
7
  import { useCreditsContext } from '../../context/provider'
8
+ import { useHeadlessContext } from '@anker-in/lib'
8
9
 
9
10
  type VirtualProductInitProps = {
10
11
  item: RedeemableItemType
@@ -16,6 +17,7 @@ type VirtualProductInitProps = {
16
17
 
17
18
  export const VirtualProductInit = ({ item, copy, loading, disabled, onConfirm }: VirtualProductInitProps) => {
18
19
  const { pageCommon } = useCreditsContext()
20
+ const { locale } = useHeadlessContext()
19
21
 
20
22
  return (
21
23
  <>
@@ -42,7 +44,7 @@ export const VirtualProductInit = ({ item, copy, loading, disabled, onConfirm }:
42
44
  'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'
43
45
  )}
44
46
  >
45
- {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}
47
+ {numberFormat(item.alpc?.consumeCredits, locale)} {pageCommon?.pointUnit}
46
48
  </Text>
47
49
  {copy?.virtualProduct?.steps && copy.virtualProduct.steps.length > 0 && (
48
50
  <div className="mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]">
@@ -166,7 +166,7 @@ export function RedeemableItem({
166
166
  source="https://cdn.shopify.com/s/files/1/0511/6346/3874/files/icon_hire_purchase.png?v=1757496783"
167
167
  />
168
168
  <Text
169
- html={`${numberFormat(item.alpc?.consumeCredits)}`}
169
+ html={`${numberFormat(item.alpc?.consumeCredits, locale)}`}
170
170
  size={2}
171
171
  as="p"
172
172
  className="ml-[4px] text-[24px] font-bold mt-[4px] leading-none l-xxl:text-[20px] l:text-[16px] "