@anker-in/campaign-ui 0.4.8 → 0.5.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js +1 -1
- package/dist/cjs/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +2 -2
- package/dist/cjs/components/memberPopup/MemberPopup.d.ts +9 -0
- package/dist/cjs/components/memberPopup/MemberPopup.js +2 -0
- package/dist/cjs/components/memberPopup/MemberPopup.js.map +7 -0
- package/dist/cjs/components/memberPopup/context/provider.d.ts +11 -0
- package/dist/cjs/components/memberPopup/context/provider.js +2 -0
- package/dist/cjs/components/memberPopup/context/provider.js.map +7 -0
- package/dist/cjs/components/memberPopup/context/viewStack.d.ts +12 -0
- package/dist/cjs/components/memberPopup/context/viewStack.js +2 -0
- package/dist/cjs/components/memberPopup/context/viewStack.js.map +7 -0
- package/dist/cjs/components/memberPopup/icons.d.ts +27 -0
- package/dist/cjs/components/memberPopup/icons.js +2 -0
- package/dist/cjs/components/memberPopup/icons.js.map +7 -0
- package/dist/cjs/components/memberPopup/index.d.ts +4 -0
- package/dist/cjs/components/memberPopup/index.js +2 -0
- package/dist/cjs/components/memberPopup/index.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.d.ts +10 -0
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.d.ts +10 -0
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.d.ts +7 -0
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Activity/index.d.ts +7 -0
- package/dist/cjs/components/memberPopup/panels/Activity/index.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Activity/index.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.d.ts +19 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.d.ts +21 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.d.ts +12 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.d.ts +17 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.d.ts +8 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.d.ts +7 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.js +2 -0
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.d.ts +8 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.d.ts +11 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.d.ts +10 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.d.ts +9 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.d.ts +9 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.d.ts +10 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.d.ts +9 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.d.ts +18 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.d.ts +9 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +17 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.d.ts +13 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.js +2 -0
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.d.ts +13 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.d.ts +12 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +7 -0
- package/dist/cjs/components/memberPopup/panels/Referral/index.d.ts +7 -0
- package/dist/cjs/components/memberPopup/panels/Referral/index.js +2 -0
- package/dist/cjs/components/memberPopup/panels/Referral/index.js.map +7 -0
- package/dist/cjs/components/memberPopup/type.d.ts +231 -0
- package/dist/cjs/components/memberPopup/type.js +2 -0
- package/dist/cjs/components/memberPopup/type.js.map +7 -0
- package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js +1 -1
- package/dist/esm/components/LiveChatWidget/components/MessageContent/TextBlock.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useCountries.js +1 -1
- package/dist/esm/components/credits/context/hooks/useCountries.js.map +3 -3
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/components/memberPopup/MemberPopup.d.ts +9 -0
- package/dist/esm/components/memberPopup/MemberPopup.js +2 -0
- package/dist/esm/components/memberPopup/MemberPopup.js.map +7 -0
- package/dist/esm/components/memberPopup/context/provider.d.ts +11 -0
- package/dist/esm/components/memberPopup/context/provider.js +2 -0
- package/dist/esm/components/memberPopup/context/provider.js.map +7 -0
- package/dist/esm/components/memberPopup/context/viewStack.d.ts +12 -0
- package/dist/esm/components/memberPopup/context/viewStack.js +2 -0
- package/dist/esm/components/memberPopup/context/viewStack.js.map +7 -0
- package/dist/esm/components/memberPopup/icons.d.ts +27 -0
- package/dist/esm/components/memberPopup/icons.js +2 -0
- package/dist/esm/components/memberPopup/icons.js.map +7 -0
- package/dist/esm/components/memberPopup/index.d.ts +4 -0
- package/dist/esm/components/memberPopup/index.js +2 -0
- package/dist/esm/components/memberPopup/index.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.d.ts +10 -0
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/ActivitiesSubscribePanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.d.ts +10 -0
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.js +2 -0
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.d.ts +7 -0
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js +2 -0
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Activity/index.d.ts +7 -0
- package/dist/esm/components/memberPopup/panels/Activity/index.js +2 -0
- package/dist/esm/components/memberPopup/panels/Activity/index.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.d.ts +19 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.d.ts +21 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.d.ts +12 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.d.ts +17 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.d.ts +8 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.d.ts +7 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.js +2 -0
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.d.ts +8 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.d.ts +11 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.d.ts +10 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.d.ts +9 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.d.ts +9 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.d.ts +10 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.d.ts +9 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.d.ts +18 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.d.ts +9 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +17 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.d.ts +13 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.js +2 -0
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.d.ts +13 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js +2 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.d.ts +12 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +2 -0
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +7 -0
- package/dist/esm/components/memberPopup/panels/Referral/index.d.ts +7 -0
- package/dist/esm/components/memberPopup/panels/Referral/index.js +2 -0
- package/dist/esm/components/memberPopup/panels/Referral/index.js.map +7 -0
- package/dist/esm/components/memberPopup/type.d.ts +231 -0
- package/dist/esm/components/memberPopup/type.js +2 -0
- package/dist/esm/components/memberPopup/type.js.map +7 -0
- package/dist/index.d.mts +1775 -0
- package/dist/index.d.ts +1775 -0
- package/dist/index.js +18542 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +18514 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +1 -1
- package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +5 -7
- package/src/components/credits/context/hooks/useCountries.ts +4 -15
- package/src/components/index.ts +2 -0
- package/src/components/memberPopup/MemberPopup.tsx +330 -0
- package/src/components/memberPopup/context/provider.tsx +52 -0
- package/src/components/memberPopup/context/viewStack.tsx +23 -0
- package/src/components/memberPopup/icons.tsx +147 -0
- package/src/components/memberPopup/index.ts +24 -0
- package/src/components/memberPopup/panels/ActivitiesSubscribePanel.tsx +194 -0
- package/src/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.tsx +175 -0
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.ts +33 -0
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.ts +38 -0
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.ts +55 -0
- package/src/components/memberPopup/panels/ConsumeCredits/index.tsx +291 -0
- package/src/components/memberPopup/panels/EarnCredits/ActivatePanel.tsx +323 -0
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfileModal.tsx +191 -0
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx +184 -0
- package/src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx +130 -0
- package/src/components/memberPopup/panels/EarnCredits/hooks/useActivities.ts +64 -0
- package/src/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.ts +32 -0
- package/src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts +50 -0
- package/src/components/memberPopup/panels/EarnCredits/index.tsx +245 -0
- package/src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts +41 -0
- package/src/components/memberPopup/panels/Referral/index.tsx +108 -0
- package/src/components/memberPopup/type.ts +242 -0
- package/tailwind.config.ts +4 -0
- package/dist/cjs/stories/CartCard.stories.d.ts +0 -33
- package/dist/cjs/stories/CartCard.stories.js +0 -21
- package/dist/cjs/stories/CartCard.stories.js.map +0 -7
- package/dist/esm/stories/CartCard.stories.d.ts +0 -33
- package/dist/esm/stories/CartCard.stories.js +0 -21
- package/dist/esm/stories/CartCard.stories.js.map +0 -7
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var p=(e,i)=>{for(var r in i)o(e,r,{get:i[r],enumerable:!0})},x=(e,i,r,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of c(i))!f.call(e,a)&&a!==r&&o(e,a,{get:()=>i[a],enumerable:!(l=d(i,a))||l.enumerable});return e};var v=e=>x(o({},"__esModule",{value:!0}),e);var N={};p(N,{default:()=>g});module.exports=v(N);var t=require("react/jsx-runtime"),n=require("react"),s=require("@anker-in/headless-ui"),m=require("../../../credits/modal/ModalContainer"),u=require("../../context/provider"),b=require("./SubscribeModal");function C({copy:e,onClose:i}){const{profile:r}=(0,u.useMemberPopupContext)(),[l,a]=(0,n.useState)(!1);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(m.CreditsModalContainer,{isOpen:!0,onClose:i,title:void 0,className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:(0,t.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[e.image?.url&&(0,t.jsx)(s.Picture,{source:e.image.url,alt:e.image.alt??"",className:"w-full rounded-[8px]"}),e.title&&(0,t.jsx)(s.Text,{className:"text-[20px] font-bold",html:e.title}),e.description&&(0,t.jsx)(s.Text,{className:"text-[14px] leading-[1.5] text-[#666]",html:e.description}),(0,t.jsxs)("div",{className:"flex gap-[12px]",children:[e.ctaButton&&(0,t.jsx)(s.Button,{variant:"primary",size:"lg",className:"flex-1",as:e.ctaUrl?"a":"button",...e.ctaUrl?{href:e.ctaUrl,target:"_blank",rel:"noopener noreferrer"}:{},children:e.ctaButton}),e.subscribe&&(0,t.jsx)(s.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:()=>a(!0),children:e.subscribe.buttonLabel??"Subscribe"})]})]})}),e.subscribe&&(0,t.jsx)(b.ActivitySubscribeModal,{isOpen:l,onClose:()=>a(!1),copy:e.subscribe,email:r?.email})]})}var g=C;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/Activity/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useState } from 'react'\nimport { Button, Picture, Text } from '@anker-in/headless-ui'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { ActivitySubscribeModal } from './SubscribeModal'\nimport type { ActivityCopy } from '../../type'\n\ntype Props = {\n copy: ActivityCopy\n onClose: () => void\n}\n\nfunction Activity({ copy, onClose }: Props) {\n const { profile } = useMemberPopupContext()\n const [isSubscribeOpen, setIsSubscribeOpen] = useState(false)\n\n return (\n <>\n <CreditsModalContainer\n isOpen\n onClose={onClose}\n title={undefined}\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.image?.url && (\n <Picture\n source={copy.image.url}\n alt={copy.image.alt ?? ''}\n className=\"w-full rounded-[8px]\"\n />\n )}\n {copy.title && (\n <Text className=\"text-[20px] font-bold\" html={copy.title} />\n )}\n {copy.description && (\n <Text className=\"text-[14px] leading-[1.5] text-[#666]\" html={copy.description} />\n )}\n <div className=\"flex gap-[12px]\">\n {copy.ctaButton && (\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n as={copy.ctaUrl ? 'a' : 'button'}\n {...(copy.ctaUrl\n ? { href: copy.ctaUrl, target: '_blank', rel: 'noopener noreferrer' }\n : {})}\n >\n {copy.ctaButton}\n </Button>\n )}\n {copy.subscribe && (\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={() => setIsSubscribeOpen(true)}\n >\n {copy.subscribe.buttonLabel ?? 'Subscribe'}\n </Button>\n )}\n </div>\n </div>\n </CreditsModalContainer>\n\n {copy.subscribe && (\n <ActivitySubscribeModal\n isOpen={isSubscribeOpen}\n onClose={() => setIsSubscribeOpen(false)}\n copy={copy.subscribe}\n email={profile?.email}\n />\n )}\n </>\n )\n}\n\nexport default Activity\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAiBI,IAAAI,EAAA,6BAjBJC,EAAyB,iBACzBC,EAAsC,iCACtCC,EAAsC,iDACtCC,EAAsC,kCACtCC,EAAuC,4BAQvC,SAASC,EAAS,CAAE,KAAAC,EAAM,QAAAC,CAAQ,EAAU,CAC1C,KAAM,CAAE,QAAAC,CAAQ,KAAI,yBAAsB,EACpC,CAACC,EAAiBC,CAAkB,KAAI,YAAS,EAAK,EAE5D,SACE,oBACE,oBAAC,yBACC,OAAM,GACN,QAASH,EACT,MAAO,OACP,UAAU,sBACV,aAAY,GACZ,mBAAmB,yBAEnB,oBAAC,OAAI,UAAU,2BACZ,UAAAD,EAAK,OAAO,QACX,OAAC,WACC,OAAQA,EAAK,MAAM,IACnB,IAAKA,EAAK,MAAM,KAAO,GACvB,UAAU,uBACZ,EAEDA,EAAK,UACJ,OAAC,QAAK,UAAU,wBAAwB,KAAMA,EAAK,MAAO,EAE3DA,EAAK,gBACJ,OAAC,QAAK,UAAU,wCAAwC,KAAMA,EAAK,YAAa,KAElF,QAAC,OAAI,UAAU,kBACZ,UAAAA,EAAK,cACJ,OAAC,UACC,QAAQ,UACR,KAAK,KACL,UAAU,SACV,GAAIA,EAAK,OAAS,IAAM,SACvB,GAAIA,EAAK,OACN,CAAE,KAAMA,EAAK,OAAQ,OAAQ,SAAU,IAAK,qBAAsB,EAClE,CAAC,EAEJ,SAAAA,EAAK,UACR,EAEDA,EAAK,cACJ,OAAC,UACC,QAAQ,YACR,KAAK,KACL,UAAU,SACV,QAAS,IAAMI,EAAmB,EAAI,EAErC,SAAAJ,EAAK,UAAU,aAAe,YACjC,GAEJ,GACF,EACF,EAECA,EAAK,cACJ,OAAC,0BACC,OAAQG,EACR,QAAS,IAAMC,EAAmB,EAAK,EACvC,KAAMJ,EAAK,UACX,MAAOE,GAAS,MAClB,GAEJ,CAEJ,CAEA,IAAOX,EAAQQ",
|
|
6
|
+
"names": ["Activity_exports", "__export", "Activity_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_ModalContainer", "import_provider", "import_SubscribeModal", "Activity", "copy", "onClose", "profile", "isSubscribeOpen", "setIsSubscribeOpen"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RedeemCouponModalCopy, AlpcConfig } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
itemTitle: string;
|
|
6
|
+
itemCredits: number;
|
|
7
|
+
itemImage?: {
|
|
8
|
+
url: string;
|
|
9
|
+
alt?: string;
|
|
10
|
+
};
|
|
11
|
+
redeemId: number;
|
|
12
|
+
userId?: string;
|
|
13
|
+
copy: RedeemCouponModalCopy;
|
|
14
|
+
pointUnit?: string;
|
|
15
|
+
alpcConfig: AlpcConfig;
|
|
16
|
+
onError?: (code: number) => void;
|
|
17
|
+
};
|
|
18
|
+
export declare function RedeemCouponModal({ isOpen, onClose, itemTitle, itemCredits, itemImage, redeemId, userId, copy, pointUnit, alpcConfig, onError, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var _=Object.create;var u=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var j=(t,o)=>{for(var r in o)u(t,r,{get:o[r],enumerable:!0})},B=(t,o,r,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of D(o))!P.call(t,i)&&i!==r&&u(t,i,{get:()=>o[i],enumerable:!(c=z(o,i))||c.enumerable});return t};var q=(t,o,r)=>(r=t!=null?_(I(t)):{},B(o||!t||!t.__esModule?u(r,"default",{value:t,enumerable:!0}):r,t)),F=t=>B(u({},"__esModule",{value:!0}),t);var H={};j(H,{RedeemCouponModal:()=>G});module.exports=F(H);var e=require("react/jsx-runtime"),a=require("react"),l=require("@anker-in/headless-ui"),C=require("@anker-in/lib"),R=require("../../../credits/modal/ModalContainer"),p=require("../../../credits/context/const"),M=require("./hooks/useRedeemCoupon"),T=q(require("../../../credits/context/hooks/useCopy"));function G({isOpen:t,onClose:o,itemTitle:r,itemCredits:c,itemImage:i,redeemId:b,userId:g,copy:s,pointUnit:k="pts",alpcConfig:y,onError:N}){const[f,v]=(0,a.useState)(),[h,x]=(0,a.useState)(""),[L,m]=(0,a.useState)(!1),{copy:S,copied:E}=(0,T.default)(),{isMutating:A,trigger:w}=(0,M.useRedeemCoupon)(y),U=(0,a.useCallback)(async()=>{x("");const{data:n}=await w({user_id:g,rule_id:b});if(!n){x(s.commonError);return}if(n.data?.success)v(n.data.coupon_code);else{let d=s.commonError;n.code===p.AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit?(d=s.redeemLimitError,m(!0)):n.code===p.AlpcErrorCode.CodeLpcRuleInventoryNotEnough?(d=s.inventoryNotEnough,m(!0)):n.code===p.AlpcErrorCode.CodeLpcNotEnoughCredits?(d=s.creditsNotEnough,m(!0)):n.code===p.AlpcErrorCode.CodeCrossSiteError&&(d=s.crossSiteError,m(!0)),x(d),N?.(n.code)}},[w,g,b,s,N]);return(0,a.useEffect)(()=>{t||(v(void 0),x(""),m(!1))},[t]),(0,e.jsxs)(R.CreditsModalContainer,{isOpen:t,onClose:o,className:"w-[540px] md:h-auto",scrollClassName:"mb-[40px] px-0 min-l:px-0 md:mb-[24px]",titleClassName:"h-[56px] bg-[#f5f5f7]",children:[(0,e.jsxs)("div",{className:"bg-[#f5f5f7] px-[48px] pb-[24px] md:px-[16px]",children:[i?.url&&(0,e.jsx)("div",{className:"relative mx-auto h-[164px] w-[324px]",children:(0,e.jsx)("img",{src:i.url,alt:i.alt??"",className:"h-full w-full object-cover"})}),(0,e.jsxs)("p",{className:(0,C.classNames)("mt-[30px] text-center text-[24px] font-bold md:mt-[18px] md:text-[20px]"),children:[c," ",k]})]}),(0,e.jsx)("div",{className:"bg-white px-[48px] pt-[24px] text-center md:px-[16px]",children:f?(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"flex items-center justify-center gap-[10px]",children:[(0,e.jsx)("span",{className:"text-[24px] font-bold",children:f}),(0,e.jsx)("button",{className:(0,C.classNames)("text-[16px] font-bold underline",E&&"pointer-events-none"),onClick:()=>S(f),children:E?"Copied":"Copy"})]}),(0,e.jsx)(l.Text,{className:"mb-[4px] mt-[16px] text-[24px] font-bold md:text-[20px]",html:s.successTitle}),(0,e.jsx)(l.Text,{className:"text-[16px] font-bold text-[#6d6d6f] md:text-[14px]",html:s.successDesc}),(0,e.jsx)(l.Button,{variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:()=>{s.successButtonUrl&&(window.location.href=s.successButtonUrl),o()},children:s.successButton})]}):(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(l.Text,{className:"block text-[24px] font-bold md:text-[20px]",html:s.confirmTitle}),(0,e.jsx)(l.Button,{loading:A,variant:"primary",size:"lg",className:"mt-[16px] w-full",onClick:U,disabled:L,children:s.confirmButton})]})}),h&&(0,e.jsx)("div",{className:"bg-white px-[48px] py-[12px] text-center md:px-[16px]",children:(0,e.jsx)(l.Text,{className:"text-[14px] font-semibold text-[#ff0000]",html:h})})]})}
|
|
2
|
+
//# sourceMappingURL=RedeemCouponModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport { AlpcErrorCode } from '../../../credits/context/const'\nimport { useRedeemCoupon } from './hooks/useRedeemCoupon'\nimport useCopy from '../../../credits/context/hooks/useCopy'\nimport type { RedeemCouponModalCopy, AlpcConfig } from '../../type'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n itemTitle: string\n itemCredits: number\n itemImage?: { url: string; alt?: string }\n redeemId: number\n userId?: string\n copy: RedeemCouponModalCopy\n pointUnit?: string\n alpcConfig: AlpcConfig\n onError?: (code: number) => void\n}\n\nexport function RedeemCouponModal({\n isOpen,\n onClose,\n itemTitle,\n itemCredits,\n itemImage,\n redeemId,\n userId,\n copy,\n pointUnit = 'pts',\n alpcConfig,\n onError,\n}: Props) {\n const [couponCode, setCouponCode] = useState<string>()\n const [errorInfo, setErrorInfo] = useState('')\n const [disabled, setDisabled] = useState(false)\n const { copy: copyText, copied } = useCopy()\n\n const { isMutating: loading, trigger } = useRedeemCoupon(alpcConfig)\n\n const handleConfirm = useCallback(async () => {\n setErrorInfo('')\n const { data } = await trigger({ user_id: userId, rule_id: redeemId })\n if (!data) {\n setErrorInfo(copy.commonError)\n return\n }\n if (data.data?.success) {\n setCouponCode(data.data.coupon_code)\n } else {\n let msg = copy.commonError\n if (data.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n msg = copy.redeemLimitError\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n msg = copy.inventoryNotEnough\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n msg = copy.creditsNotEnough\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeCrossSiteError) {\n msg = copy.crossSiteError\n setDisabled(true)\n }\n setErrorInfo(msg)\n onError?.(data.code)\n }\n }, [trigger, userId, redeemId, copy, onError])\n\n useEffect(() => {\n if (!isOpen) {\n setCouponCode(undefined)\n setErrorInfo('')\n setDisabled(false)\n }\n }, [isOpen])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] px-0 min-l:px-0 md:mb-[24px]\"\n titleClassName=\"h-[56px] bg-[#f5f5f7]\"\n >\n <div className=\"bg-[#f5f5f7] px-[48px] pb-[24px] md:px-[16px]\">\n {itemImage?.url && (\n <div className=\"relative mx-auto h-[164px] w-[324px]\">\n <img src={itemImage.url} alt={itemImage.alt ?? ''} className=\"h-full w-full object-cover\" />\n </div>\n )}\n <p className={cn('mt-[30px] text-center text-[24px] font-bold md:mt-[18px] md:text-[20px]')}>\n {itemCredits} {pointUnit}\n </p>\n </div>\n\n <div className=\"bg-white px-[48px] pt-[24px] text-center md:px-[16px]\">\n {!couponCode ? (\n <>\n <Text className=\"block text-[24px] font-bold md:text-[20px]\" html={copy.confirmTitle} />\n <Button\n loading={loading}\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={handleConfirm}\n disabled={disabled}\n >\n {copy.confirmButton}\n </Button>\n </>\n ) : (\n <>\n <div className=\"flex items-center justify-center gap-[10px]\">\n <span className=\"text-[24px] font-bold\">{couponCode}</span>\n <button\n className={cn('text-[16px] font-bold underline', copied && 'pointer-events-none')}\n onClick={() => copyText(couponCode)}\n >\n {copied ? 'Copied' : 'Copy'}\n </button>\n </div>\n <Text className=\"mb-[4px] mt-[16px] text-[24px] font-bold md:text-[20px]\" html={copy.successTitle} />\n <Text className=\"text-[16px] font-bold text-[#6d6d6f] md:text-[14px]\" html={copy.successDesc} />\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"mt-[16px] w-full\"\n onClick={() => {\n if (copy.successButtonUrl) window.location.href = copy.successButtonUrl\n onClose()\n }}\n >\n {copy.successButton}\n </Button>\n </>\n )}\n </div>\n\n {errorInfo && (\n <div className=\"bg-white px-[48px] py-[12px] text-center md:px-[16px]\">\n <Text className=\"text-[14px] font-semibold text-[#ff0000]\" html={errorInfo} />\n </div>\n )}\n </CreditsModalContainer>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RedeemCouponModal_exports", "__export", "RedeemCouponModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_ModalContainer", "import_const", "import_useRedeemCoupon", "import_useCopy", "isOpen", "onClose", "itemTitle", "itemCredits", "itemImage", "redeemId", "userId", "copy", "pointUnit", "alpcConfig", "onError", "couponCode", "setCouponCode", "errorInfo", "setErrorInfo", "disabled", "setDisabled", "copyText", "copied", "useCopy", "loading", "trigger", "handleConfirm", "data", "msg", "cn"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RedeemCouponModalCopy, AlpcConfig } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
itemTitle: string;
|
|
5
|
+
itemCredits: number;
|
|
6
|
+
itemImage?: {
|
|
7
|
+
url: string;
|
|
8
|
+
alt?: string;
|
|
9
|
+
};
|
|
10
|
+
itemValue?: string;
|
|
11
|
+
itemOff?: string;
|
|
12
|
+
itemRules?: string[];
|
|
13
|
+
redeemId: number;
|
|
14
|
+
userId?: string;
|
|
15
|
+
copy: RedeemCouponModalCopy;
|
|
16
|
+
pointUnit?: string;
|
|
17
|
+
alpcConfig: AlpcConfig;
|
|
18
|
+
onError?: (code: number) => void;
|
|
19
|
+
};
|
|
20
|
+
export default function RedeemCouponPanel({ onClose, itemTitle, itemCredits, itemImage, itemValue, itemOff, itemRules, redeemId, userId, copy, pointUnit, alpcConfig, onError, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var I=Object.create;var g=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var G=(t,s)=>{for(var n in s)g(t,n,{get:s[n],enumerable:!0})},k=(t,s,n,c)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of $(s))!z.call(t,r)&&r!==n&&g(t,r,{get:()=>s[r],enumerable:!(c=O(s,r))||c.enumerable});return t};var J=(t,s,n)=>(n=t!=null?I(q(t)):{},k(s||!t||!t.__esModule?g(n,"default",{value:t,enumerable:!0}):n,t)),K=t=>k(g({},"__esModule",{value:!0}),t);var Q={};G(Q,{default:()=>L});module.exports=K(Q);var e=require("react/jsx-runtime"),d=require("react"),i=require("@anker-in/headless-ui"),p=require("@anker-in/lib"),x=require("../../../credits/context/const"),D=require("./hooks/useRedeemCoupon"),S=J(require("../../../credits/context/hooks/useCopy")),T=require("../../../../constants");function L({onClose:t,itemTitle:s,itemCredits:n,itemImage:c,itemValue:r,itemOff:b,itemRules:C,redeemId:N,userId:h,copy:o,pointUnit:A="pts",alpcConfig:U,onError:w}){const[m,E]=(0,d.useState)(),[y,f]=(0,d.useState)(""),[_,u]=(0,d.useState)(!1),{copy:M,copied:B}=(0,S.default)(),{brand:P}=(0,p.useHeadlessContext)(),v=T.ROUNDED_BRANDS.includes(P),{isMutating:j,trigger:R}=(0,D.useRedeemCoupon)(U),F=(0,d.useCallback)(async()=>{f("");const{data:l}=await R({user_id:h,rule_id:N});if(!l){f(o.commonError);return}if(l.data?.success)E(l.data.coupon_code);else{let a=o.commonError;l.code===x.AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit?(a=o.redeemLimitError,u(!0)):l.code===x.AlpcErrorCode.CodeLpcRuleInventoryNotEnough?(a=o.inventoryNotEnough,u(!0)):l.code===x.AlpcErrorCode.CodeLpcNotEnoughCredits?(a=o.creditsNotEnough,u(!0)):l.code===x.AlpcErrorCode.CodeCrossSiteError&&(a=o.crossSiteError,u(!0)),f(a),w?.(l.code)}},[R,h,N,o,w]);(0,d.useEffect)(()=>{E(void 0),f(""),u(!1)},[N]);const H=C&&C.length>0&&(0,e.jsx)("div",{className:"w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]",children:(0,e.jsx)("ul",{className:"ml-4 grid grid-flow-row gap-[4px]",children:C?.map((l,a)=>(0,e.jsx)("li",{className:"list-disc",children:(0,e.jsx)(i.Text,{html:l,className:"font-bold"})},a))})});return(0,e.jsxs)("div",{className:"flex flex-col",children:[c?.url&&(0,e.jsx)("div",{className:"relative w-full px-[24px]",children:(0,e.jsxs)("div",{className:(0,p.classNames)("relative mx-auto overflow-hidden",v?"rounded-[8px]":"rounded-none"),children:[(0,e.jsx)("img",{src:c.url,alt:c.alt??"",className:"mx-auto h-[140px] w-full object-cover"}),r&&(0,e.jsxs)("div",{className:"absolute bottom-[20px] left-[20px] text-[32px] font-[800] leading-none text-white",children:[r,b?` ${b}`:""]})]})}),!m&&(0,e.jsxs)("div",{className:"flex flex-col gap-[16px] px-[24px] py-[20px]",children:[(0,e.jsxs)("p",{className:"text-center text-[24px] font-[700] text-[#1d1d1f]",children:[n," ",A]}),H]}),m&&(0,e.jsxs)("div",{className:"flex mt-[16px] flex-col gap-[8px] text-center",children:[(0,e.jsxs)("div",{className:"flex items-center justify-center gap-[10px]",children:[(0,e.jsx)("span",{className:"text-[24px] font-[700]",children:m}),(0,e.jsx)("button",{className:"cursor-pointer text-[14px] font-[700] underline disabled:pointer-events-none",disabled:B,onClick:()=>M(m),children:B?"Copied":"Copy"})]}),(0,e.jsx)(i.Text,{className:"text-[20px] font-[700]",html:o.successTitle}),(0,e.jsx)(i.Text,{className:"text-[14px] font-[700] text-[#6d6d6f]",html:o.successDesc}),(0,e.jsx)(i.Button,{className:(0,p.classNames)("w-full py-[12px] text-[14px] font-[700] text-white bg-[#080a0f]",v?"rounded-[4px]":"rounded-none"),onClick:()=>{o.successButtonUrl&&(window.location.href=o.successButtonUrl),t()},children:o.successButton})]}),!m&&(0,e.jsxs)("div",{className:"sticky bottom-0 bg-white border-t border-[#e5e5e5] pt-[10px]",children:[(0,e.jsxs)("div",{className:"flex flex-col gap-[8px] text-center",children:[(0,e.jsx)(i.Text,{className:"block text-[16px] font-[700] leading-[1.3]",html:o.confirmTitle}),(0,e.jsx)(i.Button,{className:(0,p.classNames)("w-full py-[12px] text-[14px] font-[700] text-white disabled:opacity-60 bg-[#080a0f]",v?"rounded-[4px]":"rounded-none"),disabled:_,loading:j,onClick:F,children:o.confirmButton})]}),y&&(0,e.jsx)(i.Text,{className:"mt-[8px] text-center text-[14px] font-[700] text-[#ff0000]",html:y})]})]})}
|
|
2
|
+
//# sourceMappingURL=RedeemCouponPanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Text, Button } from '@anker-in/headless-ui'\nimport { useHeadlessContext, classNames as cn } from '@anker-in/lib'\nimport { AlpcErrorCode } from '../../../credits/context/const'\nimport { useRedeemCoupon } from './hooks/useRedeemCoupon'\nimport useCopy from '../../../credits/context/hooks/useCopy'\nimport type { RedeemCouponModalCopy, AlpcConfig } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n onClose: () => void\n itemTitle: string\n itemCredits: number\n itemImage?: { url: string; alt?: string }\n itemValue?: string\n itemOff?: string\n itemRules?: string[]\n redeemId: number\n userId?: string\n copy: RedeemCouponModalCopy\n pointUnit?: string\n alpcConfig: AlpcConfig\n onError?: (code: number) => void\n}\n\nexport default function RedeemCouponPanel({\n onClose,\n itemTitle,\n itemCredits,\n itemImage,\n itemValue,\n itemOff,\n itemRules,\n redeemId,\n userId,\n copy,\n pointUnit = 'pts',\n alpcConfig,\n onError,\n}: Props) {\n const [couponCode, setCouponCode] = useState<string>()\n const [errorInfo, setErrorInfo] = useState('')\n const [disabled, setDisabled] = useState(false)\n const { copy: copyText, copied } = useCopy()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const { isMutating: loading, trigger } = useRedeemCoupon(alpcConfig)\n\n const handleConfirm = useCallback(async () => {\n setErrorInfo('')\n const { data } = await trigger({ user_id: userId, rule_id: redeemId })\n if (!data) {\n setErrorInfo(copy.commonError)\n return\n }\n if (data.data?.success) {\n setCouponCode(data.data.coupon_code)\n } else {\n let msg = copy.commonError\n if (data.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {\n msg = copy.redeemLimitError\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {\n msg = copy.inventoryNotEnough\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {\n msg = copy.creditsNotEnough\n setDisabled(true)\n } else if (data.code === AlpcErrorCode.CodeCrossSiteError) {\n msg = copy.crossSiteError\n setDisabled(true)\n }\n setErrorInfo(msg)\n onError?.(data.code)\n }\n }, [trigger, userId, redeemId, copy, onError])\n\n useEffect(() => {\n setCouponCode(undefined)\n setErrorInfo('')\n setDisabled(false)\n }, [redeemId])\n\n const rulesSection = itemRules && itemRules.length > 0 && (\n <div className=\"w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]\">\n <ul className=\"ml-4 grid grid-flow-row gap-[4px]\">\n {itemRules?.map((text, index) => (\n <li className=\"list-disc\" key={index}>\n <Text html={text} className=\"font-bold\" />\n </li>\n ))}\n </ul>\n </div>\n )\n\n return (\n <div className=\"flex flex-col\">\n {itemImage?.url && (\n <div className=\"relative w-full px-[24px]\">\n <div className={cn('relative mx-auto overflow-hidden', rounded ? 'rounded-[8px]' : 'rounded-none')}>\n <img src={itemImage.url} alt={itemImage.alt ?? ''} className=\"mx-auto h-[140px] w-full object-cover\" />\n {itemValue && (\n <div className=\"absolute bottom-[20px] left-[20px] text-[32px] font-[800] leading-none text-white\">\n {itemValue}\n {itemOff ? ` ${itemOff}` : ''}\n </div>\n )}\n </div>\n </div>\n )}\n\n {!couponCode && (\n <div className=\"flex flex-col gap-[16px] px-[24px] py-[20px]\">\n <p className=\"text-center text-[24px] font-[700] text-[#1d1d1f]\">\n {itemCredits} {pointUnit}\n </p>\n {rulesSection}\n </div>\n )}\n\n {couponCode && (\n <div className=\"flex mt-[16px] flex-col gap-[8px] text-center\">\n <div className=\"flex items-center justify-center gap-[10px]\">\n <span className=\"text-[24px] font-[700]\">{couponCode}</span>\n <button\n className=\"cursor-pointer text-[14px] font-[700] underline disabled:pointer-events-none\"\n disabled={copied}\n onClick={() => copyText(couponCode)}\n >\n {copied ? 'Copied' : 'Copy'}\n </button>\n </div>\n <Text className=\"text-[20px] font-[700]\" html={copy.successTitle} />\n <Text className=\"text-[14px] font-[700] text-[#6d6d6f]\" html={copy.successDesc} />\n <Button\n className={cn(\n 'w-full py-[12px] text-[14px] font-[700] text-white bg-[#080a0f]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n onClick={() => {\n if (copy.successButtonUrl) window.location.href = copy.successButtonUrl\n onClose()\n }}\n >\n {copy.successButton}\n </Button>\n </div>\n )}\n\n {!couponCode && (\n <div className=\"sticky bottom-0 bg-white border-t border-[#e5e5e5] pt-[10px]\">\n <div className=\"flex flex-col gap-[8px] text-center\">\n <Text className=\"block text-[16px] font-[700] leading-[1.3]\" html={copy.confirmTitle} />\n <Button\n className={cn(\n 'w-full py-[12px] text-[14px] font-[700] text-white disabled:opacity-60 bg-[#080a0f]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n disabled={disabled}\n loading={loading}\n onClick={handleConfirm}\n >\n {copy.confirmButton}\n </Button>\n </div>\n\n {errorInfo && (\n <Text className=\"mt-[8px] text-center text-[14px] font-[700] text-[#ff0000]\" html={errorInfo} />\n )}\n </div>\n )}\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RedeemCouponPanel_exports", "__export", "RedeemCouponPanel", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_const", "import_useRedeemCoupon", "import_useCopy", "import_constants", "onClose", "itemTitle", "itemCredits", "itemImage", "itemValue", "itemOff", "itemRules", "redeemId", "userId", "copy", "pointUnit", "alpcConfig", "onError", "couponCode", "setCouponCode", "errorInfo", "setErrorInfo", "disabled", "setDisabled", "copyText", "copied", "useCopy", "brand", "rounded", "loading", "trigger", "handleConfirm", "data", "msg", "rulesSection", "text", "index", "cn"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AlpcConfig } from '../../../type';
|
|
2
|
+
import type { ProductVariant } from '@anker-in/lib';
|
|
3
|
+
type RedeemAndBuyArg = {
|
|
4
|
+
productVariant: ProductVariant;
|
|
5
|
+
quantity?: number;
|
|
6
|
+
redeemId: number;
|
|
7
|
+
userId?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function useRedeemAndBuy(config: AlpcConfig): {
|
|
10
|
+
trigger: (arg: RedeemAndBuyArg) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var p=(t,e)=>{for(var o in e)d(t,o,{get:e[o],enumerable:!0})},g=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of c(e))!s.call(t,r)&&r!==o&&d(t,r,{get:()=>e[r],enumerable:!(n=m(e,r))||n.enumerable});return t};var y=t=>g(d({},"__esModule",{value:!0}),t);var l={};p(l,{useRedeemAndBuy:()=>f});module.exports=y(l);var u=require("@anker-in/lib"),a=require("./useRedeemCoupon");function f(t){const{trigger:e}=(0,a.useRedeemCoupon)(t),{trigger:o}=(0,u.useBuyNow)({},{throwOnError:!0});return{trigger:async r=>{const{data:i}=await e({user_id:r.userId,rule_id:r.redeemId});if(i?.data?.coupon_code)await o({discountCodes:[i.data.coupon_code],lineItems:[{variant:r.productVariant,quantity:r.quantity??1}]});else throw new Error(i?.msg??"Redeem failed")}}}
|
|
2
|
+
//# sourceMappingURL=useRedeemAndBuy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.ts"],
|
|
4
|
+
"sourcesContent": ["import { useBuyNow } from '@anker-in/lib'\nimport { useRedeemCoupon } from './useRedeemCoupon'\nimport type { AlpcConfig } from '../../../type'\nimport type { ProductVariant } from '@anker-in/lib'\n\ntype RedeemAndBuyArg = {\n productVariant: ProductVariant\n quantity?: number\n redeemId: number\n userId?: string\n}\n\nexport function useRedeemAndBuy(config: AlpcConfig) {\n const { trigger: redeemTrigger } = useRedeemCoupon(config)\n const { trigger: buyNow } = useBuyNow({}, { throwOnError: true })\n\n const trigger = async (arg: RedeemAndBuyArg) => {\n const { data } = await redeemTrigger({\n user_id: arg.userId,\n rule_id: arg.redeemId,\n })\n if (data?.data?.coupon_code) {\n await buyNow({\n discountCodes: [data.data.coupon_code],\n lineItems: [{ variant: arg.productVariant, quantity: arg.quantity ?? 1 }],\n })\n } else {\n throw new Error(data?.msg ?? 'Redeem failed')\n }\n }\n\n return { trigger }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA0B,yBAC1BC,EAAgC,6BAWzB,SAASH,EAAgBI,EAAoB,CAClD,KAAM,CAAE,QAASC,CAAc,KAAI,mBAAgBD,CAAM,EACnD,CAAE,QAASE,CAAO,KAAI,aAAU,CAAC,EAAG,CAAE,aAAc,EAAK,CAAC,EAiBhE,MAAO,CAAE,QAfO,MAAOC,GAAyB,CAC9C,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAMH,EAAc,CACnC,QAASE,EAAI,OACb,QAASA,EAAI,QACf,CAAC,EACD,GAAIC,GAAM,MAAM,YACd,MAAMF,EAAO,CACX,cAAe,CAACE,EAAK,KAAK,WAAW,EACrC,UAAW,CAAC,CAAE,QAASD,EAAI,eAAgB,SAAUA,EAAI,UAAY,CAAE,CAAC,CAC1E,CAAC,MAED,OAAM,IAAI,MAAMC,GAAM,KAAO,eAAe,CAEhD,CAEiB,CACnB",
|
|
6
|
+
"names": ["useRedeemAndBuy_exports", "__export", "useRedeemAndBuy", "__toCommonJS", "import_lib", "import_useRedeemCoupon", "config", "redeemTrigger", "buyNow", "arg", "data"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AlpcConfig } from '../../../type';
|
|
2
|
+
type RedeemCouponResponse = {
|
|
3
|
+
data: {
|
|
4
|
+
data: {
|
|
5
|
+
success: boolean;
|
|
6
|
+
coupon_code: string;
|
|
7
|
+
};
|
|
8
|
+
msg: string;
|
|
9
|
+
code: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
type RedeemCouponParams = {
|
|
13
|
+
user_id?: string;
|
|
14
|
+
rule_id: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function useRedeemCoupon(config: AlpcConfig): import("swr/mutation").SWRMutationResponse<RedeemCouponResponse, Error, string, RedeemCouponParams>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var d=Object.create;var p=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var y=(e,o)=>{for(var n in o)p(e,n,{get:o[n],enumerable:!0})},s=(e,o,n,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of l(o))!f.call(e,r)&&r!==n&&p(e,r,{get:()=>o[r],enumerable:!(t=g(o,r))||t.enumerable});return e};var R=(e,o,n)=>(n=e!=null?d(C(e)):{},s(o||!e||!e.__esModule?p(n,"default",{value:e,enumerable:!0}):n,e)),P=e=>s(p({},"__esModule",{value:!0}),e);var b={};y(b,{useRedeemCoupon:()=>_});module.exports=P(b);var a=R(require("swr/mutation")),i=require("../../../../credits/context/utils"),m=require("../../../../credits/context/const");function _(e){const{brand:o,locale:n,appName:t,apiBaseUrl:r}=e;return(0,a.default)("/v1/credit/redeem/coupon",async(u,{arg:c})=>(await fetch((0,i.getAlpcPath)(n,r)+u,{method:"POST",headers:{"Content-Type":"application/json","current-language":n},body:JSON.stringify({brand:o,country:m.ALPC_COUNTRY_MAP.get(n)||n,app_name:t,...c})})).json())}
|
|
2
|
+
//# sourceMappingURL=useRedeemCoupon.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.ts"],
|
|
4
|
+
"sourcesContent": ["import useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP } from '../../../../credits/context/const'\nimport type { AlpcConfig } from '../../../type'\n\ntype RedeemCouponResponse = {\n data: {\n data: { success: boolean; coupon_code: string }\n msg: string\n code: number\n }\n}\n\ntype RedeemCouponParams = {\n user_id?: string\n rule_id: number\n}\n\nexport function useRedeemCoupon(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n return useSWRMutation<RedeemCouponResponse, Error, string, RedeemCouponParams>(\n `/v1/credit/redeem/coupon`,\n async (url: string, { arg }) => {\n const response = await fetch(getAlpcPath(locale, apiBaseUrl) + url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': locale },\n body: JSON.stringify({\n brand,\n country: ALPC_COUNTRY_MAP.get(locale) || locale,\n app_name: appName,\n ...arg,\n }),\n })\n return response.json()\n }\n )\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,qBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA2B,2BAC3BC,EAA4B,6CAC5BC,EAAiC,6CAgB1B,SAASJ,EAAgBK,EAAoB,CAClD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,SAAO,EAAAK,SACL,2BACA,MAAOC,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,SAAM,eAAYL,EAAQE,CAAU,EAAIE,EAAK,CAClE,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBJ,CAAO,EAC1E,KAAM,KAAK,UAAU,CACnB,MAAAD,EACA,QAAS,mBAAiB,IAAIC,CAAM,GAAKA,EACzC,SAAUC,EACV,GAAGI,CACL,CAAC,CACH,CAAC,GACe,KAAK,CAEzB,CACF",
|
|
6
|
+
"names": ["useRedeemCoupon_exports", "__export", "useRedeemCoupon", "__toCommonJS", "import_mutation", "import_utils", "import_const", "config", "brand", "locale", "appName", "apiBaseUrl", "useSWRMutation", "url", "arg"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AlpcConsumeType } from '../../../../credits/context/const';
|
|
2
|
+
import type { ConsumeCreditRuleResponse } from '../../../../credits/context/response';
|
|
3
|
+
import type { AlpcConfig } from '../../../type';
|
|
4
|
+
export declare function useRedeemableList(config: AlpcConfig): {
|
|
5
|
+
redeemableList: ConsumeCreditRuleResponse[];
|
|
6
|
+
listLoading: boolean;
|
|
7
|
+
getRedeemableList: (consumeType?: AlpcConsumeType) => void;
|
|
8
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var _=Object.create;var p=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,S=Object.prototype.hasOwnProperty;var T=(e,t)=>{for(var o in t)p(e,o,{get:t[o],enumerable:!0})},m=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of A(t))!S.call(e,r)&&r!==o&&p(e,r,{get:()=>t[r],enumerable:!(i=b(t,r))||i.enumerable});return e};var h=(e,t,o)=>(o=e!=null?_(L(e)):{},m(t||!e||!e.__esModule?p(o,"default",{value:e,enumerable:!0}):o,e)),P=e=>m(p({},"__esModule",{value:!0}),e);var N={};T(N,{useRedeemableList:()=>M});module.exports=P(N);var n=require("react"),d=h(require("swr/mutation")),g=require("../../../../credits/context/utils"),f=require("../../../../credits/context/const");function M(e){const{brand:t,locale:o,appName:i,apiBaseUrl:r}=e;let s=o;o==="pl"&&(s="eu");const[C,y]=(0,n.useState)([]),{isMutating:R,trigger:l}=(0,d.default)("/v1/credit/consume_credit_rules",async(a,{arg:u})=>(await fetch((0,g.getAlpcPath)(s,r)+a,{method:"POST",headers:{"Content-Type":"application/json","current-language":s},body:JSON.stringify(u)})).json()),c=(0,n.useCallback)(a=>{l({brand:t,page:1,page_size:999,country:(f.ALPC_COUNTRY_MAP.get(s)||s)?.toUpperCase(),app_name:i,...a!==void 0&&{consume_type:a}},{onSuccess({data:u}){y(u?.data?.consume_credit_rules??[])}})},[t,s,i,l]);return(0,n.useEffect)(()=>{t&&c()},[t,c]),{redeemableList:C,listLoading:R,getRedeemableList:c}}
|
|
2
|
+
//# sourceMappingURL=useRedeemableList.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.ts"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath, languageTerritory } from '../../../../credits/context/utils'\nimport { ALPC_COUNTRY_MAP, AlpcConsumeType } from '../../../../credits/context/const'\nimport type { ConsumeCreditRuleResponse } from '../../../../credits/context/response'\nimport type { AlpcConfig } from '../../../type'\n\nexport function useRedeemableList(config: AlpcConfig) {\n const { brand, locale, appName, apiBaseUrl } = config\n\n let resolvedLocale = locale\n if (locale === 'pl') resolvedLocale = 'eu'\n\n const [redeemableList, setRedeemableList] = useState<ConsumeCreditRuleResponse[]>([])\n\n const { isMutating: listLoading, trigger } = useSWRMutation(\n `/v1/credit/consume_credit_rules`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\n const response = await fetch(getAlpcPath(resolvedLocale, apiBaseUrl) + url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'current-language': resolvedLocale },\n body: JSON.stringify(arg),\n })\n return response.json()\n }\n )\n\n const getRedeemableList = useCallback(\n (consumeType?: AlpcConsumeType) => {\n trigger(\n {\n brand,\n page: 1,\n page_size: 999,\n country: (ALPC_COUNTRY_MAP.get(resolvedLocale) || resolvedLocale)?.toUpperCase(),\n app_name: appName,\n ...(consumeType !== undefined && { consume_type: consumeType }),\n },\n {\n onSuccess({ data }) {\n setRedeemableList(data?.data?.consume_credit_rules ?? [])\n },\n }\n )\n },\n [brand, resolvedLocale, appName, trigger]\n )\n\n useEffect(() => {\n if (!brand) return\n getRedeemableList()\n }, [brand, getRedeemableList])\n\n return { redeemableList, listLoading, getRedeemableList }\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,uBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAiD,iBACjDC,EAA2B,2BAC3BC,EAA+C,6CAC/CC,EAAkD,6CAI3C,SAASL,EAAkBM,EAAoB,CACpD,KAAM,CAAE,MAAAC,EAAO,OAAAC,EAAQ,QAAAC,EAAS,WAAAC,CAAW,EAAIJ,EAE/C,IAAIK,EAAiBH,EACjBA,IAAW,OAAMG,EAAiB,MAEtC,KAAM,CAACC,EAAgBC,CAAiB,KAAI,YAAsC,CAAC,CAAC,EAE9E,CAAE,WAAYC,EAAa,QAAAC,CAAQ,KAAI,EAAAC,SAC3C,kCACA,MAAOC,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,SAAM,eAAYP,EAAgBD,CAAU,EAAIO,EAAK,CAC1E,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBN,CAAe,EAClF,KAAM,KAAK,UAAUO,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,KAAoB,eACvBC,GAAkC,CACjCL,EACE,CACE,MAAAR,EACA,KAAM,EACN,UAAW,IACX,SAAU,mBAAiB,IAAII,CAAc,GAAKA,IAAiB,YAAY,EAC/E,SAAUF,EACV,GAAIW,IAAgB,QAAa,CAAE,aAAcA,CAAY,CAC/D,EACA,CACE,UAAU,CAAE,KAAAC,CAAK,EAAG,CAClBR,EAAkBQ,GAAM,MAAM,sBAAwB,CAAC,CAAC,CAC1D,CACF,CACF,CACF,EACA,CAACd,EAAOI,EAAgBF,EAASM,CAAO,CAC1C,EAEA,sBAAU,IAAM,CACTR,GACLY,EAAkB,CACpB,EAAG,CAACZ,EAAOY,CAAiB,CAAC,EAEtB,CAAE,eAAAP,EAAgB,YAAAE,EAAa,kBAAAK,CAAkB,CAC1D",
|
|
6
|
+
"names": ["useRedeemableList_exports", "__export", "useRedeemableList", "__toCommonJS", "import_react", "import_mutation", "import_utils", "import_const", "config", "brand", "locale", "appName", "apiBaseUrl", "resolvedLocale", "redeemableList", "setRedeemableList", "listLoading", "trigger", "useSWRMutation", "url", "arg", "getRedeemableList", "consumeType", "data"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var I=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var K=(a,r)=>{for(var s in r)I(a,s,{get:r[s],enumerable:!0})},Q=(a,r,s,l)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of q(r))!J.call(a,p)&&p!==s&&I(a,p,{get:()=>r[p],enumerable:!(l=H(r,p))||l.enumerable});return a};var W=a=>Q(I({},"__esModule",{value:!0}),a);var Z={};K(Z,{default:()=>Y});module.exports=W(Z);var t=require("react/jsx-runtime"),f=require("react"),v=require("@anker-in/headless-ui"),o=require("@anker-in/lib"),B=require("../../context/provider"),D=require("../../context/viewStack"),S=require("./hooks/useRedeemableList"),A=require("./hooks/useRedeemAndBuy"),n=require("../../type"),c=require("../../../credits/context/utils"),U=require("../../../../constants");function X({copy:a,onClose:r}){const{profile:s,creditInfo:l,openSignUpPopup:p,alpcConfig:b}=(0,B.useMemberPopupContext)(),{pushView:P}=(0,D.useViewStack)(),{brand:L}=(0,o.useHeadlessContext)(),N=U.ROUNDED_BRANDS.includes(L),[y,k]=(0,f.useState)(""),[M,w]=(0,f.useState)(null),[O,E]=(0,f.useState)(!1),x=!!s,{redeemableList:R,listLoading:$}=(0,S.useRedeemableList)(b),{trigger:z}=(0,A.useRedeemAndBuy)(b),F=a.list.map(e=>e.product?.handle).filter(Boolean),{data:_}=(0,o.useProductsByHandles)({handles:F}),T=(0,f.useMemo)(()=>a.list.map(e=>{const i=R.find(m=>String(m.id)===String(e.redeemId));if(!i)return null;const d=Number(l?.available_credit??0),C=x&&!!s?.activated&&i.consume_credits>d,g=i.is_limited&&(!i.remaining_inventory||i.remaining_inventory<=0);let u,h;return(e.type===n.ConsumeCreditsItemType.RedeemAndBuy||e.type===n.ConsumeCreditsItemType.Product)&&e.product&&(u=_?.find(m=>m.handle===e.product.handle),h=u?.variants?.find(m=>m.sku===e.product.sku)??u?.variants?.[0],e.type===n.ConsumeCreditsItemType.RedeemAndBuy&&(!u||!h))?null:{...e,alpcData:i,insufficient:C,soldOut:g,product:u,variant:h}}).filter(Boolean),[a.list,R,l,s,x,_]);function V(e){return x?e.soldOut?a.soldOut:a.btnRedeem:a.unlockRewards}function j(e){return e.type===n.ConsumeCreditsItemType.GiftCard||e.type===n.ConsumeCreditsItemType.Product?e.insufficient:e.soldOut||e.insufficient}async function G(e){if(!x){p();return}if(!s?.activated&&!O){P({type:n.MemberPopupPanelType.Activate,props:{onSuccess:()=>E(!0)}});return}if(e.type===n.ConsumeCreditsItemType.GiftCard||e.type===n.ConsumeCreditsItemType.Product){a.creditsPage?.url&&window.open(a.creditsPage.url,"_blank","noopener,noreferrer");return}if(e.type===n.ConsumeCreditsItemType.Coupon)P({type:n.MemberPopupPanelType.RedeemCoupon,props:{itemTitle:e.title,itemCredits:e.alpcData.consume_credits,itemImage:a.imageMapping?.[e.type]?{url:a.imageMapping[e.type].url,alt:e.image?.alt}:e.image,itemValue:e.value,itemOff:a.off,itemRules:e.rules,redeemId:Number(e.redeemId),userId:s?.user_id,alpcConfig:b}});else{k(""),w(e.redeemId);try{await z({productVariant:e.variant,redeemId:Number(e.redeemId),userId:s?.user_id})}catch(i){k(i?.message??a.redeemModal.commonError)}finally{w(null)}}}return(0,t.jsx)(t.Fragment,{children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-[12px]",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[8px]",children:[a.title&&(0,t.jsx)("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:a.title}),a.subtitle&&(0,t.jsx)("p",{className:"text-[16px] font-[700] leading-snug text-[#4a4c56]",children:a.subtitle})]}),x&&(0,t.jsxs)("div",{className:(0,o.classNames)("flex items-center gap-[12px] bg-[#f5f6f7] p-[16px]",N?"rounded-[8px]":"rounded-none"),children:[(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-[4px]",children:[(0,t.jsx)("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:a.balanceLabel??"AnkerCredits Balance"}),(0,t.jsxs)("div",{className:"flex items-end gap-[4px]",children:[(0,t.jsx)("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:(0,c.numberFormat)(l?.available_credit||0)}),(0,t.jsx)("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:a.creditUnit??a.pointUnit??"ankercredits"})]})]}),(0,t.jsx)("div",{className:"h-full w-px bg-[#dadce0]"}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-[4px]",children:[(0,t.jsx)("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:a.comingSoonLabel??"Coming Soon"}),(0,t.jsxs)("div",{className:"flex items-end gap-[4px]",children:[(0,t.jsx)("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:(0,c.numberFormat)(l?.pending_credit||0)}),(0,t.jsx)("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:a.creditUnit??a.pointUnit??"ankercredits"}),(0,t.jsx)("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:a.creditUnit??"ankercredits"})]})]}),(0,t.jsx)("div",{className:"h-full w-px bg-[#dadce0]"}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-[4px]",children:[(0,t.jsx)("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:a.comingSoonLabel??"Coming Soon"}),(0,t.jsxs)("div",{className:"flex items-end gap-[4px]",children:[(0,t.jsx)("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:(0,c.numberFormat)(l?.pending_credit??0)}),(0,t.jsx)("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:a.creditUnit??"ankercredits"})]})]})]}),y&&(0,t.jsx)("div",{className:"text-[14px] font-[700] text-[#f84d4f]",children:y}),$?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center py-[32px]",children:(0,t.jsx)("div",{className:"size-[32px] animate-spin rounded-full border-[3px] border-[#080a0f] border-t-transparent"})}):(0,t.jsx)("div",{className:"flex flex-col",children:T.map((e,i)=>{const d=!!e.product;return(0,t.jsxs)("div",{className:"relative py-[16px]",children:[i>0&&(0,t.jsx)("div",{className:"absolute inset-x-0 top-0 h-px bg-[#dadce0]"}),(0,t.jsxs)("div",{className:"flex items-center gap-[12px]",children:[(()=>{const C=a.imageMapping?.[e.type]?.url,g=d?e.variant?.image?.url??e.product?.images?.[0]?.url??e.image?.url:C??e.image?.url,u=d?e.variant?.image?.altText??e.product?.images?.[0]?.alt??e.image?.alt??"":e.image?.alt??"";return g?(0,t.jsxs)("div",{className:(0,o.classNames)("relative size-[64px] shrink-0 overflow-hidden",N?"rounded-[4px]":"rounded-none"),children:[(0,t.jsx)(v.Picture,{source:g,alt:u,className:"flex size-full items-center justify-center",imgClassName:d?"object-cover":"h-full w-auto object-contain"}),!d&&e.value&&(0,t.jsxs)("div",{className:"absolute bottom-[16px] left-[4px] text-[12px] font-[800] leading-none text-white",children:[e.value," ",a.off]})]}):null})(),(0,t.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,t.jsx)("div",{className:"text-[16px] font-[700] text-[#1e2024] line-clamp-2",children:d&&e.product?.title?e.product.title:e.title}),(0,t.jsx)("div",{className:"mt-[4px] text-[14px] text-[#666]",children:d&&e.price!=null?`${(0,c.numberFormat)(e.alpcData.consume_credits)} ${a.pointUnit??""} + $${Number(e.price).toFixed(2)}`:`${(0,c.numberFormat)(e.alpcData.consume_credits)} ${a.pointUnit??""}`})]}),(0,t.jsxs)("div",{className:"relative group",children:[(0,t.jsx)(v.Button,{className:(0,o.classNames)("bg-[#080a0f] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white",N?"rounded-[4px]":"rounded-none"),disabled:j(e),loading:M===e.redeemId,onClick:()=>G(e),children:V(e)}),e.insufficient&&(0,t.jsx)("div",{className:"pointer-events-none absolute right-0 top-full z-[100] mt-[10px] hidden w-[200px] group-hover:block",children:(0,t.jsxs)("div",{className:"relative bg-[#6D6D6F] p-[16px] text-[14px] font-[700] text-white shadow",children:[(0,t.jsx)("p",{className:"text-pretty tracking-[-0.02em] text-[14px]",children:a.insufficientCredits}),(0,t.jsx)("div",{className:"absolute -top-[8px] right-[20px] size-[16px] origin-top-left rotate-45 rounded-[2px] bg-[#6D6D6F]"})]})})]})]})]},i)})}),a.creditsPage?.url&&(0,t.jsx)("a",{href:a.creditsPage.url,target:"_blank",rel:"noopener noreferrer",className:"mt-auto self-start text-[14px] font-[700] text-[#080a0f] underline",children:a.creditsPage.label??"Go to Credits Page"})]})})}var Y=X;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/ConsumeCredits/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useMemo, useState } from 'react'\nimport { Picture, Button } from '@anker-in/headless-ui'\nimport { classNames as cn, useProductsByHandles, useHeadlessContext } from '@anker-in/lib'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { useViewStack } from '../../context/viewStack'\nimport { useRedeemableList } from './hooks/useRedeemableList'\nimport { useRedeemAndBuy } from './hooks/useRedeemAndBuy'\nimport {\n ConsumeCreditsItemType,\n MemberPopupPanelType,\n type ConsumeCreditsopy,\n type ConsumeCreditsItem,\n} from '../../type'\nimport { numberFormat } from '../../../credits/context/utils'\nimport type { ConsumeCreditRuleResponse } from '../../../credits/context/response'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype EnrichedItem = ConsumeCreditsItem & {\n alpcData: ConsumeCreditRuleResponse\n insufficient: boolean\n soldOut: boolean\n product?: any\n variant?: any\n}\n\ntype Props = {\n copy: ConsumeCreditsopy\n onClose: () => void\n}\n\nfunction ConsumeCredits({ copy, onClose }: Props) {\n const { profile, creditInfo, openSignUpPopup, alpcConfig } = useMemberPopupContext()\n const { pushView } = useViewStack()\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const [redeemAndBuyError, setRedeemAndBuyError] = useState('')\n const [loadingId, setLoadingId] = useState<string | number | null>(null)\n const [isActivateSuccess, setIsActivateSuccess] = useState(false)\n\n const isLogin = !!profile\n const { redeemableList, listLoading } = useRedeemableList(alpcConfig)\n const { trigger: redeemAndBuy } = useRedeemAndBuy(alpcConfig)\n\n const handles = copy.list.map(item => item.product?.handle).filter(Boolean) as string[]\n const { data: products } = useProductsByHandles({ handles })\n\n const list = useMemo(() => {\n return copy.list\n .map(item => {\n const alpcData = redeemableList.find(r => String(r.id) === String(item.redeemId))\n if (!alpcData) return null\n\n const availableCredit = Number(creditInfo?.available_credit ?? 0)\n const insufficient = isLogin && !!profile?.activated && alpcData.consume_credits > availableCredit\n const soldOut = alpcData.is_limited && (!alpcData.remaining_inventory || alpcData.remaining_inventory <= 0)\n\n let product\n let variant\n if (\n (item.type === ConsumeCreditsItemType.RedeemAndBuy || item.type === ConsumeCreditsItemType.Product) &&\n item.product\n ) {\n product = products?.find((p: any) => p.handle === item.product!.handle)\n variant = product?.variants?.find((v: any) => v.sku === item.product!.sku) ?? product?.variants?.[0]\n if (item.type === ConsumeCreditsItemType.RedeemAndBuy && (!product || !variant)) return null\n }\n\n return { ...item, alpcData, insufficient, soldOut, product, variant }\n })\n .filter(Boolean) as EnrichedItem[]\n }, [copy.list, redeemableList, creditInfo, profile, isLogin, products])\n\n function getButtonLabel(item: (typeof list)[number]) {\n if (!isLogin) return copy.unlockRewards\n if (item.soldOut) return copy.soldOut\n return copy.btnRedeem\n }\n\n function isDisabled(item: (typeof list)[number]) {\n if (item.type === ConsumeCreditsItemType.GiftCard || item.type === ConsumeCreditsItemType.Product) {\n return item.insufficient\n }\n return item.soldOut || item.insufficient\n }\n\n async function handleRedeem(item: (typeof list)[number]) {\n if (!isLogin) {\n openSignUpPopup()\n return\n }\n if (!profile?.activated && !isActivateSuccess) {\n pushView({\n type: MemberPopupPanelType.Activate,\n props: { onSuccess: () => setIsActivateSuccess(true) },\n })\n return\n }\n if (item.type === ConsumeCreditsItemType.GiftCard || item.type === ConsumeCreditsItemType.Product) {\n if (copy.creditsPage?.url) {\n window.open(copy.creditsPage.url, '_blank', 'noopener,noreferrer')\n }\n return\n }\n if (item.type === ConsumeCreditsItemType.Coupon) {\n pushView({\n type: MemberPopupPanelType.RedeemCoupon,\n props: {\n itemTitle: item.title,\n itemCredits: item.alpcData.consume_credits,\n itemImage: copy.imageMapping?.[item.type]\n ? { url: copy.imageMapping[item.type]!.url, alt: item.image?.alt }\n : item.image,\n itemValue: item.value,\n itemOff: copy.off,\n itemRules: item.rules,\n redeemId: Number(item.redeemId),\n userId: profile?.user_id,\n alpcConfig,\n },\n })\n } else {\n setRedeemAndBuyError('')\n setLoadingId(item.redeemId)\n try {\n await redeemAndBuy({\n productVariant: item.variant,\n redeemId: Number(item.redeemId),\n userId: profile?.user_id,\n })\n } catch (e: any) {\n setRedeemAndBuyError(e?.message ?? copy.redeemModal.commonError)\n } finally {\n setLoadingId(null)\n }\n }\n }\n\n return (\n <>\n <div className=\"flex flex-1 flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\n {copy.subtitle && <p className=\"text-[16px] font-[700] leading-snug text-[#4a4c56]\">{copy.subtitle}</p>}\n </div>\n\n {isLogin && (\n <div\n className={cn(\n 'flex items-center gap-[12px] bg-[#f5f6f7] p-[16px]',\n rounded ? 'rounded-[8px]' : 'rounded-none'\n )}\n >\n <div className=\"flex flex-1 flex-col gap-[4px]\">\n <div className=\"text-[14px] font-[700] text-[#1e2024]\">{copy.balanceLabel ?? 'AnkerCredits Balance'}</div>\n <div className=\"flex items-end gap-[4px]\">\n <span className=\"text-[24px] font-[700] leading-[1.2] text-[#1e2024]\">\n {numberFormat(creditInfo?.available_credit || 0)}\n </span>\n <span className=\"text-[14px] font-[700] leading-[1.4] text-[#1e2024]\">\n {copy.creditUnit ?? copy.pointUnit ?? 'ankercredits'}\n </span>\n </div>\n </div>\n <div className=\"h-full w-px bg-[#dadce0]\" />\n <div className=\"flex flex-1 flex-col gap-[4px]\">\n <div className=\"text-[14px] font-[700] text-[#1e2024]\">{copy.comingSoonLabel ?? 'Coming Soon'}</div>\n <div className=\"flex items-end gap-[4px]\">\n <span className=\"text-[24px] font-[700] leading-[1.2] text-[#1e2024]\">\n {numberFormat(creditInfo?.pending_credit || 0)}\n </span>\n <span className=\"text-[14px] font-[700] leading-[1.4] text-[#1e2024]\">\n {copy.creditUnit ?? copy.pointUnit ?? 'ankercredits'}\n </span>\n <span className=\"text-[14px] font-[700] leading-[1.4] text-[#1e2024]\">\n {copy.creditUnit ?? 'ankercredits'}\n </span>\n </div>\n </div>\n <div className=\"h-full w-px bg-[#dadce0]\" />\n <div className=\"flex flex-1 flex-col gap-[4px]\">\n <div className=\"text-[14px] font-[700] text-[#1e2024]\">{copy.comingSoonLabel ?? 'Coming Soon'}</div>\n <div className=\"flex items-end gap-[4px]\">\n <span className=\"text-[24px] font-[700] leading-[1.2] text-[#1e2024]\">\n {numberFormat(creditInfo?.pending_credit ?? 0)}\n </span>\n <span className=\"text-[14px] font-[700] leading-[1.4] text-[#1e2024]\">\n {copy.creditUnit ?? 'ankercredits'}\n </span>\n </div>\n </div>\n </div>\n )}\n {redeemAndBuyError && <div className=\"text-[14px] font-[700] text-[#f84d4f]\">{redeemAndBuyError}</div>}\n\n {listLoading ? (\n <div className=\"flex flex-1 items-center justify-center py-[32px]\">\n <div className=\"size-[32px] animate-spin rounded-full border-[3px] border-[#080a0f] border-t-transparent\" />\n </div>\n ) : (\n <div className=\"flex flex-col\">\n {list.map((item, idx) => {\n const hasProduct = !!item.product\n return (\n <div key={idx} className=\"relative py-[16px]\">\n {idx > 0 && <div className=\"absolute inset-x-0 top-0 h-px bg-[#dadce0]\" />}\n <div className=\"flex items-center gap-[12px]\">\n {(() => {\n const mappedImgUrl = copy.imageMapping?.[item.type]?.url\n const imgUrl = hasProduct\n ? (item.variant?.image?.url ?? item.product?.images?.[0]?.url ?? item.image?.url)\n : (mappedImgUrl ?? item.image?.url)\n const imgAlt = hasProduct\n ? (item.variant?.image?.altText ?? item.product?.images?.[0]?.alt ?? item.image?.alt ?? '')\n : (item.image?.alt ?? '')\n if (!imgUrl) return null\n return (\n <div\n className={cn(\n 'relative size-[64px] shrink-0 overflow-hidden',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n >\n <Picture\n source={imgUrl}\n alt={imgAlt}\n className=\"flex size-full items-center justify-center\"\n imgClassName={hasProduct ? 'object-cover' : 'h-full w-auto object-contain'}\n />\n {!hasProduct && item.value && (\n <div className=\"absolute bottom-[16px] left-[4px] text-[12px] font-[800] leading-none text-white\">\n {item.value} {copy.off}\n </div>\n )}\n </div>\n )\n })()}\n <div className=\"min-w-0 flex-1\">\n <div className=\"text-[16px] font-[700] text-[#1e2024] line-clamp-2\">\n {hasProduct && item.product?.title ? item.product.title : item.title}\n </div>\n <div className=\"mt-[4px] text-[14px] text-[#666]\">\n {hasProduct && item.price != null\n ? `${numberFormat(item.alpcData.consume_credits)} ${copy.pointUnit ?? ''} + $${Number(item.price).toFixed(2)}`\n : `${numberFormat(item.alpcData.consume_credits)} ${copy.pointUnit ?? ''}`}\n </div>\n </div>\n <div className=\"relative group\">\n <Button\n className={cn(\n 'bg-[#080a0f] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n disabled={isDisabled(item)}\n loading={loadingId === item.redeemId}\n onClick={() => handleRedeem(item)}\n >\n {getButtonLabel(item)}\n </Button>\n {item.insufficient && (\n <div className=\"pointer-events-none absolute right-0 top-full z-[100] mt-[10px] hidden w-[200px] group-hover:block\">\n <div className=\"relative bg-[#6D6D6F] p-[16px] text-[14px] font-[700] text-white shadow\">\n <p className=\"text-pretty tracking-[-0.02em] text-[14px]\">{copy.insufficientCredits}</p>\n <div className=\"absolute -top-[8px] right-[20px] size-[16px] origin-top-left rotate-45 rounded-[2px] bg-[#6D6D6F]\" />\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n )}\n\n {copy.creditsPage?.url && (\n <a\n href={copy.creditsPage.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"mt-auto self-start text-[14px] font-[700] text-[#080a0f] underline\"\n >\n {copy.creditsPage.label ?? 'Go to Credits Page'}\n </a>\n )}\n </div>\n </>\n )\n}\n\nexport default ConsumeCredits\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ConsumeCredits_exports", "__export", "ConsumeCredits_default", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_provider", "import_viewStack", "import_useRedeemableList", "import_useRedeemAndBuy", "import_type", "import_utils", "import_constants", "ConsumeCredits", "copy", "onClose", "profile", "creditInfo", "openSignUpPopup", "alpcConfig", "pushView", "brand", "rounded", "redeemAndBuyError", "setRedeemAndBuyError", "loadingId", "setLoadingId", "isActivateSuccess", "setIsActivateSuccess", "isLogin", "redeemableList", "listLoading", "redeemAndBuy", "handles", "item", "products", "list", "alpcData", "r", "availableCredit", "insufficient", "soldOut", "product", "variant", "p", "v", "getButtonLabel", "isDisabled", "handleRedeem", "e", "cn", "idx", "hasProduct", "mappedImgUrl", "imgUrl", "imgAlt"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AuthCodeActivateCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
copy: AuthCodeActivateCopy;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
onSuccess?: () => void;
|
|
6
|
+
};
|
|
7
|
+
export default function ActivatePanel({ copy, onClose, onSuccess }: Props): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var M=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var J=(e,i)=>{for(var c in i)M(e,c,{get:i[c],enumerable:!0})},Q=(e,i,c,v)=>{if(i&&typeof i=="object"||typeof i=="function")for(let m of q(i))!G.call(e,m)&&m!==c&&M(e,m,{get:()=>i[m],enumerable:!(v=U(i,m))||v.enumerable});return e};var W=e=>Q(M({},"__esModule",{value:!0}),e);var X={};J(X,{default:()=>V});module.exports=W(X);var n=require("react/jsx-runtime"),s=require("react"),l=require("@anker-in/headless-ui"),o=require("@anker-in/lib"),R=require("../../../registration/authCodeActivate/Message"),H=require("../../../registration"),L=require("../../../../constants");function V({copy:e,onClose:i,onSuccess:c}){const{locale:v,brand:m}=(0,o.useHeadlessContext)(),{email:d}=(0,H.useRegistration)(),y=L.ROUNDED_BRANDS.includes(m),{isMutating:B,trigger:_,data:E}=(0,o.useSendEmailValidation)(),{isMutating:P,trigger:k}=(0,o.useEmailValidation)(),[$,g]=(0,s.useState)(""),[j,f]=(0,s.useState)(""),{startCountDown:A,startAction:D,countDown:z}=(0,o.useCountDown)(60),[I,p]=(0,s.useState)(""),[N,b]=(0,s.useState)(0),[u,w]=(0,s.useState)(new Array(6).fill("")),T=(0,s.useRef)([]),C=u.join("");(0,s.useEffect)(()=>{T.current[N]&&T.current[N].focus()},[N]),(0,s.useEffect)(()=>{d&&_({email:d,data:{redirect_url:`${window?.location?.origin}${window?.location?.pathname}`}},{onSuccess:()=>{f("success"),g(e?.sendEmailSuccessMessage||""),D(),setTimeout(()=>{f(""),g("")},5e3)}})},[d]);const F=(0,s.useCallback)(async()=>{d&&(await _({email:d,data:{redirect_url:`${window?.location?.origin}${window?.location?.pathname}`}},{onSuccess:()=>{f("success"),g(e?.sendEmailSuccessMessage||""),D(),setTimeout(()=>{f(""),g("")},5e3)}}),(0,o.gaTrack)({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"reg_sub_pop",position:"auth_code",button_name:"sent_again"}}))},[d,_]),K=(x,a)=>{const{value:t}=x.target;if(p(""),Number.isNaN(Number(t)))return;if(t.length>1){a<u.length-1&&(u[a+1]||(b(a+1),w(h=>{const S=[...h];return S[a]=t[0],t.length>1&&(S[a+1]=t[1]),S})));return}const r=[...u];r[a]=t,w(r),t?a<u.length-1&&!u[a+1]&&b(a+1):a>0&&b(a-1)},O=(0,s.useCallback)(async()=>{if(!C?.length){p(e?.codeEmptyError||"");return}if(C.length<6){p(e?.incorrectCodeError||"");return}const x=E?.data?.data?.active_token??E?.data?.active_token;x&&await k({token:x,code:C},{onSuccess:t=>{if(t.status>=200&&t.status<300)f("success"),g(e?.authSuccessMessage||""),c?.(),setTimeout(()=>{i()},3e3);else{const r=t?.data?.error_code??t?.error_code;r==="104"?(c?.(),setTimeout(()=>{i()},3e3)):p(r==="142"?e?.incorrectCodeError||"Invalid verification code.":r==="154"?e?.expiredCodeMessage||"":e?.sendEmailErrorMessage||"")}}});let a=setTimeout(()=>{f(""),g(""),clearTimeout(a)},5e3);(0,o.gaTrack)({event:"ga4Event",event_name:"lp_button",event_parameters:{page_group:"reg_sub_pop",position:"auth_code",button_name:"check_and_active"}})},[C,e?.codeEmptyError,e?.authSuccessMessage,e?.incorrectCodeError,e?.expiredCodeMessage,e?.sendEmailErrorMessage,v,E,k,i,c]);return(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)(l.Text,{className:"text-[22px] font-extrabold leading-[120%] text-[#333] min-l:text-[24px] [&_abbr]:text-[#005d8e]",html:e?.authCodeTitle}),(0,n.jsx)(l.Text,{as:"p",className:"mt-3 text-[14px] font-semibold leading-[140%] text-[rgba(51,51,51,0.75)] min-l:text-base [&_abbr]:text-[#333]",html:e?.authCodeDesc?.replace("%email%",d||"")})]}),(0,n.jsxs)("div",{className:"mt-6",children:[(0,n.jsx)(l.Text,{className:"mt-4 text-[14px] !font-bold font-semibold leading-[140%] text-[#333] min-l:mt-6",html:e?.enterActiveCodeText}),(0,n.jsx)("div",{className:"my-3 grid grid-cols-6 gap-2",children:u.map((x,a)=>(0,n.jsx)("div",{className:"col-span-1 aspect-1 text-[#555]",children:(0,n.jsx)("input",{ref:t=>{t&&(T.current[a]=t)},type:"tel",className:(0,o.classNames)("flex size-full items-center justify-center border border-[#333333]/20 bg-[#EEEEEE] text-center text-[24px] font-medium focus:border-[#333]/50 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [&:focus-visible]:outline-none",y&&"rounded-[12px]"),value:x,autoComplete:"false",autoCorrect:"false",spellCheck:"false",autoCapitalize:"false",onChange:t=>K(t,a),onFocus:()=>{b(a)},onPaste:t=>{const r=t.clipboardData.getData("text");if(!Number.isNaN(Number(r))){const h=r.split("").slice(0,6);w(h.concat(Array(6-h.length).fill(""))),h.length<=u.length&&b(h.length-1)}},onKeyDown:t=>{const{value:r}=t.target;t.key==="Backspace"&&!r&&a>0&&b(a-1)}},a)},a))}),I&&(0,n.jsx)(l.Text,{className:"mb-3 text-[14px] font-semibold leading-[120%] text-[#f84d4f]",html:I}),e?.authCodeContent&&(0,n.jsx)("ul",{className:'flex flex-col gap-1 [&_li]:flex [&_li]:gap-2 [&_li]:text-[14px] [&_li]:font-semibold [&_li]:leading-[120%] [&_li]:text-[rgba(51,51,51,0.55)] [&_li]:before:content-["\u2022"]',dangerouslySetInnerHTML:{__html:e?.authCodeContent}})]}),(0,n.jsxs)("div",{className:"mt-4 min-l:mt-6",children:[(0,n.jsx)(l.Text,{className:"text-base font-semibold leading-[100%] text-[#333]",html:e?.authCodeReceiveText})," ",A?(0,n.jsx)(l.Text,{html:e?.retrieveText?.replace("%countdownTime%",z.toString()),className:"cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline"}):(0,n.jsx)(l.Text,{onClick:F,className:(0,o.classNames)("cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline",{"pointer-events-none":A||B}),html:e?.sendAgainText}),(0,n.jsx)(l.Button,{type:"submit",loading:P,className:"mt-6 flex h-[54px] w-full cursor-pointer items-center justify-center px-8 py-[15px] text-center text-base font-bold leading-[100%] text-white min-l:mt-8",onClick:O,children:e.buttonText})]}),(0,n.jsx)(R.Message,{status:j,message:$})]})}
|
|
2
|
+
//# sourceMappingURL=ActivatePanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/ActivatePanel.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useState, useCallback, useRef, useEffect } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport {\n useSendEmailValidation,\n gaTrack,\n classNames as cn,\n useHeadlessContext,\n useEmailValidation,\n useCountDown,\n} from '@anker-in/lib'\nimport { Message } from '../../../registration/authCodeActivate/Message'\nimport type { AuthCodeActivateCopy } from '../../type'\nimport { useRegistration } from '../../../registration'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: AuthCodeActivateCopy\n onClose: () => void\n onSuccess?: () => void\n}\n\nexport default function ActivatePanel({ copy, onClose, onSuccess }: Props) {\n const { locale, brand } = useHeadlessContext()\n const { email } = useRegistration()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const {\n isMutating: isSendingEmail,\n trigger: triggerSendValidationEmail,\n data: sendEmailData,\n } = useSendEmailValidation()\n\n const { isMutating: emailValidationLoading, trigger: triggerEmailValidation } = useEmailValidation()\n\n const [messageText, setMessageText] = useState('')\n const [messageStatus, setMessageStatus] = useState('')\n const { startCountDown: isStartCountDown, startAction: startCountDown, countDown } = useCountDown(60)\n\n const [error, setError] = useState('')\n const [focusIndex, setFocusIndex] = useState(0)\n const [codeArray, setCodeArray] = useState(new Array(6).fill(''))\n\n const inputRefs = useRef<HTMLInputElement[]>([])\n const code = codeArray.join('')\n\n useEffect(() => {\n if (inputRefs.current[focusIndex]) {\n inputRefs.current[focusIndex].focus()\n }\n }, [focusIndex])\n\n useEffect(() => {\n if (email) {\n triggerSendValidationEmail(\n {\n email: email,\n data: {\n redirect_url: `${window?.location?.origin}${window?.location?.pathname}`,\n },\n },\n {\n onSuccess: () => {\n setMessageStatus('success')\n setMessageText(copy?.sendEmailSuccessMessage || '')\n startCountDown()\n setTimeout(() => {\n setMessageStatus('')\n setMessageText('')\n }, 5000)\n },\n }\n )\n }\n }, [email])\n\n const handleSendAgain = useCallback(async () => {\n if (!email) return\n await triggerSendValidationEmail(\n {\n email: email,\n data: {\n redirect_url: `${window?.location?.origin}${window?.location?.pathname}`,\n },\n },\n {\n onSuccess: () => {\n setMessageStatus('success')\n setMessageText(copy?.sendEmailSuccessMessage || '')\n startCountDown()\n setTimeout(() => {\n setMessageStatus('')\n setMessageText('')\n }, 5000)\n },\n }\n )\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: 'reg_sub_pop',\n position: 'auth_code',\n button_name: 'sent_again',\n },\n })\n }, [email, triggerSendValidationEmail])\n\n const handleInputCodeChange = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {\n const { value } = event.target\n\n setError('')\n\n if (Number.isNaN(Number(value))) {\n return\n }\n\n if (value.length > 1) {\n if (index < codeArray.length - 1) {\n if (!codeArray[index + 1]) {\n setFocusIndex(index + 1)\n setCodeArray(old => {\n const newCode = [...old]\n newCode[index] = value[0]\n if (value.length > 1) {\n newCode[index + 1] = value[1]\n }\n return newCode\n })\n }\n }\n return\n }\n const newCode = [...codeArray]\n newCode[index] = value\n setCodeArray(newCode)\n if (value) {\n if (index < codeArray.length - 1 && !codeArray[index + 1]) {\n setFocusIndex(index + 1)\n }\n } else if (index > 0) {\n setFocusIndex(index - 1)\n }\n }\n\n const handleAuthCodeSubmit = useCallback(async () => {\n if (!code?.length) {\n setError(copy?.codeEmptyError || '')\n return\n }\n\n if (code.length < 6) {\n setError(copy?.incorrectCodeError || '')\n return\n }\n\n const token = sendEmailData?.data?.data?.active_token ?? sendEmailData?.data?.active_token\n if (token) {\n await triggerEmailValidation(\n {\n token: token,\n code: code,\n },\n {\n onSuccess: data => {\n if (data.status >= 200 && data.status < 300) {\n setMessageStatus('success')\n setMessageText(copy?.authSuccessMessage || '')\n onSuccess?.()\n setTimeout(() => {\n onClose()\n }, 3000)\n } else {\n const errorCode = data?.data?.error_code ?? data?.error_code\n if (errorCode === '104') {\n onSuccess?.()\n setTimeout(() => {\n onClose()\n }, 3000)\n } else if (errorCode === '142') {\n setError(copy?.incorrectCodeError || 'Invalid verification code.')\n } else if (errorCode === '154') {\n setError(copy?.expiredCodeMessage || '')\n } else {\n setError(copy?.sendEmailErrorMessage || '')\n }\n }\n },\n }\n )\n }\n\n let timer = setTimeout(() => {\n setMessageStatus('')\n setMessageText('')\n clearTimeout(timer)\n }, 5000)\n\n gaTrack({\n event: 'ga4Event',\n event_name: 'lp_button',\n event_parameters: {\n page_group: 'reg_sub_pop',\n position: 'auth_code',\n button_name: 'check_and_active',\n },\n })\n }, [\n code,\n copy?.codeEmptyError,\n copy?.authSuccessMessage,\n copy?.incorrectCodeError,\n copy?.expiredCodeMessage,\n copy?.sendEmailErrorMessage,\n locale,\n sendEmailData,\n triggerEmailValidation,\n onClose,\n onSuccess,\n ])\n\n return (\n <div className=\"relative\">\n <div>\n <Text\n className=\"text-[22px] font-extrabold leading-[120%] text-[#333] min-l:text-[24px] [&_abbr]:text-[#005d8e]\"\n html={copy?.authCodeTitle}\n />\n <Text\n as=\"p\"\n className=\"mt-3 text-[14px] font-semibold leading-[140%] text-[rgba(51,51,51,0.75)] min-l:text-base [&_abbr]:text-[#333]\"\n html={copy?.authCodeDesc?.replace('%email%', email || '')}\n />\n </div>\n <div className=\"mt-6\">\n <Text\n className=\"mt-4 text-[14px] !font-bold font-semibold leading-[140%] text-[#333] min-l:mt-6\"\n html={copy?.enterActiveCodeText}\n />\n <div className=\"my-3 grid grid-cols-6 gap-2\">\n {codeArray.map((item, index) => (\n <div key={index} className=\"col-span-1 aspect-1 text-[#555]\">\n <input\n ref={inputRef => {\n if (inputRef) {\n inputRefs.current[index] = inputRef\n }\n }}\n key={index}\n type=\"tel\"\n className={cn(\n 'flex size-full items-center justify-center border border-[#333333]/20 bg-[#EEEEEE] text-center text-[24px] font-medium focus:border-[#333]/50 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [&:focus-visible]:outline-none',\n rounded && 'rounded-[12px]'\n )}\n value={item}\n autoComplete=\"false\"\n autoCorrect=\"false\"\n spellCheck=\"false\"\n autoCapitalize=\"false\"\n onChange={event => handleInputCodeChange(event, index)}\n onFocus={() => {\n setFocusIndex(index)\n }}\n onPaste={event => {\n const paste = event.clipboardData.getData('text')\n if (!Number.isNaN(Number(paste))) {\n const pastedCode = paste.split('').slice(0, 6)\n setCodeArray(pastedCode.concat(Array(6 - pastedCode.length).fill('')))\n if (pastedCode.length <= codeArray.length) {\n setFocusIndex(pastedCode.length - 1)\n }\n }\n }}\n onKeyDown={event => {\n const { value } = event.target as HTMLInputElement\n if (event.key === 'Backspace' && !value && index > 0) {\n setFocusIndex(index - 1)\n }\n }}\n />\n </div>\n ))}\n </div>\n\n {error && <Text className=\"mb-3 text-[14px] font-semibold leading-[120%] text-[#f84d4f]\" html={error} />}\n {copy?.authCodeContent && (\n <ul\n className='flex flex-col gap-1 [&_li]:flex [&_li]:gap-2 [&_li]:text-[14px] [&_li]:font-semibold [&_li]:leading-[120%] [&_li]:text-[rgba(51,51,51,0.55)] [&_li]:before:content-[\"\u2022\"]'\n dangerouslySetInnerHTML={{ __html: copy?.authCodeContent }}\n />\n )}\n </div>\n <div className=\"mt-4 min-l:mt-6\">\n <Text className=\"text-base font-semibold leading-[100%] text-[#333]\" html={copy?.authCodeReceiveText} />{' '}\n {isStartCountDown ? (\n <Text\n html={copy?.retrieveText?.replace('%countdownTime%', countDown.toString())}\n className=\"cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline\"\n />\n ) : (\n <Text\n onClick={handleSendAgain}\n className={cn(\n 'cursor-pointer text-base font-semibold leading-[100%] !text-brand text-[#005d8e] text-[#333] underline',\n {\n 'pointer-events-none': isStartCountDown || isSendingEmail,\n }\n )}\n html={copy?.sendAgainText}\n />\n )}\n <Button\n type=\"submit\"\n loading={emailValidationLoading}\n className=\"mt-6 flex h-[54px] w-full cursor-pointer items-center justify-center px-8 py-[15px] text-center text-base font-bold leading-[100%] text-white min-l:mt-8\"\n onClick={handleAuthCodeSubmit}\n >\n {copy.buttonText}\n </Button>\n </div>\n <Message status={messageStatus} message={messageText} />\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ActivatePanel_exports", "__export", "ActivatePanel", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_Message", "import_registration", "import_constants", "copy", "onClose", "onSuccess", "locale", "brand", "email", "rounded", "isSendingEmail", "triggerSendValidationEmail", "sendEmailData", "emailValidationLoading", "triggerEmailValidation", "messageText", "setMessageText", "messageStatus", "setMessageStatus", "isStartCountDown", "startCountDown", "countDown", "error", "setError", "focusIndex", "setFocusIndex", "codeArray", "setCodeArray", "inputRefs", "code", "handleSendAgain", "handleInputCodeChange", "event", "index", "value", "old", "newCode", "handleAuthCodeSubmit", "token", "data", "errorCode", "timer", "item", "inputRef", "cn", "paste", "pastedCode"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SubscribeModalCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
onClose: () => void;
|
|
4
|
+
onSuccess?: () => void;
|
|
5
|
+
copy: SubscribeModalCopy;
|
|
6
|
+
email?: string;
|
|
7
|
+
hideForm: boolean;
|
|
8
|
+
onHideForm: () => void;
|
|
9
|
+
};
|
|
10
|
+
export default function ActivitiesSubscribeModal({ onClose, onSuccess, copy, email: initialEmail, hideForm, onHideForm }: Props): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var E=Object.create;var p=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var I=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var J=(r,o)=>{for(var e in o)p(r,e,{get:o[e],enumerable:!0})},M=(r,o,e,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of H(o))!q.call(r,i)&&i!==e&&p(r,i,{get:()=>o[i],enumerable:!(n=F(o,i))||n.enumerable});return r};var V=(r,o,e)=>(e=r!=null?E(I(r)):{},M(o||!r||!r.__esModule?p(e,"default",{value:r,enumerable:!0}):e,r)),X=r=>M(p({},"__esModule",{value:!0}),r);var G={};J(G,{default:()=>L});module.exports=X(G);var t=require("react/jsx-runtime"),a=require("react"),s=require("@anker-in/headless-ui"),d=require("@anker-in/lib"),f=V(require("js-cookie")),S=require("query-string"),k=require("../../../credits/context/utils"),T=require("../../context/provider"),y=require("../../../../constants");function Z(){if(typeof window>"u")return{register_source:""};const{search:r,href:o}=window.location,e=(0,S.parse)(r);return{fbuy_ref_code:f.default.get("fbuy_ref_code"),ref:f.default.get("ref_ads"),inviter_code:e.ic??e.inviter_code??f.default.get("inviter_code"),register_source:e.redirect??f.default.get("reg_source")??o}}async function z(r){if(typeof window>"u"||!window?.grecaptcha?.execute||!r)return"";try{return await window.grecaptcha.execute(r,{action:"activity"})}catch{return""}}function L({onClose:r,onSuccess:o,copy:e,email:n,hideForm:i,onHideForm:b}){const{alpcConfig:P}=(0,T.useMemberPopupContext)(),{locale:h}=P,{brand:B,storeDomain:v,recaptchaSitekey:A}=(0,d.useHeadlessContext)(),m=y.ROUNDED_BRANDS.includes(B),[x,D]=(0,a.useState)(!1),[c,_]=(0,a.useState)(n??""),[g,l]=(0,a.useState)(""),[R,w]=(0,a.useState)(""),[O,C]=(0,a.useState)(!1);(0,a.useEffect)(()=>{n&&_(n)},[n]);const U=(0,a.useCallback)(async()=>{if(l(""),!c)return l("Please fill in your email");if(!(0,k.emailValidate)(c))return l("Invalid email address");if(!x)return l("Please agree to the policy");C(!0);const{register_source:u}=Z(),j=await z(A||"");try{const N=await(await fetch("/api/multipass/rainbowbridge/activities",{method:"POST",headers:{"Content-Type":"application/json","current-language":h,"X-Recaptcha-Token":j},body:JSON.stringify({email:c,register_source:u,shopify_domain:v,single_brand_subscribe:e.single_brand_subscribe??!0,genre:e.genre??e.dealsType??"",sub_brand_type:e.sub_brand_type??""})})).json();N.errors?l(N.errors??"Error occurred"):(w(e.successTips??"Subscribed successfully!"),o?.(),setTimeout(()=>{b(),w("")},3e3))}catch{l("Network error")}finally{C(!1)}},[c,x,h,v,e,o,b]);return(0,t.jsxs)("div",{className:"flex flex-col gap-[16px] text-center",children:[!i&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Text,{className:"text-[22px] font-bold",html:e.title}),e.desc&&(0,t.jsx)(s.Text,{className:"text-left text-[16px] font-semibold text-[#1f2021]",html:e.desc}),(0,t.jsxs)("div",{className:(0,d.classNames)("flex h-[52px] w-full overflow-hidden md:flex-col md:h-auto md:gap-[16px]",m?"rounded-[2px]":"rounded-none"),children:[(0,t.jsx)("input",{className:(0,d.classNames)("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",g?"border-[#f84d4f]":"border-[#d8d8d8]",m?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:c,onChange:u=>{l(""),_(u.target.value.trim())}}),(0,t.jsx)(s.Button,{variant:"primary",loading:O,className:(0,d.classNames)("!h-full !min-w-0 !px-[24px] md:!h-[46px]",m?"!rounded-l-none !rounded-r-[2px] md:!rounded-[2px]":"!rounded-none"),onClick:U,children:e.buttonLabel??"Subscribe"})]}),(0,t.jsxs)("div",{className:"flex w-full items-start gap-[8px]",children:[(0,t.jsx)(s.Checkbox,{checked:x,onCheckedChange:()=>D(u=>!u),className:"border-[#1d1d1f]"}),(0,t.jsx)("label",{className:"text-left text-[14px] font-semibold text-[#777] [&_a]:underline",dangerouslySetInnerHTML:{__html:e.policy??""}})]}),g&&(0,t.jsx)("div",{className:"text-left text-[16px] font-semibold text-[#f84d4f]",children:(0,t.jsx)(s.Text,{html:g})}),(0,t.jsx)("div",{className:"text-left text-[16px] font-semibold text-[#52c41a]",children:(0,t.jsx)(s.Text,{html:R})})]}),e.promo&&(0,t.jsxs)("div",{className:"flex flex-col text-left",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[8px]",children:[e.promo?.title&&(0,t.jsx)("h3",{className:"text-[20px] font-[700] leading-[1.2] text-[#080a0f]",children:e.promo?.title}),e.promo.description&&(0,t.jsx)("p",{className:"text-[14px] leading-[1.5] text-[#1e2024]",children:e.promo.description}),e.promo.learnMoreLabel&&e.promo.learnMoreUrl&&(0,t.jsxs)("a",{href:e.promo.learnMoreUrl,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-[4px] text-[14px] font-[700] text-[#080a0f] underline",children:[e.promo.learnMoreLabel,(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:(0,t.jsx)("path",{d:"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z",fill:"#080A0F"})})]})]}),e.promo.image?.url&&(0,t.jsx)(s.Picture,{source:e.promo.image.url,alt:e.promo.image.alt??"",className:(0,d.classNames)("h-[100px] mt-[8px] w-full object-cover",m?"rounded-[8px]":"rounded-none")})]})]})}
|
|
2
|
+
//# sourceMappingURL=ActivitiesSubscribePanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/ActivitiesSubscribePanel.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, Picture, Text } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport Cookies from 'js-cookie'\nimport { parse } from 'query-string'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n onClose: () => void\n onSuccess?: () => void\n copy: SubscribeModalCopy\n email?: string\n hideForm: boolean\n onHideForm: () => void\n}\n\nfunction getAdCookie() {\n if (typeof window === 'undefined') return { register_source: '' }\n const { search, href } = window.location\n const query = parse(search)\n return {\n fbuy_ref_code: Cookies.get('fbuy_ref_code'),\n ref: Cookies.get('ref_ads'),\n inviter_code: query.ic ?? query.inviter_code ?? Cookies.get('inviter_code'),\n register_source: query.redirect ?? Cookies.get('reg_source') ?? href,\n }\n}\n\nasync function getRecaptchaToken(sitekey: string): Promise<string> {\n if (typeof window === 'undefined' || !window?.grecaptcha?.execute) return ''\n if (!sitekey) return ''\n try {\n return await window.grecaptcha.execute(sitekey, { action: 'activity' })\n } catch {\n return ''\n }\n}\n\nexport default function ActivitiesSubscribeModal({ onClose, onSuccess, copy, email: initialEmail, hideForm, onHideForm }: Props) {\n const { alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n const { brand: headlessBrand, storeDomain, recaptchaSitekey } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(headlessBrand)\n const [policy, setPolicy] = useState(false)\n const [email, setEmail] = useState(initialEmail ?? '')\n const [errorMessage, setErrorMessage] = useState('')\n const [successMessage, setSuccessMessage] = useState('')\n const [loading, setLoading] = useState(false)\n\n useEffect(() => {\n if (initialEmail) setEmail(initialEmail)\n }, [initialEmail])\n\n const handleSubmit = useCallback(async () => {\n setErrorMessage('')\n if (!email) return setErrorMessage('Please fill in your email')\n if (!emailValidate(email)) return setErrorMessage('Invalid email address')\n if (!policy) return setErrorMessage('Please agree to the policy')\n\n setLoading(true)\n const { register_source } = getAdCookie()\n const recaptchaToken = await getRecaptchaToken(recaptchaSitekey || '')\n try {\n const response = await fetch('/api/multipass/rainbowbridge/activities', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n 'X-Recaptcha-Token': recaptchaToken,\n },\n body: JSON.stringify({\n email,\n register_source,\n shopify_domain: storeDomain,\n single_brand_subscribe: copy.single_brand_subscribe ?? true,\n genre: copy.genre ?? copy.dealsType ?? '',\n sub_brand_type: copy.sub_brand_type ?? '',\n }),\n })\n const result = await response.json()\n if (!result.errors) {\n setSuccessMessage(copy.successTips ?? 'Subscribed successfully!')\n onSuccess?.()\n setTimeout(() => {\n onHideForm()\n setSuccessMessage('')\n }, 3000)\n } else {\n setErrorMessage(result.errors ?? 'Error occurred')\n }\n } catch {\n setErrorMessage('Network error')\n } finally {\n setLoading(false)\n }\n }, [email, policy, locale, storeDomain, copy, onSuccess, onHideForm])\n\n return (\n <div className=\"flex flex-col gap-[16px] text-center\">\n {!hideForm && (\n <>\n <Text className=\"text-[22px] font-bold\" html={copy.title} />\n {copy.desc && <Text className=\"text-left text-[16px] font-semibold text-[#1f2021]\" html={copy.desc} />}\n <div\n className={cn(\n 'flex h-[52px] w-full overflow-hidden md:flex-col md:h-auto md:gap-[16px]',\n rounded ? 'rounded-[2px]' : 'rounded-none'\n )}\n >\n <input\n className={cn(\n 'h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]',\n errorMessage ? 'border-[#f84d4f]' : 'border-[#d8d8d8]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => {\n setErrorMessage('')\n setEmail(e.target.value.trim())\n }}\n />\n <Button\n variant=\"primary\"\n loading={loading}\n className={cn(\n '!h-full !min-w-0 !px-[24px] md:!h-[46px]',\n rounded ? '!rounded-l-none !rounded-r-[2px] md:!rounded-[2px]' : '!rounded-none'\n )}\n onClick={handleSubmit}\n >\n {copy.buttonLabel ?? 'Subscribe'}\n </Button>\n </div>\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"border-[#1d1d1f]\" />\n <label\n className=\"text-left text-[14px] font-semibold text-[#777] [&_a]:underline\"\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n {errorMessage && (\n <div className=\"text-left text-[16px] font-semibold text-[#f84d4f]\">\n <Text html={errorMessage} />\n </div>\n )}\n <div className=\"text-left text-[16px] font-semibold text-[#52c41a]\">\n <Text html={successMessage} />\n </div>\n </>\n )}\n\n {copy.promo && (\n <div className=\"flex flex-col text-left\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.promo?.title && (\n <h3 className=\"text-[20px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.promo?.title}</h3>\n )}\n {copy.promo.description && (\n <p className=\"text-[14px] leading-[1.5] text-[#1e2024]\">{copy.promo.description}</p>\n )}\n {copy.promo.learnMoreLabel && copy.promo.learnMoreUrl && (\n <a\n href={copy.promo.learnMoreUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-[4px] text-[14px] font-[700] text-[#080a0f] underline\"\n >\n {copy.promo.learnMoreLabel}\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M5.52827 3.52876C5.78862 3.26841 6.21063 3.26841 6.47098 3.52876L10.471 7.52876C10.7313 7.78911 10.7313 8.21112 10.471 8.47147L6.47098 12.4715C6.21063 12.7318 5.78862 12.7318 5.52827 12.4715C5.26792 12.2111 5.26792 11.7891 5.52827 11.5288L9.05692 8.00011L5.52827 4.47147C5.26792 4.21112 5.26792 3.78911 5.52827 3.52876Z\"\n fill=\"#080A0F\"\n />\n </svg>\n </a>\n )}\n </div>\n {copy.promo.image?.url && (\n <Picture\n source={copy.promo.image.url}\n alt={copy.promo.image.alt ?? ''}\n className={cn('h-[100px] mt-[8px] w-full object-cover', rounded ? 'rounded-[8px]' : 'rounded-none')}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAwGQ,IAAAI,EAAA,6BAxGRC,EAAiD,iBACjDC,EAAgD,iCAChDC,EAAqD,yBACrDC,EAAoB,wBACpBC,EAAsB,wBAEtBC,EAA8B,0CAC9BC,EAAsC,kCAEtCC,EAA+B,iCAW/B,SAASC,GAAc,CACrB,GAAI,OAAO,OAAW,IAAa,MAAO,CAAE,gBAAiB,EAAG,EAChE,KAAM,CAAE,OAAAC,EAAQ,KAAAC,CAAK,EAAI,OAAO,SAC1BC,KAAQ,SAAMF,CAAM,EAC1B,MAAO,CACL,cAAe,EAAAG,QAAQ,IAAI,eAAe,EAC1C,IAAK,EAAAA,QAAQ,IAAI,SAAS,EAC1B,aAAcD,EAAM,IAAMA,EAAM,cAAgB,EAAAC,QAAQ,IAAI,cAAc,EAC1E,gBAAiBD,EAAM,UAAY,EAAAC,QAAQ,IAAI,YAAY,GAAKF,CAClE,CACF,CAEA,eAAeG,EAAkBC,EAAkC,CAEjE,GADI,OAAO,OAAW,KAAe,CAAC,QAAQ,YAAY,SACtD,CAACA,EAAS,MAAO,GACrB,GAAI,CACF,OAAO,MAAM,OAAO,WAAW,QAAQA,EAAS,CAAE,OAAQ,UAAW,CAAC,CACxE,MAAQ,CACN,MAAO,EACT,CACF,CAEe,SAARjB,EAA0C,CAAE,QAAAkB,EAAS,UAAAC,EAAW,KAAAC,EAAM,MAAOC,EAAc,SAAAC,EAAU,WAAAC,CAAW,EAAU,CAC/H,KAAM,CAAE,WAAAC,CAAW,KAAI,yBAAsB,EACvC,CAAE,OAAAC,CAAO,EAAID,EACb,CAAE,MAAOE,EAAe,YAAAC,EAAa,iBAAAC,CAAiB,KAAI,sBAAmB,EAC7EC,EAAU,iBAAe,SAASH,CAAa,EAC/C,CAACI,EAAQC,CAAS,KAAI,YAAS,EAAK,EACpC,CAACC,EAAOC,CAAQ,KAAI,YAASZ,GAAgB,EAAE,EAC/C,CAACa,EAAcC,CAAe,KAAI,YAAS,EAAE,EAC7C,CAACC,EAAgBC,CAAiB,KAAI,YAAS,EAAE,EACjD,CAACC,EAASC,CAAU,KAAI,YAAS,EAAK,KAE5C,aAAU,IAAM,CACVlB,GAAcY,EAASZ,CAAY,CACzC,EAAG,CAACA,CAAY,CAAC,EAEjB,MAAMmB,KAAe,eAAY,SAAY,CAE3C,GADAL,EAAgB,EAAE,EACd,CAACH,EAAO,OAAOG,EAAgB,2BAA2B,EAC9D,GAAI,IAAC,iBAAcH,CAAK,EAAG,OAAOG,EAAgB,uBAAuB,EACzE,GAAI,CAACL,EAAQ,OAAOK,EAAgB,4BAA4B,EAEhEI,EAAW,EAAI,EACf,KAAM,CAAE,gBAAAE,CAAgB,EAAI9B,EAAY,EAClC+B,EAAiB,MAAM1B,EAAkBY,GAAoB,EAAE,EACrE,GAAI,CAiBF,MAAMe,EAAS,MAhBE,MAAM,MAAM,0CAA2C,CACtE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBlB,EACpB,oBAAqBiB,CACvB,EACA,KAAM,KAAK,UAAU,CACnB,MAAAV,EACA,gBAAAS,EACA,eAAgBd,EAChB,uBAAwBP,EAAK,wBAA0B,GACvD,MAAOA,EAAK,OAASA,EAAK,WAAa,GACvC,eAAgBA,EAAK,gBAAkB,EACzC,CAAC,CACH,CAAC,GAC6B,KAAK,EAC9BuB,EAAO,OAQVR,EAAgBQ,EAAO,QAAU,gBAAgB,GAPjDN,EAAkBjB,EAAK,aAAe,0BAA0B,EAChED,IAAY,EACZ,WAAW,IAAM,CACfI,EAAW,EACXc,EAAkB,EAAE,CACtB,EAAG,GAAI,EAIX,MAAQ,CACNF,EAAgB,eAAe,CACjC,QAAE,CACAI,EAAW,EAAK,CAClB,CACF,EAAG,CAACP,EAAOF,EAAQL,EAAQE,EAAaP,EAAMD,EAAWI,CAAU,CAAC,EAEpE,SACE,QAAC,OAAI,UAAU,uCACZ,WAACD,MACA,oBACE,oBAAC,QAAK,UAAU,wBAAwB,KAAMF,EAAK,MAAO,EACzDA,EAAK,SAAQ,OAAC,QAAK,UAAU,qDAAqD,KAAMA,EAAK,KAAM,KACpG,QAAC,OACC,aAAW,EAAAwB,YACT,2EACAf,EAAU,gBAAkB,cAC9B,EAEA,oBAAC,SACC,aAAW,EAAAe,YACT,oFACAV,EAAe,mBAAqB,mBACpCL,EAAU,gBAAkB,cAC9B,EACA,YAAaT,EAAK,YAClB,MAAOY,EACP,SAAUa,GAAK,CACbV,EAAgB,EAAE,EAClBF,EAASY,EAAE,OAAO,MAAM,KAAK,CAAC,CAChC,EACF,KACA,OAAC,UACC,QAAQ,UACR,QAASP,EACT,aAAW,EAAAM,YACT,2CACAf,EAAU,qDAAuD,eACnE,EACA,QAASW,EAER,SAAApB,EAAK,aAAe,YACvB,GACF,KACA,QAAC,OAAI,UAAU,oCACb,oBAAC,YAAS,QAASU,EAAQ,gBAAiB,IAAMC,EAAUe,GAAK,CAACA,CAAC,EAAG,UAAU,mBAAmB,KACnG,OAAC,SACC,UAAU,kEACV,wBAAyB,CAAE,OAAQ1B,EAAK,QAAU,EAAG,EACvD,GACF,EACCc,MACC,OAAC,OAAI,UAAU,qDACb,mBAAC,QAAK,KAAMA,EAAc,EAC5B,KAEF,OAAC,OAAI,UAAU,qDACb,mBAAC,QAAK,KAAME,EAAgB,EAC9B,GACF,EAGDhB,EAAK,UACJ,QAAC,OAAI,UAAU,0BACb,qBAAC,OAAI,UAAU,0BACZ,UAAAA,EAAK,OAAO,UACX,OAAC,MAAG,UAAU,sDAAuD,SAAAA,EAAK,OAAO,MAAM,EAExFA,EAAK,MAAM,gBACV,OAAC,KAAE,UAAU,2CAA4C,SAAAA,EAAK,MAAM,YAAY,EAEjFA,EAAK,MAAM,gBAAkBA,EAAK,MAAM,iBACvC,QAAC,KACC,KAAMA,EAAK,MAAM,aACjB,OAAO,SACP,IAAI,sBACJ,UAAU,8EAET,UAAAA,EAAK,MAAM,kBACZ,OAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACnD,mBAAC,QACC,EAAE,kUACF,KAAK,UACP,EACF,GACF,GAEJ,EACCA,EAAK,MAAM,OAAO,QACjB,OAAC,WACC,OAAQA,EAAK,MAAM,MAAM,IACzB,IAAKA,EAAK,MAAM,MAAM,KAAO,GAC7B,aAAW,EAAAwB,YAAG,yCAA0Cf,EAAU,gBAAkB,cAAc,EACpG,GAEJ,GAEJ,CAEJ",
|
|
6
|
+
"names": ["ActivitiesSubscribePanel_exports", "__export", "ActivitiesSubscribeModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_js_cookie", "import_query_string", "import_utils", "import_provider", "import_constants", "getAdCookie", "search", "href", "query", "Cookies", "getRecaptchaToken", "sitekey", "onClose", "onSuccess", "copy", "initialEmail", "hideForm", "onHideForm", "alpcConfig", "locale", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "cn", "e", "v"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CompleteProfileCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
onSuccess?: () => void;
|
|
6
|
+
copy: CompleteProfileCopy;
|
|
7
|
+
shopifyStoreDomain?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain }: Props): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var T=Object.create;var u=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var K=(l,s)=>{for(var r in s)u(l,r,{get:s[r],enumerable:!0})},L=(l,s,r,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let i of G(s))!J.call(l,i)&&i!==r&&u(l,i,{get:()=>s[i],enumerable:!(a=U(s,i))||a.enumerable});return l};var Q=(l,s,r)=>(r=l!=null?T(H(l)):{},L(s||!l||!l.__esModule?u(r,"default",{value:l,enumerable:!0}):r,l)),R=l=>L(u({},"__esModule",{value:!0}),l);var W={};K(W,{CompleteProfileModal:()=>V});module.exports=R(W);var e=require("react/jsx-runtime"),o=require("react"),n=require("@anker-in/headless-ui"),k=require("@anker-in/lib"),S=require("../../../credits/modal/ModalContainer"),z=require("./hooks/useUpdateProfile"),F=Q(require("../../../credits/context/hooks/useCountries")),O=require("../../context/provider");function V({isOpen:l,onClose:s,onSuccess:r,copy:a,shopifyStoreDomain:i=""}){const{profile:d,fetchCreditInfo:P,alpcConfig:w}=(0,O.useMemberPopupContext)(),{locale:A}=w,[m,y]=(0,o.useState)(""),[p,_]=(0,o.useState)(""),[b,E]=(0,o.useState)(""),[c,B]=(0,o.useState)(""),[x,N]=(0,o.useState)(""),[v,h]=(0,o.useState)(""),[C,g]=(0,o.useState)(""),{updateProfile:M,isLoading:q}=(0,z.useUpdateProfile)({locale:A,appName:w.appName}),{countries:f}=(0,F.default)({shopifyStoreDomain:i});(0,o.useEffect)(()=>{d&&(y(d.first_name??""),_(d.last_name??""),E(d.phone_number??""),B(d.dob??""),N(d.country?.id??""))},[d]),(0,o.useEffect)(()=>{f.length>0&&!x&&N(f[0].id)},[f]);const D=(0,o.useCallback)(()=>{let t=!1;return m.trim()?h(""):(h(a.required),t=!0),p.trim()?g(""):(g(a.required),t=!0),t},[m,p,a.required]),I=(0,o.useCallback)(async()=>{if(D())return;await M({first_name:m.trim(),last_name:p.trim(),phone_number:b,country:x,dob:c})&&(P(d?.user_id),r?.(),s())},[D,M,m,p,b,x,c,P,d,r,s]);return(0,e.jsx)(S.CreditsModalContainer,{isOpen:l,onClose:s,title:a.title,titleClassName:"!h-auto !border-b-0 !pb-0",className:"w-[540px] md:h-auto",useAnimation:!0,animationClassName:"md:translate-y-[100vh]",children:(0,e.jsxs)("div",{className:"flex flex-col gap-[20px]",children:[a.subtitle&&(0,e.jsx)(n.Text,{className:"text-[14px] text-[#1d1d1f]",html:a.subtitle}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.email}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]",value:d?.email??"",disabled:!0})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.firstName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,k.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",v?"border-[#f84d4f]":"border-[#d8d8d8]"),value:m,onChange:t=>{y(t.target.value),h("")}}),v&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:v})]}),(0,e.jsxs)("div",{children:[(0,e.jsxs)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:[a.lastName," ",(0,e.jsx)("span",{className:"text-[#f84d4f]",children:"*"})]}),(0,e.jsx)("input",{className:(0,k.classNames)("mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none",C?"border-[#f84d4f]":"border-[#d8d8d8]"),value:p,onChange:t=>{_(t.target.value),g("")}}),C&&(0,e.jsx)(n.Text,{className:"mt-[4px] text-[12px] text-[#f84d4f]",html:C})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.birthday}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",type:"date",value:c,onChange:t=>B(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.phone}),(0,e.jsx)("input",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:b,onChange:t=>E(t.target.value)})]}),(0,e.jsxs)("div",{children:[(0,e.jsx)("label",{className:"block text-[14px] font-semibold text-[#1d1d1f]",children:a.country}),(0,e.jsx)("select",{className:"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none",value:x,onChange:t=>N(t.target.value),children:f.map(t=>(0,e.jsx)("option",{value:t.id,children:t.name},t.id))})]}),(0,e.jsxs)("div",{className:"flex gap-[12px]",children:[(0,e.jsx)(n.Button,{variant:"secondary",size:"lg",className:"flex-1",onClick:s,disabled:q,children:a.cancel}),(0,e.jsx)(n.Button,{variant:"primary",size:"lg",className:"flex-1",loading:q,onClick:I,children:a.save})]})]})})}
|
|
2
|
+
//# sourceMappingURL=CompleteProfileModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/CompleteProfileModal.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Text } from '@anker-in/headless-ui'\nimport { classNames as cn } from '@anker-in/lib'\nimport { CreditsModalContainer } from '../../../credits/modal/ModalContainer'\nimport type { CompleteProfileCopy } from '../../type'\nimport { useUpdateProfile } from './hooks/useUpdateProfile'\nimport useCountries from '../../../credits/context/hooks/useCountries'\nimport { useMemberPopupContext } from '../../context/provider'\n\ntype Props = {\n isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: CompleteProfileCopy\n shopifyStoreDomain?: string\n}\n\nexport function CompleteProfileModal({ isOpen, onClose, onSuccess, copy, shopifyStoreDomain = '' }: Props) {\n const { profile, fetchCreditInfo, alpcConfig } = useMemberPopupContext()\n const { locale } = alpcConfig\n\n const [firstName, setFirstName] = useState('')\n const [lastName, setLastName] = useState('')\n const [phone, setPhone] = useState('')\n const [birthDay, setBirthDay] = useState('')\n const [country, setCountry] = useState('')\n const [firstNameError, setFirstNameError] = useState('')\n const [lastNameError, setLastNameError] = useState('')\n\n const { updateProfile, isLoading } = useUpdateProfile({ locale, appName: alpcConfig.appName })\n const { countries } = useCountries({ shopifyStoreDomain })\n\n useEffect(() => {\n if (profile) {\n setFirstName(profile.first_name ?? '')\n setLastName(profile.last_name ?? '')\n setPhone(profile.phone_number ?? '')\n setBirthDay(profile.dob ?? '')\n setCountry(profile.country?.id ?? '')\n }\n }, [profile])\n\n useEffect(() => {\n if (countries.length > 0 && !country) {\n setCountry(countries[0].id)\n }\n }, [countries])\n\n const validate = useCallback(() => {\n let hasError = false\n if (!firstName.trim()) {\n setFirstNameError(copy.required)\n hasError = true\n } else {\n setFirstNameError('')\n }\n if (!lastName.trim()) {\n setLastNameError(copy.required)\n hasError = true\n } else {\n setLastNameError('')\n }\n return hasError\n }, [firstName, lastName, copy.required])\n\n const handleSubmit = useCallback(async () => {\n if (validate()) return\n const success = await updateProfile({\n first_name: firstName.trim(),\n last_name: lastName.trim(),\n phone_number: phone,\n country,\n dob: birthDay,\n })\n if (success) {\n fetchCreditInfo(profile?.user_id)\n onSuccess?.()\n onClose()\n }\n }, [validate, updateProfile, firstName, lastName, phone, country, birthDay, fetchCreditInfo, profile, onSuccess, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n title={copy.title}\n titleClassName=\"!h-auto !border-b-0 !pb-0\"\n className=\"w-[540px] md:h-auto\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[20px]\">\n {copy.subtitle && (\n <Text className=\"text-[14px] text-[#1d1d1f]\" html={copy.subtitle} />\n )}\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.email}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] bg-[#f5f5f5] px-[12px] text-[14px] text-[#999]\"\n value={profile?.email ?? ''}\n disabled\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.firstName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n firstNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={firstName}\n onChange={e => { setFirstName(e.target.value); setFirstNameError('') }}\n />\n {firstNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={firstNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">\n {copy.lastName} <span className=\"text-[#f84d4f]\">*</span>\n </label>\n <input\n className={cn(\n 'mt-[8px] h-[46px] w-full rounded-[4px] border px-[12px] text-[14px] outline-none',\n lastNameError ? 'border-[#f84d4f]' : 'border-[#d8d8d8]'\n )}\n value={lastName}\n onChange={e => { setLastName(e.target.value); setLastNameError('') }}\n />\n {lastNameError && <Text className=\"mt-[4px] text-[12px] text-[#f84d4f]\" html={lastNameError} />}\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.birthday}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n type=\"date\"\n value={birthDay}\n onChange={e => setBirthDay(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.phone}</label>\n <input\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={phone}\n onChange={e => setPhone(e.target.value)}\n />\n </div>\n\n <div>\n <label className=\"block text-[14px] font-semibold text-[#1d1d1f]\">{copy.country}</label>\n <select\n className=\"mt-[8px] h-[46px] w-full rounded-[4px] border border-[#d8d8d8] px-[12px] text-[14px] outline-none\"\n value={country}\n onChange={e => setCountry(e.target.value)}\n >\n {countries.map((c: { id: string; name: string }) => (\n <option key={c.id} value={c.id}>{c.name}</option>\n ))}\n </select>\n </div>\n\n <div className=\"flex gap-[12px]\">\n <Button\n variant=\"secondary\"\n size=\"lg\"\n className=\"flex-1\"\n onClick={onClose}\n disabled={isLoading}\n >\n {copy.cancel}\n </Button>\n <Button\n variant=\"primary\"\n size=\"lg\"\n className=\"flex-1\"\n loading={isLoading}\n onClick={handleSubmit}\n >\n {copy.save}\n </Button>\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CompleteProfileModal_exports", "__export", "CompleteProfileModal", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_ModalContainer", "import_useUpdateProfile", "import_useCountries", "import_provider", "isOpen", "onClose", "onSuccess", "copy", "shopifyStoreDomain", "profile", "fetchCreditInfo", "alpcConfig", "locale", "firstName", "setFirstName", "lastName", "setLastName", "phone", "setPhone", "birthDay", "setBirthDay", "country", "setCountry", "firstNameError", "setFirstNameError", "lastNameError", "setLastNameError", "updateProfile", "isLoading", "countries", "useCountries", "validate", "hasError", "handleSubmit", "cn", "e", "c"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CompleteProfileCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
copy: CompleteProfileCopy;
|
|
4
|
+
shopifyStoreDomain?: string;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onSuccess?: () => void;
|
|
7
|
+
};
|
|
8
|
+
export default function CompleteProfilePanel({ copy, shopifyStoreDomain, onClose, onSuccess }: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|