@anker-in/campaign-ui 0.5.1-beta.3 → 0.5.2
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/credits/context/const.js +1 -1
- package/dist/cjs/components/credits/context/const.js.map +2 -2
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/cjs/components/credits/context/hooks/useSubscribed.js.map +2 -2
- package/dist/cjs/components/credits/context/provider.d.ts +2 -1
- package/dist/cjs/components/credits/context/provider.js +1 -1
- package/dist/cjs/components/credits/context/provider.js.map +3 -3
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
- package/dist/cjs/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
- package/dist/cjs/components/index.d.ts +2 -2
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +2 -2
- package/dist/cjs/components/memberPopup/MemberPopup.js +1 -1
- package/dist/cjs/components/memberPopup/MemberPopup.js.map +3 -3
- package/dist/cjs/components/memberPopup/type.d.ts +6 -0
- package/dist/cjs/components/memberPopup/type.js +1 -1
- package/dist/cjs/components/memberPopup/type.js.map +1 -1
- package/dist/cjs/templates/Credits.js +1 -1
- package/dist/cjs/templates/Credits.js.map +2 -2
- package/dist/cjs/templates/Credits.types.d.ts +1 -0
- package/dist/cjs/templates/Credits.types.js.map +1 -1
- package/dist/esm/components/credits/context/const.js +1 -1
- package/dist/esm/components/credits/context/const.js.map +2 -2
- package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
- package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemCoupon.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemProduct.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
- package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +3 -3
- package/dist/esm/components/credits/context/hooks/useSubscribed.js.map +2 -2
- package/dist/esm/components/credits/context/provider.d.ts +2 -1
- package/dist/esm/components/credits/context/provider.js +1 -1
- package/dist/esm/components/credits/context/provider.js.map +3 -3
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js +1 -1
- package/dist/esm/components/credits/creditsRedeemList/AddressForm/index.js.map +3 -3
- package/dist/esm/components/index.d.ts +2 -2
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/components/memberPopup/MemberPopup.js +1 -1
- package/dist/esm/components/memberPopup/MemberPopup.js.map +3 -3
- package/dist/esm/components/memberPopup/type.d.ts +6 -0
- package/dist/esm/components/memberPopup/type.js.map +1 -1
- package/dist/esm/templates/Credits.js +1 -1
- package/dist/esm/templates/Credits.js.map +2 -2
- package/dist/esm/templates/Credits.types.d.ts +1 -0
- package/dist/esm/templates/Credits.types.js.map +1 -1
- package/package.json +1 -2
- package/src/components/credits/context/const.ts +1 -0
- package/src/components/credits/context/hooks/useMyRewards.ts +2 -2
- package/src/components/credits/context/hooks/useRedeemCoupon.ts +2 -2
- package/src/components/credits/context/hooks/useRedeemGoGift.ts +2 -2
- package/src/components/credits/context/hooks/useRedeemProduct.ts +2 -2
- package/src/components/credits/context/hooks/useRedeemableList.ts +2 -2
- package/src/components/credits/context/hooks/useSubscribed.ts +0 -1
- package/src/components/credits/context/provider.tsx +4 -0
- package/src/components/credits/creditsRedeemList/AddressForm/index.tsx +3 -3
- package/src/components/index.ts +2 -2
- package/src/components/memberPopup/MemberPopup.tsx +14 -3
- package/src/components/memberPopup/type.ts +6 -0
- package/src/templates/Credits.tsx +1 -0
- package/src/templates/Credits.types.ts +1 -0
- package/src/stories/CartCard.stories.tsx +0 -459
|
@@ -15,7 +15,7 @@ function useMyRewards({
|
|
|
15
15
|
pageSize: number
|
|
16
16
|
consumeType?: AlpcConsumeType
|
|
17
17
|
}) {
|
|
18
|
-
const { profile, alpcBrand } = useCreditsContext()
|
|
18
|
+
const { profile, alpcBrand, alpcCountry } = useCreditsContext()
|
|
19
19
|
const { brand: headlessBrand, locale, appName } = useHeadlessContext()
|
|
20
20
|
const brand = alpcBrand || headlessBrand
|
|
21
21
|
|
|
@@ -34,7 +34,7 @@ function useMyRewards({
|
|
|
34
34
|
url: `/v1/credit/log/coupon`,
|
|
35
35
|
initData: {
|
|
36
36
|
brand: brand,
|
|
37
|
-
country: ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
37
|
+
country: alpcCountry || ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
38
38
|
app_name: appName,
|
|
39
39
|
},
|
|
40
40
|
})
|
|
@@ -13,7 +13,7 @@ type RedeemCouponResponse = {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export const useRedeemCoupon = (mutationOptions: UseMutationConfig<RedeemCouponResponse> = {}) => {
|
|
16
|
-
const { alpcBrand } = useCreditsContext()
|
|
16
|
+
const { alpcBrand, alpcCountry } = useCreditsContext()
|
|
17
17
|
const { locale, appName, brand: headlessBrand } = useHeadlessContext()
|
|
18
18
|
const brand = alpcBrand || headlessBrand
|
|
19
19
|
|
|
@@ -28,7 +28,7 @@ export const useRedeemCoupon = (mutationOptions: UseMutationConfig<RedeemCouponR
|
|
|
28
28
|
url: `/v1/credit/redeem/coupon`,
|
|
29
29
|
initData: {
|
|
30
30
|
brand,
|
|
31
|
-
country: ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
31
|
+
country: alpcCountry || ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
32
32
|
app_name: appName,
|
|
33
33
|
},
|
|
34
34
|
},
|
|
@@ -12,7 +12,7 @@ type RedeemGoGiftResponse = {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export const useRedeemGoGift = (mutationOptions: UseMutationConfig<RedeemGoGiftResponse> = {}) => {
|
|
15
|
-
const { alpcBrand } = useCreditsContext()
|
|
15
|
+
const { alpcBrand, alpcCountry } = useCreditsContext()
|
|
16
16
|
const { locale, appName, brand: headlessBrand } = useHeadlessContext()
|
|
17
17
|
const brand = alpcBrand || headlessBrand
|
|
18
18
|
|
|
@@ -27,7 +27,7 @@ export const useRedeemGoGift = (mutationOptions: UseMutationConfig<RedeemGoGiftR
|
|
|
27
27
|
url: `/v1/credit/redeem/gogift`,
|
|
28
28
|
initData: {
|
|
29
29
|
brand,
|
|
30
|
-
country: ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
30
|
+
country: alpcCountry || ALPC_COUNTRY_MAP.get(locale) || locale,
|
|
31
31
|
app_name: appName,
|
|
32
32
|
},
|
|
33
33
|
},
|
|
@@ -11,7 +11,7 @@ type RedeemProductResponse = {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const useRedeemProduct = (mutationOptions: UseMutationConfig<RedeemProductResponse> = {}) => {
|
|
14
|
-
const { alpcBrand } = useCreditsContext()
|
|
14
|
+
const { alpcBrand, alpcCountry } = useCreditsContext()
|
|
15
15
|
const { storeDomain, locale, appName, brand: headlessBrand } = useHeadlessContext()
|
|
16
16
|
const brand = alpcBrand || headlessBrand
|
|
17
17
|
|
|
@@ -27,7 +27,7 @@ export const useRedeemProduct = (mutationOptions: UseMutationConfig<RedeemProduc
|
|
|
27
27
|
initData: {
|
|
28
28
|
quantity: 1,
|
|
29
29
|
brand,
|
|
30
|
-
country: (ALPC_COUNTRY_MAP.get(locale || '') || locale)?.toUpperCase(),
|
|
30
|
+
country: (alpcCountry || ALPC_COUNTRY_MAP.get(locale || '') || locale)?.toUpperCase(),
|
|
31
31
|
domain: storeDomain,
|
|
32
32
|
app_name: appName,
|
|
33
33
|
},
|
|
@@ -8,7 +8,7 @@ import { useHeadlessContext } from '@anker-in/lib'
|
|
|
8
8
|
|
|
9
9
|
function useRedeemableList(props?: { consumeType: AlpcConsumeType }) {
|
|
10
10
|
let locale = '' as string
|
|
11
|
-
const { profile, isLoadingProfile, alpcBrand } = useCreditsContext()
|
|
11
|
+
const { profile, isLoadingProfile, alpcBrand, alpcCountry } = useCreditsContext()
|
|
12
12
|
const { locale: contextLocale, brand: headlessBrand } = useHeadlessContext()
|
|
13
13
|
const brand = alpcBrand || headlessBrand
|
|
14
14
|
|
|
@@ -30,7 +30,7 @@ function useRedeemableList(props?: { consumeType: AlpcConsumeType }) {
|
|
|
30
30
|
brand,
|
|
31
31
|
page: 1,
|
|
32
32
|
page_size: 999,
|
|
33
|
-
country: (ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),
|
|
33
|
+
country: (alpcCountry || ALPC_COUNTRY_MAP.get(locale) || locale)?.toUpperCase(),
|
|
34
34
|
},
|
|
35
35
|
})
|
|
36
36
|
|
|
@@ -13,7 +13,6 @@ export const useSubscribed = () => {
|
|
|
13
13
|
|
|
14
14
|
const { activities } = useActivities(activitiesOptions)
|
|
15
15
|
const { data: subscription } = useSubscriptions({ email: profile?.email })
|
|
16
|
-
//@ts-ignore
|
|
17
16
|
const subscriptionData = subscription?.data || subscription
|
|
18
17
|
|
|
19
18
|
const isSubscribed = useMemo(() => {
|
|
@@ -22,6 +22,7 @@ type Context = {
|
|
|
22
22
|
pageCommon: CreditsPageCommon
|
|
23
23
|
memberPriceDiscount?: FunctionMemberPriceConfig[]
|
|
24
24
|
alpcBrand?: string
|
|
25
|
+
alpcCountry?: string
|
|
25
26
|
cartConfig?: {
|
|
26
27
|
addToCart: (params: {
|
|
27
28
|
variantList: Array<{
|
|
@@ -57,6 +58,7 @@ export const CreditsContext = createContext<Context>({
|
|
|
57
58
|
pageCommon: {},
|
|
58
59
|
memberPriceDiscount: undefined,
|
|
59
60
|
alpcBrand: undefined,
|
|
61
|
+
alpcCountry: undefined,
|
|
60
62
|
cartConfig: undefined,
|
|
61
63
|
openMyRewardsModal: false,
|
|
62
64
|
setOpenMyRewardsModal: () => {},
|
|
@@ -81,6 +83,7 @@ export function CreditsProvider({
|
|
|
81
83
|
pageCommon,
|
|
82
84
|
memberPriceDiscount,
|
|
83
85
|
alpcBrand,
|
|
86
|
+
alpcCountry,
|
|
84
87
|
cartConfig,
|
|
85
88
|
apiBaseUrl,
|
|
86
89
|
}: PropsWithChildren<Omit<Context, 'openMyRewardsModal' | 'setOpenMyRewardsModal' | 'openActivitiesModal' | 'setOpenActivitiesModal'>>) {
|
|
@@ -104,6 +107,7 @@ export function CreditsProvider({
|
|
|
104
107
|
pageCommon,
|
|
105
108
|
memberPriceDiscount,
|
|
106
109
|
alpcBrand,
|
|
110
|
+
alpcCountry,
|
|
107
111
|
cartConfig,
|
|
108
112
|
apiBaseUrl,
|
|
109
113
|
openMyRewardsModal,
|
|
@@ -12,7 +12,7 @@ import { AddressFormProps } from './type'
|
|
|
12
12
|
import { ROUNDED_BRANDS } from '../../../../constants'
|
|
13
13
|
|
|
14
14
|
export const AddressForm = ({ countries, countriesLoading, form, validate, errors, onChange }: AddressFormProps) => {
|
|
15
|
-
const { profile, customer } = useCreditsContext()
|
|
15
|
+
const { profile, customer, alpcCountry } = useCreditsContext()
|
|
16
16
|
const { locale, brand } = useHeadlessContext()
|
|
17
17
|
const rounded = ROUNDED_BRANDS.includes(brand)
|
|
18
18
|
const [address, setAddress] = useState<Record<string, any>>()
|
|
@@ -45,7 +45,7 @@ export const AddressForm = ({ countries, countriesLoading, form, validate, error
|
|
|
45
45
|
zip: customer?.defaultAddress.zip,
|
|
46
46
|
}
|
|
47
47
|
} else {
|
|
48
|
-
let defaultCountry = ALPC_COUNTRY_MAP.get(locale) || locale
|
|
48
|
+
let defaultCountry = alpcCountry || ALPC_COUNTRY_MAP.get(locale) || locale
|
|
49
49
|
if (defaultCountry === 'UK') {
|
|
50
50
|
defaultCountry = 'GB'
|
|
51
51
|
}
|
|
@@ -57,7 +57,7 @@ export const AddressForm = ({ countries, countriesLoading, form, validate, error
|
|
|
57
57
|
country: defaultCountry,
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
}, [customer, profile?.email, locale])
|
|
60
|
+
}, [customer, profile?.email, locale, alpcCountry])
|
|
61
61
|
|
|
62
62
|
useEffect(() => {
|
|
63
63
|
const defaultAddress = getDefaultAddress()
|
package/src/components/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Chat } from './chat/index
|
|
1
|
+
export { default as Chat } from './chat/index'
|
|
2
2
|
|
|
3
3
|
export {
|
|
4
4
|
Role,
|
|
@@ -7,7 +7,7 @@ export {
|
|
|
7
7
|
useCopilotChat,
|
|
8
8
|
useCopilotAction,
|
|
9
9
|
useCopilotReadable,
|
|
10
|
-
} from './chat/utils
|
|
10
|
+
} from './chat/utils'
|
|
11
11
|
|
|
12
12
|
export * from './credits/index.js'
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { lazy, Suspense, useState, useCallback, useEffect } from 'react'
|
|
3
|
+
import { lazy, Suspense, useState, useCallback, useEffect, type CSSProperties } from 'react'
|
|
4
4
|
import { Picture } from '@anker-in/headless-ui'
|
|
5
5
|
import { gaTrack, type HeadlessConfig, useHeadlessContext, classNames as cn } from '@anker-in/lib'
|
|
6
6
|
import {
|
|
@@ -34,6 +34,7 @@ type MemberPopupProps = MemberPopupContextValue & {
|
|
|
34
34
|
|
|
35
35
|
export function MemberPopup({ copy, bottomOffset = '24px', ...providerProps }: MemberPopupProps) {
|
|
36
36
|
const [isVisible, setIsVisible] = useState(false)
|
|
37
|
+
const effectiveBottomOffset = copy.bottomOffset ?? bottomOffset
|
|
37
38
|
|
|
38
39
|
useEffect(() => {
|
|
39
40
|
const config = copy.pageConfig
|
|
@@ -57,7 +58,7 @@ export function MemberPopup({ copy, bottomOffset = '24px', ...providerProps }: M
|
|
|
57
58
|
|
|
58
59
|
return isVisible ? (
|
|
59
60
|
<MemberPopupProvider {...providerProps} earnCreditsCopy={copy.earnCredits}>
|
|
60
|
-
<MemberPopupContent copy={copy} bottomOffset={
|
|
61
|
+
<MemberPopupContent copy={copy} bottomOffset={effectiveBottomOffset} />
|
|
61
62
|
</MemberPopupProvider>
|
|
62
63
|
) : null
|
|
63
64
|
}
|
|
@@ -267,7 +268,17 @@ function MemberPopupContent({ copy, bottomOffset }: MemberPopupContentProps) {
|
|
|
267
268
|
}}
|
|
268
269
|
aria-label={copy.triggerImg.alt ?? 'Open member popup'}
|
|
269
270
|
>
|
|
270
|
-
<
|
|
271
|
+
<div
|
|
272
|
+
className="size-[var(--member-popup-pc-icon-size)] md:size-[var(--member-popup-mobile-icon-size)]"
|
|
273
|
+
style={
|
|
274
|
+
{
|
|
275
|
+
'--member-popup-pc-icon-size': copy.pcIconSize ?? '58px',
|
|
276
|
+
'--member-popup-mobile-icon-size': copy.mobileIconSize ?? copy.pcIconSize ?? '58px',
|
|
277
|
+
} as CSSProperties
|
|
278
|
+
}
|
|
279
|
+
>
|
|
280
|
+
<Picture source={copy.triggerImg.url} alt={copy.triggerImg.alt ?? ''} className="size-full" />
|
|
281
|
+
</div>
|
|
271
282
|
</button>
|
|
272
283
|
</div>
|
|
273
284
|
</ViewStackContext.Provider>
|
|
@@ -89,6 +89,12 @@ export type MemberPopupCopy = {
|
|
|
89
89
|
referral?: ReferralCopy
|
|
90
90
|
/** 页面覆盖范围配置,默认全局展示 */
|
|
91
91
|
pageConfig?: MemberPopupPageConfig
|
|
92
|
+
/** 悬浮窗距离底部的距离,设置后优先于组件 bottomOffset prop(默认 '24px') */
|
|
93
|
+
bottomOffset?: string
|
|
94
|
+
/** 触发按钮图标尺寸(PC 端,默认 '58px') */
|
|
95
|
+
pcIconSize?: string
|
|
96
|
+
/** 触发按钮图标尺寸(移动端,默认 '58px') */
|
|
97
|
+
mobileIconSize?: string
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
// ─── EarnCredits Copy ────────────────────────────────
|
|
@@ -166,6 +166,7 @@ export const CreditsTemplate = ({
|
|
|
166
166
|
pageCommon={pageConfig.common}
|
|
167
167
|
memberPriceDiscount={siteConfig.memberPriceDiscount}
|
|
168
168
|
alpcBrand={creditsConfig?.alpcBrand}
|
|
169
|
+
alpcCountry={creditsConfig?.alpcCountry}
|
|
169
170
|
cartConfig={cartConfig}
|
|
170
171
|
apiBaseUrl={userContext?.apiBaseUrl}
|
|
171
172
|
>
|