@anker-in/campaign-ui 0.3.4 → 0.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js +1 -1
  2. package/dist/cjs/components/LiveChatWidget/LiveChatWidget.js.map +3 -3
  3. package/dist/cjs/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +2 -2
  4. package/dist/cjs/components/LiveChatWidget/components/MessageList.js +3 -3
  5. package/dist/cjs/components/LiveChatWidget/components/MessageList.js.map +3 -3
  6. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.d.ts +2 -1
  7. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js +1 -1
  8. package/dist/cjs/components/LiveChatWidget/hooks/useChatState.js.map +2 -2
  9. package/dist/cjs/components/LiveChatWidget/types.d.ts +2 -1
  10. package/dist/cjs/components/LiveChatWidget/types.js.map +1 -1
  11. package/dist/cjs/components/credits/context/const.d.ts +10 -2
  12. package/dist/cjs/components/credits/context/const.js +1 -1
  13. package/dist/cjs/components/credits/context/const.js.map +2 -2
  14. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
  15. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
  16. package/dist/cjs/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
  17. package/dist/cjs/components/credits/context/hooks/useMyRewards.js +1 -1
  18. package/dist/cjs/components/credits/context/hooks/useMyRewards.js.map +3 -3
  19. package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.d.ts +17 -0
  20. package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js +2 -0
  21. package/dist/cjs/components/credits/context/hooks/useRedeemGoGift.js.map +7 -0
  22. package/dist/cjs/components/credits/context/hooks/useRedeemableList.d.ts +7 -2
  23. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js +1 -1
  24. package/dist/cjs/components/credits/context/hooks/useRedeemableList.js.map +3 -3
  25. package/dist/cjs/components/credits/context/provider.d.ts +5 -1
  26. package/dist/cjs/components/credits/context/provider.js +1 -1
  27. package/dist/cjs/components/credits/context/provider.js.map +3 -3
  28. package/dist/cjs/components/credits/context/response.d.ts +1 -0
  29. package/dist/cjs/components/credits/context/response.js.map +1 -1
  30. package/dist/cjs/components/credits/context/utils/atobID.d.ts +1 -0
  31. package/dist/cjs/components/credits/context/utils/atobID.js +2 -0
  32. package/dist/cjs/components/credits/context/utils/atobID.js.map +7 -0
  33. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
  34. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js +2 -0
  35. package/dist/cjs/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
  36. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
  37. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
  38. package/dist/cjs/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
  39. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
  40. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
  41. package/dist/cjs/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
  42. package/dist/cjs/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
  43. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js +2 -0
  44. package/dist/cjs/components/credits/context/utils/variantGetCoupon.js.map +7 -0
  45. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  46. package/dist/cjs/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +2 -2
  47. package/dist/cjs/components/credits/creditsBanner/index.js +2 -2
  48. package/dist/cjs/components/credits/creditsBanner/index.js.map +2 -2
  49. package/dist/cjs/components/credits/creditsCash/CreditsCash.js +1 -1
  50. package/dist/cjs/components/credits/creditsCash/CreditsCash.js.map +2 -2
  51. package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.d.ts +5 -0
  52. package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.js +2 -0
  53. package/dist/cjs/components/credits/creditsGoGift/CreditsGoGift.js.map +7 -0
  54. package/dist/cjs/components/credits/creditsGoGift/index.d.ts +2 -0
  55. package/dist/cjs/components/credits/creditsGoGift/index.js +2 -0
  56. package/dist/cjs/components/credits/creditsGoGift/index.js.map +7 -0
  57. package/dist/cjs/components/credits/creditsGoGift/type.d.ts +22 -0
  58. package/dist/cjs/components/credits/creditsGoGift/type.js +2 -0
  59. package/dist/cjs/components/credits/creditsGoGift/type.js.map +7 -0
  60. package/dist/cjs/components/credits/creditsGofit/CreditsGofit.d.ts +5 -0
  61. package/dist/cjs/components/credits/creditsGofit/CreditsGofit.js +2 -0
  62. package/dist/cjs/components/credits/creditsGofit/CreditsGofit.js.map +7 -0
  63. package/dist/cjs/components/credits/creditsGofit/index.d.ts +2 -0
  64. package/dist/cjs/components/credits/creditsGofit/index.js +2 -0
  65. package/dist/cjs/components/credits/creditsGofit/index.js.map +7 -0
  66. package/dist/cjs/components/credits/creditsGofit/type.d.ts +22 -0
  67. package/dist/cjs/components/credits/creditsGofit/type.js +2 -0
  68. package/dist/cjs/components/credits/creditsGofit/type.js.map +7 -0
  69. package/dist/cjs/components/credits/creditsInfoCard/index.js +1 -1
  70. package/dist/cjs/components/credits/creditsInfoCard/index.js.map +3 -3
  71. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  72. package/dist/cjs/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +2 -2
  73. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  74. package/dist/cjs/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  75. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.d.ts +10 -0
  76. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +2 -0
  77. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +7 -0
  78. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.d.ts +10 -0
  79. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js +2 -0
  80. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js.map +7 -0
  81. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.d.ts +4 -5
  82. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  83. package/dist/cjs/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  84. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.d.ts +2 -3
  85. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  86. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +2 -2
  87. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.d.ts +2 -3
  88. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  89. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +2 -2
  90. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.d.ts +1 -3
  91. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
  92. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
  93. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.d.ts +3 -4
  94. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  95. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  96. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.d.ts +2 -3
  97. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  98. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
  99. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.d.ts +4 -5
  100. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
  101. package/dist/cjs/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
  102. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.d.ts +10 -0
  103. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +2 -0
  104. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +7 -0
  105. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.d.ts +9 -0
  106. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js +2 -0
  107. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js.map +7 -0
  108. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.d.ts +8 -0
  109. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +2 -0
  110. package/dist/cjs/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +7 -0
  111. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  112. package/dist/cjs/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
  113. package/dist/cjs/components/credits/creditsRedeemList/type.d.ts +11 -0
  114. package/dist/cjs/components/credits/creditsRedeemList/type.js +1 -1
  115. package/dist/cjs/components/credits/creditsRedeemList/type.js.map +1 -1
  116. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  117. package/dist/cjs/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +2 -2
  118. package/dist/cjs/components/credits/creditsWaysToGetCredits/type.d.ts +2 -2
  119. package/dist/cjs/components/credits/creditsWaysToGetCredits/type.js.map +1 -1
  120. package/dist/cjs/components/credits/index.d.ts +2 -1
  121. package/dist/cjs/components/credits/index.js +1 -1
  122. package/dist/cjs/components/credits/index.js.map +3 -3
  123. package/dist/cjs/components/credits/modal/MyRewardsModal.d.ts +16 -0
  124. package/dist/cjs/components/credits/modal/MyRewardsModal.js +1 -1
  125. package/dist/cjs/components/credits/modal/MyRewardsModal.js.map +3 -3
  126. package/dist/cjs/components/credits/modal/RewardsModal.d.ts +64 -0
  127. package/dist/cjs/components/credits/modal/RewardsModal.js +2 -0
  128. package/dist/cjs/components/credits/modal/RewardsModal.js.map +7 -0
  129. package/dist/cjs/components/credits/modal/activitiesModal.d.ts +1 -1
  130. package/dist/cjs/components/credits/modal/activitiesModal.js +2 -2
  131. package/dist/cjs/components/credits/modal/activitiesModal.js.map +3 -3
  132. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js +2 -2
  133. package/dist/cjs/components/credits/modal/creditsUploadReceiptModal.js.map +3 -3
  134. package/dist/cjs/components/credits/modal/loadingDots.js +1 -1
  135. package/dist/cjs/components/credits/modal/loadingDots.js.map +2 -2
  136. package/dist/cjs/components/credits/modal/modalContainer.js +2 -2
  137. package/dist/cjs/components/credits/modal/modalContainer.js.map +4 -4
  138. package/dist/cjs/components/credits/modal/rulesModal.d.ts +1 -1
  139. package/dist/cjs/components/credits/modal/rulesModal.js +2 -2
  140. package/dist/cjs/components/credits/modal/rulesModal.js.map +3 -3
  141. package/dist/cjs/components/credits/modal/subscribeModal.d.ts +1 -1
  142. package/dist/cjs/components/credits/modal/subscribeModal.js +2 -2
  143. package/dist/cjs/components/credits/modal/subscribeModal.js.map +3 -3
  144. package/dist/cjs/components/credits/modal/tip.js +1 -1
  145. package/dist/cjs/components/credits/modal/tip.js.map +2 -2
  146. package/dist/cjs/components/credits/type.d.ts +67 -5
  147. package/dist/cjs/components/credits/type.js +1 -1
  148. package/dist/cjs/components/credits/type.js.map +1 -1
  149. package/dist/cjs/stories/LiveChatWidget.stories.js +2 -9
  150. package/dist/cjs/stories/LiveChatWidget.stories.js.map +2 -2
  151. package/dist/cjs/templates/Credits.d.ts +1 -87
  152. package/dist/cjs/templates/Credits.js +1 -1
  153. package/dist/cjs/templates/Credits.js.map +3 -3
  154. package/dist/cjs/templates/Credits.types.d.ts +96 -0
  155. package/dist/cjs/templates/Credits.types.js +2 -0
  156. package/dist/cjs/templates/Credits.types.js.map +7 -0
  157. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js +1 -1
  158. package/dist/esm/components/LiveChatWidget/LiveChatWidget.js.map +3 -3
  159. package/dist/esm/components/LiveChatWidget/components/MessageContent/PromotionList.js.map +2 -2
  160. package/dist/esm/components/LiveChatWidget/components/MessageList.js +3 -3
  161. package/dist/esm/components/LiveChatWidget/components/MessageList.js.map +3 -3
  162. package/dist/esm/components/LiveChatWidget/hooks/useChatState.d.ts +2 -1
  163. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js +1 -1
  164. package/dist/esm/components/LiveChatWidget/hooks/useChatState.js.map +2 -2
  165. package/dist/esm/components/LiveChatWidget/types.d.ts +2 -1
  166. package/dist/esm/components/credits/context/const.d.ts +10 -2
  167. package/dist/esm/components/credits/context/const.js +1 -1
  168. package/dist/esm/components/credits/context/const.js.map +2 -2
  169. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.d.ts +7 -0
  170. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js +2 -0
  171. package/dist/esm/components/credits/context/hooks/useFunctionMemberPrice.js.map +7 -0
  172. package/dist/esm/components/credits/context/hooks/useMyRewards.js +1 -1
  173. package/dist/esm/components/credits/context/hooks/useMyRewards.js.map +3 -3
  174. package/dist/esm/components/credits/context/hooks/useRedeemGoGift.d.ts +17 -0
  175. package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js +2 -0
  176. package/dist/esm/components/credits/context/hooks/useRedeemGoGift.js.map +7 -0
  177. package/dist/esm/components/credits/context/hooks/useRedeemableList.d.ts +7 -2
  178. package/dist/esm/components/credits/context/hooks/useRedeemableList.js +1 -1
  179. package/dist/esm/components/credits/context/hooks/useRedeemableList.js.map +3 -3
  180. package/dist/esm/components/credits/context/provider.d.ts +5 -1
  181. package/dist/esm/components/credits/context/provider.js +1 -1
  182. package/dist/esm/components/credits/context/provider.js.map +3 -3
  183. package/dist/esm/components/credits/context/response.d.ts +1 -0
  184. package/dist/esm/components/credits/context/utils/atobID.d.ts +1 -0
  185. package/dist/esm/components/credits/context/utils/atobID.js +2 -0
  186. package/dist/esm/components/credits/context/utils/atobID.js.map +7 -0
  187. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.d.ts +5 -0
  188. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js +2 -0
  189. package/dist/esm/components/credits/context/utils/functionDiscountCalculate.js.map +7 -0
  190. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.d.ts +8 -0
  191. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js +2 -0
  192. package/dist/esm/components/credits/context/utils/getFunctionMemberPrice.js.map +7 -0
  193. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.d.ts +9 -0
  194. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js +2 -0
  195. package/dist/esm/components/credits/context/utils/getFunctionMemberPriceDiscountConfig.js.map +7 -0
  196. package/dist/esm/components/credits/context/utils/variantGetCoupon.d.ts +6 -0
  197. package/dist/esm/components/credits/context/utils/variantGetCoupon.js +2 -0
  198. package/dist/esm/components/credits/context/utils/variantGetCoupon.js.map +7 -0
  199. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js +1 -1
  200. package/dist/esm/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.js.map +1 -1
  201. package/dist/esm/components/credits/creditsBanner/index.js +2 -2
  202. package/dist/esm/components/credits/creditsBanner/index.js.map +2 -2
  203. package/dist/esm/components/credits/creditsCash/CreditsCash.js +1 -1
  204. package/dist/esm/components/credits/creditsCash/CreditsCash.js.map +1 -1
  205. package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.d.ts +5 -0
  206. package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.js +2 -0
  207. package/dist/esm/components/credits/creditsGoGift/CreditsGoGift.js.map +7 -0
  208. package/dist/esm/components/credits/creditsGoGift/index.d.ts +2 -0
  209. package/dist/esm/components/credits/creditsGoGift/index.js +2 -0
  210. package/dist/esm/components/credits/creditsGoGift/index.js.map +7 -0
  211. package/dist/esm/components/credits/creditsGoGift/type.d.ts +22 -0
  212. package/dist/esm/components/credits/creditsGoGift/type.js +1 -0
  213. package/dist/esm/components/credits/creditsGoGift/type.js.map +7 -0
  214. package/dist/esm/components/credits/creditsGofit/CreditsGofit.d.ts +5 -0
  215. package/dist/esm/components/credits/creditsGofit/CreditsGofit.js +2 -0
  216. package/dist/esm/components/credits/creditsGofit/CreditsGofit.js.map +7 -0
  217. package/dist/esm/components/credits/creditsGofit/index.d.ts +2 -0
  218. package/dist/esm/components/credits/creditsGofit/index.js +2 -0
  219. package/dist/esm/components/credits/creditsGofit/index.js.map +7 -0
  220. package/dist/esm/components/credits/creditsGofit/type.d.ts +22 -0
  221. package/dist/esm/components/credits/creditsGofit/type.js +1 -0
  222. package/dist/esm/components/credits/creditsGofit/type.js.map +7 -0
  223. package/dist/esm/components/credits/creditsInfoCard/index.js +1 -1
  224. package/dist/esm/components/credits/creditsInfoCard/index.js.map +3 -3
  225. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js +1 -1
  226. package/dist/esm/components/credits/creditsMemberPrice/CreditsMemberPrice.js.map +1 -1
  227. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js +1 -1
  228. package/dist/esm/components/credits/creditsRedeemList/CreditsRedeemList.js.map +3 -3
  229. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.d.ts +10 -0
  230. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js +2 -0
  231. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.js.map +7 -0
  232. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.d.ts +10 -0
  233. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js +2 -0
  234. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.js.map +7 -0
  235. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.d.ts +4 -5
  236. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js +1 -1
  237. package/dist/esm/components/credits/creditsRedeemList/RedeemCouponModal.js.map +3 -3
  238. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.d.ts +2 -3
  239. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js +1 -1
  240. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Address.js.map +2 -2
  241. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.d.ts +2 -3
  242. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js +1 -1
  243. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Init.js.map +2 -2
  244. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.d.ts +1 -3
  245. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js +1 -1
  246. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.js.map +3 -3
  247. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.d.ts +3 -4
  248. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js +1 -1
  249. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.js.map +2 -2
  250. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.d.ts +2 -3
  251. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js +1 -1
  252. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/Success.js.map +2 -2
  253. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.d.ts +4 -5
  254. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js +1 -1
  255. package/dist/esm/components/credits/creditsRedeemList/RedeemProductModal/index.js.map +3 -3
  256. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.d.ts +10 -0
  257. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js +2 -0
  258. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.js.map +7 -0
  259. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.d.ts +9 -0
  260. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js +2 -0
  261. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.js.map +7 -0
  262. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.d.ts +8 -0
  263. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js +2 -0
  264. package/dist/esm/components/credits/creditsRedeemList/RedeemVirtualProductModal.js.map +7 -0
  265. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js +1 -1
  266. package/dist/esm/components/credits/creditsRedeemList/RedeemableItem.js.map +2 -2
  267. package/dist/esm/components/credits/creditsRedeemList/type.d.ts +11 -0
  268. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js +1 -1
  269. package/dist/esm/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.js.map +1 -1
  270. package/dist/esm/components/credits/creditsWaysToGetCredits/type.d.ts +2 -2
  271. package/dist/esm/components/credits/creditsWaysToGetCredits/type.js.map +1 -1
  272. package/dist/esm/components/credits/index.d.ts +2 -1
  273. package/dist/esm/components/credits/index.js +1 -1
  274. package/dist/esm/components/credits/index.js.map +3 -3
  275. package/dist/esm/components/credits/modal/MyRewardsModal.d.ts +16 -0
  276. package/dist/esm/components/credits/modal/MyRewardsModal.js +1 -1
  277. package/dist/esm/components/credits/modal/MyRewardsModal.js.map +3 -3
  278. package/dist/esm/components/credits/modal/RewardsModal.d.ts +64 -0
  279. package/dist/esm/components/credits/modal/RewardsModal.js +2 -0
  280. package/dist/esm/components/credits/modal/RewardsModal.js.map +7 -0
  281. package/dist/esm/components/credits/modal/activitiesModal.d.ts +1 -1
  282. package/dist/esm/components/credits/modal/activitiesModal.js +2 -2
  283. package/dist/esm/components/credits/modal/activitiesModal.js.map +3 -3
  284. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js +2 -2
  285. package/dist/esm/components/credits/modal/creditsUploadReceiptModal.js.map +2 -2
  286. package/dist/esm/components/credits/modal/loadingDots.js +1 -1
  287. package/dist/esm/components/credits/modal/loadingDots.js.map +2 -2
  288. package/dist/esm/components/credits/modal/modalContainer.js +2 -2
  289. package/dist/esm/components/credits/modal/modalContainer.js.map +3 -3
  290. package/dist/esm/components/credits/modal/rulesModal.d.ts +1 -1
  291. package/dist/esm/components/credits/modal/rulesModal.js +2 -2
  292. package/dist/esm/components/credits/modal/rulesModal.js.map +3 -3
  293. package/dist/esm/components/credits/modal/subscribeModal.d.ts +1 -1
  294. package/dist/esm/components/credits/modal/subscribeModal.js +2 -2
  295. package/dist/esm/components/credits/modal/subscribeModal.js.map +2 -2
  296. package/dist/esm/components/credits/modal/tip.js +1 -1
  297. package/dist/esm/components/credits/modal/tip.js.map +2 -2
  298. package/dist/esm/components/credits/type.d.ts +67 -5
  299. package/dist/esm/stories/LiveChatWidget.stories.js +1 -8
  300. package/dist/esm/stories/LiveChatWidget.stories.js.map +2 -2
  301. package/dist/esm/templates/Credits.d.ts +1 -87
  302. package/dist/esm/templates/Credits.js +1 -1
  303. package/dist/esm/templates/Credits.js.map +3 -3
  304. package/dist/esm/templates/Credits.types.d.ts +96 -0
  305. package/dist/esm/templates/Credits.types.js +2 -0
  306. package/dist/esm/templates/Credits.types.js.map +7 -0
  307. package/package.json +2 -2
  308. package/src/components/LiveChatWidget/LiveChatWidget.tsx +20 -0
  309. package/src/components/LiveChatWidget/components/MessageContent/PromotionList.tsx +1 -1
  310. package/src/components/LiveChatWidget/components/MessageList.tsx +39 -44
  311. package/src/components/LiveChatWidget/hooks/useChatState.ts +4 -3
  312. package/src/components/LiveChatWidget/types.ts +2 -1
  313. package/src/components/credits/context/const.ts +8 -0
  314. package/src/components/credits/context/hooks/useMyRewards.ts +7 -31
  315. package/src/components/credits/context/hooks/useRedeemGoGift.ts +36 -0
  316. package/src/components/credits/context/hooks/useRedeemableList.ts +13 -19
  317. package/src/components/credits/context/provider.tsx +17 -2
  318. package/src/components/credits/context/response.ts +1 -0
  319. package/src/components/credits/creditsAnkersolixTask/CreditsAnkersolixTask.tsx +2 -2
  320. package/src/components/credits/creditsBanner/index.tsx +5 -5
  321. package/src/components/credits/creditsCash/CreditsCash.tsx +1 -1
  322. package/src/components/credits/creditsGoGift/CreditsGoGift.tsx +210 -0
  323. package/src/components/credits/creditsGoGift/index.ts +2 -0
  324. package/src/components/credits/creditsGoGift/type.ts +23 -0
  325. package/src/components/credits/creditsInfoCard/index.tsx +5 -28
  326. package/src/components/credits/creditsMemberPrice/CreditsMemberPrice.tsx +1 -1
  327. package/src/components/credits/creditsRedeemList/CreditsRedeemList.tsx +39 -17
  328. package/src/components/credits/creditsRedeemList/RedeemCouponModal/CouponInit.tsx +77 -0
  329. package/src/components/credits/creditsRedeemList/RedeemCouponModal/CouponSuccess.tsx +86 -0
  330. package/src/components/credits/creditsRedeemList/RedeemCouponModal.tsx +29 -138
  331. package/src/components/credits/creditsRedeemList/RedeemProductModal/Address.tsx +5 -6
  332. package/src/components/credits/creditsRedeemList/RedeemProductModal/Init.tsx +11 -12
  333. package/src/components/credits/creditsRedeemList/RedeemProductModal/NonProductValue.tsx +23 -14
  334. package/src/components/credits/creditsRedeemList/RedeemProductModal/ProductInfo.tsx +11 -9
  335. package/src/components/credits/creditsRedeemList/RedeemProductModal/Success.tsx +4 -5
  336. package/src/components/credits/creditsRedeemList/RedeemProductModal/index.tsx +29 -28
  337. package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductInit.tsx +101 -0
  338. package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal/VirtualProductSuccess.tsx +65 -0
  339. package/src/components/credits/creditsRedeemList/RedeemVirtualProductModal.tsx +156 -0
  340. package/src/components/credits/creditsRedeemList/RedeemableItem.tsx +1 -1
  341. package/src/components/credits/creditsRedeemList/type.ts +11 -0
  342. package/src/components/credits/creditsWaysToGetCredits/CreditsWaysToGetCredits.tsx +2 -2
  343. package/src/components/credits/creditsWaysToGetCredits/type.ts +2 -2
  344. package/src/components/credits/index.ts +2 -1
  345. package/src/components/credits/modal/{activitiesModal.tsx → ActivitiesModal.tsx} +2 -2
  346. package/src/components/credits/modal/{creditsUploadReceiptModal.tsx → CreditsUploadReceiptModal.tsx} +1 -1
  347. package/src/components/credits/modal/{modalContainer.tsx → ModalContainer.tsx} +1 -1
  348. package/src/components/credits/modal/{MyRewardsModal.tsx → RewardsModal.tsx} +145 -103
  349. package/src/components/credits/modal/{rulesModal.tsx → RulesModal.tsx} +1 -1
  350. package/src/components/credits/modal/{subscribeModal.tsx → SubscribeModal.tsx} +1 -1
  351. package/src/components/credits/type.ts +68 -5
  352. package/src/stories/LiveChatWidget.stories.tsx +7 -12
  353. package/src/styles/livechat.css +29 -0
  354. package/src/templates/Credits.tsx +110 -142
  355. package/src/templates/Credits.types.ts +110 -0
  356. package/dist/index.d.mts +0 -1305
  357. package/dist/index.d.ts +0 -1305
  358. package/dist/index.js +0 -26656
  359. package/dist/index.js.map +0 -1
  360. package/dist/index.mjs +0 -26641
  361. package/dist/index.mjs.map +0 -1
  362. /package/src/components/credits/modal/{loadingDots.tsx → LoadingDots.tsx} +0 -0
  363. /package/src/components/credits/modal/{tip.tsx → Tip.tsx} +0 -0
@@ -0,0 +1,210 @@
1
+ import { Container, Heading, Picture, Button, Text } from '@anker-in/headless-ui'
2
+ import { useMemo, useState } from 'react'
3
+ import { classNames as cn } from '@anker-in/lib'
4
+
5
+ import RedeemVirtualProductModal from '../creditsRedeemList/RedeemVirtualProductModal'
6
+ import useRedeemableList from '../context/hooks/useRedeemableList'
7
+ import { useCreditsContext } from '../context/provider'
8
+ import { ROUNDED_BRANDS } from '../../../constants'
9
+ import { useHeadlessContext } from '@anker-in/lib'
10
+ import { CreditsGoGiftCopy } from './type'
11
+ import { AlpcConsumeType, AlpcErrorCode } from '../context/const'
12
+ import RulesModal from '../modal/RulesModal'
13
+ import { useRegistration } from '../../../components/registration'
14
+
15
+ export const CreditsGoGift = ({ copy, id }: { copy: CreditsGoGiftCopy; id?: string }) => {
16
+ const [showModal, setShowModal] = useState(false)
17
+ const [redeemError, setRedeemError] = useState<string>()
18
+ const [rules, setRules] = useState<string | string[]>()
19
+ const { redeemableList } = useRedeemableList({ consumeType: AlpcConsumeType.ExternalProduct })
20
+ const { pageCommon, profile, creditInfo, setOpenMyRewardsModal, openSignUpPopup } = useCreditsContext()
21
+ const { authCodeActivate } = useRegistration()
22
+ const { brand } = useHeadlessContext()
23
+ const rounded = ROUNDED_BRANDS.includes(brand)
24
+
25
+ const isLogin = Object.keys(profile || {}).length > 0
26
+
27
+ const redeemModalCopy = pageCommon?.redeemModal || ({} as any)
28
+
29
+ console.log('redeemableList', redeemableList)
30
+
31
+ const item = useMemo(() => {
32
+ // 根据 redeemId 查询 ExternalProduct 的 ALPC 数据
33
+ const alpcData = redeemableList.find(item => item.id?.toString() === copy?.redeemId?.toString())
34
+ if (!alpcData) return null
35
+
36
+ return {
37
+ alpc: {
38
+ id: alpcData.id.toString(),
39
+ consumeCredits: alpcData.consume_credits,
40
+ remainingInventory: alpcData.remaining_inventory,
41
+ isLimited: !!alpcData.is_limited,
42
+ consumeType: alpcData.consume_type,
43
+ showCredit: true,
44
+ title: alpcData.name,
45
+ },
46
+ config: {
47
+ title: copy.cardTitle,
48
+ desc: copy.cardDesc,
49
+ type: copy.type,
50
+ value: copy.value || '',
51
+ rules: copy.rules,
52
+ image: copy.cardImg,
53
+ },
54
+ }
55
+ }, [redeemableList, copy])
56
+
57
+ const handleRedeemError = (code: AlpcErrorCode) => {
58
+ const redeemModalCopy = pageCommon?.redeemModal
59
+ if (code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {
60
+ setRedeemError(redeemModalCopy?.redeemLimitError)
61
+ } else if (code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {
62
+ setRedeemError(redeemModalCopy?.inventoryNotEnough)
63
+ } else if (code === AlpcErrorCode.CodeLpcNotEnoughCredits) {
64
+ setRedeemError(redeemModalCopy?.creditsNotEnough)
65
+ } else if (code === AlpcErrorCode.CodeCrossSiteError) {
66
+ setRedeemError(redeemModalCopy?.crossSiteError)
67
+ } else {
68
+ setRedeemError(redeemModalCopy?.commonError)
69
+ }
70
+ }
71
+
72
+ const inSufficientCredit = useMemo(() => {
73
+ return (
74
+ profile?.activated && Number(item?.alpc?.consumeCredits) > Number(creditInfo?.available_credit || 0)
75
+ )
76
+ }, [profile?.activated, item?.alpc?.consumeCredits, creditInfo?.available_credit])
77
+
78
+ const soldOut = Number(item?.alpc.remainingInventory) <= 0
79
+
80
+ const redeemButtonText = useMemo(() => {
81
+ // 缺货文案
82
+ if (soldOut) {
83
+ return pageCommon?.soldOut || 'Sold Out'
84
+ } else if (!isLogin) {
85
+ return copy.unlockRewards
86
+ } else {
87
+ return copy.redeemBtn
88
+ }
89
+ }, [isLogin, soldOut, copy, pageCommon])
90
+
91
+ if (!item) return null
92
+
93
+ return (
94
+ <Container id={id}>
95
+ <Heading as="h2" size="4" html={copy.title} />
96
+ <div
97
+ className={cn(
98
+ 'mt-[24px] flex h-fit w-full items-center bg-[#eaeaec] p-[24px]',
99
+ 'l:flex-col l:gap-[12px] l:p-[12px]',
100
+ 'min-l:flex-row min-l:gap-[64px]',
101
+ !rounded && 'rounded-none',
102
+ rounded && 'rounded-[12px]'
103
+ )}
104
+ >
105
+ {/* Card Image */}
106
+ <div className="relative flex h-[200px] w-[304px] shrink-0 items-center justify-center overflow-hidden l:h-auto l:aspect-h-[120] l:aspect-w-[304] l:w-full">
107
+ {copy.cardImg?.url && (
108
+ <Picture
109
+ className={cn('size-full', rounded && 'rounded-[12px]')}
110
+ source={copy.mCardImg?.url ? `${copy.cardImg.url},${copy.mCardImg.url} 1024` : copy.cardImg.url}
111
+ />
112
+ )}
113
+ </div>
114
+
115
+ {/* Content Section */}
116
+ <div className="flex w-full items-end justify-between l:flex-col l:items-start l:gap-[24px]">
117
+ {/* Text Content */}
118
+ <div className="flex flex-col gap-[20px] l:w-full l:gap-[12px]">
119
+ <div className="flex flex-col gap-[4px]">
120
+ <Text
121
+ html={copy.cardTitle}
122
+ className="text-[32px] font-bold leading-[1.2] text-[#1D1D1F] l:text-[18px]"
123
+ />
124
+ <Text
125
+ html={copy.cardDesc}
126
+ className="text-[18px] font-bold leading-[1.4] text-[#3D3D3F] l:text-[12px]"
127
+ />
128
+ </div>
129
+ <Text
130
+ html={copy.cardTip}
131
+ className="text-[18px] font-bold leading-[1.4] text-[#000] l:text-[12px]"
132
+ />
133
+ </div>
134
+
135
+ {/* Button and Links */}
136
+ <div className="flex shrink-0 flex-col items-end l:w-full l:items-start">
137
+ <Button
138
+ variant="primary"
139
+ disabled={inSufficientCredit || soldOut}
140
+ onClick={() => {
141
+ if (!isLogin) {
142
+ openSignUpPopup()
143
+ } else if (!profile?.activated && !authCodeActivate.isActivateSuccess) {
144
+ authCodeActivate.open()
145
+ } else {
146
+ setShowModal(true)
147
+ }
148
+ }}
149
+ title={inSufficientCredit ? pageCommon.insufficientCredits : redeemButtonText}
150
+ >
151
+ {redeemButtonText}
152
+ </Button>
153
+ {redeemError && (
154
+ <div className="mt-[8px] text-[14px] font-bold leading-[1.2] text-[#FFC24D] l:text-[12px]">
155
+ {redeemError}
156
+ </div>
157
+ )}
158
+ {(copy.viewRedeemHistory || copy.rulesLink) && (
159
+ <div className="mt-[18px] flex gap-[16px] text-[18px] font-bold leading-[1.4] l:mt-[12px] l:gap-0 l:text-[14px]">
160
+ {copy.viewRedeemHistory && (
161
+ <Text
162
+ html={copy.viewRedeemHistory}
163
+ className="cursor-pointer text-[#4794EC] font-bold underline"
164
+ onClick={() => setOpenMyRewardsModal(true)}
165
+ />
166
+ )}
167
+ {pageCommon.ruleLabel && (
168
+ <Text
169
+ html={pageCommon.ruleLabel}
170
+ className={cn(
171
+ 'cursor-pointer text-[#4794EC] font-bold underline',
172
+ copy.viewRedeemHistory && 'l:ml-[16px]'
173
+ )}
174
+ onClick={() => setRules(copy.rules)}
175
+ />
176
+ )}
177
+ </div>
178
+ )}
179
+ </div>
180
+ </div>
181
+ </div>
182
+
183
+ {showModal && item && (
184
+ <RedeemVirtualProductModal
185
+ copy={redeemModalCopy}
186
+ onClose={() => {
187
+ setShowModal(false)
188
+ setRedeemError(undefined)
189
+ }}
190
+ item={item}
191
+ onError={handleRedeemError}
192
+ />
193
+ )}
194
+
195
+ {rules && (
196
+ <RulesModal
197
+ overlayClassName="md:px-[16px] md:items-center"
198
+ className={cn('md:h-fit md:rounded-b-[16px]', !rounded && 'md:rounded-none')}
199
+ isOpen={rules.length > 0}
200
+ onClose={() => setRules(undefined)}
201
+ titleClassName="border-b-transparent h-[56px]"
202
+ rules={rules}
203
+ scrollClassName="md:mt-[8px] mt-[8px] md:mb-[24px] md:pt-0"
204
+ title={pageCommon?.ruleLabel}
205
+ ruleClassName="text-[#1d1d1f] font-bold"
206
+ />
207
+ )}
208
+ </Container>
209
+ )
210
+ }
@@ -0,0 +1,2 @@
1
+ export { CreditsGoGift } from './CreditsGoGift'
2
+ export type { CreditsGoGiftCopy } from './type'
@@ -0,0 +1,23 @@
1
+ import { ConsumeType } from '../context/const'
2
+
3
+ export type CreditsGoGiftCopy = {
4
+ title: string
5
+ cardImg: {
6
+ url: string
7
+ }
8
+ mCardImg?: {
9
+ url: string
10
+ }
11
+ count?: string
12
+ cardTitle: string
13
+ cardDesc: string
14
+ cardTip: string
15
+ redeemBtn: string
16
+ unlockRewards: string
17
+ viewRedeemHistory?: string
18
+ rulesLink?: string
19
+ redeemId: string | number
20
+ type: ConsumeType
21
+ value?: string
22
+ rules: string[]
23
+ }
@@ -3,8 +3,6 @@ import { Button, Container, Text } from '@anker-in/headless-ui'
3
3
  import { useCallback, useState } from 'react'
4
4
  import { useCreditsContext } from '../context/provider'
5
5
  import { numberFormat } from '../context/utils'
6
- import ActivitiesModal from '../modal/activitiesModal'
7
- import MyRewardsModal from '../modal/MyRewardsModal'
8
6
  import { gaNormalClick, classNames as cn, useHeadlessContext } from '@anker-in/lib'
9
7
  import { ROUNDED_BRANDS } from '../../../constants'
10
8
 
@@ -20,10 +18,8 @@ export type CreditsInfoCardCopy = {
20
18
  }
21
19
 
22
20
  export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?: string }) {
23
- const [openActivities, setOpenActivities] = useState(false)
24
- const [openRewards, setOpenRewards] = useState(false)
25
21
  const [hover, setHover] = useState<boolean>(false)
26
- const { creditInfo, pageCommon } = useCreditsContext()
22
+ const { creditInfo, pageCommon, setOpenMyRewardsModal, setOpenActivitiesModal } = useCreditsContext()
27
23
  const { brand } = useHeadlessContext()
28
24
  const rounded = ROUNDED_BRANDS.includes(brand)
29
25
 
@@ -33,14 +29,14 @@ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?:
33
29
  if (buttonConfig.type) {
34
30
  switch (buttonConfig.type) {
35
31
  case 'activities':
36
- setOpenActivities(true)
32
+ setOpenActivitiesModal(true)
37
33
  break
38
34
  case 'rewards':
39
- setOpenRewards(true)
35
+ setOpenMyRewardsModal(true)
40
36
  break
41
37
  }
42
38
  }
43
- }, [])
39
+ }, [setOpenActivitiesModal, setOpenMyRewardsModal])
44
40
 
45
41
  return (
46
42
  <Container asChild id={id} className="-mb-[86px] -translate-y-[86px] x:-mb-[30px] x:-translate-y-[30px]">
@@ -138,7 +134,7 @@ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?:
138
134
  </div>
139
135
  <div
140
136
  className={cn(
141
- 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 l:pl-[48px] md-l:grid-cols-2'
137
+ 'grid w-fit md:w-full l:mt-[32px] l:gap-[12px] gap-[16px] l:pl-0 pl-[48px] md-l:grid-cols-2'
142
138
  )}
143
139
  >
144
140
  {copy.buttons?.map((item, index) => (
@@ -155,25 +151,6 @@ export function CreditsInfoCard({ copy, id }: { copy: CreditsInfoCardCopy; id?:
155
151
  </Button>
156
152
  ))}
157
153
  </div>
158
-
159
- {pageCommon?.activitiesModal && (
160
- <ActivitiesModal
161
- isOpen={openActivities}
162
- data={pageCommon?.activitiesModal}
163
- onClose={() => {
164
- setOpenActivities(false)
165
- }}
166
- />
167
- )}
168
- {pageCommon?.rewardsModal && (
169
- <MyRewardsModal
170
- isOpen={openRewards}
171
- data={pageCommon?.rewardsModal}
172
- onClose={() => {
173
- setOpenRewards(false)
174
- }}
175
- ></MyRewardsModal>
176
- )}
177
154
  </div>
178
155
  {hover && (
179
156
  <div
@@ -5,7 +5,7 @@ import Decimal from 'decimal.js'
5
5
  import MemberPriceItem from './MemberPriceItem'
6
6
  import RedeemableItem from '../creditsCash/RedeemableItem'
7
7
  import useRedeemableList from '../context/hooks/useRedeemableList'
8
- import RulesModal from '../modal/rulesModal'
8
+ import RulesModal from '../modal/RulesModal'
9
9
  import { Pagination } from './Pagination'
10
10
  import { useProductsByHandles, useHeadlessContext, gaTrack } from '@anker-in/lib'
11
11
  import { CreditsMemberPriceCopy, MemberPriceProduct } from './type'
@@ -4,14 +4,15 @@ import { useCallback, useMemo, useState } from 'react'
4
4
 
5
5
  import RedeemCouponModal from './RedeemCouponModal'
6
6
  import RedeemProductModal from './RedeemProductModal'
7
+ import RedeemVirtualProductModal from './RedeemVirtualProductModal'
7
8
  import { useCreditsContext } from '../context/provider'
8
9
  import useRedeemableList from '../context/hooks/useRedeemableList'
9
- import { AlpcConsumeType, AlpcErrorCode } from '../context/const'
10
+ import { AlpcConsumeType, AlpcErrorCode, ConsumeType } from '../context/const'
10
11
  import { useHeadlessContext, useProductsByHandles, gaTrack, classNames as cn } from '@anker-in/lib'
11
12
  import type { RedeemableItem as RedeemableItemType } from '../type'
12
13
  import { RedeemableItem } from './RedeemableItem'
13
14
  import { ROUNDED_BRANDS } from '../../../constants'
14
- import RulesModal from '../modal/rulesModal'
15
+ import RulesModal from '../modal/RulesModal'
15
16
  import { CreditsRedeemListCopy } from './type'
16
17
  import { useRegistration } from '../../../components/registration'
17
18
  import { numberFormat } from '../context/utils'
@@ -38,6 +39,14 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
38
39
 
39
40
  const { listLoading, redeemableList, getRedeemableList } = useRedeemableList()
40
41
 
42
+ // 合并 redeemModal 文案,优先使用 copy.redeemModal,fallback 到 pageCommon.redeemModal
43
+ const redeemModalCopy = useMemo(() => {
44
+ return {
45
+ ...(pageCommon?.redeemModal || {}),
46
+ ...(copy.redeemModal || {}),
47
+ }
48
+ }, [copy.redeemModal, pageCommon?.redeemModal])
49
+
41
50
  const alpcList = useMemo(() => {
42
51
  return redeemableList.map(item => {
43
52
  return {
@@ -101,7 +110,7 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
101
110
  className={cn(
102
111
  'text-brand-color-0',
103
112
  brand === 'ankersolix' &&
104
- 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'
113
+ 'bg-gradient-to-r from-[#2c7ed0] via-[#00a9e1] via-[43%] to-[#00db84] bg-clip-text text-transparent'
105
114
  )}
106
115
  >
107
116
  {numberFormat(creditInfo?.available_credit || 0).toString()}
@@ -164,28 +173,41 @@ export const CreditsRedeemList = ({ copy, id }: { copy: CreditsRedeemListCopy; i
164
173
  </div>
165
174
  )}
166
175
 
167
- {popRedeemData?.alpc?.consumeType === AlpcConsumeType.Coupon && copy?.redeemModal?.coupon && popRedeemData && (
168
- <RedeemCouponModal
169
- isOpen={!!popRedeemData}
170
- item={popRedeemData}
171
- copy={copy}
172
- onError={handleRedeemError}
173
- onClose={() => {
174
- setPopRedeemData(undefined)
175
- }}
176
- />
177
- )}
178
- {popRedeemData?.alpc?.consumeType === AlpcConsumeType.Product && copy?.redeemModal && popRedeemData && (
176
+ {(popRedeemData?.config?.type === ConsumeType.Coupon ||
177
+ popRedeemData?.config?.type === ConsumeType.ShippingCoupon) &&
178
+ redeemModalCopy?.coupon &&
179
+ popRedeemData && (
180
+ <RedeemCouponModal
181
+ item={popRedeemData}
182
+ copy={redeemModalCopy}
183
+ onError={handleRedeemError}
184
+ onClose={() => {
185
+ setPopRedeemData(undefined)
186
+ }}
187
+ />
188
+ )}
189
+ {popRedeemData?.config?.type === ConsumeType.Product && redeemModalCopy?.product && popRedeemData && (
179
190
  <RedeemProductModal
180
- isOpen={!!popRedeemData}
181
191
  item={popRedeemData}
182
- copy={copy}
192
+ copy={redeemModalCopy}
183
193
  onError={handleRedeemError}
184
194
  onClose={() => {
185
195
  setPopRedeemData(undefined)
186
196
  }}
187
197
  />
188
198
  )}
199
+ {(popRedeemData?.config?.type === ConsumeType.GiftCard || popRedeemData?.config?.type === ConsumeType.GoGift) &&
200
+ redeemModalCopy?.virtualProduct &&
201
+ popRedeemData && (
202
+ <RedeemVirtualProductModal
203
+ item={popRedeemData}
204
+ copy={redeemModalCopy}
205
+ onError={handleRedeemError}
206
+ onClose={() => {
207
+ setPopRedeemData(undefined)
208
+ }}
209
+ />
210
+ )}
189
211
  {rules && (
190
212
  <RulesModal
191
213
  overlayClassName="md:px-[16px] md:items-center"
@@ -0,0 +1,77 @@
1
+ import { Button, Picture, Text } from '@anker-in/headless-ui'
2
+ import classNames from 'classnames'
3
+ import { numberFormat } from '../../context/utils'
4
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
5
+ import { NoneProductValue } from '../RedeemProductModal/NonProductValue'
6
+ import { useCreditsContext } from '../../context/provider'
7
+
8
+ type CouponInitProps = {
9
+ item: RedeemableItemType
10
+ copy: RedeemModalCommon
11
+ loading: boolean
12
+ disabled: boolean
13
+ onConfirm: () => void
14
+ }
15
+
16
+ export const CouponInit = ({ item, copy, loading, disabled, onConfirm }: CouponInitProps) => {
17
+ const { pageCommon } = useCreditsContext()
18
+
19
+ return (
20
+ <>
21
+ <div
22
+ className={classNames(
23
+ 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'
24
+ )}
25
+ >
26
+ <div className="relative mx-auto h-[164px] w-[324px]">
27
+ {pageCommon?.imageMapping?.[item.config?.type]?.url && (
28
+ <Picture source={pageCommon.imageMapping[item.config.type].url} className="h-full [&_img]:h-full" />
29
+ )}
30
+ <div className="absolute bottom-[8px] left-[16px] font-extrabold text-white">
31
+ {item.config.value ? (
32
+ <NoneProductValue item={item} />
33
+ ) : (
34
+ <Text size={3} html={item.alpc?.title} />
35
+ )}
36
+ </div>
37
+ </div>
38
+ <Text
39
+ as="p"
40
+ className={classNames(
41
+ 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'
42
+ )}
43
+ >
44
+ {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}
45
+ </Text>
46
+ {item.config?.rules?.length > 0 && (
47
+ <div className="mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]">
48
+ <div className="mb-[4px]">{pageCommon?.ruleLabel}:</div>
49
+ <ul className="ml-4 grid grid-flow-row gap-[4px]">
50
+ {item.config?.rules?.map((text, index) => (
51
+ <li className="list-disc" key={index}>
52
+ <Text html={text} />
53
+ </li>
54
+ ))}
55
+ </ul>
56
+ </div>
57
+ )}
58
+ </div>
59
+ <div className="bg-white px-[48px] pt-[24px] text-center md:px-[16px]">
60
+ <Text
61
+ className="block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"
62
+ html={copy.confirmTitle}
63
+ ></Text>
64
+ <Button
65
+ loading={loading}
66
+ variant="primary"
67
+ size="lg"
68
+ className="mt-[16px] w-full"
69
+ onClick={onConfirm}
70
+ disabled={disabled}
71
+ >
72
+ {copy.confirmButton}
73
+ </Button>
74
+ </div>
75
+ </>
76
+ )
77
+ }
@@ -0,0 +1,86 @@
1
+ import { Button, Picture, Text } from '@anker-in/headless-ui'
2
+ import classNames from 'classnames'
3
+ import useCopy from '../../context/hooks/useCopy'
4
+ import { useCreditsContext } from '../../context/provider'
5
+ import { useHeadlessContext } from '@anker-in/lib'
6
+ import type { RedeemModalCommon, RedeemableItem as RedeemableItemType } from '../../type'
7
+ import { NoneProductValue } from '../RedeemProductModal/NonProductValue'
8
+
9
+ type CouponSuccessProps = {
10
+ item: RedeemableItemType
11
+ copy: RedeemModalCommon
12
+ couponCode: string
13
+ disabled: boolean
14
+ onClose: () => void
15
+ }
16
+
17
+ export const CouponSuccess = ({ item, copy, couponCode, disabled, onClose }: CouponSuccessProps) => {
18
+ const { locale } = useHeadlessContext()
19
+ const { pageCommon } = useCreditsContext()
20
+ const { copy: copyText, copied: copiedStatus } = useCopy()
21
+ return (
22
+ <>
23
+ <div
24
+ className={classNames(
25
+ 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'
26
+ )}
27
+ >
28
+ <div className="relative mx-auto h-[164px] w-[324px]">
29
+ {pageCommon?.imageMapping?.[item.config?.type]?.url && (
30
+ <Picture source={pageCommon.imageMapping[item.config.type].url} className="h-full [&_img]:h-full" />
31
+ )}
32
+ <div className="absolute bottom-[8px] left-[16px] font-extrabold text-white">
33
+ {item.config.value ? (
34
+ <NoneProductValue item={item} />
35
+ ) : (
36
+ <Text size={3} html={item.alpc?.title} />
37
+ )}
38
+ </div>
39
+ </div>
40
+ <div className="mt-[30px] flex items-center justify-center md:mt-[18px]">
41
+ <div className="mr-[10px] text-[24px] font-bold leading-[1.4] md:leading-[1.2]">{couponCode}</div>
42
+ <div
43
+ className={classNames(
44
+ 'cursor-pointer text-[16px] font-bold leading-[1.2] underline md:text-[14px]',
45
+ copiedStatus ? 'pointer-events-none' : 'pointer-events-auto'
46
+ )}
47
+ onClick={() => copyText(couponCode)}
48
+ role="button"
49
+ tabIndex={0}
50
+ onKeyDown={e => {
51
+ if (e.key === 'Enter' || e.key === ' ') {
52
+ e.preventDefault()
53
+ }
54
+ }}
55
+ >
56
+ {copiedStatus ? pageCommon?.copied : pageCommon?.copy}
57
+ </div>
58
+ </div>
59
+ </div>
60
+ <div className="bg-white px-[48px] pt-[24px] text-center md:px-[16px]">
61
+ <div className="flex flex-col">
62
+ <Text
63
+ className="mb-[4px] text-[24px] font-bold leading-[1.2] md:text-[20px]"
64
+ html={copy.coupon.successTitle}
65
+ ></Text>
66
+ <Text
67
+ className="text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:text-[14px]"
68
+ html={copy.coupon.successDesc}
69
+ ></Text>
70
+ </div>
71
+ <Button
72
+ variant="primary"
73
+ size="lg"
74
+ className="mt-[16px] w-full"
75
+ onClick={() => {
76
+ window.location.href = copy.coupon.successButtonUrl || `/${locale}`
77
+ onClose()
78
+ }}
79
+ disabled={disabled}
80
+ >
81
+ {copy.coupon.successButton}
82
+ </Button>
83
+ </div>
84
+ </>
85
+ )
86
+ }