@anker-in/campaign-ui 0.5.0-beta.3 → 0.5.0-beta.4
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/credits/context/hooks/useSubscribed.js.map +2 -2
- package/dist/cjs/components/index.d.ts +3 -2
- 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/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 +20 -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/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 +216 -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/credits/context/hooks/useSubscribed.js.map +2 -2
- package/dist/esm/components/index.d.ts +3 -2
- 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/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 +20 -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/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 +216 -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 -2
- package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +5 -7
- package/src/components/credits/context/hooks/useCountries.ts +5 -15
- package/src/components/credits/context/hooks/useSubscribed.ts +0 -1
- package/src/components/index.ts +4 -2
- package/src/components/memberPopup/MemberPopup.tsx +325 -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/ConsumeCredits/RedeemCouponModal.tsx +150 -0
- package/src/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.tsx +142 -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 +220 -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/SubscribeModal.tsx +144 -0
- package/src/components/memberPopup/panels/EarnCredits/SubscribePanel.tsx +147 -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 +215 -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 +230 -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
- package/src/stories/CartCard.stories.tsx +0 -459
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/SubscribeModal.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Button, Checkbox, 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 isOpen: boolean\n onClose: () => void\n onSuccess?: () => void\n copy: SubscribeModalCopy\n email?: string\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 function EarnCreditsSubscribeModal({ isOpen, onClose, onSuccess, copy, email: initialEmail }: 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 setSuccessMessage('')\n onClose()\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, onClose])\n\n return (\n <CreditsModalContainer\n isOpen={isOpen}\n onClose={onClose}\n className=\"w-[540px] md:h-auto\"\n scrollClassName=\"mb-[40px] md:mb-[24px]\"\n useAnimation\n animationClassName=\"md:translate-y-[100vh]\"\n >\n <div className=\"flex flex-col gap-[16px] text-center\">\n <Text className=\"text-[22px] font-bold\" html={copy.title} />\n {copy.desc && (\n <Text className=\"text-left text-[16px] font-semibold text-[#1f2021]\" html={copy.desc} />\n )}\n <div className={cn('flex h-[52px] w-full overflow-hidden md:flex-col md:h-auto md:gap-[16px]', rounded ? 'rounded-[2px]' : 'rounded-none')}>\n <input\n className={cn('h-full flex-1 border border-[#d8d8d8] px-[14px] text-[16px] outline-none placeholder:text-[#999] md:h-[52px]', rounded ? 'rounded-l-[2px] md:rounded-[2px]' : 'rounded-none')}\n placeholder={copy.placeholder}\n value={email}\n onChange={e => { setErrorMessage(''); setEmail(e.target.value.trim()) }}\n />\n <Button\n variant=\"primary\"\n loading={loading}\n className={cn('!h-full !min-w-0 !px-[24px] md:!h-[46px]', rounded ? '!rounded-l-none !rounded-r-[2px] md:!rounded-[2px]' : '!rounded-none')}\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 <div className={cn('text-left text-[16px] font-semibold', errorMessage && 'text-[#f84d4f]', successMessage && 'text-[#52c41a]')}>\n <Text html={successMessage || errorMessage || ''} />\n </div>\n </div>\n </CreditsModalContainer>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Button", "Checkbox", "Text", "cn", "useHeadlessContext", "Cookies", "parse", "CreditsModalContainer", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "getRecaptchaToken", "sitekey", "EarnCreditsSubscribeModal", "isOpen", "onClose", "onSuccess", "copy", "initialEmail", "alpcConfig", "locale", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "e", "v"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SubscribeModalCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
copy: SubscribeModalCopy;
|
|
4
|
+
email?: string;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onSuccess?: () => void;
|
|
7
|
+
};
|
|
8
|
+
export default function SubscribePanel({ copy, email: initialEmail, onClose, onSuccess }: Props): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as t,jsxs as d}from"react/jsx-runtime";import{useCallback as D,useEffect as R,useState as i}from"react";import{Checkbox as L,Text as N}from"@anker-in/headless-ui";import{classNames as p,useHeadlessContext as O}from"@anker-in/lib";import l from"js-cookie";import{parse as A}from"query-string";import{emailValidate as B}from"../../../credits/context/utils";import{useMemberPopupContext as E}from"../../context/provider";import{ROUNDED_BRANDS as H}from"../../../../constants";function I(){if(typeof window>"u")return{register_source:""};const{search:e,href:o}=window.location,a=A(e);return{fbuy_ref_code:l.get("fbuy_ref_code"),ref:l.get("ref_ads"),inviter_code:a.ic??a.inviter_code??l.get("inviter_code"),register_source:a.redirect??l.get("reg_source")??o}}async function j(e){if(typeof window>"u"||!window?.grecaptcha?.execute||!e)return"";try{return await window.grecaptcha.execute(e,{action:"activity"})}catch{return""}}function q({copy:e,email:o,onClose:a,onSuccess:m}){const{alpcConfig:C}=E(),{locale:x}=C,{brand:S,storeDomain:b,recaptchaSitekey:k}=O(),g=H.includes(S),[u,h]=i(!1),[n,_]=i(o??""),[c,r]=i(""),[f,y]=i(""),[T,v]=i(!1);R(()=>{o&&_(o)},[o]);const P=D(async()=>{if(r(""),!n)return r("Please fill in your email");if(!B(n))return r("Invalid email address");if(!u)return r("Please agree to the policy");v(!0);const{register_source:s}=I(),M=await j(k||"");try{const w=await(await fetch("/api/multipass/rainbowbridge/activities",{method:"POST",headers:{"Content-Type":"application/json","current-language":x,"X-Recaptcha-Token":M},body:JSON.stringify({email:n,register_source:s,shopify_domain:b,single_brand_subscribe:e.single_brand_subscribe??!0,genre:e.genre??e.dealsType??"",sub_brand_type:e.sub_brand_type??""})})).json();w.errors?r(w.errors??"Error occurred"):(y(e.successTips??"Subscribed successfully!"),m?.(),setTimeout(()=>{y(""),a()},3e3))}catch{r("Network error")}finally{v(!1)}},[n,u,x,b,e,a,m]);return d("div",{className:"flex flex-col gap-[12px]",children:[d("div",{className:"flex flex-col gap-[8px]",children:[e.title&&t("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.desc&&t(N,{className:"text-[16px] text-[#1e2024]",html:e.desc})]}),d("div",{className:"flex flex-col gap-[16px]",children:[t("input",{className:p("h-[46px] w-full border px-[14px] text-[16px] outline-none placeholder:text-[#999]",c?"border-[#f84d4f]":"border-[#d8d8d8]",g?"rounded-[4px]":"rounded-none"),placeholder:e.placeholder,value:n,onChange:s=>{r(""),_(s.target.value.trim())}}),d("div",{className:"flex w-full items-start gap-[8px]",children:[t(L,{checked:u,onCheckedChange:()=>h(s=>!s),className:"mt-[2px] border-[#1d1d1f]"}),t("label",{className:"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline",onClick:()=>h(s=>!s),dangerouslySetInnerHTML:{__html:e.policy??""}})]}),(c||f)&&t("div",{className:p("text-[14px] font-[700]",c&&"text-[#f84d4f]",f&&"text-[#52c41a]"),children:t(N,{html:f||c})}),t("button",{className:p("w-full cursor-pointer bg-[#080a0f] py-[14px] text-[14px] font-[700] text-white disabled:opacity-60",g?"rounded-[4px]":"rounded-none"),disabled:T,onClick:P,children:e.buttonLabel??"Subscribe"})]})]})}export{q as default};
|
|
2
|
+
//# sourceMappingURL=SubscribePanel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/SubscribePanel.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport { Checkbox, 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 { emailValidate } from '../../../credits/context/utils'\nimport { useMemberPopupContext } from '../../context/provider'\nimport type { SubscribeModalCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: SubscribeModalCopy\n email?: string\n onClose: () => void\n onSuccess?: () => 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 SubscribePanel({ copy, email: initialEmail, onClose, onSuccess }: 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 setSuccessMessage('')\n onClose()\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, onClose, onSuccess])\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n <div className=\"flex flex-col gap-[8px]\">\n {copy.title && (\n <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>\n )}\n {copy.desc && (\n <Text className=\"text-[16px] text-[#1e2024]\" html={copy.desc} />\n )}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\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 => { setErrorMessage(''); setEmail(e.target.value.trim()) }}\n />\n\n <div className=\"flex w-full items-start gap-[8px]\">\n <Checkbox checked={policy} onCheckedChange={() => setPolicy(v => !v)} className=\"mt-[2px] border-[#1d1d1f]\" />\n <label\n className=\"cursor-pointer text-left text-[14px] text-[#1e2024] [&_a]:underline\"\n onClick={() => setPolicy(v => !v)}\n dangerouslySetInnerHTML={{ __html: copy.policy ?? '' }}\n />\n </div>\n\n {(errorMessage || successMessage) && (\n <div className={cn('text-[14px] font-[700]', errorMessage && 'text-[#f84d4f]', successMessage && 'text-[#52c41a]')}>\n <Text html={successMessage || errorMessage} />\n </div>\n )}\n\n <button\n className={cn('w-full cursor-pointer bg-[#080a0f] py-[14px] text-[14px] font-[700] text-white disabled:opacity-60', rounded ? 'rounded-[4px]' : 'rounded-none')}\n disabled={loading}\n onClick={handleSubmit}\n >\n {copy.buttonLabel ?? 'Subscribe'}\n </button>\n </div>\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "useCallback", "useEffect", "useState", "Checkbox", "Text", "cn", "useHeadlessContext", "Cookies", "parse", "emailValidate", "useMemberPopupContext", "ROUNDED_BRANDS", "getAdCookie", "search", "href", "query", "getRecaptchaToken", "sitekey", "SubscribePanel", "copy", "initialEmail", "onClose", "onSuccess", "alpcConfig", "locale", "headlessBrand", "storeDomain", "recaptchaSitekey", "rounded", "policy", "setPolicy", "email", "setEmail", "errorMessage", "setErrorMessage", "successMessage", "setSuccessMessage", "loading", "setLoading", "handleSubmit", "register_source", "recaptchaToken", "result", "e", "v"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CreditLogResponse } from '../../../../credits/context/response';
|
|
2
|
+
type UseActivitiesConfig = {
|
|
3
|
+
userId: string | undefined;
|
|
4
|
+
brand: string;
|
|
5
|
+
apiBaseUrl?: string;
|
|
6
|
+
locale?: string;
|
|
7
|
+
};
|
|
8
|
+
type Params = {
|
|
9
|
+
page: number;
|
|
10
|
+
pageSize: number;
|
|
11
|
+
};
|
|
12
|
+
declare function useActivities({ userId, brand, apiBaseUrl, locale }: UseActivitiesConfig, { page, pageSize }: Params): {
|
|
13
|
+
activities: CreditLogResponse[];
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
total: number;
|
|
16
|
+
canNext: boolean;
|
|
17
|
+
};
|
|
18
|
+
export default useActivities;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as C,useEffect as h,useState as o}from"react";import A from"swr/mutation";import{getAlpcPath as P}from"../../../../credits/context/utils";function S({userId:e,brand:i,apiBaseUrl:l,locale:a=""},{page:t,pageSize:c}){const[g,d]=o([]),[u,y]=o(0),[p,v]=o(0),{isMutating:s,trigger:f}=A("/v1/credit/log",async(n,{arg:r})=>(await fetch(P(a,l)+n,{method:"POST",headers:{"Content-Type":"application/json","current-language":a},body:JSON.stringify(r)})).json()),m=C(async()=>{await f({page:t,page_size:c,user_id:e,brand:i},{onSuccess(n){v(t),y(n?.data?.total??0),d(r=>r.concat(n?.data?.creditLogs??[]))}})},[t,c,e,i,f]);return h(()=>{!e||!i||s||t===p||m()},[m,e,i,t,p,s]),{activities:g,isLoading:s,total:u,canNext:u>g.length&&!s}}var U=S;export{U as default};
|
|
2
|
+
//# sourceMappingURL=useActivities.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useActivities.ts"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useState } from 'react'\nimport useSWRMutation from 'swr/mutation'\nimport { getAlpcPath } from '../../../../credits/context/utils'\nimport type { CreditLogResponse } from '../../../../credits/context/response'\n\ntype UseActivitiesConfig = {\n userId: string | undefined\n brand: string\n apiBaseUrl?: string\n locale?: string\n}\n\ntype Params = {\n page: number\n pageSize: number\n}\n\nfunction useActivities(\n { userId, brand, apiBaseUrl, locale = '' }: UseActivitiesConfig,\n { page, pageSize }: Params\n) {\n const [activities, setActivities] = useState<CreditLogResponse[]>([])\n const [total, setTotal] = useState(0)\n const [currentPage, setCurrentPage] = useState(0)\n\n const { isMutating: isLoading, trigger } = useSWRMutation(\n `/v1/credit/log`,\n async (url: string, { arg }: { arg: Record<string, any> }) => {\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(arg),\n })\n return response.json()\n }\n )\n\n const fetchActivities = useCallback(async () => {\n await trigger(\n { page, page_size: pageSize, user_id: userId, brand },\n {\n onSuccess(data) {\n setCurrentPage(page)\n setTotal(data?.data?.total ?? 0)\n setActivities(prev => prev.concat(data?.data?.creditLogs ?? []))\n },\n }\n )\n }, [page, pageSize, userId, brand, trigger])\n\n useEffect(() => {\n if (!userId || !brand || isLoading || page === currentPage) return\n fetchActivities()\n }, [fetchActivities, userId, brand, page, currentPage, isLoading])\n\n return {\n activities,\n isLoading,\n total,\n canNext: total > activities.length && !isLoading,\n }\n}\n\nexport default useActivities\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,aAAAC,EAAW,YAAAC,MAAgB,QACjD,OAAOC,MAAoB,eAC3B,OAAS,eAAAC,MAAmB,oCAe5B,SAASC,EACP,CAAE,OAAAC,EAAQ,MAAAC,EAAO,WAAAC,EAAY,OAAAC,EAAS,EAAG,EACzC,CAAE,KAAAC,EAAM,SAAAC,CAAS,EACjB,CACA,KAAM,CAACC,EAAYC,CAAa,EAAIX,EAA8B,CAAC,CAAC,EAC9D,CAACY,EAAOC,CAAQ,EAAIb,EAAS,CAAC,EAC9B,CAACc,EAAaC,CAAc,EAAIf,EAAS,CAAC,EAE1C,CAAE,WAAYgB,EAAW,QAAAC,CAAQ,EAAIhB,EACzC,iBACA,MAAOiB,EAAa,CAAE,IAAAC,CAAI,KACP,MAAM,MAAMjB,EAAYK,EAAQD,CAAU,EAAIY,EAAK,CAClE,OAAQ,OACR,QAAS,CAAE,eAAgB,mBAAoB,mBAAoBX,CAAO,EAC1E,KAAM,KAAK,UAAUY,CAAG,CAC1B,CAAC,GACe,KAAK,CAEzB,EAEMC,EAAkBtB,EAAY,SAAY,CAC9C,MAAMmB,EACJ,CAAE,KAAAT,EAAM,UAAWC,EAAU,QAASL,EAAQ,MAAAC,CAAM,EACpD,CACE,UAAUgB,EAAM,CACdN,EAAeP,CAAI,EACnBK,EAASQ,GAAM,MAAM,OAAS,CAAC,EAC/BV,EAAcW,GAAQA,EAAK,OAAOD,GAAM,MAAM,YAAc,CAAC,CAAC,CAAC,CACjE,CACF,CACF,CACF,EAAG,CAACb,EAAMC,EAAUL,EAAQC,EAAOY,CAAO,CAAC,EAE3C,OAAAlB,EAAU,IAAM,CACV,CAACK,GAAU,CAACC,GAASW,GAAaR,IAASM,GAC/CM,EAAgB,CAClB,EAAG,CAACA,EAAiBhB,EAAQC,EAAOG,EAAMM,EAAaE,CAAS,CAAC,EAE1D,CACL,WAAAN,EACA,UAAAM,EACA,MAAAJ,EACA,QAASA,EAAQF,EAAW,QAAU,CAACM,CACzC,CACF,CAEA,IAAOO,EAAQpB",
|
|
6
|
+
"names": ["useCallback", "useEffect", "useState", "useSWRMutation", "getAlpcPath", "useActivities", "userId", "brand", "apiBaseUrl", "locale", "page", "pageSize", "activities", "setActivities", "total", "setTotal", "currentPage", "setCurrentPage", "isLoading", "trigger", "url", "arg", "fetchActivities", "data", "prev", "useActivities_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type UseSubscribedConfig = {
|
|
2
|
+
userId: string | undefined;
|
|
3
|
+
brand: string;
|
|
4
|
+
email: string | undefined;
|
|
5
|
+
locale?: string;
|
|
6
|
+
apiBaseUrl?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function useSubscribed({ userId, brand, email, locale, apiBaseUrl }: UseSubscribedConfig): boolean;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as b}from"react";import{useSubscriptions as p}from"@anker-in/lib";import{TaskSubType as a}from"../../../../credits/context/const";import f from"./useActivities";function l({userId:n,brand:r,email:u,locale:o="",apiBaseUrl:c}){const{activities:i}=f({userId:n,brand:r,apiBaseUrl:c,locale:o},{page:1,pageSize:50}),{data:t}=p({email:u}),s=t?.data||t;return b(()=>s?.preference?s.preference.some(e=>e.brand===r&&e.subscribe)?!0:i?.some(e=>e.task_sub_type===a.Subscription):!1,[s?.preference,i,r])}export{l as useSubscribed};
|
|
2
|
+
//# sourceMappingURL=useSubscribed.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.ts"],
|
|
4
|
+
"sourcesContent": ["import { useMemo } from 'react'\nimport { useSubscriptions } from '@anker-in/lib'\nimport { TaskSubType } from '../../../../credits/context/const'\nimport useActivities from './useActivities'\n\ntype UseSubscribedConfig = {\n userId: string | undefined\n brand: string\n email: string | undefined\n locale?: string\n apiBaseUrl?: string\n}\n\nexport function useSubscribed({ userId, brand, email, locale = '', apiBaseUrl }: UseSubscribedConfig) {\n const { activities } = useActivities(\n { userId, brand, apiBaseUrl, locale },\n { page: 1, pageSize: 50 }\n )\n const { data: subscription } = useSubscriptions({ email })\n const subscriptionData = subscription?.data || subscription\n\n return useMemo(() => {\n if (!subscriptionData?.preference) {\n return false\n }\n const subscribedByPreference = subscriptionData.preference.some(\n (item: any) => item.brand === brand && item.subscribe\n )\n if (subscribedByPreference) return true\n return activities?.some(item => item.task_sub_type === TaskSubType.Subscription)\n }, [subscriptionData?.preference, activities, brand])\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,WAAAA,MAAe,QACxB,OAAS,oBAAAC,MAAwB,gBACjC,OAAS,eAAAC,MAAmB,oCAC5B,OAAOC,MAAmB,kBAUnB,SAASC,EAAc,CAAE,OAAAC,EAAQ,MAAAC,EAAO,MAAAC,EAAO,OAAAC,EAAS,GAAI,WAAAC,CAAW,EAAwB,CACpG,KAAM,CAAE,WAAAC,CAAW,EAAIP,EACrB,CAAE,OAAAE,EAAQ,MAAAC,EAAO,WAAAG,EAAY,OAAAD,CAAO,EACpC,CAAE,KAAM,EAAG,SAAU,EAAG,CAC1B,EACM,CAAE,KAAMG,CAAa,EAAIV,EAAiB,CAAE,MAAAM,CAAM,CAAC,EACnDK,EAAmBD,GAAc,MAAQA,EAE/C,OAAOX,EAAQ,IACRY,GAAkB,WAGQA,EAAiB,WAAW,KACxDC,GAAcA,EAAK,QAAUP,GAASO,EAAK,SAC9C,EACmC,GAC5BH,GAAY,KAAKG,GAAQA,EAAK,gBAAkBX,EAAY,YAAY,EANtE,GAOR,CAACU,GAAkB,WAAYF,EAAYJ,CAAK,CAAC,CACtD",
|
|
6
|
+
"names": ["useMemo", "useSubscriptions", "TaskSubType", "useActivities", "useSubscribed", "userId", "brand", "email", "locale", "apiBaseUrl", "activities", "subscription", "subscriptionData", "item"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type UseUpdateProfileConfig = {
|
|
2
|
+
locale?: string;
|
|
3
|
+
appName?: string;
|
|
4
|
+
};
|
|
5
|
+
type ProfileData = {
|
|
6
|
+
first_name?: string;
|
|
7
|
+
last_name?: string;
|
|
8
|
+
phone_number?: string;
|
|
9
|
+
country?: string;
|
|
10
|
+
dob?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function useUpdateProfile({ locale, appName }?: UseUpdateProfileConfig): {
|
|
13
|
+
updateProfile: (data: ProfileData) => Promise<boolean>;
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
error: string | null;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useCallback as f,useState as o}from"react";function c({locale:n="",appName:s=""}={}){const[i,a]=o(!1),[l,r]=o(null);return{updateProfile:f(async u=>{a(!0),r(null);try{const e=await fetch("/api/multipass/account/users/update_profile",{method:"PUT",headers:{"Content-Type":"application/json","current-language":n},body:JSON.stringify({app:s,...u})}),t=await e.json();return e.ok&&!t.error?!0:(r(t?.error?.message||t?.error||"Update failed"),!1)}catch(e){return r(e?.message??"Unknown error"),!1}finally{a(!1)}},[n,s]),isLoading:i,error:l}}export{c as useUpdateProfile};
|
|
2
|
+
//# sourceMappingURL=useUpdateProfile.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts"],
|
|
4
|
+
"sourcesContent": ["import { useCallback, useState } from 'react'\n\ntype UseUpdateProfileConfig = {\n locale?: string\n appName?: string\n}\n\ntype ProfileData = {\n first_name?: string\n last_name?: string\n phone_number?: string\n country?: string\n dob?: string\n}\n\nexport function useUpdateProfile({ locale = '', appName = '' }: UseUpdateProfileConfig = {}) {\n const [isLoading, setIsLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n const updateProfile = useCallback(\n async (data: ProfileData): Promise<boolean> => {\n setIsLoading(true)\n setError(null)\n try {\n const response = await fetch('/api/multipass/account/users/update_profile', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n },\n body: JSON.stringify({ app: appName, ...data }),\n })\n const result = await response.json()\n if (response.ok && !result.error) {\n return true\n }\n setError(result?.error?.message || result?.error || 'Update failed')\n return false\n } catch (e: any) {\n setError(e?.message ?? 'Unknown error')\n return false\n } finally {\n setIsLoading(false)\n }\n },\n [locale, appName]\n )\n\n return { updateProfile, isLoading, error }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,eAAAA,EAAa,YAAAC,MAAgB,QAe/B,SAASC,EAAiB,CAAE,OAAAC,EAAS,GAAI,QAAAC,EAAU,EAAG,EAA4B,CAAC,EAAG,CAC3F,KAAM,CAACC,EAAWC,CAAY,EAAIL,EAAS,EAAK,EAC1C,CAACM,EAAOC,CAAQ,EAAIP,EAAwB,IAAI,EA+BtD,MAAO,CAAE,cA7BaD,EACpB,MAAOS,GAAwC,CAC7CH,EAAa,EAAI,EACjBE,EAAS,IAAI,EACb,GAAI,CACF,MAAME,EAAW,MAAM,MAAM,8CAA+C,CAC1E,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBP,CACtB,EACA,KAAM,KAAK,UAAU,CAAE,IAAKC,EAAS,GAAGK,CAAK,CAAC,CAChD,CAAC,EACKE,EAAS,MAAMD,EAAS,KAAK,EACnC,OAAIA,EAAS,IAAM,CAACC,EAAO,MAClB,IAETH,EAASG,GAAQ,OAAO,SAAWA,GAAQ,OAAS,eAAe,EAC5D,GACT,OAAS,EAAQ,CACf,OAAAH,EAAS,GAAG,SAAW,eAAe,EAC/B,EACT,QAAE,CACAF,EAAa,EAAK,CACpB,CACF,EACA,CAACH,EAAQC,CAAO,CAClB,EAEwB,UAAAC,EAAW,MAAAE,CAAM,CAC3C",
|
|
6
|
+
"names": ["useCallback", "useState", "useUpdateProfile", "locale", "appName", "isLoading", "setIsLoading", "error", "setError", "data", "response", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type EarnCreditsCopy } from '../../type';
|
|
2
|
+
type Props = {
|
|
3
|
+
copy: EarnCreditsCopy;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
isSubscribeSuccess?: boolean;
|
|
6
|
+
isActivateSuccess?: boolean;
|
|
7
|
+
isProfileCompleteSuccess?: boolean;
|
|
8
|
+
onSubscribeSuccess?: () => void;
|
|
9
|
+
onActivateSuccess?: () => void;
|
|
10
|
+
onProfileCompleteSuccess?: () => void;
|
|
11
|
+
};
|
|
12
|
+
declare function EarnCredits({ copy, onClose, isSubscribeSuccess, isActivateSuccess, isProfileCompleteSuccess, onSubscribeSuccess, onActivateSuccess, onProfileCompleteSuccess, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default EarnCredits;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useMemo as b}from"react";import{classNames as c,useHeadlessContext as I}from"@anker-in/lib";import{useMemberPopupContext as B}from"../../context/provider";import{useViewStack as U}from"../../context/viewStack";import{useSubscribed as D}from"./hooks/useSubscribed";import{EarnCreditsTaskType as i,MemberPopupPanelType as v}from"../../type";import{IconBag as M,IconLock as R,IconSubscription as y,IconOrders as F}from"../../icons";import{numberFormat as S}from"../../../credits/context/utils";import{ROUNDED_BRANDS as O}from"../../../../constants";function V({id:t,className:a}){switch(t){case i.Activate:return e(R,{className:a});case i.Subscribe:return e(y,{className:a});case i.Shop:return e(M,{className:a});case i.CompleteProfile:return e(F,{className:a})}}function z({copy:t,onClose:a,isSubscribeSuccess:g=!1,isActivateSuccess:N=!1,isProfileCompleteSuccess:f=!1,onSubscribeSuccess:L,onActivateSuccess:w,onProfileCompleteSuccess:P}){const{profile:o,openSignUpPopup:d,alpcConfig:x,creditInfo:u}=B(),{pushView:p}=U(),{locale:E}=x,{brand:T}=I(),m=O.includes(T),l=!!o,h=D({userId:o?.user_id,brand:x.brand,email:o?.email,locale:E,apiBaseUrl:x.apiBaseUrl}),C=b(()=>f||!!(o?.first_name||o?.last_name)&&!!o?.phone_number&&!!o?.dob,[o,f]),k=b(()=>({[i.Activate]:{finished:!!o?.activated||N,onClick:l?()=>p({type:v.Activate,props:{onSuccess:w}}):d},[i.CompleteProfile]:{finished:C,onClick:l?()=>p({type:v.CompleteProfile,props:{onSuccess:P}}):d},[i.Subscribe]:{finished:h||g,onClick:l?()=>p({type:v.SubscribeEmail,props:{onSuccess:L}}):d},[i.Shop]:{finished:!1,link:t.goShopLink,onClick:l?void 0:d}}),[o,l,N,f,C,h,g,d,p,t.goShopLink]),_=b(()=>t.list.map(s=>{const r=k[s.id];if(!r)return null;const A=r.finished?t.completed:l?H(s.id,t):t.joinNow;return{...s,...r,buttonLabel:A}}).filter(Boolean),[t,k,l]);return n("div",{className:"flex flex-col gap-[16px]",children:[n("div",{className:"flex flex-col gap-[16px]",children:[e("div",{className:"flex flex-col gap-[8px]",children:t.title&&e("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:t.title})}),l&&u&&n("div",{className:c("flex items-center gap-[12px] bg-[#f5f6f7] p-[16px]",m?"rounded-[8px]":"rounded-none"),children:[n("div",{className:"flex flex-1 flex-col gap-[4px]",children:[e("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:t.balanceLabel??"AnkerCredits Balance"}),n("div",{className:"flex items-end gap-[4px]",children:[e("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:S(u.available_credit)}),e("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:t.creditUnit??"ankercredits"})]})]}),e("div",{className:"h-full w-px bg-[#dadce0]"}),n("div",{className:"flex flex-1 flex-col gap-[4px]",children:[e("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:t.comingSoonLabel??"Coming Soon"}),n("div",{className:"flex items-end gap-[4px]",children:[e("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:S(u.pending_credit??0)}),e("span",{className:"text-[14px] font-[700] leading-[1.4] text-[#1e2024]",children:t.creditUnit??"ankercredits"})]})]})]})]}),n("div",{className:"flex flex-col gap-[16px]",children:[t.subtitle&&e("p",{className:"text-[16px] font-[700] text-[#1e2024]",children:t.subtitle}),e("div",{className:"flex flex-col",children:_.map((s,r)=>n("div",{className:"relative py-[16px]",children:[r>0&&e("div",{className:"absolute left-0 right-0 top-0 h-px bg-[#dadce0]"}),n("div",{className:c("flex items-center gap-[12px]",s.finished&&"opacity-60"),children:[e(V,{id:s.id,className:"size-[24px] shrink-0"}),n("div",{className:"flex-1",children:[e("div",{className:"text-[16px] font-[700] text-[#1e2024]",children:s.title}),s.description&&e("div",{className:"mt-[4px] text-[14px] font-[700] text-[#4a4c56]",children:s.description})]}),!s.finished&&s.link?e("a",{href:s.link,target:"_blank",rel:"noopener noreferrer",className:c("cursor-pointer bg-[#080a0f] min-w-[118px] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white",m?"rounded-[4px]":"rounded-none"),children:s.buttonLabel}):e("button",{className:c("cursor-pointer min-w-[118px] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white",s.finished?"bg-[#767880]":"bg-[#080a0f]",m?"rounded-[4px]":"rounded-none"),disabled:s.finished,onClick:s.finished?void 0:s.onClick,children:s.buttonLabel})]})]},r))})]})]})}function H(t,a){switch(t){case i.Activate:return a.activate;case i.CompleteProfile:return a.completeProfileLabel;case i.Subscribe:return a.subscribeLabel;case i.Shop:return a.shopNow}}var Z=z;export{Z as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/EarnCredits/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { useMemo } from 'react'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { useViewStack } from '../../context/viewStack'\nimport { useSubscribed } from './hooks/useSubscribed'\nimport { EarnCreditsTaskType, MemberPopupPanelType, type EarnCreditsCopy } from '../../type'\nimport { IconBag, IconLock, IconSubscription, IconOrders } from '../../icons'\nimport { numberFormat } from '../../../credits/context/utils'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\nfunction TaskIcon({ id, className }: { id: EarnCreditsTaskType; className?: string }) {\n switch (id) {\n case EarnCreditsTaskType.Activate:\n return <IconLock className={className} />\n case EarnCreditsTaskType.Subscribe:\n return <IconSubscription className={className} />\n case EarnCreditsTaskType.Shop:\n return <IconBag className={className} />\n case EarnCreditsTaskType.CompleteProfile:\n return <IconOrders className={className} />\n }\n}\n\ntype Props = {\n copy: EarnCreditsCopy\n onClose: () => void\n isSubscribeSuccess?: boolean\n isActivateSuccess?: boolean\n isProfileCompleteSuccess?: boolean\n onSubscribeSuccess?: () => void\n onActivateSuccess?: () => void\n onProfileCompleteSuccess?: () => void\n}\n\nfunction EarnCredits({\n copy,\n onClose,\n isSubscribeSuccess = false,\n isActivateSuccess = false,\n isProfileCompleteSuccess = false,\n onSubscribeSuccess,\n onActivateSuccess,\n onProfileCompleteSuccess,\n}: Props) {\n const { profile, openSignUpPopup, alpcConfig, creditInfo } = useMemberPopupContext()\n const { pushView } = useViewStack()\n const { locale } = alpcConfig\n const { brand } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const isLogin = !!profile\n\n const isSubscribed = useSubscribed({\n userId: profile?.user_id,\n brand: alpcConfig.brand,\n email: profile?.email,\n locale,\n apiBaseUrl: alpcConfig.apiBaseUrl,\n })\n\n const profileCompleted = useMemo(() => {\n return isProfileCompleteSuccess || (!!(profile?.first_name || profile?.last_name) && !!profile?.phone_number && !!profile?.dob)\n }, [profile, isProfileCompleteSuccess])\n\n const taskStates: Record<EarnCreditsTaskType, { finished: boolean; onClick?: () => void; link?: string }> = useMemo(() => ({\n [EarnCreditsTaskType.Activate]: {\n finished: !!profile?.activated || isActivateSuccess,\n onClick: isLogin\n ? () => pushView({\n type: MemberPopupPanelType.Activate,\n props: { onSuccess: onActivateSuccess },\n })\n : openSignUpPopup,\n },\n [EarnCreditsTaskType.CompleteProfile]: {\n finished: profileCompleted,\n onClick: isLogin\n ? () => pushView({\n type: MemberPopupPanelType.CompleteProfile,\n props: { onSuccess: onProfileCompleteSuccess },\n })\n : openSignUpPopup,\n },\n [EarnCreditsTaskType.Subscribe]: {\n finished: isSubscribed || isSubscribeSuccess,\n onClick: isLogin\n ? () => pushView({\n type: MemberPopupPanelType.SubscribeEmail,\n props: { onSuccess: onSubscribeSuccess },\n })\n : openSignUpPopup,\n },\n [EarnCreditsTaskType.Shop]: {\n finished: false,\n link: copy.goShopLink,\n onClick: isLogin ? undefined : openSignUpPopup,\n },\n }), [profile, isLogin, isActivateSuccess, isProfileCompleteSuccess, profileCompleted, isSubscribed, isSubscribeSuccess, openSignUpPopup, pushView, copy.goShopLink])\n\n const list = useMemo(() => {\n return copy.list.map(item => {\n const state = taskStates[item.id]\n if (!state) return null\n const buttonLabel = state.finished\n ? copy.completed\n : isLogin\n ? getNotFinishedLabel(item.id, copy)\n : copy.joinNow\n return { ...item, ...state, buttonLabel }\n }).filter(Boolean) as (typeof copy.list[number] & {\n finished: boolean\n onClick?: () => void\n link?: string\n buttonLabel: string\n })[]\n }, [copy, taskStates, isLogin])\n\n return (\n <div className=\"flex flex-col gap-[16px]\">\n <div className=\"flex flex-col gap-[16px]\">\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 </div>\n\n {isLogin && creditInfo && (\n <div className={cn('flex items-center gap-[12px] bg-[#f5f6f7] p-[16px]', rounded ? 'rounded-[8px]' : 'rounded-none')}>\n <div className=\"flex flex-1 flex-col gap-[4px]\">\n <div className=\"text-[14px] font-[700] text-[#1e2024]\">\n {copy.balanceLabel ?? 'AnkerCredits Balance'}\n </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)}\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]\">\n {copy.comingSoonLabel ?? 'Coming Soon'}\n </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 </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n {copy.subtitle && (\n <p className=\"text-[16px] font-[700] text-[#1e2024]\">{copy.subtitle}</p>\n )}\n\n <div className=\"flex flex-col\">\n {list.map((item, idx) => (\n <div key={idx} className=\"relative py-[16px]\">\n {idx > 0 && <div className=\"absolute left-0 right-0 top-0 h-px bg-[#dadce0]\" />}\n <div className={cn('flex items-center gap-[12px]', item.finished && 'opacity-60')}>\n <TaskIcon id={item.id} className=\"size-[24px] shrink-0\" />\n <div className=\"flex-1\">\n <div className=\"text-[16px] font-[700] text-[#1e2024]\">{item.title}</div>\n {item.description && (\n <div className=\"mt-[4px] text-[14px] font-[700] text-[#4a4c56]\">{item.description}</div>\n )}\n </div>\n {!item.finished && item.link ? (\n <a\n href={item.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn('cursor-pointer bg-[#080a0f] min-w-[118px] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white', rounded ? 'rounded-[4px]' : 'rounded-none')}\n >\n {item.buttonLabel}\n </a>\n ) : (\n <button\n className={cn(\n 'cursor-pointer min-w-[118px] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-white',\n item.finished ? 'bg-[#767880]' : 'bg-[#080a0f]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n disabled={item.finished}\n onClick={!item.finished ? item.onClick : undefined}\n >\n {item.buttonLabel}\n </button>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nfunction getNotFinishedLabel(id: EarnCreditsTaskType, copy: EarnCreditsCopy): string {\n switch (id) {\n case EarnCreditsTaskType.Activate: return copy.activate\n case EarnCreditsTaskType.CompleteProfile: return copy.completeProfileLabel\n case EarnCreditsTaskType.Subscribe: return copy.subscribeLabel\n case EarnCreditsTaskType.Shop: return copy.shopNow\n }\n}\n\nexport default EarnCredits\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["jsx", "jsxs", "useMemo", "cn", "useHeadlessContext", "useMemberPopupContext", "useViewStack", "useSubscribed", "EarnCreditsTaskType", "MemberPopupPanelType", "IconBag", "IconLock", "IconSubscription", "IconOrders", "numberFormat", "ROUNDED_BRANDS", "TaskIcon", "id", "className", "EarnCredits", "copy", "onClose", "isSubscribeSuccess", "isActivateSuccess", "isProfileCompleteSuccess", "onSubscribeSuccess", "onActivateSuccess", "onProfileCompleteSuccess", "profile", "openSignUpPopup", "alpcConfig", "creditInfo", "pushView", "locale", "brand", "rounded", "isLogin", "isSubscribed", "profileCompleted", "taskStates", "list", "item", "state", "buttonLabel", "getNotFinishedLabel", "idx", "EarnCredits_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type ReferralDashboardResponse = {
|
|
2
|
+
data: {
|
|
3
|
+
cash_available: number;
|
|
4
|
+
cash_pending: number;
|
|
5
|
+
};
|
|
6
|
+
code: number;
|
|
7
|
+
msg: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function useReferralDashboard({ enabled, locale }: {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
locale?: string;
|
|
12
|
+
}): import("swr/mutation").SWRMutationResponse<ReferralDashboardResponse, Error, string | null, never>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import a from"swr/mutation";function t({enabled:e,locale:r=""}){return a(e?"/api/multipass/mktsrv/v1/referral/dashboard/info":null,async n=>(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json","current-language":r},body:JSON.stringify({channel:"web"})})).json())}export{t as useReferralDashboard};
|
|
2
|
+
//# sourceMappingURL=useReferralDashboard.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/Referral/hooks/useReferralDashboard.ts"],
|
|
4
|
+
"sourcesContent": ["import useSWRMutation from 'swr/mutation'\n\ntype ReferralDashboardResponse = {\n data: {\n cash_available: number\n cash_pending: number\n }\n code: number\n msg: string\n}\n\nexport function useReferralDashboard({ enabled, locale = '' }: { enabled: boolean; locale?: string }) {\n return useSWRMutation<ReferralDashboardResponse, Error, string | null>(\n enabled ? '/api/multipass/mktsrv/v1/referral/dashboard/info' : null,\n async (url: string) => {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': locale,\n },\n body: JSON.stringify({ channel: 'web' }),\n })\n return response.json()\n }\n )\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAoB,eAWpB,SAASC,EAAqB,CAAE,QAAAC,EAAS,OAAAC,EAAS,EAAG,EAA0C,CACpG,OAAOH,EACLE,EAAU,mDAAqD,KAC/D,MAAOE,IACY,MAAM,MAAMA,EAAK,CAChC,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBD,CACtB,EACA,KAAM,KAAK,UAAU,CAAE,QAAS,KAAM,CAAC,CACzC,CAAC,GACe,KAAK,CAEzB,CACF",
|
|
6
|
+
"names": ["useSWRMutation", "useReferralDashboard", "enabled", "locale", "url"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import l from"swr";import{useMemberPopupContext as p}from"../../../context/provider";function v(){const{profile:r,alpcConfig:a}=p(),o=!!r?"/api/multipass/mktsrv/v1/referral/reward/overview/cash":null,s=async i=>{const e=await fetch(i,{method:"GET",headers:{"Content-Type":"application/json","current-language":a.locale}});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()},{data:n,isLoading:t}=l(o,s,{revalidateOnFocus:!1});return{isLoading:t,data:n}}export{v as useReferralOverview};
|
|
2
|
+
//# sourceMappingURL=useReferralOverview.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts"],
|
|
4
|
+
"sourcesContent": ["import useSWR from 'swr'\nimport { useMemberPopupContext } from '../../../context/provider'\n\nexport type ReferralRewardOverviewResponse = {\n data: {\n data: {\n available: number\n pending: number\n }\n }\n}\n\nexport function useReferralOverview(): {\n isLoading: boolean\n data?: ReferralRewardOverviewResponse\n} {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n\n const swrKey = isLogin ? `/api/multipass/mktsrv/v1/referral/reward/overview/cash` : null\n\n const swrFetcher = async (url: string) => {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'current-language': alpcConfig.locale,\n },\n })\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n return response.json()\n }\n\n const { data, isLoading } = useSWR<ReferralRewardOverviewResponse>(swrKey, swrFetcher, {\n revalidateOnFocus: false,\n })\n\n return { isLoading, data }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAY,MACnB,OAAS,yBAAAC,MAA6B,4BAW/B,SAASC,GAGd,CACA,KAAM,CAAE,QAAAC,EAAS,WAAAC,CAAW,EAAIH,EAAsB,EAGhDI,EAFU,CAAC,CAACF,EAEO,yDAA2D,KAE9EG,EAAa,MAAOC,GAAgB,CACxC,MAAMC,EAAW,MAAM,MAAMD,EAAK,CAChC,OAAQ,MACR,QAAS,CACP,eAAgB,mBAChB,mBAAoBH,EAAW,MACjC,CACF,CAAC,EACD,GAAI,CAACI,EAAS,GACZ,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAM,EAAE,EAE1D,OAAOA,EAAS,KAAK,CACvB,EAEM,CAAE,KAAAC,EAAM,UAAAC,CAAU,EAAIV,EAAuCK,EAAQC,EAAY,CACrF,kBAAmB,EACrB,CAAC,EAED,MAAO,CAAE,UAAAI,EAAW,KAAAD,CAAK,CAC3B",
|
|
6
|
+
"names": ["useSWR", "useMemberPopupContext", "useReferralOverview", "profile", "alpcConfig", "swrKey", "swrFetcher", "url", "response", "data", "isLoading"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as a,jsxs as t}from"react/jsx-runtime";import{Picture as m}from"@anker-in/headless-ui";import{classNames as n,useHeadlessContext as g}from"@anker-in/lib";import{useMemberPopupContext as u}from"../../context/provider";import{useReferralOverview as h}from"./hooks/useReferralOverview";import{formatPrice as x}from"../../../credits/context/utils";import{ROUNDED_BRANDS as v}from"../../../../constants";function N({copy:e,onClose:b}){const{profile:f,alpcConfig:r}=u(),c=!!f,{brand:p,currencyCode:s="USD"}=g(),o=v.includes(p),{data:l}=h(),i=l?.data?.data?.available??0,d=l?.data?.data?.pending??0;return console.log("cashAvailable",i),console.log("cashPending",d),console.log("data",l),console.log("data.data",l?.data),t("div",{className:"flex flex-col gap-[12px]",children:[e.title&&a("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),c&&t("div",{className:n("flex items-center gap-[12px] bg-[#f5f6f7] p-[16px]",o?"rounded-[8px]":"rounded-none"),children:[t("div",{className:"flex flex-1 flex-col gap-[4px]",children:[a("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:e.cashAvailableLabel}),a("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:x({amount:i,currencyCode:s,locale:r.locale})})]}),a("div",{className:"h-full w-px self-stretch bg-[#dadce0]"}),t("div",{className:"flex flex-1 flex-col gap-[4px]",children:[a("div",{className:"text-[14px] font-[700] text-[#1e2024]",children:e.cashPendingLabel}),a("span",{className:"text-[24px] font-[700] leading-[1.2] text-[#1e2024]",children:x({amount:d,currencyCode:s,locale:r.locale})})]})]}),(e.howToTitle||e.howToDescription)&&t("div",{className:"flex flex-col gap-[8px]",children:[e.howToTitle&&a("h3",{className:"text-[20px] font-[700] leading-[1.2] text-[#080a0f]",children:e.howToTitle}),e.howToDescription&&a("p",{className:"text-[14px] leading-[1.5] text-[#1e2024]",children:e.howToDescription}),e.learnMoreLabel&&e.learnMoreUrl&&t("a",{href:e.learnMoreUrl,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-[4px] text-[14px] font-[700] text-[#080a0f] underline",children:[e.learnMoreLabel,a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:a("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.image?.url&&a(m,{source:e.image.url,alt:e.image.alt??"",className:n("h-[100px] w-full object-cover",o?"rounded-[8px]":"rounded-none")}),e.ctaButton&&a("a",{href:e.ctaUrl??"#",target:"_blank",rel:"noopener noreferrer",className:n("block w-full cursor-pointer bg-[#080a0f] py-[14px] text-center text-[14px] font-[700] text-white",o?"rounded-[4px]":"rounded-none"),children:e.ctaButton})]})}var M=N;export{M as default};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/components/memberPopup/panels/Referral/index.tsx"],
|
|
4
|
+
"sourcesContent": ["import { Picture } from '@anker-in/headless-ui'\nimport { classNames as cn, useHeadlessContext } from '@anker-in/lib'\nimport { useMemberPopupContext } from '../../context/provider'\nimport { useReferralOverview } from './hooks/useReferralOverview'\nimport { formatPrice } from '../../../credits/context/utils'\n\nimport type { ReferralCopy } from '../../type'\nimport { ROUNDED_BRANDS } from '../../../../constants'\n\ntype Props = {\n copy: ReferralCopy\n onClose: () => void\n}\n\nfunction Referral({ copy, onClose }: Props) {\n const { profile, alpcConfig } = useMemberPopupContext()\n const isLogin = !!profile\n const { brand, currencyCode = 'USD' as string } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n\n const { data } = useReferralOverview()\n\n const cashAvailable = data?.data?.data?.available ?? 0\n const cashPending = data?.data?.data?.pending ?? 0\n\n console.log('cashAvailable', cashAvailable)\n console.log('cashPending', cashPending)\n console.log('data', data)\n console.log('data.data', data?.data)\n\n return (\n <div className=\"flex flex-col gap-[12px]\">\n {copy.title && <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>}\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.cashAvailableLabel}</div>\n <span className=\"text-[24px] font-[700] leading-[1.2] text-[#1e2024]\">\n {formatPrice({ amount: cashAvailable, currencyCode, locale: alpcConfig.locale })}\n </span>\n </div>\n <div className=\"h-full w-px self-stretch bg-[#dadce0]\" />\n <div className=\"flex flex-1 flex-col gap-[4px]\">\n <div className=\"text-[14px] font-[700] text-[#1e2024]\">{copy.cashPendingLabel}</div>\n <span className=\"text-[24px] font-[700] leading-[1.2] text-[#1e2024]\">\n {formatPrice({ amount: cashPending, currencyCode, locale: alpcConfig.locale })}\n </span>\n </div>\n </div>\n )}\n\n {(copy.howToTitle || copy.howToDescription) && (\n <div className=\"flex flex-col gap-[8px]\">\n {copy.howToTitle && (\n <h3 className=\"text-[20px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.howToTitle}</h3>\n )}\n {copy.howToDescription && <p className=\"text-[14px] leading-[1.5] text-[#1e2024]\">{copy.howToDescription}</p>}\n {copy.learnMoreLabel && copy.learnMoreUrl && (\n <a\n href={copy.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.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 )}\n\n {copy.image?.url && (\n <Picture\n source={copy.image.url}\n alt={copy.image.alt ?? ''}\n className={cn('h-[100px] w-full object-cover', rounded ? 'rounded-[8px]' : 'rounded-none')}\n />\n )}\n\n {copy.ctaButton && (\n <a\n href={copy.ctaUrl ?? '#'}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'block w-full cursor-pointer bg-[#080a0f] py-[14px] text-center text-[14px] font-[700] text-white',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n >\n {copy.ctaButton}\n </a>\n )}\n </div>\n )\n}\n\nexport default Referral\n"],
|
|
5
|
+
"mappings": "AAgCqB,cAAAA,EASX,QAAAC,MATW,oBAhCrB,OAAS,WAAAC,MAAe,wBACxB,OAAS,cAAcC,EAAI,sBAAAC,MAA0B,gBACrD,OAAS,yBAAAC,MAA6B,yBACtC,OAAS,uBAAAC,MAA2B,8BACpC,OAAS,eAAAC,MAAmB,iCAG5B,OAAS,kBAAAC,MAAsB,wBAO/B,SAASC,EAAS,CAAE,KAAAC,EAAM,QAAAC,CAAQ,EAAU,CAC1C,KAAM,CAAE,QAAAC,EAAS,WAAAC,CAAW,EAAIR,EAAsB,EAChDS,EAAU,CAAC,CAACF,EACZ,CAAE,MAAAG,EAAO,aAAAC,EAAe,KAAgB,EAAIZ,EAAmB,EAC/Da,EAAUT,EAAe,SAASO,CAAK,EAEvC,CAAE,KAAAG,CAAK,EAAIZ,EAAoB,EAE/Ba,EAAgBD,GAAM,MAAM,MAAM,WAAa,EAC/CE,EAAcF,GAAM,MAAM,MAAM,SAAW,EAEjD,eAAQ,IAAI,gBAAiBC,CAAa,EAC1C,QAAQ,IAAI,cAAeC,CAAW,EACtC,QAAQ,IAAI,OAAQF,CAAI,EACxB,QAAQ,IAAI,YAAaA,GAAM,IAAI,EAGjCjB,EAAC,OAAI,UAAU,2BACZ,UAAAS,EAAK,OAASV,EAAC,MAAG,UAAU,sDAAuD,SAAAU,EAAK,MAAM,EAE9FI,GACCb,EAAC,OACC,UAAWE,EACT,qDACAc,EAAU,gBAAkB,cAC9B,EAEA,UAAAhB,EAAC,OAAI,UAAU,iCACb,UAAAD,EAAC,OAAI,UAAU,wCAAyC,SAAAU,EAAK,mBAAmB,EAChFV,EAAC,QAAK,UAAU,sDACb,SAAAO,EAAY,CAAE,OAAQY,EAAe,aAAAH,EAAc,OAAQH,EAAW,MAAO,CAAC,EACjF,GACF,EACAb,EAAC,OAAI,UAAU,wCAAwC,EACvDC,EAAC,OAAI,UAAU,iCACb,UAAAD,EAAC,OAAI,UAAU,wCAAyC,SAAAU,EAAK,iBAAiB,EAC9EV,EAAC,QAAK,UAAU,sDACb,SAAAO,EAAY,CAAE,OAAQa,EAAa,aAAAJ,EAAc,OAAQH,EAAW,MAAO,CAAC,EAC/E,GACF,GACF,GAGAH,EAAK,YAAcA,EAAK,mBACxBT,EAAC,OAAI,UAAU,0BACZ,UAAAS,EAAK,YACJV,EAAC,MAAG,UAAU,sDAAuD,SAAAU,EAAK,WAAW,EAEtFA,EAAK,kBAAoBV,EAAC,KAAE,UAAU,2CAA4C,SAAAU,EAAK,iBAAiB,EACxGA,EAAK,gBAAkBA,EAAK,cAC3BT,EAAC,KACC,KAAMS,EAAK,aACX,OAAO,SACP,IAAI,sBACJ,UAAU,8EAET,UAAAA,EAAK,eACNV,EAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OACnD,SAAAA,EAAC,QACC,EAAE,kUACF,KAAK,UACP,EACF,GACF,GAEJ,EAGDU,EAAK,OAAO,KACXV,EAACE,EAAA,CACC,OAAQQ,EAAK,MAAM,IACnB,IAAKA,EAAK,MAAM,KAAO,GACvB,UAAWP,EAAG,gCAAiCc,EAAU,gBAAkB,cAAc,EAC3F,EAGDP,EAAK,WACJV,EAAC,KACC,KAAMU,EAAK,QAAU,IACrB,OAAO,SACP,IAAI,sBACJ,UAAWP,EACT,mGACAc,EAAU,gBAAkB,cAC9B,EAEC,SAAAP,EAAK,UACR,GAEJ,CAEJ,CAEA,IAAOW,EAAQZ",
|
|
6
|
+
"names": ["jsx", "jsxs", "Picture", "cn", "useHeadlessContext", "useMemberPopupContext", "useReferralOverview", "formatPrice", "ROUNDED_BRANDS", "Referral", "copy", "onClose", "profile", "alpcConfig", "isLogin", "brand", "currencyCode", "rounded", "data", "cashAvailable", "cashPending", "Referral_default"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import type { AuthCodeActivateCopy } from '../registration/authCodeActivate/type';
|
|
2
|
+
import type { CreditInfoResponse } from '../credits/context/response';
|
|
3
|
+
import type { DTC_TASK_TYPE } from '../credits/context/const';
|
|
4
|
+
export type { AuthCodeActivateCopy };
|
|
5
|
+
export declare enum MemberPopupPanelType {
|
|
6
|
+
EarnCredits = "EARN_CREDITS",
|
|
7
|
+
ConsumeCredits = "CONSUME_CREDITS",
|
|
8
|
+
Referral = "REFERRAL",
|
|
9
|
+
CompleteProfile = "COMPLETE_PROFILE",
|
|
10
|
+
Subscribe = "SUBSCRIBE",
|
|
11
|
+
SubscribeEmail = "SUBSCRIBE_EMAIL",
|
|
12
|
+
RedeemCoupon = "REDEEM_COUPON",
|
|
13
|
+
Activate = "ACTIVATE"
|
|
14
|
+
}
|
|
15
|
+
export declare enum MemberPopupActionType {
|
|
16
|
+
ExternalLink = "EXTERNAL_LINK",
|
|
17
|
+
OpenEarnCredits = "OPEN_EARN_CREDITS",
|
|
18
|
+
OpenConsumeCredits = "OPEN_CONSUME_CREDITS",
|
|
19
|
+
OpenReferral = "OPEN_REFERRAL",
|
|
20
|
+
OpenSubscribe = "OPEN_SUBSCRIBE"
|
|
21
|
+
}
|
|
22
|
+
export declare enum EarnCreditsTaskType {
|
|
23
|
+
Activate = "activate",
|
|
24
|
+
CompleteProfile = "completeProfile",
|
|
25
|
+
Subscribe = "subscribe",
|
|
26
|
+
Shop = "shop"
|
|
27
|
+
}
|
|
28
|
+
export declare enum ConsumeCreditsItemType {
|
|
29
|
+
Coupon = "COUPON",
|
|
30
|
+
RedeemAndBuy = "REDEEM_AND_BUY"
|
|
31
|
+
}
|
|
32
|
+
export type MemberPopupLink = {
|
|
33
|
+
type: MemberPopupActionType;
|
|
34
|
+
label: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
};
|
|
37
|
+
export type MemberPopupItem = {
|
|
38
|
+
title: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
links: MemberPopupLink[];
|
|
41
|
+
};
|
|
42
|
+
export declare enum MemberPopupPageScope {
|
|
43
|
+
/** 全局展示 */
|
|
44
|
+
Global = "GLOBAL",
|
|
45
|
+
/** 仅在特定页面展示 */
|
|
46
|
+
Include = "INCLUDE",
|
|
47
|
+
/** 在特定页面不展示 */
|
|
48
|
+
Exclude = "EXCLUDE"
|
|
49
|
+
}
|
|
50
|
+
export type MemberPopupPageConfig = {
|
|
51
|
+
scope: MemberPopupPageScope;
|
|
52
|
+
/** 页面路径列表,支持精确匹配和前缀匹配(如 "/products" 会匹配 "/products/xxx") */
|
|
53
|
+
pages: string[];
|
|
54
|
+
};
|
|
55
|
+
export type MemberPopupCopy = {
|
|
56
|
+
triggerImg: {
|
|
57
|
+
url: string;
|
|
58
|
+
alt?: string;
|
|
59
|
+
};
|
|
60
|
+
title?: string;
|
|
61
|
+
subtitle?: string;
|
|
62
|
+
list: MemberPopupItem[];
|
|
63
|
+
footer?: {
|
|
64
|
+
loginHint: string;
|
|
65
|
+
loginLabel: string;
|
|
66
|
+
joinLabel: string;
|
|
67
|
+
shopLabel: string;
|
|
68
|
+
shopUrl?: string;
|
|
69
|
+
};
|
|
70
|
+
subscribe?: SubscribeModalCopy;
|
|
71
|
+
earnCredits?: EarnCreditsCopy;
|
|
72
|
+
consumeCredits?: ConsumeCreditsopy;
|
|
73
|
+
referral?: ReferralCopy;
|
|
74
|
+
/** 页面覆盖范围配置,默认全局展示 */
|
|
75
|
+
pageConfig?: MemberPopupPageConfig;
|
|
76
|
+
};
|
|
77
|
+
export type EarnCreditsCopy = {
|
|
78
|
+
title?: string;
|
|
79
|
+
subtitle?: string;
|
|
80
|
+
balanceLabel?: string;
|
|
81
|
+
comingSoonLabel?: string;
|
|
82
|
+
creditUnit?: string;
|
|
83
|
+
joinNow: string;
|
|
84
|
+
completed: string;
|
|
85
|
+
activate: string;
|
|
86
|
+
completeProfileLabel: string;
|
|
87
|
+
subscribeLabel: string;
|
|
88
|
+
shopNow: string;
|
|
89
|
+
goShopLink?: string;
|
|
90
|
+
list: {
|
|
91
|
+
id: EarnCreditsTaskType;
|
|
92
|
+
title: string;
|
|
93
|
+
description: string;
|
|
94
|
+
credits?: string;
|
|
95
|
+
}[];
|
|
96
|
+
authCodeActivate: AuthCodeActivateCopy;
|
|
97
|
+
completeProfile: CompleteProfileCopy;
|
|
98
|
+
subscribe: SubscribeModalCopy;
|
|
99
|
+
};
|
|
100
|
+
export type CompleteProfileCopy = {
|
|
101
|
+
title: string;
|
|
102
|
+
subtitle?: string;
|
|
103
|
+
firstName: string;
|
|
104
|
+
lastName: string;
|
|
105
|
+
email: string;
|
|
106
|
+
phone: string;
|
|
107
|
+
birthday: string;
|
|
108
|
+
country: string;
|
|
109
|
+
save: string;
|
|
110
|
+
cancel: string;
|
|
111
|
+
edit: string;
|
|
112
|
+
required: string;
|
|
113
|
+
};
|
|
114
|
+
export type SubscribeModalCopy = {
|
|
115
|
+
title: string;
|
|
116
|
+
desc?: string;
|
|
117
|
+
placeholder: string;
|
|
118
|
+
policy?: string;
|
|
119
|
+
successTips?: string;
|
|
120
|
+
dealsType?: string;
|
|
121
|
+
buttonLabel?: string;
|
|
122
|
+
single_brand_subscribe?: boolean;
|
|
123
|
+
genre?: string;
|
|
124
|
+
sub_brand_type?: string;
|
|
125
|
+
};
|
|
126
|
+
export type ConsumeCreditsopy = {
|
|
127
|
+
title?: string;
|
|
128
|
+
subtitle?: string;
|
|
129
|
+
soldOut: string;
|
|
130
|
+
unlockRewards: string;
|
|
131
|
+
btnRedeem: string;
|
|
132
|
+
insufficientCredits?: string;
|
|
133
|
+
pointUnit?: string;
|
|
134
|
+
off?: string;
|
|
135
|
+
imageMapping?: {
|
|
136
|
+
[key in ConsumeCreditsItemType]?: {
|
|
137
|
+
url: string;
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
list: ConsumeCreditsItem[];
|
|
141
|
+
redeemModal: RedeemCouponModalCopy;
|
|
142
|
+
creditsPage?: {
|
|
143
|
+
label: string;
|
|
144
|
+
url: string;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
export type ConsumeCreditsItem = {
|
|
148
|
+
redeemId: string | number;
|
|
149
|
+
title: string;
|
|
150
|
+
description?: string;
|
|
151
|
+
image: {
|
|
152
|
+
url: string;
|
|
153
|
+
alt?: string;
|
|
154
|
+
};
|
|
155
|
+
type: ConsumeCreditsItemType;
|
|
156
|
+
product?: {
|
|
157
|
+
handle: string;
|
|
158
|
+
sku: string;
|
|
159
|
+
};
|
|
160
|
+
price?: number;
|
|
161
|
+
value?: string;
|
|
162
|
+
rules?: string[];
|
|
163
|
+
};
|
|
164
|
+
export type RedeemCouponModalCopy = {
|
|
165
|
+
confirmTitle: string;
|
|
166
|
+
confirmButton: string;
|
|
167
|
+
commonError: string;
|
|
168
|
+
redeemLimitError: string;
|
|
169
|
+
inventoryNotEnough: string;
|
|
170
|
+
creditsNotEnough: string;
|
|
171
|
+
crossSiteError: string;
|
|
172
|
+
successTitle: string;
|
|
173
|
+
successDesc: string;
|
|
174
|
+
successButton: string;
|
|
175
|
+
successButtonUrl?: string;
|
|
176
|
+
};
|
|
177
|
+
export type ReferralCopy = {
|
|
178
|
+
title?: string;
|
|
179
|
+
description?: string;
|
|
180
|
+
cashAvailableLabel: string;
|
|
181
|
+
cashPendingLabel: string;
|
|
182
|
+
creditUnit?: string;
|
|
183
|
+
referralLinksLabel?: string;
|
|
184
|
+
referralLinkBaseUrl?: string;
|
|
185
|
+
copyLabel?: string;
|
|
186
|
+
copiedLabel?: string;
|
|
187
|
+
howToTitle?: string;
|
|
188
|
+
howToDescription?: string;
|
|
189
|
+
learnMoreLabel?: string;
|
|
190
|
+
learnMoreUrl?: string;
|
|
191
|
+
image?: {
|
|
192
|
+
url: string;
|
|
193
|
+
alt?: string;
|
|
194
|
+
};
|
|
195
|
+
ctaButton: string;
|
|
196
|
+
ctaUrl?: string;
|
|
197
|
+
loginTitle?: string;
|
|
198
|
+
loginDescription?: string;
|
|
199
|
+
loginCtaLabel?: string;
|
|
200
|
+
};
|
|
201
|
+
export type AlpcConfig = {
|
|
202
|
+
brand: string;
|
|
203
|
+
locale: string;
|
|
204
|
+
appName: string;
|
|
205
|
+
apiBaseUrl?: string;
|
|
206
|
+
};
|
|
207
|
+
export type MemberPopupContextValue = {
|
|
208
|
+
profile: any;
|
|
209
|
+
isLoadingProfile: boolean;
|
|
210
|
+
creditInfo?: CreditInfoResponse;
|
|
211
|
+
fetchCreditInfo: (userId: string) => void;
|
|
212
|
+
openSignUpPopup: () => void;
|
|
213
|
+
openSignInPopup: () => void;
|
|
214
|
+
taskIdToTypeMapping?: Record<string, DTC_TASK_TYPE>;
|
|
215
|
+
alpcConfig: AlpcConfig;
|
|
216
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var n=(t=>(t.EarnCredits="EARN_CREDITS",t.ConsumeCredits="CONSUME_CREDITS",t.Referral="REFERRAL",t.CompleteProfile="COMPLETE_PROFILE",t.Subscribe="SUBSCRIBE",t.SubscribeEmail="SUBSCRIBE_EMAIL",t.RedeemCoupon="REDEEM_COUPON",t.Activate="ACTIVATE",t))(n||{}),o=(i=>(i.ExternalLink="EXTERNAL_LINK",i.OpenEarnCredits="OPEN_EARN_CREDITS",i.OpenConsumeCredits="OPEN_CONSUME_CREDITS",i.OpenReferral="OPEN_REFERRAL",i.OpenSubscribe="OPEN_SUBSCRIBE",i))(o||{}),g=(e=>(e.Activate="activate",e.CompleteProfile="completeProfile",e.Subscribe="subscribe",e.Shop="shop",e))(g||{}),l=(s=>(s.Coupon="COUPON",s.RedeemAndBuy="REDEEM_AND_BUY",s))(l||{}),p=(r=>(r.Global="GLOBAL",r.Include="INCLUDE",r.Exclude="EXCLUDE",r))(p||{});export{l as ConsumeCreditsItemType,g as EarnCreditsTaskType,o as MemberPopupActionType,p as MemberPopupPageScope,n as MemberPopupPanelType};
|
|
2
|
+
//# sourceMappingURL=type.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/memberPopup/type.ts"],
|
|
4
|
+
"sourcesContent": ["import type { AuthCodeActivateCopy } from '../registration/authCodeActivate/type'\nimport type { CreditInfoResponse } from '../credits/context/response'\nimport type { DTC_TASK_TYPE } from '../credits/context/const'\n\nexport type { AuthCodeActivateCopy }\n\n// \u2500\u2500\u2500 \u9762\u677F\u7C7B\u578B\u679A\u4E3E \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport enum MemberPopupPanelType {\n EarnCredits = 'EARN_CREDITS',\n ConsumeCredits = 'CONSUME_CREDITS',\n Referral = 'REFERRAL',\n CompleteProfile = 'COMPLETE_PROFILE',\n Subscribe = 'SUBSCRIBE',\n SubscribeEmail = 'SUBSCRIBE_EMAIL',\n RedeemCoupon = 'REDEEM_COUPON',\n Activate = 'ACTIVATE',\n}\n\n// \u2500\u2500\u2500 item action \u7C7B\u578B\u679A\u4E3E \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport enum MemberPopupActionType {\n ExternalLink = 'EXTERNAL_LINK',\n OpenEarnCredits = 'OPEN_EARN_CREDITS',\n OpenConsumeCredits = 'OPEN_CONSUME_CREDITS',\n OpenReferral = 'OPEN_REFERRAL',\n OpenSubscribe = 'OPEN_SUBSCRIBE',\n}\n\n// \u2500\u2500\u2500 EarnCredits \u4EFB\u52A1\u7C7B\u578B\u679A\u4E3E \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport enum EarnCreditsTaskType {\n Activate = 'activate',\n CompleteProfile = 'completeProfile',\n Subscribe = 'subscribe',\n Shop = 'shop',\n}\n\n// \u2500\u2500\u2500 ConsumeCredits item \u7C7B\u578B\u679A\u4E3E \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport enum ConsumeCreditsItemType {\n Coupon = 'COUPON',\n RedeemAndBuy = 'REDEEM_AND_BUY',\n}\n\n// \u2500\u2500\u2500 \u901A\u7528 link\uFF08\u7EDF\u4E00\u4E00\u79CD\u7C7B\u578B\uFF09 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type MemberPopupLink = {\n type: MemberPopupActionType\n label: string\n url?: string // \u4EC5 ExternalLink \u65F6\u4F7F\u7528\n}\n\n// \u2500\u2500\u2500 list item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type MemberPopupItem = {\n title: string\n description?: string\n links: MemberPopupLink[]\n}\n\n// \u2500\u2500 \u4E3B\u7EC4\u4EF6 Copy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport enum MemberPopupPageScope {\n /** \u5168\u5C40\u5C55\u793A */\n Global = 'GLOBAL',\n /** \u4EC5\u5728\u7279\u5B9A\u9875\u9762\u5C55\u793A */\n Include = 'INCLUDE',\n /** \u5728\u7279\u5B9A\u9875\u9762\u4E0D\u5C55\u793A */\n Exclude = 'EXCLUDE',\n}\n\nexport type MemberPopupPageConfig = {\n scope: MemberPopupPageScope\n /** \u9875\u9762\u8DEF\u5F84\u5217\u8868\uFF0C\u652F\u6301\u7CBE\u786E\u5339\u914D\u548C\u524D\u7F00\u5339\u914D\uFF08\u5982 \"/products\" \u4F1A\u5339\u914D \"/products/xxx\"\uFF09 */\n pages: string[]\n}\n\nexport type MemberPopupCopy = {\n triggerImg: { url: string; alt?: string }\n title?: string\n subtitle?: string\n list: MemberPopupItem[]\n footer?: {\n loginHint: string\n loginLabel: string\n joinLabel: string\n shopLabel: string\n shopUrl?: string\n }\n subscribe?: SubscribeModalCopy\n earnCredits?: EarnCreditsCopy\n consumeCredits?: ConsumeCreditsopy\n referral?: ReferralCopy\n /** \u9875\u9762\u8986\u76D6\u8303\u56F4\u914D\u7F6E\uFF0C\u9ED8\u8BA4\u5168\u5C40\u5C55\u793A */\n pageConfig?: MemberPopupPageConfig\n}\n\n// \u2500\u2500\u2500 EarnCredits Copy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type EarnCreditsCopy = {\n title?: string\n subtitle?: string\n balanceLabel?: string\n comingSoonLabel?: string\n creditUnit?: string\n joinNow: string\n completed: string\n activate: string\n completeProfileLabel: string\n subscribeLabel: string\n shopNow: string\n goShopLink?: string\n list: {\n id: EarnCreditsTaskType\n title: string\n description: string\n credits?: string\n }[]\n // \u5B50\u5F39\u7A97\u6587\u6848\n authCodeActivate: AuthCodeActivateCopy\n completeProfile: CompleteProfileCopy\n subscribe: SubscribeModalCopy\n}\n\nexport type CompleteProfileCopy = {\n title: string\n subtitle?: string\n firstName: string\n lastName: string\n email: string\n phone: string\n birthday: string\n country: string\n save: string\n cancel: string\n edit: string\n required: string\n}\n\nexport type SubscribeModalCopy = {\n title: string\n desc?: string\n placeholder: string\n policy?: string\n successTips?: string\n dealsType?: string\n buttonLabel?: string\n single_brand_subscribe?: boolean\n genre?: string\n sub_brand_type?: string\n}\n\n// \u2500\u2500\u2500 ConsumeCredits Copy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type ConsumeCreditsopy = {\n title?: string\n subtitle?: string\n soldOut: string\n unlockRewards: string\n btnRedeem: string\n insufficientCredits?: string\n pointUnit?: string\n off?: string\n imageMapping?: {\n [key in ConsumeCreditsItemType]?: { url: string }\n }\n list: ConsumeCreditsItem[]\n redeemModal: RedeemCouponModalCopy\n creditsPage?: { label: string; url: string }\n}\n\nexport type ConsumeCreditsItem = {\n redeemId: string | number\n title: string\n description?: string\n image: { url: string; alt?: string }\n type: ConsumeCreditsItemType\n product?: { handle: string; sku: string }\n price?: number\n value?: string\n rules?: string[]\n}\n\nexport type RedeemCouponModalCopy = {\n confirmTitle: string\n confirmButton: string\n commonError: string\n redeemLimitError: string\n inventoryNotEnough: string\n creditsNotEnough: string\n crossSiteError: string\n successTitle: string\n successDesc: string\n successButton: string\n successButtonUrl?: string\n}\n\n// \u2500\u2500\u2500 Referral Copy \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type ReferralCopy = {\n title?: string\n description?: string\n cashAvailableLabel: string\n cashPendingLabel: string\n creditUnit?: string\n referralLinksLabel?: string\n referralLinkBaseUrl?: string\n copyLabel?: string\n copiedLabel?: string\n howToTitle?: string\n howToDescription?: string\n learnMoreLabel?: string\n learnMoreUrl?: string\n image?: { url: string; alt?: string }\n ctaButton: string\n ctaUrl?: string\n loginTitle?: string\n loginDescription?: string\n loginCtaLabel?: string\n}\n\n// \u2500\u2500\u2500 Provider Context \u7C7B\u578B \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nexport type AlpcConfig = {\n brand: string\n locale: string\n appName: string\n apiBaseUrl?: string\n}\n\nexport type MemberPopupContextValue = {\n profile: any\n isLoadingProfile: boolean\n creditInfo?: CreditInfoResponse\n fetchCreditInfo: (userId: string) => void\n openSignUpPopup: () => void\n openSignInPopup: () => void\n taskIdToTypeMapping?: Record<string, DTC_TASK_TYPE>\n alpcConfig: AlpcConfig\n}\n"],
|
|
5
|
+
"mappings": "AAOO,IAAKA,OACVA,EAAA,YAAc,eACdA,EAAA,eAAiB,kBACjBA,EAAA,SAAW,WACXA,EAAA,gBAAkB,mBAClBA,EAAA,UAAY,YACZA,EAAA,eAAiB,kBACjBA,EAAA,aAAe,gBACfA,EAAA,SAAW,WARDA,OAAA,IAYAC,OACVA,EAAA,aAAe,gBACfA,EAAA,gBAAkB,oBAClBA,EAAA,mBAAqB,uBACrBA,EAAA,aAAe,gBACfA,EAAA,cAAgB,iBALNA,OAAA,IASAC,OACVA,EAAA,SAAW,WACXA,EAAA,gBAAkB,kBAClBA,EAAA,UAAY,YACZA,EAAA,KAAO,OAJGA,OAAA,IAQAC,OACVA,EAAA,OAAS,SACTA,EAAA,aAAe,iBAFLA,OAAA,IAoBAC,OAEVA,EAAA,OAAS,SAETA,EAAA,QAAU,UAEVA,EAAA,QAAU,UANAA,OAAA",
|
|
6
|
+
"names": ["MemberPopupPanelType", "MemberPopupActionType", "EarnCreditsTaskType", "ConsumeCreditsItemType", "MemberPopupPageScope"]
|
|
7
|
+
}
|