@anker-in/campaign-ui 0.5.0-beta.2 → 0.5.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/useSubscribed.js.map +2 -2
- package/dist/cjs/components/index.d.ts +2 -3
- package/dist/cjs/components/index.js +1 -1
- package/dist/cjs/components/index.js.map +2 -2
- package/dist/cjs/stories/CartCard.stories.d.ts +33 -0
- package/dist/cjs/stories/CartCard.stories.js +21 -0
- package/dist/cjs/stories/CartCard.stories.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/useSubscribed.js.map +2 -2
- package/dist/esm/components/index.d.ts +2 -3
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/stories/CartCard.stories.d.ts +33 -0
- package/dist/esm/stories/CartCard.stories.js +21 -0
- package/dist/esm/stories/CartCard.stories.js.map +7 -0
- package/package.json +2 -1
- package/src/components/LiveChatWidget/components/MessageContent/TextBlock.tsx +7 -5
- package/src/components/credits/context/hooks/useSubscribed.ts +1 -0
- package/src/components/index.ts +2 -4
- package/src/stories/CartCard.stories.tsx +459 -0
- package/tailwind.config.ts +0 -4
- package/dist/cjs/components/memberPopup/MemberPopup.d.ts +0 -9
- package/dist/cjs/components/memberPopup/MemberPopup.js +0 -2
- package/dist/cjs/components/memberPopup/MemberPopup.js.map +0 -7
- package/dist/cjs/components/memberPopup/context/provider.d.ts +0 -11
- package/dist/cjs/components/memberPopup/context/provider.js +0 -2
- package/dist/cjs/components/memberPopup/context/provider.js.map +0 -7
- package/dist/cjs/components/memberPopup/context/viewStack.d.ts +0 -12
- package/dist/cjs/components/memberPopup/context/viewStack.js +0 -2
- package/dist/cjs/components/memberPopup/context/viewStack.js.map +0 -7
- package/dist/cjs/components/memberPopup/icons.d.ts +0 -27
- package/dist/cjs/components/memberPopup/icons.js +0 -2
- package/dist/cjs/components/memberPopup/icons.js.map +0 -7
- package/dist/cjs/components/memberPopup/index.d.ts +0 -4
- package/dist/cjs/components/memberPopup/index.js +0 -2
- package/dist/cjs/components/memberPopup/index.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.d.ts +0 -10
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Activity/SubscribeModal.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.d.ts +0 -7
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Activity/index.d.ts +0 -7
- package/dist/cjs/components/memberPopup/panels/Activity/index.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Activity/index.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.d.ts +0 -19
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.d.ts +0 -20
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.d.ts +0 -12
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.d.ts +0 -17
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.d.ts +0 -8
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.d.ts +0 -7
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.js +0 -2
- package/dist/cjs/components/memberPopup/panels/ConsumeCredits/index.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.d.ts +0 -8
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.d.ts +0 -10
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.d.ts +0 -9
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.d.ts +0 -9
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.d.ts +0 -10
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribeModal.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.d.ts +0 -9
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/SubscribePanel.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.d.ts +0 -18
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.d.ts +0 -9
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +0 -17
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.d.ts +0 -13
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.js +0 -2
- package/dist/cjs/components/memberPopup/panels/EarnCredits/index.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.d.ts +0 -13
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.d.ts +0 -12
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +0 -7
- package/dist/cjs/components/memberPopup/panels/Referral/index.d.ts +0 -7
- package/dist/cjs/components/memberPopup/panels/Referral/index.js +0 -2
- package/dist/cjs/components/memberPopup/panels/Referral/index.js.map +0 -7
- package/dist/cjs/components/memberPopup/type.d.ts +0 -216
- package/dist/cjs/components/memberPopup/type.js +0 -2
- package/dist/cjs/components/memberPopup/type.js.map +0 -7
- package/dist/esm/components/memberPopup/MemberPopup.d.ts +0 -9
- package/dist/esm/components/memberPopup/MemberPopup.js +0 -2
- package/dist/esm/components/memberPopup/MemberPopup.js.map +0 -7
- package/dist/esm/components/memberPopup/context/provider.d.ts +0 -11
- package/dist/esm/components/memberPopup/context/provider.js +0 -2
- package/dist/esm/components/memberPopup/context/provider.js.map +0 -7
- package/dist/esm/components/memberPopup/context/viewStack.d.ts +0 -12
- package/dist/esm/components/memberPopup/context/viewStack.js +0 -2
- package/dist/esm/components/memberPopup/context/viewStack.js.map +0 -7
- package/dist/esm/components/memberPopup/icons.d.ts +0 -27
- package/dist/esm/components/memberPopup/icons.js +0 -2
- package/dist/esm/components/memberPopup/icons.js.map +0 -7
- package/dist/esm/components/memberPopup/index.d.ts +0 -4
- package/dist/esm/components/memberPopup/index.js +0 -2
- package/dist/esm/components/memberPopup/index.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.d.ts +0 -10
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.js +0 -2
- package/dist/esm/components/memberPopup/panels/Activity/SubscribeModal.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.d.ts +0 -7
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js +0 -2
- package/dist/esm/components/memberPopup/panels/Activity/hooks/useActivitySubscribe.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Activity/index.d.ts +0 -7
- package/dist/esm/components/memberPopup/panels/Activity/index.js +0 -2
- package/dist/esm/components/memberPopup/panels/Activity/index.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.d.ts +0 -19
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.d.ts +0 -20
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.d.ts +0 -12
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.d.ts +0 -17
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.d.ts +0 -8
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.d.ts +0 -7
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.js +0 -2
- package/dist/esm/components/memberPopup/panels/ConsumeCredits/index.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.d.ts +0 -8
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/ActivatePanel.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.d.ts +0 -10
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfileModal.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.d.ts +0 -9
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.d.ts +0 -9
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.d.ts +0 -10
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribeModal.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.d.ts +0 -9
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/SubscribePanel.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.d.ts +0 -18
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useActivities.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.d.ts +0 -9
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.d.ts +0 -17
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.d.ts +0 -13
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.js +0 -2
- package/dist/esm/components/memberPopup/panels/EarnCredits/index.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.d.ts +0 -13
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js +0 -2
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralDashboard.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.d.ts +0 -12
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js +0 -2
- package/dist/esm/components/memberPopup/panels/Referral/hooks/useReferralOverview.js.map +0 -7
- package/dist/esm/components/memberPopup/panels/Referral/index.d.ts +0 -7
- package/dist/esm/components/memberPopup/panels/Referral/index.js +0 -2
- package/dist/esm/components/memberPopup/panels/Referral/index.js.map +0 -7
- package/dist/esm/components/memberPopup/type.d.ts +0 -216
- package/dist/esm/components/memberPopup/type.js +0 -2
- package/dist/esm/components/memberPopup/type.js.map +0 -7
- package/dist/index.d.mts +0 -1775
- package/dist/index.d.ts +0 -1775
- package/dist/index.js +0 -18542
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -18514
- package/dist/index.mjs.map +0 -1
- package/src/components/memberPopup/MemberPopup.tsx +0 -325
- package/src/components/memberPopup/context/provider.tsx +0 -52
- package/src/components/memberPopup/context/viewStack.tsx +0 -23
- package/src/components/memberPopup/icons.tsx +0 -147
- package/src/components/memberPopup/index.ts +0 -24
- package/src/components/memberPopup/panels/ConsumeCredits/RedeemCouponModal.tsx +0 -150
- package/src/components/memberPopup/panels/ConsumeCredits/RedeemCouponPanel.tsx +0 -142
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemAndBuy.ts +0 -33
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemCoupon.ts +0 -38
- package/src/components/memberPopup/panels/ConsumeCredits/hooks/useRedeemableList.ts +0 -55
- package/src/components/memberPopup/panels/ConsumeCredits/index.tsx +0 -220
- package/src/components/memberPopup/panels/EarnCredits/ActivatePanel.tsx +0 -323
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfileModal.tsx +0 -186
- package/src/components/memberPopup/panels/EarnCredits/CompleteProfilePanel.tsx +0 -179
- package/src/components/memberPopup/panels/EarnCredits/SubscribeEmailPanel.tsx +0 -130
- package/src/components/memberPopup/panels/EarnCredits/SubscribeModal.tsx +0 -144
- package/src/components/memberPopup/panels/EarnCredits/SubscribePanel.tsx +0 -147
- package/src/components/memberPopup/panels/EarnCredits/hooks/useActivities.ts +0 -64
- package/src/components/memberPopup/panels/EarnCredits/hooks/useSubscribed.ts +0 -32
- package/src/components/memberPopup/panels/EarnCredits/hooks/useUpdateProfile.ts +0 -50
- package/src/components/memberPopup/panels/EarnCredits/index.tsx +0 -215
- package/src/components/memberPopup/panels/Referral/hooks/useReferralOverview.ts +0 -41
- package/src/components/memberPopup/panels/Referral/index.tsx +0 -108
- package/src/components/memberPopup/type.ts +0 -230
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CartCard Storybook Stories
|
|
3
|
+
* 展示购物车卡片组件的各种状态
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Meta, StoryObj } from '@storybook/react'
|
|
7
|
+
import React from 'react'
|
|
8
|
+
import { CartCard } from '../components/LiveChatWidget/components/MessageContent/CartCard.js'
|
|
9
|
+
import type { CartContent } from '../components/LiveChatWidget/types'
|
|
10
|
+
|
|
11
|
+
// Story 包装组件
|
|
12
|
+
const CartCardWrapper: React.FC<{ content: CartContent }> = ({ content }) => {
|
|
13
|
+
return (
|
|
14
|
+
<div className="flex min-h-screen items-center justify-center bg-gray-100 p-4">
|
|
15
|
+
<div className="w-full max-w-md">{CartCard.render(content, false, false)}</div>
|
|
16
|
+
</div>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const meta: Meta<typeof CartCardWrapper> = {
|
|
21
|
+
title: 'Campaign/LiveChatWidget/MessageContent/CartCard',
|
|
22
|
+
component: CartCardWrapper,
|
|
23
|
+
parameters: {
|
|
24
|
+
layout: 'fullscreen',
|
|
25
|
+
docs: {
|
|
26
|
+
description: {
|
|
27
|
+
component: `
|
|
28
|
+
# 购物车卡片组件
|
|
29
|
+
|
|
30
|
+
显示用户购物车内容,包括商品列表、价格汇总和结账按钮。
|
|
31
|
+
|
|
32
|
+
## 功能特性
|
|
33
|
+
|
|
34
|
+
- 📦 **商品列表**: 展示购物车中的所有商品
|
|
35
|
+
- 💰 **价格汇总**: 显示小计、折扣和总计
|
|
36
|
+
- 🎟️ **折扣码**: 显示已应用的折扣码及其状态
|
|
37
|
+
- 🛒 **结账按钮**: 一键跳转到 Shopify 结账页面
|
|
38
|
+
- 🈳 **空状态**: 优雅的空购物车提示
|
|
39
|
+
|
|
40
|
+
## 使用场景
|
|
41
|
+
|
|
42
|
+
- 用户添加商品到购物车后 (add_to_cart)
|
|
43
|
+
- 用户查询购物车内容 (get_cart)
|
|
44
|
+
- 用户修改购物车数量 (update_cart_item)
|
|
45
|
+
- 用户应用折扣码 (update_discount_codes)
|
|
46
|
+
`,
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
tags: ['autodocs'],
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export default meta
|
|
54
|
+
|
|
55
|
+
type Story = StoryObj<typeof CartCardWrapper>
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 空购物车状态
|
|
59
|
+
*/
|
|
60
|
+
export const Empty: Story = {
|
|
61
|
+
args: {
|
|
62
|
+
content: {
|
|
63
|
+
type: 'cart',
|
|
64
|
+
data: {
|
|
65
|
+
isEmpty: true,
|
|
66
|
+
cartId: 'gid://shopify/Cart/empty',
|
|
67
|
+
totalQuantity: 0,
|
|
68
|
+
lines: [],
|
|
69
|
+
cost: {
|
|
70
|
+
totalAmount: {
|
|
71
|
+
amount: '0.00',
|
|
72
|
+
currencyCode: 'USD',
|
|
73
|
+
},
|
|
74
|
+
subtotalAmount: {
|
|
75
|
+
amount: '0.00',
|
|
76
|
+
currencyCode: 'USD',
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* 单件商品
|
|
86
|
+
*/
|
|
87
|
+
export const SingleItem: Story = {
|
|
88
|
+
args: {
|
|
89
|
+
content: {
|
|
90
|
+
type: 'cart',
|
|
91
|
+
data: {
|
|
92
|
+
isEmpty: false,
|
|
93
|
+
cartId: 'gid://shopify/Cart/Z2NwLXVzLWVhc3QxOjAxSkZHRjA4VkFRQkhON1dBMTNLREZEVEZH',
|
|
94
|
+
totalQuantity: 1,
|
|
95
|
+
lines: [
|
|
96
|
+
{
|
|
97
|
+
id: 'gid://shopify/CartLine/12345',
|
|
98
|
+
quantity: 1,
|
|
99
|
+
cost: {
|
|
100
|
+
totalAmount: {
|
|
101
|
+
amount: '99.99',
|
|
102
|
+
currencyCode: 'USD',
|
|
103
|
+
},
|
|
104
|
+
amountPerQuantity: {
|
|
105
|
+
amount: '99.99',
|
|
106
|
+
currencyCode: 'USD',
|
|
107
|
+
},
|
|
108
|
+
subtotalAmount: {
|
|
109
|
+
amount: '99.99',
|
|
110
|
+
currencyCode: 'USD',
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
merchandise: {
|
|
114
|
+
id: 'gid://shopify/ProductVariant/43234567890',
|
|
115
|
+
title: 'Black',
|
|
116
|
+
price: {
|
|
117
|
+
amount: '99.99',
|
|
118
|
+
currencyCode: 'USD',
|
|
119
|
+
},
|
|
120
|
+
image: {
|
|
121
|
+
url: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&fit=crop',
|
|
122
|
+
altText: 'Soundcore Space One',
|
|
123
|
+
},
|
|
124
|
+
product: {
|
|
125
|
+
id: 'gid://shopify/Product/8179159826618',
|
|
126
|
+
title: 'Soundcore Space One',
|
|
127
|
+
handle: 'soundcore-space-one',
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
cost: {
|
|
133
|
+
totalAmount: {
|
|
134
|
+
amount: '99.99',
|
|
135
|
+
currencyCode: 'USD',
|
|
136
|
+
},
|
|
137
|
+
subtotalAmount: {
|
|
138
|
+
amount: '99.99',
|
|
139
|
+
currencyCode: 'USD',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
checkoutUrl: 'https://checkout.shopify.com/example',
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* 多件商品
|
|
150
|
+
*/
|
|
151
|
+
export const MultipleItems: Story = {
|
|
152
|
+
args: {
|
|
153
|
+
content: {
|
|
154
|
+
type: 'cart',
|
|
155
|
+
data: {
|
|
156
|
+
isEmpty: false,
|
|
157
|
+
cartId: 'gid://shopify/Cart/Z2NwLXVzLWVhc3QxOjAxSkZHRjA4VkFRQkhON1dBMTNLREZEVEZH',
|
|
158
|
+
totalQuantity: 5,
|
|
159
|
+
lines: [
|
|
160
|
+
{
|
|
161
|
+
id: 'gid://shopify/CartLine/12345',
|
|
162
|
+
quantity: 2,
|
|
163
|
+
cost: {
|
|
164
|
+
totalAmount: {
|
|
165
|
+
amount: '199.98',
|
|
166
|
+
currencyCode: 'USD',
|
|
167
|
+
},
|
|
168
|
+
amountPerQuantity: {
|
|
169
|
+
amount: '99.99',
|
|
170
|
+
currencyCode: 'USD',
|
|
171
|
+
},
|
|
172
|
+
subtotalAmount: {
|
|
173
|
+
amount: '199.98',
|
|
174
|
+
currencyCode: 'USD',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
merchandise: {
|
|
178
|
+
id: 'gid://shopify/ProductVariant/43234567890',
|
|
179
|
+
title: 'Black',
|
|
180
|
+
price: {
|
|
181
|
+
amount: '99.99',
|
|
182
|
+
currencyCode: 'USD',
|
|
183
|
+
},
|
|
184
|
+
image: {
|
|
185
|
+
url: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&fit=crop',
|
|
186
|
+
altText: 'Soundcore Space One',
|
|
187
|
+
},
|
|
188
|
+
product: {
|
|
189
|
+
id: 'gid://shopify/Product/8179159826618',
|
|
190
|
+
title: 'Soundcore Space One',
|
|
191
|
+
handle: 'soundcore-space-one',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'gid://shopify/CartLine/12346',
|
|
197
|
+
quantity: 1,
|
|
198
|
+
cost: {
|
|
199
|
+
totalAmount: {
|
|
200
|
+
amount: '129.99',
|
|
201
|
+
currencyCode: 'USD',
|
|
202
|
+
},
|
|
203
|
+
amountPerQuantity: {
|
|
204
|
+
amount: '129.99',
|
|
205
|
+
currencyCode: 'USD',
|
|
206
|
+
},
|
|
207
|
+
subtotalAmount: {
|
|
208
|
+
amount: '129.99',
|
|
209
|
+
currencyCode: 'USD',
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
merchandise: {
|
|
213
|
+
id: 'gid://shopify/ProductVariant/43234567891',
|
|
214
|
+
title: 'White',
|
|
215
|
+
price: {
|
|
216
|
+
amount: '129.99',
|
|
217
|
+
currencyCode: 'USD',
|
|
218
|
+
},
|
|
219
|
+
image: {
|
|
220
|
+
url: 'https://images.unsplash.com/photo-1484704849700-f032a568e944?w=400&h=400&fit=crop',
|
|
221
|
+
altText: 'eufy Security Camera',
|
|
222
|
+
},
|
|
223
|
+
product: {
|
|
224
|
+
id: 'gid://shopify/Product/8179159826619',
|
|
225
|
+
title: 'eufy Security Camera',
|
|
226
|
+
handle: 'eufy-security-camera',
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
id: 'gid://shopify/CartLine/12347',
|
|
232
|
+
quantity: 2,
|
|
233
|
+
cost: {
|
|
234
|
+
totalAmount: {
|
|
235
|
+
amount: '79.98',
|
|
236
|
+
currencyCode: 'USD',
|
|
237
|
+
},
|
|
238
|
+
amountPerQuantity: {
|
|
239
|
+
amount: '39.99',
|
|
240
|
+
currencyCode: 'USD',
|
|
241
|
+
},
|
|
242
|
+
subtotalAmount: {
|
|
243
|
+
amount: '79.98',
|
|
244
|
+
currencyCode: 'USD',
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
merchandise: {
|
|
248
|
+
id: 'gid://shopify/ProductVariant/43234567892',
|
|
249
|
+
title: 'USB-C Cable',
|
|
250
|
+
price: {
|
|
251
|
+
amount: '39.99',
|
|
252
|
+
currencyCode: 'USD',
|
|
253
|
+
},
|
|
254
|
+
image: {
|
|
255
|
+
url: 'https://images.unsplash.com/photo-1583863788434-e58a36330cf0?w=400&h=400&fit=crop',
|
|
256
|
+
altText: 'Anker USB-C Cable',
|
|
257
|
+
},
|
|
258
|
+
product: {
|
|
259
|
+
id: 'gid://shopify/Product/8179159826620',
|
|
260
|
+
title: 'Anker USB-C Cable 6ft',
|
|
261
|
+
handle: 'anker-usb-c-cable',
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
],
|
|
266
|
+
cost: {
|
|
267
|
+
totalAmount: {
|
|
268
|
+
amount: '409.95',
|
|
269
|
+
currencyCode: 'USD',
|
|
270
|
+
},
|
|
271
|
+
subtotalAmount: {
|
|
272
|
+
amount: '409.95',
|
|
273
|
+
currencyCode: 'USD',
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
checkoutUrl: 'https://checkout.shopify.com/example',
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* 有折扣码的购物车
|
|
284
|
+
*/
|
|
285
|
+
export const WithDiscount: Story = {
|
|
286
|
+
args: {
|
|
287
|
+
content: {
|
|
288
|
+
type: 'cart',
|
|
289
|
+
data: {
|
|
290
|
+
isEmpty: false,
|
|
291
|
+
cartId: 'gid://shopify/Cart/Z2NwLXVzLWVhc3QxOjAxSkZHRjA4VkFRQkhON1dBMTNLREZEVEZH',
|
|
292
|
+
totalQuantity: 3,
|
|
293
|
+
lines: [
|
|
294
|
+
{
|
|
295
|
+
id: 'gid://shopify/CartLine/12345',
|
|
296
|
+
quantity: 2,
|
|
297
|
+
cost: {
|
|
298
|
+
totalAmount: {
|
|
299
|
+
amount: '199.98',
|
|
300
|
+
currencyCode: 'USD',
|
|
301
|
+
},
|
|
302
|
+
amountPerQuantity: {
|
|
303
|
+
amount: '99.99',
|
|
304
|
+
currencyCode: 'USD',
|
|
305
|
+
},
|
|
306
|
+
subtotalAmount: {
|
|
307
|
+
amount: '199.98',
|
|
308
|
+
currencyCode: 'USD',
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
merchandise: {
|
|
312
|
+
id: 'gid://shopify/ProductVariant/43234567890',
|
|
313
|
+
title: 'Black',
|
|
314
|
+
price: {
|
|
315
|
+
amount: '99.99',
|
|
316
|
+
currencyCode: 'USD',
|
|
317
|
+
},
|
|
318
|
+
image: {
|
|
319
|
+
url: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&fit=crop',
|
|
320
|
+
altText: 'Soundcore Space One',
|
|
321
|
+
},
|
|
322
|
+
product: {
|
|
323
|
+
id: 'gid://shopify/Product/8179159826618',
|
|
324
|
+
title: 'Soundcore Space One',
|
|
325
|
+
handle: 'soundcore-space-one',
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
id: 'gid://shopify/CartLine/12346',
|
|
331
|
+
quantity: 1,
|
|
332
|
+
cost: {
|
|
333
|
+
totalAmount: {
|
|
334
|
+
amount: '129.99',
|
|
335
|
+
currencyCode: 'USD',
|
|
336
|
+
},
|
|
337
|
+
amountPerQuantity: {
|
|
338
|
+
amount: '129.99',
|
|
339
|
+
currencyCode: 'USD',
|
|
340
|
+
},
|
|
341
|
+
subtotalAmount: {
|
|
342
|
+
amount: '129.99',
|
|
343
|
+
currencyCode: 'USD',
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
merchandise: {
|
|
347
|
+
id: 'gid://shopify/ProductVariant/43234567891',
|
|
348
|
+
title: 'White',
|
|
349
|
+
price: {
|
|
350
|
+
amount: '129.99',
|
|
351
|
+
currencyCode: 'USD',
|
|
352
|
+
},
|
|
353
|
+
image: {
|
|
354
|
+
url: 'https://images.unsplash.com/photo-1484704849700-f032a568e944?w=400&h=400&fit=crop',
|
|
355
|
+
altText: 'eufy Security Camera',
|
|
356
|
+
},
|
|
357
|
+
product: {
|
|
358
|
+
id: 'gid://shopify/Product/8179159826619',
|
|
359
|
+
title: 'eufy Security Camera',
|
|
360
|
+
handle: 'eufy-security-camera',
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
],
|
|
365
|
+
cost: {
|
|
366
|
+
totalAmount: {
|
|
367
|
+
amount: '296.97',
|
|
368
|
+
currencyCode: 'USD',
|
|
369
|
+
},
|
|
370
|
+
subtotalAmount: {
|
|
371
|
+
amount: '329.97',
|
|
372
|
+
currencyCode: 'USD',
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
discountCodes: [
|
|
376
|
+
{
|
|
377
|
+
code: 'SPRING20',
|
|
378
|
+
applicable: true,
|
|
379
|
+
},
|
|
380
|
+
],
|
|
381
|
+
checkoutUrl: 'https://checkout.shopify.com/example',
|
|
382
|
+
},
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* 多个折扣码(部分失效)
|
|
389
|
+
*/
|
|
390
|
+
export const WithMultipleDiscounts: Story = {
|
|
391
|
+
args: {
|
|
392
|
+
content: {
|
|
393
|
+
type: 'cart',
|
|
394
|
+
data: {
|
|
395
|
+
isEmpty: false,
|
|
396
|
+
cartId: 'gid://shopify/Cart/Z2NwLXVzLWVhc3QxOjAxSkZHRjA4VkFRQkhON1dBMTNLREZEVEZH',
|
|
397
|
+
totalQuantity: 2,
|
|
398
|
+
lines: [
|
|
399
|
+
{
|
|
400
|
+
id: 'gid://shopify/CartLine/12345',
|
|
401
|
+
quantity: 2,
|
|
402
|
+
cost: {
|
|
403
|
+
totalAmount: {
|
|
404
|
+
amount: '199.98',
|
|
405
|
+
currencyCode: 'USD',
|
|
406
|
+
},
|
|
407
|
+
amountPerQuantity: {
|
|
408
|
+
amount: '99.99',
|
|
409
|
+
currencyCode: 'USD',
|
|
410
|
+
},
|
|
411
|
+
subtotalAmount: {
|
|
412
|
+
amount: '199.98',
|
|
413
|
+
currencyCode: 'USD',
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
merchandise: {
|
|
417
|
+
id: 'gid://shopify/ProductVariant/43234567890',
|
|
418
|
+
title: 'Black',
|
|
419
|
+
price: {
|
|
420
|
+
amount: '99.99',
|
|
421
|
+
currencyCode: 'USD',
|
|
422
|
+
},
|
|
423
|
+
image: {
|
|
424
|
+
url: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=400&h=400&fit=crop',
|
|
425
|
+
altText: 'Soundcore Space One',
|
|
426
|
+
},
|
|
427
|
+
product: {
|
|
428
|
+
id: 'gid://shopify/Product/8179159826618',
|
|
429
|
+
title: 'Soundcore Space One',
|
|
430
|
+
handle: 'soundcore-space-one',
|
|
431
|
+
},
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
],
|
|
435
|
+
cost: {
|
|
436
|
+
totalAmount: {
|
|
437
|
+
amount: '179.98',
|
|
438
|
+
currencyCode: 'USD',
|
|
439
|
+
},
|
|
440
|
+
subtotalAmount: {
|
|
441
|
+
amount: '199.98',
|
|
442
|
+
currencyCode: 'USD',
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
discountCodes: [
|
|
446
|
+
{
|
|
447
|
+
code: 'WELCOME10',
|
|
448
|
+
applicable: true,
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
code: 'EXPIRED20',
|
|
452
|
+
applicable: false,
|
|
453
|
+
},
|
|
454
|
+
],
|
|
455
|
+
checkoutUrl: 'https://checkout.shopify.com/example',
|
|
456
|
+
},
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
}
|
package/tailwind.config.ts
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type HeadlessConfig } from '@anker-in/lib';
|
|
2
|
-
import { type MemberPopupCopy, type MemberPopupContextValue } from './type';
|
|
3
|
-
type MemberPopupProps = MemberPopupContextValue & {
|
|
4
|
-
headlessConfig: HeadlessConfig;
|
|
5
|
-
copy: MemberPopupCopy;
|
|
6
|
-
bottomOffset?: string;
|
|
7
|
-
};
|
|
8
|
-
export declare function MemberPopup({ copy, bottomOffset, ...providerProps }: MemberPopupProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";"use client";var U=Object.create;var g=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var G=(e,n)=>{for(var i in n)g(e,i,{get:n[i],enumerable:!0})},k=(e,n,i,d)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of W(n))!F.call(e,l)&&l!==i&&g(e,l,{get:()=>n[l],enumerable:!(d=B(n,l))||d.enumerable});return e};var m=(e,n,i)=>(i=e!=null?U(q(e)):{},k(n||!e||!e.__esModule?g(i,"default",{value:e,enumerable:!0}):i,e)),J=e=>k(g({},"__esModule",{value:!0}),e);var ne={};G(ne,{MemberPopup:()=>se});module.exports=J(ne);var t=require("react/jsx-runtime"),r=require("react"),M=require("@anker-in/headless-ui"),f=require("@anker-in/lib"),s=require("./type"),O=require("./context/provider"),A=require("./context/provider"),V=require("./context/viewStack"),a=require("./icons"),R=require("../../constants");const K=(0,r.lazy)(()=>import("./panels/EarnCredits")),Q=(0,r.lazy)(()=>import("./panels/ConsumeCredits")),X=(0,r.lazy)(()=>import("./panels/Referral")),Y=(0,r.lazy)(()=>import("./panels/EarnCredits/CompleteProfilePanel")),Z=(0,r.lazy)(()=>import("./panels/EarnCredits/SubscribePanel")),$=(0,r.lazy)(()=>import("./panels/EarnCredits/SubscribeEmailPanel")),ee=(0,r.lazy)(()=>import("./panels/EarnCredits/ActivatePanel")),te=(0,r.lazy)(()=>import("./panels/ConsumeCredits/RedeemCouponPanel"));function se({copy:e,bottomOffset:n="24px",...i}){return(0,t.jsx)(O.MemberPopupProvider,{...i,earnCreditsCopy:e.earnCredits,children:(0,t.jsx)(oe,{copy:e,bottomOffset:n})})}function oe({copy:e,bottomOffset:n}){const{profile:i,openSignInPopup:d,openSignUpPopup:l}=(0,A.useMemberPopupContext)(),{brand:x,storeDomain:C}=(0,f.useHeadlessContext)(),v=R.ROUNDED_BRANDS.includes(x),z=!!i,[S,N]=(0,r.useState)(!1),[w,P]=(0,r.useState)([]),[E,H]=(0,r.useState)(!1),[T,j]=(0,r.useState)(!1),[_,D]=(0,r.useState)(!1),o=w[w.length-1]??null;if(!(0,r.useMemo)(()=>{const p=e.pageConfig;if(!p)return!0;const u=typeof window<"u"?window.location.pathname:"",y=p.pages.some(I=>u===I||u.startsWith(I+"/"));switch(p.scope){case s.MemberPopupPageScope.Include:return y;case s.MemberPopupPageScope.Exclude:return!y;default:return!0}},[e.pageConfig]))return null;const b=(0,r.useCallback)(p=>{P(u=>[...u,p])},[]),c=(0,r.useCallback)(()=>{P(p=>p.slice(0,-1))},[]);function L(p,u){switch(p){case s.MemberPopupActionType.ExternalLink:u&&window.open(u,"_blank","noopener,noreferrer");break;case s.MemberPopupActionType.OpenEarnCredits:b({type:s.MemberPopupPanelType.EarnCredits});break;case s.MemberPopupActionType.OpenConsumeCredits:b({type:s.MemberPopupPanelType.ConsumeCredits});break;case s.MemberPopupActionType.OpenReferral:b({type:s.MemberPopupPanelType.Referral});break;case s.MemberPopupActionType.OpenSubscribe:b({type:s.MemberPopupPanelType.Subscribe});break}}function h(){N(!1),P([])}return(0,t.jsxs)(V.ViewStackContext.Provider,{value:{pushView:b,popView:c},children:[S&&(0,t.jsx)("div",{className:"fixed inset-0 z-[998]",onClick:h}),(0,t.jsxs)("div",{className:"fixed right-0 z-[999] flex flex-col items-end pr-[16px]",style:{bottom:n},children:[S&&(0,t.jsxs)("div",{className:(0,f.classNames)("relative mb-[8px] flex w-[420px] max-w-[calc(100vw-32px)] min-h-[600px] flex-col overflow-hidden bg-white shadow-[0_8px_32px_rgba(0,0,0,0.16)] cmp-md:w-[358px] cmp-sm:w-[258px]",v?"rounded-[12px]":"rounded-none"),onClick:p=>p.stopPropagation(),children:[(0,t.jsx)("div",{className:"absolute right-[-8px] top-[24px] size-0 border-y-8 border-l-8 border-y-transparent border-l-white"}),(0,t.jsxs)("div",{className:"flex items-center justify-end pl-[10px] pr-[16px] pb-[8px] pt-[16px]",children:[o!==null&&(0,t.jsx)("button",{className:"mr-auto flex size-[24px] cursor-pointer items-center justify-center",onClick:c,"aria-label":"Back",children:(0,t.jsx)(a.IconSwitch,{})}),(0,t.jsx)("button",{className:"flex size-[24px] cursor-pointer items-center justify-center",onClick:h,"aria-label":"Close",children:(0,t.jsx)(a.IconClose,{})})]}),(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-[12px] overflow-y-auto p-[16px]",style:{maxHeight:"min(calc(80vh - 118px), 606px)"},children:[o===null&&(0,t.jsxs)(t.Fragment,{children:[(e.title||e.subtitle)&&(0,t.jsxs)("div",{className:"flex flex-col gap-[4px]",children:[e.title&&(0,t.jsx)("h2",{className:"text-[24px] font-[700] leading-[1.2] text-[#080a0f]",children:e.title}),e.subtitle&&(0,t.jsx)("p",{className:"text-[16px] font-[700] leading-snug text-[#4a4c56]",children:e.subtitle})]}),e.list.map((p,u)=>(0,t.jsx)(re,{item:p,onAction:L,rounded:v},u))]}),o!==null&&(0,t.jsxs)(r.Suspense,{fallback:(0,t.jsx)("div",{className:"flex items-center justify-center py-[32px]",children:(0,t.jsx)("div",{className:"size-[32px] animate-spin rounded-full border-[3px] border-[#080a0f] border-t-transparent"})}),children:[o.type===s.MemberPopupPanelType.EarnCredits&&e.earnCredits&&(0,t.jsx)(K,{copy:e.earnCredits,onClose:c,isSubscribeSuccess:E,isActivateSuccess:T,isProfileCompleteSuccess:_,onSubscribeSuccess:()=>H(!0),onActivateSuccess:()=>j(!0),onProfileCompleteSuccess:()=>D(!0)}),o.type===s.MemberPopupPanelType.ConsumeCredits&&e.consumeCredits&&(0,t.jsx)(Q,{copy:e.consumeCredits,onClose:c}),o.type===s.MemberPopupPanelType.Referral&&e.referral&&(0,t.jsx)(X,{copy:e.referral,onClose:c}),o.type===s.MemberPopupPanelType.CompleteProfile&&e.earnCredits&&(0,t.jsx)(Y,{copy:e.earnCredits.completeProfile,shopifyStoreDomain:C,onClose:c,onSuccess:o.props?.onSuccess}),o.type===s.MemberPopupPanelType.Subscribe&&e.subscribe&&(0,t.jsx)(Z,{copy:e.subscribe,email:i?.email,onClose:c,onSuccess:o.props?.onSuccess}),o.type===s.MemberPopupPanelType.SubscribeEmail&&e.earnCredits&&(0,t.jsx)($,{copy:e.earnCredits.subscribe,email:i?.email,onClose:c,onSuccess:o.props?.onSuccess}),o.type===s.MemberPopupPanelType.Activate&&e.earnCredits&&(0,t.jsx)(ee,{copy:e.earnCredits.authCodeActivate,onClose:c,onSuccess:o.props?.onSuccess}),o.type===s.MemberPopupPanelType.RedeemCoupon&&o.props&&e.consumeCredits&&(0,t.jsx)(te,{itemTitle:o.props.itemTitle,itemCredits:o.props.itemCredits,itemImage:o.props.itemImage,itemValue:o.props.itemValue,itemOff:o.props.itemOff,redeemId:o.props.redeemId,userId:o.props.userId,alpcConfig:o.props.alpcConfig,copy:e.consumeCredits.redeemModal,pointUnit:e.consumeCredits.pointUnit,onClose:c})]})]}),e.footer&&!z&&(0,t.jsx)("div",{className:"border-t border-[#dadce0] p-[16px]",children:(0,t.jsxs)("div",{className:"flex items-center justify-between gap-[16px]",children:[(0,t.jsxs)("div",{className:"flex items-center gap-[4px]",children:[(0,t.jsx)("span",{className:"text-[14px] font-[700] text-[#080a0f]",children:e.footer.loginHint}),(0,t.jsx)("button",{className:"cursor-pointer text-[14px] font-[700] text-[#080a0f] underline",onClick:d,children:e.footer.loginLabel})]}),(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-[8px]",children:(0,t.jsx)("button",{className:(0,f.classNames)("cursor-pointer border-[1.6px] border-[#080a0f] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-[#080a0f]",v?"rounded-[4px]":"rounded-none"),onClick:l,children:e.footer.joinLabel})})]})})]}),(0,t.jsx)("button",{className:"flex cursor-pointer items-center justify-center rounded-full bg-white shadow-lg",onClick:()=>N(p=>!p),"aria-label":e.triggerImg.alt??"Open member popup",children:(0,t.jsx)(M.Picture,{source:e.triggerImg.url,alt:e.triggerImg.alt??"",className:"size-[58px]"})})]})]})}function re({item:e,onAction:n,rounded:i}){const d={[s.MemberPopupActionType.OpenEarnCredits]:a.IconCredit,[s.MemberPopupActionType.OpenConsumeCredits]:a.IconBag,[s.MemberPopupActionType.OpenReferral]:a.IconReferral,[s.MemberPopupActionType.OpenSubscribe]:a.IconSubscription};return(0,t.jsxs)("div",{className:(0,f.classNames)("flex flex-col gap-[16px] bg-[#f5f6f7] p-[16px]",i?"rounded-[8px]":"rounded-none"),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-[4px]",children:[(0,t.jsx)("h3",{className:"text-[20px] font-[700] leading-[1.2] text-[#1e2024]",children:e.title}),e.description&&(0,t.jsx)("p",{className:"text-[14px] font-[700] leading-[1.43] text-[#1e2024]",children:e.description})]}),(0,t.jsx)("div",{className:"flex flex-col gap-[16px]",children:e.links.map((l,x)=>{const C=d[l.type];return(0,t.jsxs)("div",{children:[x>0&&(0,t.jsx)("div",{className:"mb-[16px] h-px bg-[#dadce0]"}),(0,t.jsxs)("button",{className:"flex w-full cursor-pointer items-center gap-[12px]",onClick:()=>n(l.type,l.url),children:[C&&(0,t.jsx)(C,{className:"size-[24px] shrink-0"}),(0,t.jsx)("span",{className:"flex-1 text-left text-[14px] font-[700] text-[#1e2024]",children:l.label}),(0,t.jsx)(a.IconArrow,{className:"size-[16px] shrink-0"})]})]},x)})})]})}
|
|
2
|
-
//# sourceMappingURL=MemberPopup.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/components/memberPopup/MemberPopup.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport { lazy, Suspense, useState, useCallback, useMemo } from 'react'\nimport { Picture } from '@anker-in/headless-ui'\nimport { type HeadlessConfig, useHeadlessContext, classNames as cn } from '@anker-in/lib'\nimport {\n MemberPopupActionType,\n MemberPopupPageScope,\n MemberPopupPanelType,\n type MemberPopupCopy,\n type MemberPopupContextValue,\n type MemberPopupItem,\n} from './type'\nimport { MemberPopupProvider } from './context/provider'\nimport { useMemberPopupContext } from './context/provider'\nimport { ViewStackContext, type ViewPayload } from './context/viewStack'\nimport { IconClose, IconArrow, IconCredit, IconBag, IconReferral, IconSwitch, IconSubscription } from './icons'\nimport { ROUNDED_BRANDS } from '../../constants'\n\nconst EarnCredits = lazy(() => import('./panels/EarnCredits'))\nconst ConsumeCredits = lazy(() => import('./panels/ConsumeCredits'))\nconst Referral = lazy(() => import('./panels/Referral'))\nconst CompleteProfile = lazy(() => import('./panels/EarnCredits/CompleteProfilePanel'))\nconst Subscribe = lazy(() => import('./panels/EarnCredits/SubscribePanel'))\nconst SubscribeEmail = lazy(() => import('./panels/EarnCredits/SubscribeEmailPanel'))\nconst Activate = lazy(() => import('./panels/EarnCredits/ActivatePanel'))\nconst RedeemCoupon = lazy(() => import('./panels/ConsumeCredits/RedeemCouponPanel'))\n\ntype MemberPopupProps = MemberPopupContextValue & {\n headlessConfig: HeadlessConfig\n copy: MemberPopupCopy\n bottomOffset?: string\n}\n\nexport function MemberPopup({ copy, bottomOffset = '24px', ...providerProps }: MemberPopupProps) {\n return (\n <MemberPopupProvider {...providerProps} earnCreditsCopy={copy.earnCredits}>\n <MemberPopupContent copy={copy} bottomOffset={bottomOffset} />\n </MemberPopupProvider>\n )\n}\n\ntype MemberPopupContentProps = {\n copy: MemberPopupCopy\n bottomOffset: string\n}\n\nfunction MemberPopupContent({ copy, bottomOffset }: MemberPopupContentProps) {\n const { profile, openSignInPopup, openSignUpPopup } = useMemberPopupContext()\n const { brand, storeDomain } = useHeadlessContext()\n const rounded = ROUNDED_BRANDS.includes(brand)\n const isLogin = !!profile\n const [isOpen, setIsOpen] = useState(false)\n const [viewStack, setViewStack] = useState<ViewPayload[]>([])\n const [isSubscribeSuccess, setIsSubscribeSuccess] = useState(false)\n const [isActivateSuccess, setIsActivateSuccess] = useState(false)\n const [isProfileCompleteSuccess, setIsProfileCompleteSuccess] = useState(false)\n\n const currentView = viewStack[viewStack.length - 1] ?? null\n\n const isVisible = useMemo(() => {\n const config = copy.pageConfig\n if (!config) return true\n const pathname = typeof window !== 'undefined' ? window.location.pathname : ''\n const matches = config.pages.some(page => pathname === page || pathname.startsWith(page + '/'))\n switch (config.scope) {\n case MemberPopupPageScope.Include:\n return matches\n case MemberPopupPageScope.Exclude:\n return !matches\n default:\n return true\n }\n }, [copy.pageConfig])\n\n if (!isVisible) return null\n\n const pushView = useCallback((view: ViewPayload) => {\n setViewStack(prev => [...prev, view])\n }, [])\n\n const popView = useCallback(() => {\n setViewStack(prev => prev.slice(0, -1))\n }, [])\n\n function handleAction(type: MemberPopupActionType, url?: string) {\n switch (type) {\n case MemberPopupActionType.ExternalLink:\n if (url) window.open(url, '_blank', 'noopener,noreferrer')\n break\n case MemberPopupActionType.OpenEarnCredits:\n pushView({ type: MemberPopupPanelType.EarnCredits })\n break\n case MemberPopupActionType.OpenConsumeCredits:\n pushView({ type: MemberPopupPanelType.ConsumeCredits })\n break\n case MemberPopupActionType.OpenReferral:\n pushView({ type: MemberPopupPanelType.Referral })\n break\n case MemberPopupActionType.OpenSubscribe:\n pushView({ type: MemberPopupPanelType.Subscribe })\n break\n }\n }\n\n function handleClose() {\n setIsOpen(false)\n setViewStack([])\n }\n\n return (\n <ViewStackContext.Provider value={{ pushView, popView }}>\n {isOpen && <div className=\"fixed inset-0 z-[998]\" onClick={handleClose} />}\n <div className=\"fixed right-0 z-[999] flex flex-col items-end pr-[16px]\" style={{ bottom: bottomOffset }}>\n {isOpen && (\n <div\n className={cn(\n 'relative mb-[8px] flex w-[420px] max-w-[calc(100vw-32px)] min-h-[600px] flex-col overflow-hidden bg-white shadow-[0_8px_32px_rgba(0,0,0,0.16)] cmp-md:w-[358px] cmp-sm:w-[258px]',\n rounded ? 'rounded-[12px]' : 'rounded-none'\n )}\n onClick={e => e.stopPropagation()}\n >\n <div className=\"absolute right-[-8px] top-[24px] size-0 border-y-8 border-l-8 border-y-transparent border-l-white\" />\n <div className=\"flex items-center justify-end pl-[10px] pr-[16px] pb-[8px] pt-[16px]\">\n {currentView !== null && (\n <button\n className=\"mr-auto flex size-[24px] cursor-pointer items-center justify-center\"\n onClick={popView}\n aria-label=\"Back\"\n >\n <IconSwitch />\n </button>\n )}\n <button\n className=\"flex size-[24px] cursor-pointer items-center justify-center\"\n onClick={handleClose}\n aria-label=\"Close\"\n >\n <IconClose />\n </button>\n </div>\n\n <div\n className=\"flex flex-1 flex-col gap-[12px] overflow-y-auto p-[16px]\"\n style={{ maxHeight: 'min(calc(80vh - 118px), 606px)' }}\n >\n {currentView === null && (\n <>\n {(copy.title || copy.subtitle) && (\n <div className=\"flex flex-col gap-[4px]\">\n {copy.title && (\n <h2 className=\"text-[24px] font-[700] leading-[1.2] text-[#080a0f]\">{copy.title}</h2>\n )}\n {copy.subtitle && (\n <p className=\"text-[16px] font-[700] leading-snug text-[#4a4c56]\">{copy.subtitle}</p>\n )}\n </div>\n )}\n {copy.list.map((item, i) => (\n <HomeCard key={i} item={item} onAction={handleAction} rounded={rounded} />\n ))}\n </>\n )}\n\n {currentView !== null && (\n <Suspense\n fallback={\n <div className=\"flex items-center justify-center py-[32px]\">\n <div className=\"size-[32px] animate-spin rounded-full border-[3px] border-[#080a0f] border-t-transparent\" />\n </div>\n }\n >\n {currentView.type === MemberPopupPanelType.EarnCredits && copy.earnCredits && (\n <EarnCredits\n copy={copy.earnCredits}\n onClose={popView}\n isSubscribeSuccess={isSubscribeSuccess}\n isActivateSuccess={isActivateSuccess}\n isProfileCompleteSuccess={isProfileCompleteSuccess}\n onSubscribeSuccess={() => setIsSubscribeSuccess(true)}\n onActivateSuccess={() => setIsActivateSuccess(true)}\n onProfileCompleteSuccess={() => setIsProfileCompleteSuccess(true)}\n />\n )}\n {currentView.type === MemberPopupPanelType.ConsumeCredits && copy.consumeCredits && (\n <ConsumeCredits copy={copy.consumeCredits} onClose={popView} />\n )}\n {currentView.type === MemberPopupPanelType.Referral && copy.referral && (\n <Referral copy={copy.referral} onClose={popView} />\n )}\n {currentView.type === MemberPopupPanelType.CompleteProfile && copy.earnCredits && (\n <CompleteProfile\n copy={copy.earnCredits.completeProfile}\n shopifyStoreDomain={storeDomain}\n onClose={popView}\n onSuccess={currentView.props?.onSuccess}\n />\n )}\n {currentView.type === MemberPopupPanelType.Subscribe && copy.subscribe && (\n <Subscribe\n copy={copy.subscribe}\n email={profile?.email}\n onClose={popView}\n onSuccess={currentView.props?.onSuccess}\n />\n )}\n {currentView.type === MemberPopupPanelType.SubscribeEmail && copy.earnCredits && (\n <SubscribeEmail\n copy={copy.earnCredits.subscribe}\n email={profile?.email}\n onClose={popView}\n onSuccess={currentView.props?.onSuccess}\n />\n )}\n {currentView.type === MemberPopupPanelType.Activate && copy.earnCredits && (\n <Activate\n copy={copy.earnCredits.authCodeActivate}\n onClose={popView}\n onSuccess={currentView.props?.onSuccess}\n />\n )}\n {currentView.type === MemberPopupPanelType.RedeemCoupon &&\n currentView.props &&\n copy.consumeCredits && (\n <RedeemCoupon\n itemTitle={currentView.props.itemTitle}\n itemCredits={currentView.props.itemCredits}\n itemImage={currentView.props.itemImage}\n itemValue={currentView.props.itemValue}\n itemOff={currentView.props.itemOff}\n redeemId={currentView.props.redeemId}\n userId={currentView.props.userId}\n alpcConfig={currentView.props.alpcConfig}\n copy={copy.consumeCredits.redeemModal}\n pointUnit={copy.consumeCredits.pointUnit}\n onClose={popView}\n />\n )}\n </Suspense>\n )}\n </div>\n\n {copy.footer && !isLogin && (\n <div className=\"border-t border-[#dadce0] p-[16px]\">\n <div className=\"flex items-center justify-between gap-[16px]\">\n <div className=\"flex items-center gap-[4px]\">\n <span className=\"text-[14px] font-[700] text-[#080a0f]\">{copy.footer.loginHint}</span>\n <button\n className=\"cursor-pointer text-[14px] font-[700] text-[#080a0f] underline\"\n onClick={openSignInPopup}\n >\n {copy.footer.loginLabel}\n </button>\n </div>\n <div className=\"flex shrink-0 items-center gap-[8px]\">\n <button\n className={cn(\n 'cursor-pointer border-[1.6px] border-[#080a0f] px-[20px] pb-[10px] pt-[11px] text-[14px] font-[700] leading-[1.2] text-[#080a0f]',\n rounded ? 'rounded-[4px]' : 'rounded-none'\n )}\n onClick={openSignUpPopup}\n >\n {copy.footer.joinLabel}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n )}\n\n <button\n className=\"flex cursor-pointer items-center justify-center rounded-full bg-white shadow-lg\"\n onClick={() => setIsOpen(prev => !prev)}\n aria-label={copy.triggerImg.alt ?? 'Open member popup'}\n >\n <Picture source={copy.triggerImg.url} alt={copy.triggerImg.alt ?? ''} className=\"size-[58px]\" />\n </button>\n </div>\n </ViewStackContext.Provider>\n )\n}\n\ntype HomeCardProps = {\n item: MemberPopupItem\n onAction: (type: MemberPopupActionType, url?: string) => void\n rounded: boolean\n}\n\nfunction HomeCard({ item, onAction, rounded }: HomeCardProps) {\n const ACTION_ICON: Partial<Record<MemberPopupActionType, typeof IconCredit>> = {\n [MemberPopupActionType.OpenEarnCredits]: IconCredit,\n [MemberPopupActionType.OpenConsumeCredits]: IconBag,\n [MemberPopupActionType.OpenReferral]: IconReferral,\n [MemberPopupActionType.OpenSubscribe]: IconSubscription,\n }\n\n return (\n <div className={cn('flex flex-col gap-[16px] bg-[#f5f6f7] p-[16px]', rounded ? 'rounded-[8px]' : 'rounded-none')}>\n <div className=\"flex flex-col gap-[4px]\">\n <h3 className=\"text-[20px] font-[700] leading-[1.2] text-[#1e2024]\">{item.title}</h3>\n {item.description && <p className=\"text-[14px] font-[700] leading-[1.43] text-[#1e2024]\">{item.description}</p>}\n </div>\n\n <div className=\"flex flex-col gap-[16px]\">\n {item.links.map((link, i) => {\n const IconComponent = ACTION_ICON[link.type]\n return (\n <div key={i}>\n {i > 0 && <div className=\"mb-[16px] h-px bg-[#dadce0]\" />}\n <button\n className=\"flex w-full cursor-pointer items-center gap-[12px]\"\n onClick={() => onAction(link.type, link.url)}\n >\n {IconComponent && <IconComponent className=\"size-[24px] shrink-0\" />}\n <span className=\"flex-1 text-left text-[14px] font-[700] text-[#1e2024]\">{link.label}</span>\n <IconArrow className=\"size-[16px] shrink-0\" />\n </button>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["MemberPopup_exports", "__export", "MemberPopup", "__toCommonJS", "import_jsx_runtime", "import_react", "import_headless_ui", "import_lib", "import_type", "import_provider", "import_viewStack", "import_icons", "import_constants", "EarnCredits", "ConsumeCredits", "Referral", "CompleteProfile", "Subscribe", "SubscribeEmail", "Activate", "RedeemCoupon", "copy", "bottomOffset", "providerProps", "MemberPopupContent", "profile", "openSignInPopup", "openSignUpPopup", "brand", "storeDomain", "rounded", "isLogin", "isOpen", "setIsOpen", "viewStack", "setViewStack", "isSubscribeSuccess", "setIsSubscribeSuccess", "isActivateSuccess", "setIsActivateSuccess", "isProfileCompleteSuccess", "setIsProfileCompleteSuccess", "currentView", "config", "pathname", "matches", "page", "pushView", "view", "prev", "popView", "handleAction", "type", "url", "handleClose", "cn", "e", "item", "i", "HomeCard", "onAction", "ACTION_ICON", "link", "IconComponent"]
|
|
7
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { type HeadlessConfig } from '@anker-in/lib';
|
|
3
|
-
import type { EarnCreditsCopy, MemberPopupContextValue } from '../type';
|
|
4
|
-
export declare const MemberPopupContext: import("react").Context<MemberPopupContextValue>;
|
|
5
|
-
type MemberPopupProviderProps = MemberPopupContextValue & {
|
|
6
|
-
headlessConfig: HeadlessConfig;
|
|
7
|
-
earnCreditsCopy?: EarnCreditsCopy;
|
|
8
|
-
};
|
|
9
|
-
export declare function MemberPopupProvider({ children, headlessConfig, earnCreditsCopy, ...contextValue }: PropsWithChildren<MemberPopupProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
export declare function useMemberPopupContext(): MemberPopupContextValue;
|
|
11
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var d=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var m=(e,o)=>{for(var r in o)d(e,r,{get:o[r],enumerable:!0})},f=(e,o,r,p)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of C(o))!l.call(e,t)&&t!==r&&d(e,t,{get:()=>o[t],enumerable:!(p=P(o,t))||p.enumerable});return e};var b=e=>f(d({},"__esModule",{value:!0}),e);var c={};m(c,{MemberPopupContext:()=>a,MemberPopupProvider:()=>v,useMemberPopupContext:()=>M});module.exports=b(c);var i=require("react/jsx-runtime"),n=require("react"),s=require("@anker-in/lib"),u=require("../../registration");const a=(0,n.createContext)({profile:null,isLoadingProfile:!1,creditInfo:void 0,fetchCreditInfo:()=>{},openSignUpPopup:()=>{},openSignInPopup:()=>{},taskIdToTypeMapping:{},alpcConfig:{brand:"",locale:"",appName:""}});function v({children:e,headlessConfig:o,earnCreditsCopy:r,...p}){return(0,i.jsx)(s.HeadlessProvider,{headlessConfig:o,children:(0,i.jsx)(u.RegistrationProvider,{email:p.profile?.email,copy:{authCodeActivate:r?.authCodeActivate},children:(0,i.jsx)(a.Provider,{value:p,children:e})})})}function M(){const e=(0,n.useContext)(a);if(!e)throw new Error("useMemberPopupContext must be used within a MemberPopupProvider");return e}
|
|
2
|
-
//# sourceMappingURL=provider.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/components/memberPopup/context/provider.tsx"],
|
|
4
|
-
"sourcesContent": ["import { createContext, PropsWithChildren, useContext } from 'react'\nimport { HeadlessProvider, type HeadlessConfig } from '@anker-in/lib'\nimport { RegistrationProvider } from '../../registration'\nimport type { EarnCreditsCopy, MemberPopupContextValue } from '../type'\n\nexport const MemberPopupContext = createContext<MemberPopupContextValue>({\n profile: null,\n isLoadingProfile: false,\n creditInfo: undefined,\n fetchCreditInfo: () => {},\n openSignUpPopup: () => {},\n openSignInPopup: () => {},\n taskIdToTypeMapping: {},\n alpcConfig: {\n brand: '',\n locale: '',\n appName: '',\n },\n})\n\ntype MemberPopupProviderProps = MemberPopupContextValue & {\n headlessConfig: HeadlessConfig\n earnCreditsCopy?: EarnCreditsCopy\n}\n\nexport function MemberPopupProvider({\n children,\n headlessConfig,\n earnCreditsCopy,\n ...contextValue\n}: PropsWithChildren<MemberPopupProviderProps>) {\n return (\n <HeadlessProvider headlessConfig={headlessConfig}>\n <RegistrationProvider\n email={contextValue.profile?.email}\n copy={{ authCodeActivate: earnCreditsCopy?.authCodeActivate }}\n >\n <MemberPopupContext.Provider value={contextValue}>\n {children}\n </MemberPopupContext.Provider>\n </RegistrationProvider>\n </HeadlessProvider>\n )\n}\n\nexport function useMemberPopupContext() {\n const context = useContext(MemberPopupContext)\n if (!context) {\n throw new Error('useMemberPopupContext must be used within a MemberPopupProvider')\n }\n return context\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,EAAA,wBAAAC,EAAA,0BAAAC,IAAA,eAAAC,EAAAL,GAqCQ,IAAAM,EAAA,6BArCRC,EAA6D,iBAC7DC,EAAsD,yBACtDC,EAAqC,8BAG9B,MAAMP,KAAqB,iBAAuC,CACvE,QAAS,KACT,iBAAkB,GAClB,WAAY,OACZ,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,gBAAiB,IAAM,CAAC,EACxB,oBAAqB,CAAC,EACtB,WAAY,CACV,MAAO,GACP,OAAQ,GACR,QAAS,EACX,CACF,CAAC,EAOM,SAASC,EAAoB,CAClC,SAAAO,EACA,eAAAC,EACA,gBAAAC,EACA,GAAGC,CACL,EAAgD,CAC9C,SACE,OAAC,oBAAiB,eAAgBF,EAChC,mBAAC,wBACC,MAAOE,EAAa,SAAS,MAC7B,KAAM,CAAE,iBAAkBD,GAAiB,gBAAiB,EAE5D,mBAACV,EAAmB,SAAnB,CAA4B,MAAOW,EACjC,SAAAH,EACH,EACF,EACF,CAEJ,CAEO,SAASN,GAAwB,CACtC,MAAMU,KAAU,cAAWZ,CAAkB,EAC7C,GAAI,CAACY,EACH,MAAM,IAAI,MAAM,iEAAiE,EAEnF,OAAOA,CACT",
|
|
6
|
-
"names": ["provider_exports", "__export", "MemberPopupContext", "MemberPopupProvider", "useMemberPopupContext", "__toCommonJS", "import_jsx_runtime", "import_react", "import_lib", "import_registration", "children", "headlessConfig", "earnCreditsCopy", "contextValue", "context"]
|
|
7
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { MemberPopupPanelType } from '../type';
|
|
2
|
-
export type ViewPayload = {
|
|
3
|
-
type: MemberPopupPanelType;
|
|
4
|
-
props?: Record<string, any>;
|
|
5
|
-
};
|
|
6
|
-
type ViewStackContextValue = {
|
|
7
|
-
pushView: (view: ViewPayload) => void;
|
|
8
|
-
popView: () => void;
|
|
9
|
-
};
|
|
10
|
-
export declare const ViewStackContext: import("react").Context<ViewStackContextValue>;
|
|
11
|
-
export declare function useViewStack(): ViewStackContextValue;
|
|
12
|
-
export {};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";"use client";var a=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var c=(t,e)=>{for(var p in e)a(t,p,{get:e[p],enumerable:!0})},y=(t,e,p,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of u(e))!w.call(t,o)&&o!==p&&a(t,o,{get:()=>e[o],enumerable:!(r=V(e,o))||r.enumerable});return t};var s=t=>y(a({},"__esModule",{value:!0}),t);var l={};c(l,{ViewStackContext:()=>n,useViewStack:()=>x});module.exports=s(l);var i=require("react");const n=(0,i.createContext)({pushView:()=>{},popView:()=>{}});function x(){return(0,i.useContext)(n)}
|
|
2
|
-
//# sourceMappingURL=viewStack.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/components/memberPopup/context/viewStack.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client'\n\nimport { createContext, useContext, ReactNode } from 'react'\nimport type { MemberPopupPanelType } from '../type'\n\nexport type ViewPayload = {\n type: MemberPopupPanelType\n props?: Record<string, any>\n}\n\ntype ViewStackContextValue = {\n pushView: (view: ViewPayload) => void\n popView: () => void\n}\n\nexport const ViewStackContext = createContext<ViewStackContextValue>({\n pushView: () => {},\n popView: () => {},\n})\n\nexport function useViewStack() {\n return useContext(ViewStackContext)\n}\n"],
|
|
5
|
-
"mappings": "sbAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,EAAA,iBAAAC,IAAA,eAAAC,EAAAJ,GAEA,IAAAK,EAAqD,iBAa9C,MAAMH,KAAmB,iBAAqC,CACnE,SAAU,IAAM,CAAC,EACjB,QAAS,IAAM,CAAC,CAClB,CAAC,EAEM,SAASC,GAAe,CAC7B,SAAO,cAAWD,CAAgB,CACpC",
|
|
6
|
-
"names": ["viewStack_exports", "__export", "ViewStackContext", "useViewStack", "__toCommonJS", "import_react"]
|
|
7
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export declare function IconCredit({ className }: {
|
|
2
|
-
className?: string;
|
|
3
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
export declare function IconReferral({ className }: {
|
|
5
|
-
className?: string;
|
|
6
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
-
export declare function IconBag({ className }: {
|
|
8
|
-
className?: string;
|
|
9
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
10
|
-
export declare function IconArrow({ className }: {
|
|
11
|
-
className?: string;
|
|
12
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
13
|
-
export declare function IconSwitch({ className }: {
|
|
14
|
-
className?: string;
|
|
15
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export declare function IconClose({ className }: {
|
|
17
|
-
className?: string;
|
|
18
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
19
|
-
export declare function IconLock({ className }: {
|
|
20
|
-
className?: string;
|
|
21
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
22
|
-
export declare function IconSubscription({ className }: {
|
|
23
|
-
className?: string;
|
|
24
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
25
|
-
export declare function IconOrders({ className }: {
|
|
26
|
-
className?: string;
|
|
27
|
-
}): import("react/jsx-runtime").JSX.Element;
|