@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
@@ -1,41 +1,34 @@
1
- import { Button, Picture, Text } from '@anker-in/headless-ui'
2
- import classNames from 'classnames'
1
+ import { Text } from '@anker-in/headless-ui'
3
2
  import { useCallback, useEffect, useState } from 'react'
4
- import type { ModalContainerProps } from '../modal/modalContainer'
5
- import useCopy from '../context/hooks/useCopy'
3
+ import type { ModalContainerProps } from '../modal/ModalContainer'
6
4
  import { useCreditsContext } from '../context/provider'
7
5
  import { useRedeemCoupon } from '../context/hooks/useRedeemCoupon'
8
6
  import { AlpcErrorCode } from '../context/const'
9
- import { CreditsModalContainer } from '../modal/modalContainer'
10
- import { numberFormat } from '../context/utils'
11
- import type { RedeemableItem as RedeemableItemType } from '../type'
12
- import { useHeadlessContext } from '@anker-in/lib'
13
- import { CreditsRedeemListCopy } from './type'
14
- import { NoneProductValue } from './RedeemProductModal/NonProductValue'
7
+ import { CreditsModalContainer } from '../modal/ModalContainer'
8
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../type'
9
+ import { CouponInit } from './RedeemCouponModal/CouponInit'
10
+ import { CouponSuccess } from './RedeemCouponModal/CouponSuccess'
15
11
 
16
12
  function RedeemCouponModal({
17
13
  item,
18
14
  copy,
19
15
  onError,
20
16
  ...props
21
- }: ModalContainerProps & {
17
+ }: Omit<ModalContainerProps, 'isOpen'> & {
22
18
  item: RedeemableItemType
23
- copy: CreditsRedeemListCopy
19
+ copy: RedeemModalCommon
24
20
  onError: (code: number) => void
25
21
  }) {
26
- const { locale } = useHeadlessContext()
27
22
  const [couponCode, setCouponCode] = useState<string>()
28
23
  const [errorInfo, setErrorInfo] = useState<string>()
29
-
30
24
  const [disabled, setDisabled] = useState(false)
31
- const { copy: copyText, copied: copiedStatus } = useCopy()
32
25
 
33
- const { profile, fetchCreditInfo, pageCommon } = useCreditsContext()
26
+ const { profile, fetchCreditInfo } = useCreditsContext()
34
27
 
35
28
  const { isMutating: loading, trigger } = useRedeemCoupon({
36
29
  onSuccess(responseData) {
37
30
  if (!responseData) {
38
- setErrorInfo(copy.redeemModal.commonError)
31
+ setErrorInfo(copy.commonError)
39
32
  return
40
33
  }
41
34
 
@@ -45,26 +38,26 @@ function RedeemCouponModal({
45
38
  } else {
46
39
  let errorMsg
47
40
  if (responseData.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {
48
- errorMsg = copy.redeemModal.redeemLimitError
41
+ errorMsg = copy.redeemLimitError
49
42
  setDisabled(true)
50
43
  } else if (responseData.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {
51
- errorMsg = copy.redeemModal.inventoryNotEnough
44
+ errorMsg = copy.inventoryNotEnough
52
45
  setDisabled(true)
53
46
  } else if (responseData.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {
54
- errorMsg = copy.redeemModal.creditsNotEnough
47
+ errorMsg = copy.creditsNotEnough
55
48
  setDisabled(true)
56
49
  fetchCreditInfo(profile?.user_id)
57
50
  } else if (responseData.code === AlpcErrorCode.CodeCrossSiteError) {
58
- errorMsg = copy.redeemModal.crossSiteError
51
+ errorMsg = copy.crossSiteError
59
52
  setDisabled(true)
60
53
  }
61
54
 
62
- setErrorInfo(errorMsg || copy.redeemModal.commonError || '')
55
+ setErrorInfo(errorMsg || copy.commonError || '')
63
56
  onError && onError(responseData.code)
64
57
  }
65
58
  },
66
59
  onError(error) {
67
- setErrorInfo(error.message || copy.redeemModal.commonError)
60
+ setErrorInfo(error.message || copy.commonError)
68
61
  },
69
62
  })
70
63
 
@@ -77,133 +70,31 @@ function RedeemCouponModal({
77
70
  }, [item, profile, trigger])
78
71
 
79
72
  useEffect(() => {
80
- if (!props.isOpen) {
73
+ return () => {
81
74
  setDisabled(false)
82
75
  setErrorInfo('')
76
+ setCouponCode(undefined)
83
77
  }
84
- }, [props.isOpen])
78
+ }, [])
85
79
 
86
80
  return (
87
81
  <CreditsModalContainer
88
82
  {...props}
83
+ isOpen={!!item}
89
84
  className="w-[540px] md:h-auto"
90
85
  scrollClassName="mb-[40px] min-l:px-0 md:mb-[24px] px-0"
91
86
  titleClassName="h-[56px] bg-[#F5F5F7]"
92
87
  >
93
- <div
94
- className={classNames(
95
- 'max-h-[500px] overflow-y-auto bg-[#F5F5F7] px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]'
96
- )}
97
- >
98
- <div className="relative mx-auto h-[164px] w-[324px]">
99
- {pageCommon?.imageMapping?.[item.config?.type]?.url && (
100
- <Picture source={pageCommon.imageMapping[item.config.type].url} className="h-full [&_img]:h-full" />
101
- )}
102
- <div className="absolute bottom-[8px] left-[16px] font-extrabold text-white">
103
- {item.config.value ? (
104
- <NoneProductValue item={item} copy={copy} />
105
- ) : (
106
- <Text size={3} html={item.alpc?.title} />
107
- )}
108
- </div>
88
+ {couponCode && !loading ? (
89
+ <CouponSuccess item={item} copy={copy} couponCode={couponCode} disabled={disabled} onClose={props.onClose} />
90
+ ) : (
91
+ <CouponInit item={item} copy={copy} loading={loading} disabled={disabled} onConfirm={handleConfirm} />
92
+ )}
93
+ {errorInfo && (
94
+ <div className="mx-auto max-w-full bg-white px-[48px] py-[12px] text-center text-[#FF0000] md:px-[16px]">
95
+ <Text className="text-[14px] font-semibold text-[#1F2021]" html={errorInfo} />
109
96
  </div>
110
- {couponCode ? (
111
- <div className="mt-[30px] flex items-center justify-center md:mt-[18px]">
112
- <div className="mr-[10px] text-[24px] font-bold leading-[1.4] md:leading-[1.2]">{couponCode}</div>
113
- <div
114
- className={classNames(
115
- 'cursor-pointer text-[16px] font-bold leading-[1.2] underline md:text-[14px]',
116
- copiedStatus ? 'pointer-events-none' : 'pointer-events-auto'
117
- )}
118
- onClick={() => {
119
- copyText(couponCode)
120
- }}
121
- role="button"
122
- tabIndex={0}
123
- onKeyDown={e => {
124
- if (e.key === 'Enter' || e.key === ' ') {
125
- e.preventDefault()
126
- }
127
- }}
128
- >
129
- {copiedStatus ? pageCommon?.copied : pageCommon?.copy}
130
- </div>
131
- </div>
132
- ) : (
133
- <Text
134
- as="p"
135
- className={classNames(
136
- 'mt-[30px] text-center text-[24px] font-bold leading-[1.2] md:mt-[18px] md:text-[20px] md:leading-[1.2]'
137
- )}
138
- >
139
- {numberFormat(item.alpc?.consumeCredits)} {pageCommon?.pointUnit}
140
- </Text>
141
- )}
142
- {!couponCode && item.config?.rules?.length > 0 && (
143
- <div className="mt-[18px] w-full text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:mt-[12px] md:text-[14px]">
144
- <div className="mb-[4px]">{pageCommon?.ruleLabel}:</div>
145
- <ul className="ml-4 grid grid-flow-row gap-[4px]">
146
- {item.config?.rules?.map((text, index) => (
147
- <li className="list-disc" key={index}>
148
- <Text html={text} />
149
- </li>
150
- ))}
151
- </ul>
152
- </div>
153
- )}
154
- </div>
155
- <div className="bg-white px-[48px] pt-[24px] text-center md:px-[16px]">
156
- {couponCode && !loading ? (
157
- <>
158
- <div className="flex flex-col">
159
- <Text
160
- className="mb-[4px] text-[24px] font-bold leading-[1.2] md:text-[20px]"
161
- html={copy.redeemModal.coupon.successTitle}
162
- ></Text>
163
- <Text
164
- className="text-[16px] font-bold leading-[1.4] text-[#6D6D6F] md:text-[14px]"
165
- html={copy.redeemModal.coupon.successDesc}
166
- ></Text>
167
- </div>
168
- <Button
169
- variant="primary"
170
- size="lg"
171
- className="mt-[16px] w-full"
172
- onClick={() => {
173
- window.location.href = copy.redeemModal.coupon.successButtonUrl || `/${locale}`
174
- if (props.onClose) {
175
- props.onClose()
176
- }
177
- }}
178
- disabled={disabled}
179
- >
180
- {copy.redeemModal.coupon.successButton}
181
- </Button>
182
- </>
183
- ) : (
184
- <>
185
- <Text
186
- className="block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"
187
- html={copy.redeemModal.confirmTitle}
188
- ></Text>
189
- <Button
190
- loading={loading}
191
- variant="primary"
192
- size="lg"
193
- className="mt-[16px] w-full"
194
- onClick={handleConfirm}
195
- disabled={disabled}
196
- >
197
- {copy.redeemModal.confirmButton}
198
- </Button>
199
- </>
200
- )}
201
- {errorInfo && (
202
- <div className="mx-auto max-w-full py-[12px] text-center text-[#FF0000]">
203
- <Text className="text-[14px] font-semibold text-[#1F2021]" html={errorInfo} />
204
- </div>
205
- )}
206
- </div>
97
+ )}
207
98
  </CreditsModalContainer>
208
99
  )
209
100
  }
@@ -2,14 +2,13 @@ import { Button, Text } from '@anker-in/headless-ui'
2
2
  import classNames from 'classnames'
3
3
  import { AddressForm } from '../AddressForm'
4
4
  import { useHeadlessContext } from '@anker-in/lib'
5
- import type { RedeemableItem as RedeemableItemType } from '../../type'
6
- import { CreditsRedeemListCopy } from '../type'
5
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
7
6
  import { ProductInfo } from './ProductInfo'
8
7
  import useCountries from '../../context/hooks/useCountries'
9
8
  import { ROUNDED_BRANDS } from '../../../../constants'
10
9
 
11
10
  type AddressProps = {
12
- copy: CreditsRedeemListCopy
11
+ copy: RedeemModalCommon
13
12
  shippingAddress: string
14
13
  setAddress: (address: Record<string, any>) => void
15
14
  validateAddress: (address: Record<string, any>) => boolean
@@ -44,12 +43,12 @@ export const Address = ({
44
43
  <div className={classNames('max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]')}>
45
44
  <div>
46
45
  {shippingAddress && <Text className="mb-5 text-[16px] font-bold" html={shippingAddress}></Text>}
47
- {copy.redeemModal?.product?.addressForm && (
46
+ {copy?.product?.addressForm && (
48
47
  <AddressForm
49
48
  onChange={setAddress}
50
49
  validate={validateAddress}
51
50
  errors={validateErrors}
52
- form={copy.redeemModal.product.addressForm}
51
+ form={copy.product.addressForm}
53
52
  countries={countries}
54
53
  countriesLoading={countriesLoading}
55
54
  ></AddressForm>
@@ -68,7 +67,7 @@ export const Address = ({
68
67
  onClick={handlePayment}
69
68
  disabled={disabled}
70
69
  >
71
- {copy.redeemModal.product.paymentButton}
70
+ {copy.product.paymentButton}
72
71
  </Button>
73
72
  </div>
74
73
  </div>
@@ -2,14 +2,13 @@ import { Button, Picture, Text } from '@anker-in/headless-ui'
2
2
  import classNames from 'classnames'
3
3
  import { Fragment, useMemo } from 'react'
4
4
  import { numberFormat } from '../../context/utils'
5
- import type { RedeemableItem as RedeemableItemType } from '../../type'
6
- import { CreditsRedeemListCopy } from '../type'
5
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
7
6
  import { ConsumeType } from '../../context/const'
8
7
  import { NoneProductValue } from './NonProductValue'
9
8
  import { useCreditsContext } from '../../context/provider'
10
9
 
11
10
  type InitProps = {
12
- copy: CreditsRedeemListCopy
11
+ copy: RedeemModalCommon
13
12
  item: RedeemableItemType
14
13
  loading: boolean
15
14
  disabled: boolean
@@ -23,8 +22,8 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
23
22
  return item.config.rules
24
23
  }
25
24
  const descriptions = item.config.desc?.split('<br>') || []
26
- return [...descriptions, ...(copy.redeemModal.product.rules || [])]
27
- }, [item.config.rules, item.config.desc, copy.redeemModal.product.rules])
25
+ return [...descriptions, ...(copy.product.rules || [])]
26
+ }, [item.config.rules, item.config.desc, copy.product.rules])
28
27
 
29
28
  return (
30
29
  <div className="flex flex-col">
@@ -38,14 +37,14 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
38
37
  <Picture
39
38
  source={
40
39
  item.config?.type === ConsumeType.Product
41
- ? item.product.images[0]?.url
40
+ ? item.product?.images[0]?.url
42
41
  : pageCommon?.imageMapping?.[item.config.type]?.url || item.config.image?.url
43
42
  }
44
43
  className="h-full w-auto [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"
45
44
  ></Picture>
46
45
  {/* 礼品卡展示 */}
47
46
  <div className="absolute bottom-[8px] left-[16px] font-extrabold text-white">
48
- {item.config.value && <NoneProductValue item={item} copy={copy} />}
47
+ {item.config.value && <NoneProductValue item={item} />}
49
48
  </div>
50
49
  </div>
51
50
  <div className="mt-[30px] md:mt-[18px]">
@@ -66,9 +65,9 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
66
65
  </Text>
67
66
  </div>
68
67
  <div className="mt-[16px] w-full text-[14px] font-semibold text-[#777] md:mt-[12px]">
69
- <div className="text-[16px] font-bold leading-[1.4]">{copy.redeemModal.product.stepTitle}</div>
68
+ <div className="text-[16px] font-bold leading-[1.4]">{copy.product.stepTitle}</div>
70
69
  <div className="mt-[4px] flex items-center justify-center">
71
- {copy.redeemModal.product.steps?.map((item, index) => (
70
+ {copy.product.steps?.map((item, index) => (
72
71
  <Fragment key={index}>
73
72
  <div className="flex w-[76px] flex-col items-center text-center md:h-[94px] min-l:w-[130px]">
74
73
  <Picture source={item.imageUrl} className="mb-[4px] h-[58px] w-[58px]"></Picture>
@@ -76,7 +75,7 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
76
75
  {item.title}
77
76
  </div>
78
77
  </div>
79
- {index !== copy.redeemModal.product.steps.length - 1 && (
78
+ {index !== copy.product.steps.length - 1 && (
80
79
  <Picture
81
80
  source="https://cdn.shopify.com/s/files/1/0517/6767/3016/files/step-arrow.png?v=1690458150"
82
81
  className="mb-[20px] h-[10px] w-[20px] md:mb-[30px] md:h-[5px] md:w-[12px]"
@@ -103,7 +102,7 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
103
102
  <Text
104
103
  as="p"
105
104
  className="block text-[24px] font-bold leading-[1.2] md:text-[20px] md:leading-[1.2]"
106
- html={copy.redeemModal.confirmTitle}
105
+ html={copy.confirmTitle}
107
106
  ></Text>
108
107
  <Button
109
108
  loading={loading}
@@ -115,7 +114,7 @@ export const Init = ({ copy, item, loading, disabled, setStatus }: InitProps) =>
115
114
  setStatus('address')
116
115
  }}
117
116
  >
118
- {copy.redeemModal.confirmButton}
117
+ {copy.confirmButton}
119
118
  </Button>
120
119
  </div>
121
120
  </div>
@@ -1,25 +1,34 @@
1
1
  import { Text } from '@anker-in/headless-ui'
2
2
  import { RedeemableItem } from '../../type'
3
- import { CreditsRedeemListCopy } from '../type'
4
3
  import { ConsumeType } from '../../context/const'
5
4
  import { useCreditsContext } from '../../context/provider'
6
5
 
7
- export const NoneProductValue = ({ item, copy }: { item: RedeemableItem; copy: CreditsRedeemListCopy }) => {
6
+ export const NoneProductValue = ({ item }: { item: RedeemableItem }) => {
8
7
  const { pageCommon } = useCreditsContext()
8
+
9
9
  // shipping coupon 仅展示文案
10
10
  if (item.config?.type === ConsumeType.ShippingCoupon) {
11
11
  return <Text className="text-[24px] w-[70%] font-bold leading-none" html={item.config?.value} as="p" />
12
- } else {
13
- return item.config?.value ? (
14
- <div className="flex items-end gap-[4px]">
15
- <Text className="text-[64px] font-extrabold leading-none" html={item.config.value.toString()} />
16
- <Text
17
- className="text-[24px] font-bold leading-[2]"
18
- html={item.config.type === ConsumeType.Coupon ? pageCommon?.off : pageCommon?.giftCardLabel}
19
- />
20
- </div>
21
- ) : (
22
- <Text className="text-[24px] w-[70%] font-bold leading-none" html={item.config?.title} as="p" />
23
- )
24
12
  }
13
+
14
+ if (!item.config?.value) {
15
+ return <Text className="text-[24px] w-[70%] font-bold leading-none" html={item.config?.title} as="p" />
16
+ }
17
+
18
+ // 根据类型确定后缀文案
19
+ let suffixLabel = ''
20
+ if (item.config.type === ConsumeType.Coupon) {
21
+ suffixLabel = pageCommon?.off || ''
22
+ } else if (item.config.type === ConsumeType.GoGift) {
23
+ suffixLabel = pageCommon?.goGiftLabel || ''
24
+ } else if (item.config.type === ConsumeType.GiftCard) {
25
+ suffixLabel = pageCommon?.giftCardLabel || ''
26
+ }
27
+
28
+ return (
29
+ <div className="flex items-end gap-[4px]">
30
+ <Text className="text-[64px] font-extrabold leading-none" html={item.config.value.toString()} />
31
+ {suffixLabel && <Text className="text-[24px] font-bold leading-[2]" html={suffixLabel} />}
32
+ </div>
33
+ )
25
34
  }
@@ -1,31 +1,33 @@
1
1
  import { Picture, Text } from '@anker-in/headless-ui'
2
2
  import { formatPrice } from '../../context/utils'
3
- import type { RedeemableItem as RedeemableItemType } from '../../type'
4
- import { CreditsRedeemListCopy } from '../type'
3
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
5
4
  import { useHeadlessContext } from '@anker-in/lib'
6
5
  import { useCreditsContext } from '../../context/provider'
7
6
 
8
7
  type ProductInfoProps = {
9
8
  item: RedeemableItemType
10
- copy: CreditsRedeemListCopy
9
+ copy: RedeemModalCommon
11
10
  }
12
11
 
13
12
  export const ProductInfo = ({ item, copy }: ProductInfoProps) => {
14
13
  const { locale } = useHeadlessContext()
15
14
  const { pageCommon } = useCreditsContext()
16
15
 
16
+ // ProductInfo 只在 RedeemProductModal 中使用,此时 product 和 variant 必定存在
17
+ if (!item.product || !item.variant) return null
18
+
17
19
  return (
18
20
  <div className="flex w-full items-center justify-center md:items-start md:justify-start">
19
21
  <Picture
20
22
  className="mr-[16px] size-[100px] shrink-0 md:mr-[12px] md:hidden md:size-[44px] [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"
21
- source={item.variant.image?.url || item.product?.images[0]?.url}
23
+ source={item.variant.image?.url || item.product.images[0]?.url}
22
24
  alt={item.product.title}
23
25
  ></Picture>
24
26
  <div className="md:flex md:flex-col">
25
27
  <div className="md:flex md:items-center">
26
28
  <Picture
27
29
  className="mr-[16px] size-[100px] shrink-0 md:mr-[12px] md:size-[44px] min-md:hidden [&_img]:h-full [&_img]:w-auto [&_img]:object-contain"
28
- source={item.variant.image?.url || item.product?.images[0]?.url}
30
+ source={item.variant.image?.url || item.product.images[0]?.url}
29
31
  alt={item.product.title}
30
32
  ></Picture>
31
33
  <div className="flex-1 text-[16px] font-bold leading-[1.4] min-l:!hidden" title={item.product.title}>
@@ -43,12 +45,12 @@ export const ProductInfo = ({ item, copy }: ProductInfoProps) => {
43
45
  <div className="mr-[40px] text-[15px] font-bold text-[#777] md:mr-0 md:text-[12px]">
44
46
  {item.variant.title && item.variant.title.toLowerCase() !== 'default title' && (
45
47
  <div className="mb-[8px] flex items-center md:mb-[4px]">
46
- <span>{copy.redeemModal.product.variantLabel}: </span>
48
+ <span>{copy.product.variantLabel}: </span>
47
49
  <span className="ml-1">{item.variant.title}</span>
48
50
  </div>
49
51
  )}
50
52
  <div className="mb-[8px] flex items-center md:mb-[4px]">
51
- <span>{copy.redeemModal.product.shippingFeeLabel}: </span>
53
+ <span>{copy.product.shippingFeeLabel}: </span>
52
54
  <span className="ml-1">
53
55
  {formatPrice({
54
56
  amount: 0,
@@ -60,11 +62,11 @@ export const ProductInfo = ({ item, copy }: ProductInfoProps) => {
60
62
  </div>
61
63
  <div className="text-[15px] font-bold text-[#777] md:text-[12px]">
62
64
  <div className="mb-[8px] flex items-center md:mb-[4px]">
63
- <span>{copy.redeemModal.product.quantityLabel}: </span>
65
+ <span>{copy.product.quantityLabel}: </span>
64
66
  <span className="ml-1">1</span>
65
67
  </div>
66
68
  <div className="l:flex l:items-center l:justify-between">
67
- <span>{copy.redeemModal.product.totalPriceLabel}: </span>
69
+ <span>{copy.product.totalPriceLabel}: </span>
68
70
  <span className="ml-1">
69
71
  {item.alpc?.consumeCredits} {pageCommon?.pointUnit}
70
72
  </span>
@@ -1,13 +1,12 @@
1
1
  import { Button, Text } from '@anker-in/headless-ui'
2
2
  import classNames from 'classnames'
3
- import type { RedeemableItem as RedeemableItemType } from '../../type'
4
- import { CreditsRedeemListCopy } from '../type'
3
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
5
4
  import { ProductInfo } from './ProductInfo'
6
5
  import { useHeadlessContext } from '@anker-in/lib'
7
6
  import { ROUNDED_BRANDS } from '../../../../constants'
8
7
 
9
8
  type SuccessProps = {
10
- copy: CreditsRedeemListCopy
9
+ copy: RedeemModalCommon
11
10
  shippingProduct: string
12
11
  loading: boolean
13
12
  address: Record<string, any> | undefined
@@ -23,7 +22,7 @@ export const Success = ({ copy, shippingProduct, loading, address, disabled, onC
23
22
  <div className={classNames('max-h-[500px] overflow-y-auto px-[48px] pb-[24px] md:max-h-[400px] md:px-[16px]')}>
24
23
  <div className="flex flex-col items-center">
25
24
  <div className="mb-[16px] grid grid-flow-row gap-y-[4px] md:mb-[12px]">
26
- {copy.redeemModal.product.successDesc.map((description: string, index: number) => (
25
+ {copy.product.successDesc.map((description: string, index: number) => (
27
26
  <Text key={index} className="text-[18px] font-bold leading-[1.4] md:text-[14px]" html={description}></Text>
28
27
  ))}
29
28
  </div>
@@ -41,7 +40,7 @@ export const Success = ({ copy, shippingProduct, loading, address, disabled, onC
41
40
  onClick={onClose}
42
41
  disabled={disabled}
43
42
  >
44
- {copy.redeemModal.product.paymentButton}
43
+ {copy.product.paymentButton}
45
44
  </Button>
46
45
  </div>
47
46
  </div>
@@ -5,28 +5,26 @@ import useCountries from '../../context/hooks/useCountries'
5
5
  import { AlpcErrorCode } from '../../context/const'
6
6
  import { useAddressValidate } from '../../context/hooks/useAddressValidate'
7
7
  import { useRedeemProduct } from '../../context/hooks/useRedeemProduct'
8
- import type { ModalContainerProps } from '../../modal/modalContainer'
9
- import { CreditsModalContainer } from '../../modal/modalContainer'
10
- import type { RedeemableItem as RedeemableItemType } from '../../type'
8
+ import type { ModalContainerProps } from '../../modal/ModalContainer'
9
+ import { CreditsModalContainer } from '../../modal/ModalContainer'
10
+ import type { RedeemableItem as RedeemableItemType, RedeemModalCommon } from '../../type'
11
11
  import { useHeadlessContext } from '@anker-in/lib'
12
- import { CreditsRedeemListCopy } from '../type'
13
12
  import { Error } from './Error'
14
13
  import { Success } from './Success'
15
14
  import { Address } from './Address'
16
15
  import { Init } from './Init'
17
16
 
18
- type RedeemProductModalProps = ModalContainerProps & {
17
+ type RedeemProductModalProps = Omit<ModalContainerProps, 'isOpen'> & {
19
18
  item: RedeemableItemType
20
- copy: CreditsRedeemListCopy
19
+ copy: RedeemModalCommon
21
20
  onError: (code: AlpcErrorCode) => void
22
21
  }
23
22
 
24
23
  function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModalProps) {
25
- const { fetchCreditInfo, profile } = useCreditsContext()
26
- const { storeDomain, locale } = useHeadlessContext()
24
+ const { fetchCreditInfo, profile, pageCommon } = useCreditsContext()
25
+ const { storeDomain } = useHeadlessContext()
27
26
 
28
- const { pageCommon } = useCreditsContext()
29
- const { shippingAddress, shippingProduct } = copy.redeemModal.product
27
+ const { shippingAddress, shippingProduct } = copy.product
30
28
 
31
29
  const [status, setStatus] = useState<'init' | 'address' | 'success' | 'error'>('init')
32
30
  const [address, setAddress] = useState<any>()
@@ -45,8 +43,8 @@ function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModa
45
43
  setStatus('error')
46
44
  setErrorInfo({
47
45
  code: 0,
48
- imageUrl: copy.redeemModal.errorImageUrl || '',
49
- message: copy.redeemModal.commonError || '',
46
+ imageUrl: copy.errorImageUrl || '',
47
+ message: copy.commonError || '',
50
48
  })
51
49
  return
52
50
  }
@@ -58,26 +56,26 @@ function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModa
58
56
  let errorMsg
59
57
  let errorImage
60
58
  if (responseData.code === AlpcErrorCode.CodeLpcShopifyCouponRuleRedeemLimit) {
61
- errorMsg = copy.redeemModal.redeemLimitError
59
+ errorMsg = copy.redeemLimitError
62
60
  setDisabled(true)
63
61
  } else if (responseData.code === AlpcErrorCode.CodeLpcRuleInventoryNotEnough) {
64
- errorMsg = copy.redeemModal.inventoryNotEnough
62
+ errorMsg = copy.inventoryNotEnough
65
63
  setDisabled(true)
66
- errorImage = copy.redeemModal.inventoryNotEnough
64
+ errorImage = copy.inventoryNotEnough
67
65
  } else if (responseData.code === AlpcErrorCode.CodeLpcNotEnoughCredits) {
68
- errorMsg = copy.redeemModal.creditsNotEnough
66
+ errorMsg = copy.creditsNotEnough
69
67
  setDisabled(true)
70
68
  fetchCreditInfo(profile?.user_id)
71
69
  } else if (responseData.code === AlpcErrorCode.CodeCrossSiteError) {
72
- errorMsg = copy.redeemModal.crossSiteError
70
+ errorMsg = copy.crossSiteError
73
71
  setDisabled(true)
74
72
  }
75
73
 
76
74
  setStatus('error')
77
75
  setErrorInfo({
78
76
  code: responseData.code,
79
- imageUrl: errorImage || copy.redeemModal.errorImageUrl || '',
80
- message: errorMsg || copy.redeemModal.commonError || '',
77
+ imageUrl: errorImage || copy.errorImageUrl || '',
78
+ message: errorMsg || copy.commonError || '',
81
79
  })
82
80
  onError && onError(responseData.code)
83
81
  }
@@ -86,24 +84,24 @@ function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModa
86
84
  setStatus('error')
87
85
  setErrorInfo({
88
86
  code: 0,
89
- imageUrl: copy.redeemModal.errorImageUrl || '',
90
- message: copy.redeemModal.commonError || '',
87
+ imageUrl: copy.errorImageUrl || '',
88
+ message: copy.commonError || '',
91
89
  })
92
90
  },
93
91
  })
94
92
 
95
93
  const stateInputKey = useMemo(() => {
96
- const stateInput = copy?.redeemModal.product.form?.flat().find(item => item.type === 'state')
94
+ const stateInput = copy?.product.form?.flat().find(item => item.type === 'state')
97
95
  return stateInput?.key
98
- }, [copy?.redeemModal.product.form])
96
+ }, [copy?.product.form])
99
97
 
100
98
  const { validate: validateAddress, errors: validateErrors } = useAddressValidate({
101
99
  address: address,
102
100
  validatorInfo: pageCommon?.validatorInfo,
103
- formData: copy?.redeemModal.product.form?.flat() || [],
101
+ formData: copy?.product.form?.flat() || [],
104
102
  errorLabel: {
105
- require: copy.redeemModal.product.required,
106
- email: copy.redeemModal.product.invalidEmail,
103
+ require: copy.product.required,
104
+ email: copy.product.invalidEmail,
107
105
  },
108
106
  })
109
107
 
@@ -141,15 +139,18 @@ function RedeemProductModal({ item, copy, onError, ...props }: RedeemProductModa
141
139
  }, [item, trigger, stateInputKey, validateAddress, address, countries])
142
140
 
143
141
  useEffect(() => {
144
- if (!props.isOpen) {
142
+ return () => {
145
143
  setDisabled(false)
146
144
  setErrorInfo({ code: 0, message: '', imageUrl: '' })
145
+ setStatus('init')
146
+ setAddress(undefined)
147
147
  }
148
- }, [props.isOpen, locale])
148
+ }, [])
149
149
 
150
150
  return (
151
151
  <CreditsModalContainer
152
152
  {...props}
153
+ isOpen={!!item}
153
154
  className={classNames(
154
155
  'w-[540px] md:h-auto min-md:max-h-[calc(100vh-40px)]',
155
156
  status !== 'init' && 'w-[740px] md:w-full'